diff --git a/Uisrc/BATTLE/BNETART.H b/Uisrc/BATTLE/BNETART.H new file mode 100644 index 0000000..cba8b17 --- /dev/null +++ b/Uisrc/BATTLE/BNETART.H @@ -0,0 +1,30 @@ +/**************************************************************************** +* +* bnetart.h +* +* This file should be included by an application that wants to provide +* battle.net-specific artwork in its art callback. +* +***/ + +enum _BATTLENET_ART { + SNET_ART_BATTLE_BTNS = 0x80000000, + SNET_ART_BATTLE_CHAT_BKG, + SNET_ART_BATTLE_GREENLAG, + SNET_ART_BATTLE_YELLOWLAG, + SNET_ART_BATTLE_REDLAG, + SNET_ART_BATTLE_CONNECT_BKG, + SNET_ART_BATTLE_SELECT_CHNL_BKG, + SNET_ART_BATTLE_LOGIN_BKG, + + SNET_ART_BATTLE_BADCONNECTION, + SNET_ART_BATTLE_WELCOME_AD, + + SNET_ART_BATTLE_LRG_EDIT_POPUP_BKG, +}; + + +enum _BATTLENET_DATA { + SNET_DATA_BATTLE_LOGODELAY = 0x80000000, // (DWORD) delay between frames +}; + diff --git a/Uisrc/BATTLE/DEBUG/BATTLE.LIB b/Uisrc/BATTLE/DEBUG/BATTLE.LIB new file mode 100644 index 0000000..d2a90c7 Binary files /dev/null and b/Uisrc/BATTLE/DEBUG/BATTLE.LIB differ diff --git a/Uisrc/BATTLE/RELEASE/BATTLE.LIB b/Uisrc/BATTLE/RELEASE/BATTLE.LIB new file mode 100644 index 0000000..d2a90c7 Binary files /dev/null and b/Uisrc/BATTLE/RELEASE/BATTLE.LIB differ diff --git a/Uisrc/BIN/BATTLE.SNP b/Uisrc/BIN/BATTLE.SNP new file mode 100644 index 0000000..6030771 Binary files /dev/null and b/Uisrc/BIN/BATTLE.SNP differ diff --git a/Uisrc/BIN/BNCACHE.DAT b/Uisrc/BIN/BNCACHE.DAT new file mode 100644 index 0000000..a70a34d Binary files /dev/null and b/Uisrc/BIN/BNCACHE.DAT differ diff --git a/Uisrc/BIN/DIABLOUI.EXE b/Uisrc/BIN/DIABLOUI.EXE new file mode 100644 index 0000000..e60c77d Binary files /dev/null and b/Uisrc/BIN/DIABLOUI.EXE differ diff --git a/Uisrc/BIN/SMACKW32.DLL b/Uisrc/BIN/SMACKW32.DLL new file mode 100644 index 0000000..e756b2f Binary files /dev/null and b/Uisrc/BIN/SMACKW32.DLL differ diff --git a/Uisrc/BIN/STORM.DLL b/Uisrc/BIN/STORM.DLL new file mode 100644 index 0000000..b80dff6 Binary files /dev/null and b/Uisrc/BIN/STORM.DLL differ diff --git a/Uisrc/BIN/STORM.PDB b/Uisrc/BIN/STORM.PDB new file mode 100644 index 0000000..07a3685 Binary files /dev/null and b/Uisrc/BIN/STORM.PDB differ diff --git a/Uisrc/BIN/STORM.SAV b/Uisrc/BIN/STORM.SAV new file mode 100644 index 0000000..3a77cd0 Binary files /dev/null and b/Uisrc/BIN/STORM.SAV differ diff --git a/Uisrc/DEBUG/DIABLOUI.MAP b/Uisrc/DEBUG/DIABLOUI.MAP new file mode 100644 index 0000000..8f3283b --- /dev/null +++ b/Uisrc/DEBUG/DIABLOUI.MAP @@ -0,0 +1,1066 @@ + DiabloUI + + Timestamp is 3455d0ea (Tue Oct 28 11:47:54 1997) + + Preferred load address is 00400000 + + Start Length Name Class + 0001:00000000 00011716H .text CODE + 0002:00000000 000016ddH .rdata DATA + 0002:000016dd 00000000H .edata DATA + 0003:00000000 00000004H .CRT$XCA DATA + 0003:00000004 00000004H .CRT$XCZ DATA + 0003:00000008 00000004H .CRT$XIA DATA + 0003:0000000c 00000004H .CRT$XIC DATA + 0003:00000010 00000004H .CRT$XIZ DATA + 0003:00000014 00000004H .CRT$XPA DATA + 0003:00000018 00000004H .CRT$XPX DATA + 0003:0000001c 00000004H .CRT$XPZ DATA + 0003:00000020 00000004H .CRT$XTA DATA + 0003:00000024 00000004H .CRT$XTZ DATA + 0003:00000030 000035f0H .data DATA + 0003:00003620 000015d4H .bss DATA + 0004:00000000 00000050H .idata$2 DATA + 0004:00000050 00000014H .idata$3 DATA + 0004:00000064 0000018cH .idata$4 DATA + 0004:000001f0 0000018cH .idata$5 DATA + 0004:0000037c 0000065eH .idata$6 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0001:00000000 ?Initialize@@YAHPAX@Z 00401000 f Testui.obj + 0001:000000a3 ?Connect@@YGHPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAK@Z 004010a3 f Testui.obj + 0001:00000165 _WinMain@16 00401165 f Testui.obj + 0001:00000298 _GetCurrentDirectoryA@8 00401298 f kernel32:KERNEL32.dll + 0001:0000029e _MessageBoxA@16 0040129e f user32:USER32.dll + 0001:000002a4 _ShowCursor@4 004012a4 f user32:USER32.dll + 0001:000002aa _SMsgRegisterMessage@12 004012aa f storm:storm.dll + 0001:000002b0 _SDrawMessageBox@12 004012b0 f storm:storm.dll + 0001:000002b6 _SDrawAutoInitialize@32 004012b6 f storm:storm.dll + 0001:000002bc _SFileEnableDirectAccess@4 004012bc f storm:storm.dll + 0001:000002c2 _SFileSetBasePath@4 004012c2 f storm:storm.dll + 0001:000002c8 _SNetSelectGame@24 004012c8 f storm:storm.dll + 0001:000002ce _SDrawGetFrameWindow@4 004012ce f storm:storm.dll + 0001:000002d4 _StormDestroy@0 004012d4 f storm:storm.dll + 0001:000002da _UiOnPaint@4 004012da f hellfrui:hellfrui.dll + 0001:000002e0 _UiSelectProvider@24 004012e0 f hellfrui:hellfrui.dll + 0001:000002e6 _UiCategoryCallback@28 004012e6 f hellfrui:hellfrui.dll + 0001:000002ec _UiGetDataCallback@20 004012ec f hellfrui:hellfrui.dll + 0001:000002f2 _UiAuthCallback@28 004012f2 f hellfrui:hellfrui.dll + 0001:000002f8 _UiSoundCallback@12 004012f8 f hellfrui:hellfrui.dll + 0001:000002fe _UiMessageBoxCallback@16 004012fe f hellfrui:hellfrui.dll + 0001:00000304 _UiDrawDescCallback@32 00401304 f hellfrui:hellfrui.dll + 0001:0000030a _UiCreateGameCallback@24 0040130a f hellfrui:hellfrui.dll + 0001:00000310 _UiArtCallback@32 00401310 f hellfrui:hellfrui.dll + 0001:00000316 _UiDestroy@0 00401316 f hellfrui:hellfrui.dll + 0001:0000031c _UiCreatePlayerDescription@12 0040131c f hellfrui:hellfrui.dll + 0001:00000322 _UiInitialize@0 00401322 f hellfrui:hellfrui.dll + 0001:00000330 _memset 00401330 f LIBCMTD:memset.obj + 0001:00000390 _WinMainCRTStartup 00401390 f LIBCMTD:wincrt0.obj + 0001:000005d0 __amsg_exit 004015d0 f LIBCMTD:wincrt0.obj + 0001:00000600 __cinit 00401600 f LIBCMTD:crt0dat.obj + 0001:00000640 _exit 00401640 f LIBCMTD:crt0dat.obj + 0001:00000660 __exit 00401660 f LIBCMTD:crt0dat.obj + 0001:00000680 __cexit 00401680 f LIBCMTD:crt0dat.obj + 0001:000006a0 __c_exit 004016a0 f LIBCMTD:crt0dat.obj + 0001:000007b0 __lockexit 004017b0 f LIBCMTD:crt0dat.obj + 0001:000007c0 __unlockexit 004017c0 f LIBCMTD:crt0dat.obj + 0001:00000800 __XcptFilter 00401800 f LIBCMTD:winxfltr.obj + 0001:00000a20 __ismbbkalnum 00401a20 f LIBCMTD:ismbbyte.obj + 0001:00000a40 __ismbbkprint 00401a40 f LIBCMTD:ismbbyte.obj + 0001:00000a60 __ismbbkpunct 00401a60 f LIBCMTD:ismbbyte.obj + 0001:00000a80 __ismbbalnum 00401a80 f LIBCMTD:ismbbyte.obj + 0001:00000aa0 __ismbbalpha 00401aa0 f LIBCMTD:ismbbyte.obj + 0001:00000ac0 __ismbbgraph 00401ac0 f LIBCMTD:ismbbyte.obj + 0001:00000ae0 __ismbbprint 00401ae0 f LIBCMTD:ismbbyte.obj + 0001:00000b00 __ismbbpunct 00401b00 f LIBCMTD:ismbbyte.obj + 0001:00000b20 __ismbblead 00401b20 f LIBCMTD:ismbbyte.obj + 0001:00000b40 __ismbbtrail 00401b40 f LIBCMTD:ismbbyte.obj + 0001:00000b60 __ismbbkana 00401b60 f LIBCMTD:ismbbyte.obj + 0001:00000c10 __setenvp 00401c10 f LIBCMTD:stdenvp.obj + 0001:00000d50 __setargv 00401d50 f LIBCMTD:stdargv.obj + 0001:00001250 ___crtGetEnvironmentStringsW 00402250 f LIBCMTD:aw_env.obj + 0001:000014d0 ___crtGetEnvironmentStringsA 004024d0 f LIBCMTD:aw_env.obj + 0001:000016f0 __setmbcp 004026f0 f LIBCMTD:mbctype.obj + 0001:00001b60 __getmbcp 00402b60 f LIBCMTD:mbctype.obj + 0001:00001b70 ___initmbctable 00402b70 f LIBCMTD:mbctype.obj + 0001:00001b80 __ioinit 00402b80 f LIBCMTD:ioinit.obj + 0001:00001eb0 __ioterm 00402eb0 f LIBCMTD:ioinit.obj + 0001:00001f50 __mtinit 00402f50 f LIBCMTD:tidtable.obj + 0001:00001fe0 __mtterm 00402fe0 f LIBCMTD:tidtable.obj + 0001:00002010 __initptd 00403010 f LIBCMTD:tidtable.obj + 0001:00002030 __getptd 00403030 f LIBCMTD:tidtable.obj + 0001:000020d0 __freeptd 004030d0 f LIBCMTD:tidtable.obj + 0001:000021c0 ___threadid 004031c0 f LIBCMTD:tidtable.obj + 0001:000021d0 ___threadhandle 004031d0 f LIBCMTD:tidtable.obj + 0001:000021e0 __heap_init 004031e0 f LIBCMTD:heapinit.obj + 0001:00002230 __heap_term 00403230 f LIBCMTD:heapinit.obj + 0001:0000227c __global_unwind2 0040327c f LIBCMTD:exsup.obj + 0001:000022be __local_unwind2 004032be f LIBCMTD:exsup.obj + 0001:00002316 __NLG_Return2 00403316 LIBCMTD:exsup.obj + 0001:00002326 __abnormal_termination 00403326 f LIBCMTD:exsup.obj + 0001:00002349 __NLG_Notify1 00403349 f LIBCMTD:exsup.obj + 0001:00002352 __NLG_Notify 00403352 f LIBCMTD:exsup.obj + 0001:00002365 __NLG_Dispatch 00403365 LIBCMTD:exsup.obj + 0001:00002374 __except_handler3 00403374 f LIBCMTD:exsup3.obj + 0001:00002431 __seh_longjmp_unwind@4 00403431 f LIBCMTD:exsup3.obj + 0001:00002450 __FF_MSGBANNER 00403450 f LIBCMTD:crt0msg.obj + 0001:000024a0 __NMSG_WRITE 004034a0 f LIBCMTD:crt0msg.obj + 0001:000026a0 __GET_RTERRMSG 004036a0 f LIBCMTD:crt0msg.obj + 0001:000026f0 _malloc 004036f0 f LIBCMTD:dbgheap.obj + 0001:00002710 __malloc_dbg 00403710 f LIBCMTD:dbgheap.obj + 0001:00002740 __nh_malloc 00403740 f LIBCMTD:dbgheap.obj + 0001:00002760 __nh_malloc_dbg 00403760 f LIBCMTD:dbgheap.obj + 0001:000027c0 __heap_alloc 004037c0 f LIBCMTD:dbgheap.obj + 0001:000027e0 __heap_alloc_dbg 004037e0 f LIBCMTD:dbgheap.obj + 0001:00002b00 _calloc 00403b00 f LIBCMTD:dbgheap.obj + 0001:00002b20 __calloc_dbg 00403b20 f LIBCMTD:dbgheap.obj + 0001:00002b80 _realloc 00403b80 f LIBCMTD:dbgheap.obj + 0001:00002ba0 __realloc_dbg 00403ba0 f LIBCMTD:dbgheap.obj + 0001:00003100 __expand 00404100 f LIBCMTD:dbgheap.obj + 0001:00003120 __expand_dbg 00404120 f LIBCMTD:dbgheap.obj + 0001:00003160 _free 00404160 f LIBCMTD:dbgheap.obj + 0001:00003180 __free_lk 00404180 f LIBCMTD:dbgheap.obj + 0001:000031a0 __free_dbg 004041a0 f LIBCMTD:dbgheap.obj + 0001:000031d0 __free_dbg_lk 004041d0 f LIBCMTD:dbgheap.obj + 0001:000035c0 __msize 004045c0 f LIBCMTD:dbgheap.obj + 0001:000035e0 __msize_dbg 004045e0 f LIBCMTD:dbgheap.obj + 0001:00003740 __CrtSetBreakAlloc 00404740 f LIBCMTD:dbgheap.obj + 0001:00003760 __CrtSetDbgBlockType 00404760 f LIBCMTD:dbgheap.obj + 0001:00003800 __CrtSetAllocHook 00404800 f LIBCMTD:dbgheap.obj + 0001:000038b0 __CrtCheckMemory 004048b0 f LIBCMTD:dbgheap.obj + 0001:00003c20 __CrtSetDbgFlag 00404c20 f LIBCMTD:dbgheap.obj + 0001:00003c50 __CrtDoForAllClientObjects 00404c50 f LIBCMTD:dbgheap.obj + 0001:00003cc0 __CrtIsValidPointer 00404cc0 f LIBCMTD:dbgheap.obj + 0001:00003d10 __CrtIsValidHeapPointer 00404d10 f LIBCMTD:dbgheap.obj + 0001:00003da0 __CrtIsMemoryBlock 00404da0 f LIBCMTD:dbgheap.obj + 0001:00003e90 __CrtSetDumpClient 00404e90 f LIBCMTD:dbgheap.obj + 0001:00003eb0 __CrtMemCheckpoint 00404eb0 f LIBCMTD:dbgheap.obj + 0001:00004020 __CrtMemDifference 00405020 f LIBCMTD:dbgheap.obj + 0001:00004150 __CrtMemDumpAllObjectsSince 00405150 f LIBCMTD:dbgheap.obj + 0001:00004530 __CrtDumpMemoryLeaks 00405530 f LIBCMTD:dbgheap.obj + 0001:000045b0 __CrtMemDumpStatistics 004055b0 f LIBCMTD:dbgheap.obj + 0001:00004680 __mtinitlocks 00405680 f LIBCMTD:mlock.obj + 0001:000046c0 __mtdeletelocks 004056c0 f LIBCMTD:mlock.obj + 0001:00004760 __lock 00405760 f LIBCMTD:mlock.obj + 0001:00004800 __unlock 00405800 f LIBCMTD:mlock.obj + 0001:00004820 __lock_file 00405820 f LIBCMTD:mlock.obj + 0001:00004860 __lock_file2 00405860 f LIBCMTD:mlock.obj + 0001:00004890 __unlock_file 00405890 f LIBCMTD:mlock.obj + 0001:000048d0 __unlock_file2 004058d0 f LIBCMTD:mlock.obj + 0001:00004900 __lockerr_exit 00405900 f LIBCMTD:mlock.obj + 0001:00004920 _strcpy 00405920 f LIBCMTD:strcat.obj + 0001:00004930 _strcat 00405930 f LIBCMTD:strcat.obj + 0001:00004a10 _strlen 00405a10 f LIBCMTD:strlen.obj + 0001:00004a90 _wcslen 00405a90 f LIBCMTD:wcslen.obj + 0001:00004ac0 _memcpy 00405ac0 f LIBCMTD:memcpy.obj + 0001:00004e00 __get_sbh_threshold 00405e00 f LIBCMTD:sbheap.obj + 0001:00004e10 __set_sbh_threshold 00405e10 f LIBCMTD:sbheap.obj + 0001:00004e40 ___sbh_new_region 00405e40 f LIBCMTD:sbheap.obj + 0001:00005020 ___sbh_release_region 00406020 f LIBCMTD:sbheap.obj + 0001:000050a0 ___sbh_decommit_pages 004060a0 f LIBCMTD:sbheap.obj + 0001:00005200 ___sbh_find_block 00406200 f LIBCMTD:sbheap.obj + 0001:00005290 ___sbh_free_block 00406290 f LIBCMTD:sbheap.obj + 0001:00005300 ___sbh_alloc_block 00406300 f LIBCMTD:sbheap.obj + 0001:000056c0 ___sbh_alloc_block_from_page 004066c0 f LIBCMTD:sbheap.obj + 0001:00005970 ___sbh_resize_block 00406970 f LIBCMTD:sbheap.obj + 0001:00005ae0 ___sbh_heap_check 00406ae0 f LIBCMTD:sbheap.obj + 0001:00005d20 ___crtMessageBoxA 00406d20 f LIBCMTD:crtmbox.obj + 0001:00005de0 _strncpy 00406de0 f LIBCMTD:strncpy.obj + 0001:00005ee0 __CrtDbgBreak 00406ee0 f LIBCMTD:dbgrpt.obj + 0001:00005ef0 __CrtSetReportMode 00406ef0 f LIBCMTD:dbgrpt.obj + 0001:00005f50 __CrtSetReportFile 00406f50 f LIBCMTD:dbgrpt.obj + 0001:00005fd0 __CrtSetReportHook 00406fd0 f LIBCMTD:dbgrpt.obj + 0001:00005ff0 __CrtDbgReport 00406ff0 f LIBCMTD:dbgrpt.obj + 0001:00006690 ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z 00407690 f LIBCMTD:handler.obj + 0001:000066c0 ?_query_new_handler@@YAP6AHI@ZXZ 004076c0 f LIBCMTD:handler.obj + 0001:000066d0 __callnewh 004076d0 f LIBCMTD:handler.obj + 0001:00006700 __malloc_base 00407700 f LIBCMTD:malloc.obj + 0001:00006720 __nh_malloc_base 00407720 f LIBCMTD:malloc.obj + 0001:000067a0 __heap_alloc_base 004077a0 f LIBCMTD:malloc.obj + 0001:00006810 __CrtDefaultAllocHook 00407810 f LIBCMTD:dbghook.obj + 0001:00006820 __expand_base 00407820 f LIBCMTD:expand.obj + 0001:000068e0 __realloc_base 004078e0 f LIBCMTD:realloc.obj + 0001:00006ae0 __free_base 00407ae0 f LIBCMTD:free.obj + 0001:00006b60 __heapchk 00407b60 f LIBCMTD:heapchk.obj + 0001:00006be0 __heapset 00407be0 f LIBCMTD:heapchk.obj + 0001:00006bf0 _sprintf 00407bf0 f LIBCMTD:sprintf.obj + 0001:00006cf0 __isctype 00407cf0 f LIBCMTD:isctype.obj + 0001:00006db0 ___initstdio 00407db0 f LIBCMTD:_file.obj + 0001:00006ee0 ___endstdio 00407ee0 f LIBCMTD:_file.obj + 0001:00006f00 __itoa 00407f00 f LIBCMTD:xtoa.obj + 0001:00007020 __ltoa 00408020 f LIBCMTD:xtoa.obj + 0001:00007060 __ultoa 00408060 f LIBCMTD:xtoa.obj + 0001:00007080 __i64toa 00408080 f LIBCMTD:xtoa.obj + 0001:000071b0 __ui64toa 004081b0 f LIBCMTD:xtoa.obj + 0001:000071d0 __snprintf 004081d0 f LIBCMTD:snprintf.obj + 0001:000072d0 __vsnprintf 004082d0 f LIBCMTD:vsnprint.obj + 0001:000073d0 __alloca_probe 004083d0 LIBCMTD:chkstk.obj + 0001:000073d0 __chkstk 004083d0 LIBCMTD:chkstk.obj + 0001:00007400 _signal 00408400 f LIBCMTD:winsig.obj + 0001:000076d0 _raise 004086d0 f LIBCMTD:winsig.obj + 0001:00007980 ___fpecode 00408980 f LIBCMTD:winsig.obj + 0001:00007990 ___pxcptinfoptrs 00408990 f LIBCMTD:winsig.obj + 0001:000079a0 __dosmaperr 004089a0 f LIBCMTD:dosmap.obj + 0001:00007a40 __errno 00408a40 f LIBCMTD:dosmap.obj + 0001:00007a50 ___doserrno 00408a50 f LIBCMTD:dosmap.obj + 0001:00007a60 __flsbuf 00408a60 f LIBCMTD:_flsbuf.obj + 0001:00007ce0 __output 00408ce0 f LIBCMTD:output.obj + 0001:00008b80 ___crtGetStringTypeW 00409b80 f LIBCMTD:aw_str.obj + 0001:00008d90 ___crtGetStringTypeA 00409d90 f LIBCMTD:aw_str.obj + 0001:00008ef0 __fcloseall 00409ef0 f LIBCMTD:closeall.obj + 0001:00008fd0 _fflush 00409fd0 f LIBCMTD:fflush.obj + 0001:00009020 __fflush_lk 0040a020 f LIBCMTD:fflush.obj + 0001:00009070 __flush 0040a070 f LIBCMTD:fflush.obj + 0001:00009130 __flushall 0040a130 f LIBCMTD:fflush.obj + 0001:00009280 __aulldiv 0040a280 f LIBCMTD:ulldiv.obj + 0001:000092f0 __aullrem 0040a2f0 f LIBCMTD:ullrem.obj + 0001:00009370 __lseek 0040a370 f LIBCMTD:lseek.obj + 0001:00009400 __lseek_lk 0040a400 f LIBCMTD:lseek.obj + 0001:000094c0 __write 0040a4c0 f LIBCMTD:write.obj + 0001:00009550 __write_lk 0040a550 f LIBCMTD:write.obj + 0001:000097d0 __getbuf 0040a7d0 f LIBCMTD:_getbuf.obj + 0001:000098a0 __isatty 0040a8a0 f LIBCMTD:isatty.obj + 0001:000098e0 _wctomb 0040a8e0 f LIBCMTD:wctomb.obj + 0001:00009960 __wctomb_lk 0040a960 f LIBCMTD:wctomb.obj + 0001:00009a00 _memmove 0040aa00 f LIBCMTD:memmove.obj + 0001:00009d40 _fclose 0040ad40 f LIBCMTD:fclose.obj + 0001:00009dd0 __fclose_lk 0040add0 f LIBCMTD:fclose.obj + 0001:00009e90 __commit 0040ae90 f LIBCMTD:commit.obj + 0001:00009f70 __alloc_osfhnd 0040af70 f LIBCMTD:osfinfo.obj + 0001:0000a160 __set_osfhnd 0040b160 f LIBCMTD:osfinfo.obj + 0001:0000a220 __free_osfhnd 0040b220 f LIBCMTD:osfinfo.obj + 0001:0000a300 __get_osfhandle 0040b300 f LIBCMTD:osfinfo.obj + 0001:0000a370 __open_osfhandle 0040b370 f LIBCMTD:osfinfo.obj + 0001:0000a460 __lock_fhandle 0040b460 f LIBCMTD:osfinfo.obj + 0001:0000a4f0 __unlock_fhandle 0040b4f0 f LIBCMTD:osfinfo.obj + 0001:0000a520 __fptrap 0040b520 f LIBCMTD:crt0fp.obj + 0001:0000a530 _setlocale 0040b530 f LIBCMTD:setlocal.obj + 0001:0000abb0 __expandlocale 0040bbb0 f LIBCMTD:setlocal.obj + 0001:0000ad40 ___init_dummy 0040bd40 f LIBCMTD:setlocal.obj + 0001:0000ad50 __strcats 0040bd50 f LIBCMTD:setlocal.obj + 0001:0000ada0 ___lc_strtolc 0040bda0 f LIBCMTD:setlocal.obj + 0001:0000af00 ___lc_lctostr 0040bf00 f LIBCMTD:setlocal.obj + 0001:0000af70 __close 0040bf70 f LIBCMTD:close.obj + 0001:0000aff0 __close_lk 0040bff0 f LIBCMTD:close.obj + 0001:0000b0a0 __freebuf 0040c0a0 f LIBCMTD:_freebuf.obj + 0001:0000b140 ___init_time 0040c140 f LIBCMTD:inittime.obj + 0001:0000bc80 ___init_numeric 0040cc80 f LIBCMTD:initnum.obj + 0001:0000bfb0 ___init_monetary 0040cfb0 f LIBCMTD:initmon.obj + 0001:0000c410 ___init_ctype 0040d410 f LIBCMTD:initctyp.obj + 0001:0000c7b0 ___init_collate 0040d7b0 f LIBCMTD:initcoll.obj + 0001:0000c7c0 _strcmp 0040d7c0 f LIBCMTD:strcmp.obj + 0001:0000c850 _strcspn 0040d850 f LIBCMTD:strcspn.obj + 0001:0000c890 _strncmp 0040d890 f LIBCMTD:strncmp.obj + 0001:0000c8d0 _strpbrk 0040d8d0 f LIBCMTD:strpbrk.obj + 0001:0000c910 ___get_qualified_locale 0040d910 f LIBCMTD:getqloc.obj + 0001:0000cfb0 __Getdays 0040dfb0 f LIBCMTD:strftime.obj + 0001:0000d0e0 __Getmonths 0040e0e0 f LIBCMTD:strftime.obj + 0001:0000d210 __Gettnames 0040e210 f LIBCMTD:strftime.obj + 0001:0000d580 _strftime 0040e580 f LIBCMTD:strftime.obj + 0001:0000d5a0 __Strftime 0040e5a0 f LIBCMTD:strftime.obj + 0001:0000e350 ___getlocaleinfo 0040f350 f LIBCMTD:inithelp.obj + 0001:0000e5e0 _localeconv 0040f5e0 f LIBCMTD:lconv.obj + 0001:0000e5f0 ___crtGetLocaleInfoW 0040f5f0 f LIBCMTD:aw_loc.obj + 0001:0000e770 ___crtGetLocaleInfoA 0040f770 f LIBCMTD:aw_loc.obj + 0001:0000e900 _wcstol 0040f900 f LIBCMTD:wcstol.obj + 0001:0000ec00 _wcstoul 0040fc00 f LIBCMTD:wcstol.obj + 0001:0000ec20 _atol 0040fc20 f LIBCMTD:atox.obj + 0001:0000ed20 _atoi 0040fd20 f LIBCMTD:atox.obj + 0001:0000ed40 __atoi64 0040fd40 f LIBCMTD:atox.obj + 0001:0000ee70 __stricmp 0040fe70 f LIBCMTD:stricmp.obj + 0001:0000ee70 __strcmpi 0040fe70 f LIBCMTD:stricmp.obj + 0001:0000ef40 ___tzset 0040ff40 f LIBCMTD:tzset.obj + 0001:0000ef80 __tzset 0040ff80 f LIBCMTD:tzset.obj + 0001:0000f300 __isindst 00410300 f LIBCMTD:tzset.obj + 0001:0000f830 _towupper 00410830 f LIBCMTD:towupper.obj + 0001:0000f8e0 __towupper_lk 004108e0 f LIBCMTD:towupper.obj + 0001:0000f9a0 _iswctype 004109a0 f LIBCMTD:iswctype.obj + 0001:0000fa20 _is_wctype 00410a20 f LIBCMTD:iswctype.obj + 0001:0000fa40 __allmul 00410a40 f LIBCMTD:llmul.obj + 0001:0000fa80 __tolower 00410a80 f LIBCMTD:tolower.obj + 0001:0000fa90 _tolower 00410a90 f LIBCMTD:tolower.obj + 0001:0000fb30 __tolower_lk 00410b30 f LIBCMTD:tolower.obj + 0001:0000fc60 _wcstombs 00410c60 f LIBCMTD:wcstombs.obj + 0001:0000fce0 __wcstombs_lk 00410ce0 f LIBCMTD:wcstombs.obj + 0001:00010040 _getenv 00411040 f LIBCMTD:getenv.obj + 0001:00010070 __getenv_lk 00411070 f LIBCMTD:getenv.obj + 0001:00010130 ___crtLCMapStringW 00411130 f LIBCMTD:aw_map.obj + 0001:00010440 ___crtLCMapStringA 00411440 f LIBCMTD:aw_map.obj + 0001:00010750 __mbsnbicoll 00411750 f LIBCMTD:mbsnbico.obj + 0001:000107a0 ___wtomb_environ 004117a0 f LIBCMTD:wtombenv.obj + 0001:00010850 ___crtCompareStringW 00411850 f LIBCMTD:aw_cmp.obj + 0001:00010b50 ___crtCompareStringA 00411b50 f LIBCMTD:aw_cmp.obj + 0001:00010f60 ___crtsetenv 00411f60 f LIBCMTD:setenv.obj + 0001:000113b0 __mbschr 004123b0 f LIBCMTD:mbschr.obj + 0001:000114b0 _strchr 004124b0 f LIBCMTD:strchr.obj + 0001:000114b6 ___from_strstr_to_strchr 004124b6 LIBCMTD:strchr.obj + 0001:0001156c _GetModuleHandleA@4 0041256c f kernel32:KERNEL32.dll + 0001:00011572 _GetStartupInfoA@4 00412572 f kernel32:KERNEL32.dll + 0001:00011578 _GetCommandLineA@0 00412578 f kernel32:KERNEL32.dll + 0001:0001157e _GetVersion@0 0041257e f kernel32:KERNEL32.dll + 0001:00011584 _ExitProcess@4 00412584 f kernel32:KERNEL32.dll + 0001:0001158a _TerminateProcess@8 0041258a f kernel32:KERNEL32.dll + 0001:00011590 _GetCurrentProcess@0 00412590 f kernel32:KERNEL32.dll + 0001:00011596 _UnhandledExceptionFilter@4 00412596 f kernel32:KERNEL32.dll + 0001:0001159c _GetModuleFileNameA@12 0041259c f kernel32:KERNEL32.dll + 0001:000115a2 _FreeEnvironmentStringsA@4 004125a2 f kernel32:KERNEL32.dll + 0001:000115a8 _MultiByteToWideChar@24 004125a8 f kernel32:KERNEL32.dll + 0001:000115ae _FreeEnvironmentStringsW@4 004125ae f kernel32:KERNEL32.dll + 0001:000115b4 _GetEnvironmentStrings@0 004125b4 f kernel32:KERNEL32.dll + 0001:000115ba _GetEnvironmentStringsW@0 004125ba f kernel32:KERNEL32.dll + 0001:000115c0 _WideCharToMultiByte@32 004125c0 f kernel32:KERNEL32.dll + 0001:000115c6 _GetCPInfo@8 004125c6 f kernel32:KERNEL32.dll + 0001:000115cc _GetACP@0 004125cc f kernel32:KERNEL32.dll + 0001:000115d2 _GetOEMCP@0 004125d2 f kernel32:KERNEL32.dll + 0001:000115d8 _SetHandleCount@4 004125d8 f kernel32:KERNEL32.dll + 0001:000115de _GetStdHandle@4 004125de f kernel32:KERNEL32.dll + 0001:000115e4 _GetFileType@4 004125e4 f kernel32:KERNEL32.dll + 0001:000115ea _DeleteCriticalSection@4 004125ea f kernel32:KERNEL32.dll + 0001:000115f0 _GetCurrentThreadId@0 004125f0 f kernel32:KERNEL32.dll + 0001:000115f6 _TlsSetValue@8 004125f6 f kernel32:KERNEL32.dll + 0001:000115fc _TlsAlloc@0 004125fc f kernel32:KERNEL32.dll + 0001:00011602 _TlsFree@4 00412602 f kernel32:KERNEL32.dll + 0001:00011608 _SetLastError@4 00412608 f kernel32:KERNEL32.dll + 0001:0001160e _TlsGetValue@4 0041260e f kernel32:KERNEL32.dll + 0001:00011614 _GetLastError@0 00412614 f kernel32:KERNEL32.dll + 0001:0001161a _GetCurrentThread@0 0041261a f kernel32:KERNEL32.dll + 0001:00011620 _HeapDestroy@4 00412620 f kernel32:KERNEL32.dll + 0001:00011626 _HeapCreate@12 00412626 f kernel32:KERNEL32.dll + 0001:0001162c _VirtualFree@12 0041262c f kernel32:KERNEL32.dll + 0001:00011632 _RtlUnwind@16 00412632 f kernel32:KERNEL32.dll + 0001:00011638 _WriteFile@20 00412638 f kernel32:KERNEL32.dll + 0001:0001163e _IsBadWritePtr@8 0041263e f kernel32:KERNEL32.dll + 0001:00011644 _IsBadReadPtr@8 00412644 f kernel32:KERNEL32.dll + 0001:0001164a _HeapValidate@12 0041264a f kernel32:KERNEL32.dll + 0001:00011650 _InitializeCriticalSection@4 00412650 f kernel32:KERNEL32.dll + 0001:00011656 _EnterCriticalSection@4 00412656 f kernel32:KERNEL32.dll + 0001:0001165c _LeaveCriticalSection@4 0041265c f kernel32:KERNEL32.dll + 0001:00011662 _FatalAppExitA@8 00412662 f kernel32:KERNEL32.dll + 0001:00011668 _HeapFree@12 00412668 f kernel32:KERNEL32.dll + 0001:0001166e _VirtualAlloc@16 0041266e f kernel32:KERNEL32.dll + 0001:00011674 _HeapAlloc@12 00412674 f kernel32:KERNEL32.dll + 0001:0001167a _GetProcAddress@8 0041267a f kernel32:KERNEL32.dll + 0001:00011680 _LoadLibraryA@4 00412680 f kernel32:KERNEL32.dll + 0001:00011686 _DebugBreak@0 00412686 f kernel32:KERNEL32.dll + 0001:0001168c _InterlockedDecrement@4 0041268c f kernel32:KERNEL32.dll + 0001:00011692 _OutputDebugStringA@4 00412692 f kernel32:KERNEL32.dll + 0001:00011698 _InterlockedIncrement@4 00412698 f kernel32:KERNEL32.dll + 0001:0001169e _HeapReAlloc@16 0041269e f kernel32:KERNEL32.dll + 0001:000116a4 _SetConsoleCtrlHandler@8 004126a4 f kernel32:KERNEL32.dll + 0001:000116aa _GetStringTypeA@20 004126aa f kernel32:KERNEL32.dll + 0001:000116b0 _GetStringTypeW@16 004126b0 f kernel32:KERNEL32.dll + 0001:000116b6 _SetFilePointer@16 004126b6 f kernel32:KERNEL32.dll + 0001:000116bc _FlushFileBuffers@4 004126bc f kernel32:KERNEL32.dll + 0001:000116c2 _SetStdHandle@8 004126c2 f kernel32:KERNEL32.dll + 0001:000116c8 _Sleep@4 004126c8 f kernel32:KERNEL32.dll + 0001:000116ce _CloseHandle@4 004126ce f kernel32:KERNEL32.dll + 0001:000116d4 _IsValidLocale@8 004126d4 f kernel32:KERNEL32.dll + 0001:000116da _IsValidCodePage@4 004126da f kernel32:KERNEL32.dll + 0001:000116e0 _GetUserDefaultLCID@0 004126e0 f kernel32:KERNEL32.dll + 0001:000116e6 _GetLocaleInfoA@16 004126e6 f kernel32:KERNEL32.dll + 0001:000116ec _GetLocaleInfoW@16 004126ec f kernel32:KERNEL32.dll + 0001:000116f2 _GetTimeZoneInformation@4 004126f2 f kernel32:KERNEL32.dll + 0001:000116f8 _LCMapStringA@24 004126f8 f kernel32:KERNEL32.dll + 0001:000116fe _LCMapStringW@24 004126fe f kernel32:KERNEL32.dll + 0001:00011704 _CompareStringA@24 00412704 f kernel32:KERNEL32.dll + 0001:0001170a _CompareStringW@24 0041270a f kernel32:KERNEL32.dll + 0001:00011710 _SetEnvironmentVariableA@8 00412710 f kernel32:KERNEL32.dll + 0002:00000064 ??_C@_09IGKD@stdenvp?4c?$AA@ 00413064 LIBCMTD:stdenvp.obj + 0002:00000070 ??_C@_09MPMN@stdargv?4c?$AA@ 00413070 LIBCMTD:stdargv.obj + 0002:0000007c ??_C@_08FFKK@aw_env?4c?$AA@ 0041307c LIBCMTD:aw_env.obj + 0002:00000088 ??_C@_08KFDJ@ioinit?4c?$AA@ 00413088 LIBCMTD:ioinit.obj + 0002:00000094 ??_C@_0L@ENLJ@tidtable?4c?$AA@ 00413094 LIBCMTD:tidtable.obj + 0002:000000a0 ??_C@_0P@GGKG@runtime?5error?5?$AA@ 004130a0 LIBCMTD:crt0msg.obj + 0002:000000b0 ??_C@_02PIMC@?$AN?6?$AA@ 004130b0 LIBCMTD:crt0msg.obj + 0002:000000b4 ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 004130b4 LIBCMTD:crt0msg.obj + 0002:000000c4 ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 004130c4 LIBCMTD:crt0msg.obj + 0002:000000d4 ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 004130d4 LIBCMTD:crt0msg.obj + 0002:000000e4 ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 004130e4 LIBCMTD:crt0msg.obj + 0002:0000010c ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 0041310c LIBCMTD:crt0msg.obj + 0002:00000144 ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 00413144 LIBCMTD:crt0msg.obj + 0002:0000017c ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 0041317c LIBCMTD:crt0msg.obj + 0002:000001a4 ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 004131a4 LIBCMTD:crt0msg.obj + 0002:000001dc ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 004131dc LIBCMTD:crt0msg.obj + 0002:00000208 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 00413208 LIBCMTD:crt0msg.obj + 0002:0000022c ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 0041322c LIBCMTD:crt0msg.obj + 0002:0000025c ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 0041325c LIBCMTD:crt0msg.obj + 0002:00000288 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 00413288 LIBCMTD:crt0msg.obj + 0002:000002ac ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 004132ac LIBCMTD:crt0msg.obj + 0002:000002d8 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 004132d8 LIBCMTD:crt0msg.obj + 0002:00000304 ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 00413304 LIBCMTD:crt0msg.obj + 0002:0000032c ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 0041332c LIBCMTD:crt0msg.obj + 0002:00000354 ??_C@_02JJJH@?6?6?$AA@ 00413354 LIBCMTD:crt0msg.obj + 0002:00000358 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 00413358 LIBCMTD:crt0msg.obj + 0002:00000374 ??_C@_03NAME@?4?4?4?$AA@ 00413374 LIBCMTD:crt0msg.obj + 0002:00000378 ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 00413378 LIBCMTD:crt0msg.obj + 0002:00000390 ??_C@_06DPMO@Client?$AA@ 00413390 LIBCMTD:dbgheap.obj + 0002:00000398 ??_C@_06BAFM@Ignore?$AA@ 00413398 LIBCMTD:dbgheap.obj + 0002:000003a0 ??_C@_03DICE@CRT?$AA@ 004133a0 LIBCMTD:dbgheap.obj + 0002:000003a4 ??_C@_06BILL@Normal?$AA@ 004133a4 LIBCMTD:dbgheap.obj + 0002:000003ac ??_C@_04NEN@Free?$AA@ 004133ac LIBCMTD:dbgheap.obj + 0002:000003b4 ??_C@_0DC@CGID@Error?3?5memory?5allocation?3?5bad?5me@ 004133b4 LIBCMTD:dbgheap.obj + 0002:000003e8 ??_C@_0CE@FMIA@Invalid?5allocation?5size?3?5?$CFu?5byte@ 004133e8 LIBCMTD:dbgheap.obj + 0002:0000040c ??_C@_02DILL@?$CFs?$AA@ 0041340c LIBCMTD:dbgheap.obj + 0002:00000410 ??_C@_0CB@CPBI@Client?5hook?5allocation?5failure?4?6@ 00413410 LIBCMTD:dbgheap.obj + 0002:00000434 ??_C@_0DF@DKHF@Client?5hook?5allocation?5failure?5a@ 00413434 LIBCMTD:dbgheap.obj + 0002:0000046c ??_C@_09IMJC@dbgheap?4c?$AA@ 0041346c LIBCMTD:dbgheap.obj + 0002:00000478 ??_C@_0BC@EPKL@_CrtCheckMemory?$CI?$CJ?$AA@ 00413478 LIBCMTD:dbgheap.obj + 0002:0000048c ??_C@_0BK@JDHA@_pFirstBlock?5?$DN?$DN?5pOldBlock?$AA@ 0041348c LIBCMTD:dbgheap.obj + 0002:000004a8 ??_C@_0BJ@NMEF@_pLastBlock?5?$DN?$DN?5pOldBlock?$AA@ 004134a8 LIBCMTD:dbgheap.obj + 0002:000004c4 ??_C@_0DC@BOCN@fRealloc?5?$HM?$HM?5?$CI?$CBfRealloc?5?$CG?$CG?5pNewBl@ 004134c4 LIBCMTD:dbgheap.obj + 0002:000004f8 ??_C@_0DK@DKOM@_BLOCK_TYPE?$CIpOldBlock?9?$DOnBlockUse@ 004134f8 LIBCMTD:dbgheap.obj + 0002:00000534 ??_C@_0EF@EDKM@pOldBlock?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5@ 00413534 LIBCMTD:dbgheap.obj + 0002:0000057c ??_C@_0CC@GPMO@_CrtIsValidHeapPointer?$CIpUserData@ 0041357c LIBCMTD:dbgheap.obj + 0002:000005a0 ??_C@_0CN@FHGE@Allocation?5too?5large?5or?5negative@ 004135a0 LIBCMTD:dbgheap.obj + 0002:000005d0 ??_C@_0CE@EAMN@Client?5hook?5re?9allocation?5failur@ 004135d0 LIBCMTD:dbgheap.obj + 0002:000005f4 ??_C@_0DI@KKMM@Client?5hook?5re?9allocation?5failur@ 004135f4 LIBCMTD:dbgheap.obj + 0002:0000062c ??_C@_0BG@JCEC@_pFirstBlock?5?$DN?$DN?5pHead?$AA@ 0041362c LIBCMTD:dbgheap.obj + 0002:00000644 ??_C@_0BF@NLNN@_pLastBlock?5?$DN?$DN?5pHead?$AA@ 00413644 LIBCMTD:dbgheap.obj + 0002:0000065c ??_C@_0BO@PLHH@pHead?9?$DOnBlockUse?5?$DN?$DN?5nBlockUse?$AA@ 0041365c LIBCMTD:dbgheap.obj + 0002:0000067c ??_C@_0DN@KKIO@pHead?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5?$CG?$CG?5p@ 0041367c LIBCMTD:dbgheap.obj + 0002:000006bc ??_C@_0CK@OJNB@DAMAGE?3?5after?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5at@ 004136bc LIBCMTD:dbgheap.obj + 0002:000006e8 ??_C@_0CL@IJIL@DAMAGE?3?5before?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5a@ 004136e8 LIBCMTD:dbgheap.obj + 0002:00000714 ??_C@_0CH@PHOC@_BLOCK_TYPE_IS_VALID?$CIpHead?9?$DOnBlo@ 00413714 LIBCMTD:dbgheap.obj + 0002:0000073c ??_C@_0BL@MBNA@Client?5hook?5free?5failure?4?6?$AA@ 0041373c LIBCMTD:dbgheap.obj + 0002:00000758 ??_C@_0DK@EKKL@memory?5check?5error?5at?50x?$CF08X?5?$DN?50@ 00413758 LIBCMTD:dbgheap.obj + 0002:00000794 ??_C@_0CJ@GCII@?$CFhs?5located?5at?50x?$CF08X?5is?5?$CFu?5byte@ 00413794 LIBCMTD:dbgheap.obj + 0002:000007c0 ??_C@_0CA@EJPI@?$CFhs?5allocated?5at?5file?5?$CFhs?$CI?$CFd?$CJ?4?6?$AA@ 004137c0 LIBCMTD:dbgheap.obj + 0002:000007e0 ??_C@_0CJ@LHHG@DAMAGE?3?5on?5top?5of?5Free?5block?5at?5@ 004137e0 LIBCMTD:dbgheap.obj + 0002:0000080c ??_C@_07GJHM@DAMAGED?$AA@ 0041380c LIBCMTD:dbgheap.obj + 0002:00000814 ??_C@_0CL@ODIE@_heapchk?5fails?5with?5unknown?5retu@ 00413814 LIBCMTD:dbgheap.obj + 0002:00000840 ??_C@_0CC@EHNC@_heapchk?5fails?5with?5_HEAPBADPTR?4@ 00413840 LIBCMTD:dbgheap.obj + 0002:00000864 ??_C@_0CC@JNDP@_heapchk?5fails?5with?5_HEAPBADEND?4@ 00413864 LIBCMTD:dbgheap.obj + 0002:00000888 ??_C@_0CD@DNMG@_heapchk?5fails?5with?5_HEAPBADNODE@ 00413888 LIBCMTD:dbgheap.obj + 0002:000008ac ??_C@_0CE@JMCB@_heapchk?5fails?5with?5_HEAPBADBEGI@ 004138ac LIBCMTD:dbgheap.obj + 0002:000008d0 ??_C@_0CD@MEMI@Bad?5memory?5block?5found?5at?50x?$CF08X@ 004138d0 LIBCMTD:dbgheap.obj + 0002:000008f4 ??_C@_0CI@GMAO@_CrtMemCheckPoint?3?5NULL?5state?5po@ 004138f4 LIBCMTD:dbgheap.obj + 0002:0000091c ??_C@_0CI@MNAE@_CrtMemDifference?3?5NULL?5state?5po@ 0041391c LIBCMTD:dbgheap.obj + 0002:00000944 ??_C@_0BH@PKIJ@Object?5dump?5complete?4?6?$AA@ 00413944 LIBCMTD:dbgheap.obj + 0002:0000095c ??_C@_0DB@DBPF@crt?5block?5at?50x?$CF08X?0?5subtype?5?$CFx?0@ 0041395c LIBCMTD:dbgheap.obj + 0002:00000990 ??_C@_0CI@JLM@normal?5block?5at?50x?$CF08X?0?5?$CFu?5bytes@ 00413990 LIBCMTD:dbgheap.obj + 0002:000009b8 ??_C@_0DE@PFEA@client?5block?5at?50x?$CF08X?0?5subtype?5@ 004139b8 LIBCMTD:dbgheap.obj + 0002:000009ec ??_C@_06MBCE@?$HL?$CFld?$HN?5?$AA@ 004139ec LIBCMTD:dbgheap.obj + 0002:000009f4 ??_C@_0L@BLDJ@?$CFhs?$CI?$CFd?$CJ?5?3?5?$AA@ 004139f4 LIBCMTD:dbgheap.obj + 0002:00000a00 ??_C@_0BE@FEMA@?$CDFile?5Error?$CD?$CI?$CFd?$CJ?5?3?5?$AA@ 00413a00 LIBCMTD:dbgheap.obj + 0002:00000a14 ??_C@_0BE@FPPM@Dumping?5objects?5?9?$DO?6?$AA@ 00413a14 LIBCMTD:dbgheap.obj + 0002:00000a28 ??_C@_0BA@POLM@?5Data?3?5?$DM?$CFs?$DO?5?$CFs?6?$AA@ 00413a28 LIBCMTD:dbgheap.obj + 0002:00000a38 ??_C@_05JLAO@?$CF?42X?5?$AA@ 00413a38 LIBCMTD:dbgheap.obj + 0002:00000a40 ??_C@_0BI@KONA@Detected?5memory?5leaks?$CB?6?$AA@ 00413a40 LIBCMTD:dbgheap.obj + 0002:00000a58 ??_C@_0BP@LCCN@Total?5allocations?3?5?$CFld?5bytes?4?6?$AA@ 00413a58 LIBCMTD:dbgheap.obj + 0002:00000a78 ??_C@_0CB@COID@Largest?5number?5used?3?5?$CFld?5bytes?4?6@ 00413a78 LIBCMTD:dbgheap.obj + 0002:00000a9c ??_C@_0BO@MEJD@?$CFld?5bytes?5in?5?$CFld?5?$CFhs?5Blocks?4?6?$AA@ 00413a9c LIBCMTD:dbgheap.obj + 0002:00000abc ??_C@_07PDLA@mlock?4c?$AA@ 00413abc LIBCMTD:mlock.obj + 0002:00000ac4 ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 00413ac4 LIBCMTD:crtmbox.obj + 0002:00000ad8 ??_C@_0BA@GILI@GetActiveWindow?$AA@ 00413ad8 LIBCMTD:crtmbox.obj + 0002:00000ae8 ??_C@_0M@PKCK@MessageBoxA?$AA@ 00413ae8 LIBCMTD:crtmbox.obj + 0002:00000af4 ??_C@_0L@HKL@user32?4dll?$AA@ 00413af4 LIBCMTD:crtmbox.obj + 0002:00000b00 ??_C@_0BB@BLL@Assertion?5Failed?$AA@ 00413b00 LIBCMTD:dbgrpt.obj + 0002:00000b14 ??_C@_05CKBG@Error?$AA@ 00413b14 LIBCMTD:dbgrpt.obj + 0002:00000b1c ??_C@_07JCGI@Warning?$AA@ 00413b1c LIBCMTD:dbgrpt.obj + 0002:00000b24 ??_C@_0M@ODEP@?$CFs?$CI?$CFd?$CJ?5?3?5?$CFs?$AA@ 00413b24 LIBCMTD:dbgrpt.obj + 0002:00000b30 ??_C@_01BJG@?6?$AA@ 00413b30 LIBCMTD:dbgrpt.obj + 0002:00000b34 ??_C@_01FEHD@?$AN?$AA@ 00413b34 LIBCMTD:dbgrpt.obj + 0002:00000b38 ??_C@_0BC@OIMC@Assertion?5failed?$CB?$AA@ 00413b38 LIBCMTD:dbgrpt.obj + 0002:00000b4c ??_C@_0BD@BEAK@Assertion?5failed?3?5?$AA@ 00413b4c LIBCMTD:dbgrpt.obj + 0002:00000b60 ??_C@_0CL@LCCP@_CrtDbgReport?3?5String?5too?5long?5o@ 00413b60 LIBCMTD:dbgrpt.obj + 0002:00000b8c ??_C@_0DC@EMDK@Second?5Chance?5Assertion?5Failed?3?5@ 00413b8c LIBCMTD:dbgrpt.obj + 0002:00000bc0 ??_C@_09NJAK@wsprintfA?$AA@ 00413bc0 LIBCMTD:dbgrpt.obj + 0002:00000bcc ??_C@_0CD@GCMD@Microsoft?5Visual?5C?$CL?$CL?5Debug?5Libra@ 00413bcc LIBCMTD:dbgrpt.obj + 0002:00000bf0 ??_C@_0FD@EBDD@Debug?5?$CFs?$CB?6?6Program?3?5?$CFs?$CFs?$CFs?$CFs?$CFs?$CFs@ 00413bf0 LIBCMTD:dbgrpt.obj + 0002:00000c44 ??_C@_09DCKN@?6Module?3?5?$AA@ 00413c44 LIBCMTD:dbgrpt.obj + 0002:00000c50 ??_C@_07HJII@?6File?3?5?$AA@ 00413c50 LIBCMTD:dbgrpt.obj + 0002:00000c58 ??_C@_07LFGN@?6Line?3?5?$AA@ 00413c58 LIBCMTD:dbgrpt.obj + 0002:00000c60 ??_C@_0N@NOAB@Expression?3?5?$AA@ 00413c60 LIBCMTD:dbgrpt.obj + 0002:00000c70 ??_C@_00A@?$AA@ 00413c70 LIBCMTD:dbgrpt.obj + 0002:00000c74 ??_C@_0HD@BHFH@?6?6For?5information?5on?5how?5your?5pr@ 00413c74 LIBCMTD:dbgrpt.obj + 0002:00000ce8 ??_C@_08GFHP@dbgrpt?4c?$AA@ 00413ce8 LIBCMTD:dbgrpt.obj + 0002:00000cf4 ??_C@_0BG@FBEA@szUserMessage?5?$CB?$DN?5NULL?$AA@ 00413cf4 LIBCMTD:dbgrpt.obj + 0002:00000d0c ??_C@_0P@LNLA@format?5?$CB?$DN?5NULL?$AA@ 00413d0c LIBCMTD:sprintf.obj + 0002:00000d1c ??_C@_09NEAG@sprintf?4c?$AA@ 00413d1c LIBCMTD:sprintf.obj + 0002:00000d28 ??_C@_0P@OOIN@string?5?$CB?$DN?5NULL?$AA@ 00413d28 LIBCMTD:sprintf.obj + 0002:00000d38 ??_C@_07HPAH@_file?4c?$AA@ 00413d38 LIBCMTD:_file.obj + 0002:00000d40 ??_C@_0L@HE@vsprintf?4c?$AA@ 00413d40 LIBCMTD:vsnprint.obj + 0002:00000d4c ??_C@_08CNMA@winsig?4c?$AA@ 00413d4c LIBCMTD:winsig.obj + 0002:00000d58 ??_C@_0DP@IHIN@?$CI?$CCinconsistent?5IOB?5fields?$CC?0?5stre@ 00413d58 LIBCMTD:_flsbuf.obj + 0002:00000d98 ??_C@_09LGEI@_flsbuf?4c?$AA@ 00413d98 LIBCMTD:_flsbuf.obj + 0002:00000da4 ??_C@_0M@KJPK@str?5?$CB?$DN?5NULL?$AA@ 00413da4 LIBCMTD:_flsbuf.obj + 0002:00000db0 ___lookuptable 00413db0 LIBCMTD:output.obj + 0002:00000e0c ??_C@_1O@POHA@?$AA?$CI?$AAn?$AAu?$AAl?$AAl?$AA?$CJ?$AA?$AA@ 00413e0c LIBCMTD:output.obj + 0002:00000e1c ??_C@_06ONKE@?$CInull?$CJ?$AA@ 00413e1c LIBCMTD:output.obj + 0002:00000e24 ??_C@_08MIHI@output?4c?$AA@ 00413e24 LIBCMTD:output.obj + 0002:00000e30 ??_C@_0P@PIHB@ch?5?$CB?$DN?5_T?$CI?8?20?8?$CJ?$AA@ 00413e30 LIBCMTD:output.obj + 0002:00000e40 ??_C@_08OKGP@aw_str?4c?$AA@ 00413e40 LIBCMTD:aw_str.obj + 0002:00000e4c ??_C@_01A@?$AA?$AA@ 00413e4c LIBCMTD:aw_str.obj + 0002:00000e50 ??_C@_13A@?$AA?$AA?$AA?$AA@ 00413e50 LIBCMTD:aw_str.obj + 0002:00000e54 ??_C@_09EMDO@_getbuf?4c?$AA@ 00413e54 LIBCMTD:_getbuf.obj + 0002:00000e60 ??_C@_08PHBD@fclose?4c?$AA@ 00413e60 LIBCMTD:fclose.obj + 0002:00000e6c ??_C@_0P@FHEA@stream?5?$CB?$DN?5NULL?$AA@ 00413e6c LIBCMTD:fclose.obj + 0002:00000e7c ??_C@_09LNLM@osfinfo?4c?$AA@ 00413e7c LIBCMTD:osfinfo.obj + 0002:00000e88 ??_C@_07PCLE@LC_TIME?$AA@ 00413e88 LIBCMTD:setlocal.obj + 0002:00000e90 ??_C@_0L@NKG@LC_NUMERIC?$AA@ 00413e90 LIBCMTD:setlocal.obj + 0002:00000e9c ??_C@_0M@CBIH@LC_MONETARY?$AA@ 00413e9c LIBCMTD:setlocal.obj + 0002:00000ea8 ??_C@_08LFGE@LC_CTYPE?$AA@ 00413ea8 LIBCMTD:setlocal.obj + 0002:00000eb4 ??_C@_0L@CFLC@LC_COLLATE?$AA@ 00413eb4 LIBCMTD:setlocal.obj + 0002:00000ec0 ??_C@_06GCPK@LC_ALL?$AA@ 00413ec0 LIBCMTD:setlocal.obj + 0002:00000ec8 ??_C@_01FAJB@?$DL?$AA@ 00413ec8 LIBCMTD:setlocal.obj + 0002:00000ecc ??_C@_02BGDO@?$DN?$DL?$AA@ 00413ecc LIBCMTD:setlocal.obj + 0002:00000ed0 ??_C@_0L@MOEE@setlocal?4c?$AA@ 00413ed0 LIBCMTD:setlocal.obj + 0002:00000edc ??_C@_01KPOD@?$DN?$AA@ 00413edc LIBCMTD:setlocal.obj + 0002:00000ee0 ??_C@_03DBOJ@_?4?0?$AA@ 00413ee0 LIBCMTD:setlocal.obj + 0002:00000ee4 ??_C@_01PJCK@?4?$AA@ 00413ee4 LIBCMTD:setlocal.obj + 0002:00000ee8 ??_C@_01NON@_?$AA@ 00413ee8 LIBCMTD:setlocal.obj + 0002:00000eec ??_C@_0L@JIE@_freebuf?4c?$AA@ 00413eec LIBCMTD:_freebuf.obj + 0002:00000ef8 ??_C@_0L@EEGJ@inittime?4c?$AA@ 00413ef8 LIBCMTD:inittime.obj + 0002:00000f04 ??_C@_09IMJJ@initnum?4c?$AA@ 00413f04 LIBCMTD:initnum.obj + 0002:00000f10 ??_C@_09KPNI@initmon?4c?$AA@ 00413f10 LIBCMTD:initmon.obj + 0002:00000f1c ??_C@_0L@COIL@initctyp?4c?$AA@ 00413f1c LIBCMTD:initctyp.obj + 0002:00000f28 ??_C@_0O@GLHB@united?9states?$AA@ 00413f28 LIBCMTD:getqloc.obj + 0002:00000f38 ??_C@_0P@IIKK@united?9kingdom?$AA@ 00413f38 LIBCMTD:getqloc.obj + 0002:00000f48 ??_C@_0O@ILBP@united?5states?$AA@ 00413f48 LIBCMTD:getqloc.obj + 0002:00000f58 ??_C@_0P@KBEK@united?5kingdom?$AA@ 00413f58 LIBCMTD:getqloc.obj + 0002:00000f68 ??_C@_03IGKO@twn?$AA@ 00413f68 LIBCMTD:getqloc.obj + 0002:00000f6c ??_C@_06CMKP@turkey?$AA@ 00413f6c LIBCMTD:getqloc.obj + 0002:00000f74 ??_C@_03PMGP@tur?$AA@ 00413f74 LIBCMTD:getqloc.obj + 0002:00000f78 ??_C@_06OBJC@taiwan?$AA@ 00413f78 LIBCMTD:getqloc.obj + 0002:00000f80 ??_C@_0M@EKGN@switzerland?$AA@ 00413f80 LIBCMTD:getqloc.obj + 0002:00000f8c ??_C@_06PJFL@sweden?$AA@ 00413f8c LIBCMTD:getqloc.obj + 0002:00000f94 ??_C@_03JDMO@swe?$AA@ 00413f94 LIBCMTD:getqloc.obj + 0002:00000f98 ??_C@_03COKO@svk?$AA@ 00413f98 LIBCMTD:getqloc.obj + 0002:00000f9c ??_C@_05FBKI@spain?$AA@ 00413f9c LIBCMTD:getqloc.obj + 0002:00000fa4 ??_C@_0M@BDFM@south?9korea?$AA@ 00413fa4 LIBCMTD:getqloc.obj + 0002:00000fb0 ??_C@_0M@HNHN@south?5korea?$AA@ 00413fb0 LIBCMTD:getqloc.obj + 0002:00000fbc ??_C@_03FANM@sgp?$AA@ 00413fbc LIBCMTD:getqloc.obj + 0002:00000fc0 ??_C@_09EOGO@singapore?$AA@ 00413fc0 LIBCMTD:getqloc.obj + 0002:00000fcc ??_C@_06NHNE@russia?$AA@ 00413fcc LIBCMTD:getqloc.obj + 0002:00000fd4 ??_C@_03CKBC@prt?$AA@ 00413fd4 LIBCMTD:getqloc.obj + 0002:00000fd8 ??_C@_08EJOH@pr?9china?$AA@ 00413fd8 LIBCMTD:getqloc.obj + 0002:00000fe4 ??_C@_08CHMG@pr?5china?$AA@ 00413fe4 LIBCMTD:getqloc.obj + 0002:00000ff0 ??_C@_08GGAN@portugal?$AA@ 00413ff0 LIBCMTD:getqloc.obj + 0002:00000ffc ??_C@_06NOHH@poland?$AA@ 00413ffc LIBCMTD:getqloc.obj + 0002:00001004 ??_C@_03EECH@pol?$AA@ 00414004 LIBCMTD:getqloc.obj + 0002:00001008 ??_C@_03DPCG@nzl?$AA@ 00414008 LIBCMTD:getqloc.obj + 0002:0000100c ??_C@_02OCJK@nz?$AA@ 0041400c LIBCMTD:getqloc.obj + 0002:00001010 ??_C@_06BAPG@norway?$AA@ 00414010 LIBCMTD:getqloc.obj + 0002:00001018 ??_C@_0M@MMKA@new?9zealand?$AA@ 00414018 LIBCMTD:getqloc.obj + 0002:00001024 ??_C@_0M@OFEA@new?5zealand?$AA@ 00414024 LIBCMTD:getqloc.obj + 0002:00001030 ??_C@_0M@POGE@netherlands?$AA@ 00414030 LIBCMTD:getqloc.obj + 0002:0000103c ??_C@_06KJLN@mexico?$AA@ 0041403c LIBCMTD:getqloc.obj + 0002:00001044 ??_C@_03HEJJ@mex?$AA@ 00414044 LIBCMTD:getqloc.obj + 0002:00001048 ??_C@_05OOCK@korea?$AA@ 00414048 LIBCMTD:getqloc.obj + 0002:00001050 ??_C@_05EEKJ@japan?$AA@ 00414050 LIBCMTD:getqloc.obj + 0002:00001058 ??_C@_05DHEA@italy?$AA@ 00414058 LIBCMTD:getqloc.obj + 0002:00001060 ??_C@_03DEBD@irl?$AA@ 00414060 LIBCMTD:getqloc.obj + 0002:00001064 ??_C@_07JJLD@ireland?$AA@ 00414064 LIBCMTD:getqloc.obj + 0002:0000106c ??_C@_07FGBB@iceland?$AA@ 0041406c LIBCMTD:getqloc.obj + 0002:00001074 ??_C@_07IDDB@hungary?$AA@ 00414074 LIBCMTD:getqloc.obj + 0002:0000107c ??_C@_09MGEH@hong?9kong?$AA@ 0041407c LIBCMTD:getqloc.obj + 0002:00001088 ??_C@_09OHNN@hong?5kong?$AA@ 00414088 LIBCMTD:getqloc.obj + 0002:00001094 ??_C@_07CCAK@holland?$AA@ 00414094 LIBCMTD:getqloc.obj + 0002:0000109c ??_C@_03EFD@hkg?$AA@ 0041409c LIBCMTD:getqloc.obj + 0002:000010a0 ??_C@_06FLIB@greece?$AA@ 004140a0 LIBCMTD:getqloc.obj + 0002:000010a8 ??_C@_0O@MEPL@great?5britain?$AA@ 004140a8 LIBCMTD:getqloc.obj + 0002:000010b8 ??_C@_03EJIM@grc?$AA@ 004140b8 LIBCMTD:getqloc.obj + 0002:000010bc ??_C@_07CPP@germany?$AA@ 004140bc LIBCMTD:getqloc.obj + 0002:000010c4 ??_C@_03CAMC@gbr?$AA@ 004140c4 LIBCMTD:getqloc.obj + 0002:000010c8 ??_C@_06DNOH@france?$AA@ 004140c8 LIBCMTD:getqloc.obj + 0002:000010d0 ??_C@_07IMFA@finland?$AA@ 004140d0 LIBCMTD:getqloc.obj + 0002:000010d8 ??_C@_07LGIB@england?$AA@ 004140d8 LIBCMTD:getqloc.obj + 0002:000010e0 ??_C@_03GOFI@dnk?$AA@ 004140e0 LIBCMTD:getqloc.obj + 0002:000010e4 ??_C@_07ILKC@denmark?$AA@ 004140e4 LIBCMTD:getqloc.obj + 0002:000010ec ??_C@_03ELPA@cze?$AA@ 004140ec LIBCMTD:getqloc.obj + 0002:000010f0 ??_C@_03KHAN@chn?$AA@ 004140f0 LIBCMTD:getqloc.obj + 0002:000010f4 ??_C@_05NMPB@china?$AA@ 004140f4 LIBCMTD:getqloc.obj + 0002:000010fc ??_C@_03MAM@che?$AA@ 004140fc LIBCMTD:getqloc.obj + 0002:00001100 ??_C@_06CJAO@canada?$AA@ 00414100 LIBCMTD:getqloc.obj + 0002:00001108 ??_C@_03EPD@can?$AA@ 00414108 LIBCMTD:getqloc.obj + 0002:0000110c ??_C@_07GN@britain?$AA@ 0041410c LIBCMTD:getqloc.obj + 0002:00001114 ??_C@_06GEHJ@brazil?$AA@ 00414114 LIBCMTD:getqloc.obj + 0002:0000111c ??_C@_03GOO@bra?$AA@ 0041411c LIBCMTD:getqloc.obj + 0002:00001120 ??_C@_07ECDD@belgium?$AA@ 00414120 LIBCMTD:getqloc.obj + 0002:00001128 ??_C@_03FJGB@bel?$AA@ 00414128 LIBCMTD:getqloc.obj + 0002:0000112c ??_C@_03DIDL@aut?$AA@ 0041412c LIBCMTD:getqloc.obj + 0002:00001130 ??_C@_07OIK@austria?$AA@ 00414130 LIBCMTD:getqloc.obj + 0002:00001138 ??_C@_09MKKB@australia?$AA@ 00414138 LIBCMTD:getqloc.obj + 0002:00001144 ??_C@_03GNNO@aus?$AA@ 00414144 LIBCMTD:getqloc.obj + 0002:00001148 ??_C@_07DLAK@america?$AA@ 00414148 LIBCMTD:getqloc.obj + 0002:00001150 ??_C@_03IPEP@usa?$AA@ 00414150 LIBCMTD:getqloc.obj + 0002:00001154 ??_C@_02PILH@us?$AA@ 00414154 LIBCMTD:getqloc.obj + 0002:00001158 ??_C@_02FHP@uk?$AA@ 00414158 LIBCMTD:getqloc.obj + 0002:0000115c ??_C@_07BNFK@turkish?$AA@ 0041415c LIBCMTD:getqloc.obj + 0002:00001164 ??_C@_03MKGF@trk?$AA@ 00414164 LIBCMTD:getqloc.obj + 0002:00001168 ??_C@_05DEAI@swiss?$AA@ 00414168 LIBCMTD:getqloc.obj + 0002:00001170 ??_C@_07ENHD@swedish?$AA@ 00414170 LIBCMTD:getqloc.obj + 0002:00001178 ??_C@_03IFGE@sve?$AA@ 00414178 LIBCMTD:getqloc.obj + 0002:0000117c ??_C@_0P@NJBN@spanish?9modern?$AA@ 0041417c LIBCMTD:getqloc.obj + 0002:0000118c ??_C@_0BA@NHDN@spanish?9mexican?$AA@ 0041418c LIBCMTD:getqloc.obj + 0002:0000119c ??_C@_07EFLC@spanish?$AA@ 0041419c LIBCMTD:getqloc.obj + 0002:000011a4 ??_C@_06KFFJ@slovak?$AA@ 004141a4 LIBCMTD:getqloc.obj + 0002:000011ac ??_C@_03EBAN@sky?$AA@ 004141ac LIBCMTD:getqloc.obj + 0002:000011b0 ??_C@_07JNDN@russian?$AA@ 004141b0 LIBCMTD:getqloc.obj + 0002:000011b8 ??_C@_03LKIP@rus?$AA@ 004141b8 LIBCMTD:getqloc.obj + 0002:000011bc ??_C@_03LCE@ptg?$AA@ 004141bc LIBCMTD:getqloc.obj + 0002:000011c0 ??_C@_03LOP@ptb?$AA@ 004141c0 LIBCMTD:getqloc.obj + 0002:000011c4 ??_C@_0BF@KMMM@portuguese?9brazilian?$AA@ 004141c4 LIBCMTD:getqloc.obj + 0002:000011dc ??_C@_0L@HNPF@portuguese?$AA@ 004141dc LIBCMTD:getqloc.obj + 0002:000011e8 ??_C@_06CDNL@polish?$AA@ 004141e8 LIBCMTD:getqloc.obj + 0002:000011f0 ??_C@_03CKDN@plk?$AA@ 004141f0 LIBCMTD:getqloc.obj + 0002:000011f4 ??_C@_0BC@BAAE@norwegian?9nynorsk?$AA@ 004141f4 LIBCMTD:getqloc.obj + 0002:00001208 ??_C@_0BB@PBHK@norwegian?9bokmal?$AA@ 00414208 LIBCMTD:getqloc.obj + 0002:0000121c ??_C@_09EHKL@norwegian?$AA@ 0041421c LIBCMTD:getqloc.obj + 0002:00001228 ??_C@_03BLDF@nor?$AA@ 00414228 LIBCMTD:getqloc.obj + 0002:0000122c ??_C@_03EMKB@non?$AA@ 0041422c LIBCMTD:getqloc.obj + 0002:00001230 ??_C@_03HGMI@nld?$AA@ 00414230 LIBCMTD:getqloc.obj + 0002:00001234 ??_C@_03IJLK@nlb?$AA@ 00414234 LIBCMTD:getqloc.obj + 0002:00001238 ??_C@_06KKAE@korean?$AA@ 00414238 LIBCMTD:getqloc.obj + 0002:00001240 ??_C@_03BHJ@kor?$AA@ 00414240 LIBCMTD:getqloc.obj + 0002:00001244 ??_C@_03LKFD@jpn?$AA@ 00414244 LIBCMTD:getqloc.obj + 0002:00001248 ??_C@_08KCAB@japanese?$AA@ 00414248 LIBCMTD:getqloc.obj + 0002:00001254 ??_C@_03OLMB@its?$AA@ 00414254 LIBCMTD:getqloc.obj + 0002:00001258 ??_C@_0O@BEAN@italian?9swiss?$AA@ 00414258 LIBCMTD:getqloc.obj + 0002:00001268 ??_C@_07CBME@italian?$AA@ 00414268 LIBCMTD:getqloc.obj + 0002:00001270 ??_C@_03BHJP@ita?$AA@ 00414270 LIBCMTD:getqloc.obj + 0002:00001274 ??_C@_03CCLJ@isl?$AA@ 00414274 LIBCMTD:getqloc.obj + 0002:00001278 ??_C@_0O@OIFK@irish?9english?$AA@ 00414278 LIBCMTD:getqloc.obj + 0002:00001288 ??_C@_09OEEF@icelandic?$AA@ 00414288 LIBCMTD:getqloc.obj + 0002:00001294 ??_C@_09IBNG@hungarian?$AA@ 00414294 LIBCMTD:getqloc.obj + 0002:000012a0 ??_C@_03FCHO@hun?$AA@ 004142a0 LIBCMTD:getqloc.obj + 0002:000012a4 ??_C@_05DOKD@greek?$AA@ 004142a4 LIBCMTD:getqloc.obj + 0002:000012ac ??_C@_0N@NBPL@german?9swiss?$AA@ 004142ac LIBCMTD:getqloc.obj + 0002:000012bc ??_C@_0BA@MKDC@german?9austrian?$AA@ 004142bc LIBCMTD:getqloc.obj + 0002:000012cc ??_C@_06IAFA@german?$AA@ 004142cc LIBCMTD:getqloc.obj + 0002:000012d4 ??_C@_03LCOK@frs?$AA@ 004142d4 LIBCMTD:getqloc.obj + 0002:000012d8 ??_C@_0N@ODNB@french?9swiss?$AA@ 004142d8 LIBCMTD:getqloc.obj + 0002:000012e8 ??_C@_0BA@NABK@french?9canadian?$AA@ 004142e8 LIBCMTD:getqloc.obj + 0002:000012f8 ??_C@_0P@CJNO@french?9belgian?$AA@ 004142f8 LIBCMTD:getqloc.obj + 0002:00001308 ??_C@_06PMNM@french?$AA@ 00414308 LIBCMTD:getqloc.obj + 0002:00001310 ??_C@_03BLJK@frc?$AA@ 00414310 LIBCMTD:getqloc.obj + 0002:00001314 ??_C@_03LBAN@frb?$AA@ 00414314 LIBCMTD:getqloc.obj + 0002:00001318 ??_C@_03EOLE@fra?$AA@ 00414318 LIBCMTD:getqloc.obj + 0002:0000131c ??_C@_07DLFI@finnish?$AA@ 0041431c LIBCMTD:getqloc.obj + 0002:00001324 ??_C@_03KLOL@fin?$AA@ 00414324 LIBCMTD:getqloc.obj + 0002:00001328 ??_C@_03KNMC@esp?$AA@ 00414328 LIBCMTD:getqloc.obj + 0002:0000132c ??_C@_03KPHI@esn?$AA@ 0041432c LIBCMTD:getqloc.obj + 0002:00001330 ??_C@_03FAMB@esm?$AA@ 00414330 LIBCMTD:getqloc.obj + 0002:00001334 ??_C@_03DPKJ@enz?$AA@ 00414334 LIBCMTD:getqloc.obj + 0002:00001338 ??_C@_03DOPE@enu?$AA@ 00414338 LIBCMTD:getqloc.obj + 0002:0000133c ??_C@_03GJGA@eni?$AA@ 0041433c LIBCMTD:getqloc.obj + 0002:00001340 ??_C@_0M@LJOL@english?9usa?$AA@ 00414340 LIBCMTD:getqloc.obj + 0002:0000134c ??_C@_0L@FMNC@english?9us?$AA@ 0041434c LIBCMTD:getqloc.obj + 0002:00001358 ??_C@_0L@KBBK@english?9uk?$AA@ 00414358 LIBCMTD:getqloc.obj + 0002:00001364 ??_C@_0L@EGPP@english?9nz?$AA@ 00414364 LIBCMTD:getqloc.obj + 0002:00001370 ??_C@_0M@PMJI@english?9ire?$AA@ 00414370 LIBCMTD:getqloc.obj + 0002:0000137c ??_C@_0M@DCFH@english?9can?$AA@ 0041437c LIBCMTD:getqloc.obj + 0002:00001388 ??_C@_0M@FLHK@english?9aus?$AA@ 00414388 LIBCMTD:getqloc.obj + 0002:00001394 ??_C@_0BB@HNCK@english?9american?$AA@ 00414394 LIBCMTD:getqloc.obj + 0002:000013a8 ??_C@_07ELCN@english?$AA@ 004143a8 LIBCMTD:getqloc.obj + 0002:000013b0 ??_C@_03MCKK@eng?$AA@ 004143b0 LIBCMTD:getqloc.obj + 0002:000013b4 ??_C@_03GIPG@enc?$AA@ 004143b4 LIBCMTD:getqloc.obj + 0002:000013b8 ??_C@_03DNNI@ena?$AA@ 004143b8 LIBCMTD:getqloc.obj + 0002:000013bc ??_C@_03EEPO@ell?$AA@ 004143bc LIBCMTD:getqloc.obj + 0002:000013c0 ??_C@_0O@PAMI@dutch?9belgian?$AA@ 004143c0 LIBCMTD:getqloc.obj + 0002:000013d0 ??_C@_05NPEI@dutch?$AA@ 004143d0 LIBCMTD:getqloc.obj + 0002:000013d8 ??_C@_03OCEJ@deu?$AA@ 004143d8 LIBCMTD:getqloc.obj + 0002:000013dc ??_C@_03BNDL@des?$AA@ 004143dc LIBCMTD:getqloc.obj + 0002:000013e0 ??_C@_03OBGF@dea?$AA@ 004143e0 LIBCMTD:getqloc.obj + 0002:000013e4 ??_C@_06KEAI@danish?$AA@ 004143e4 LIBCMTD:getqloc.obj + 0002:000013ec ??_C@_03LKJC@dan?$AA@ 004143ec LIBCMTD:getqloc.obj + 0002:000013f0 ??_C@_05BMOA@czech?$AA@ 004143f0 LIBCMTD:getqloc.obj + 0002:000013f8 ??_C@_03LPJK@csy?$AA@ 004143f8 LIBCMTD:getqloc.obj + 0002:000013fc ??_C@_03POL@cht?$AA@ 004143fc LIBCMTD:getqloc.obj + 0002:00001400 ??_C@_03FKAO@chs?$AA@ 00414400 LIBCMTD:getqloc.obj + 0002:00001404 ??_C@_0BE@FPEJ@chinese?9traditional?$AA@ 00414404 LIBCMTD:getqloc.obj + 0002:00001418 ??_C@_0BC@CHFL@chinese?9singapore?$AA@ 00414418 LIBCMTD:getqloc.obj + 0002:0000142c ??_C@_0BD@DCMH@chinese?9simplified?$AA@ 0041442c LIBCMTD:getqloc.obj + 0002:00001440 ??_C@_0BB@JMOE@chinese?9hongkong?$AA@ 00414440 LIBCMTD:getqloc.obj + 0002:00001454 ??_C@_07NGFN@chinese?$AA@ 00414454 LIBCMTD:getqloc.obj + 0002:0000145c ??_C@_03PCOI@chi?$AA@ 0041445c LIBCMTD:getqloc.obj + 0002:00001460 ??_C@_03FIHP@chh?$AA@ 00414460 LIBCMTD:getqloc.obj + 0002:00001464 ??_C@_08HFLO@canadian?$AA@ 00414464 LIBCMTD:getqloc.obj + 0002:00001470 ??_C@_07INIJ@belgian?$AA@ 00414470 LIBCMTD:getqloc.obj + 0002:00001478 ??_C@_0L@LCCA@australian?$AA@ 00414478 LIBCMTD:getqloc.obj + 0002:00001484 ??_C@_0BB@BJIO@american?9english?$AA@ 00414484 LIBCMTD:getqloc.obj + 0002:00001498 ??_C@_0BB@DAGO@american?5english?$AA@ 00414498 LIBCMTD:getqloc.obj + 0002:000014ac ??_C@_08HENB@american?$AA@ 004144ac LIBCMTD:getqloc.obj + 0002:000014b8 ??_C@_03DGJE@OCP?$AA@ 004144b8 LIBCMTD:getqloc.obj + 0002:000014bc ??_C@_03EKFG@ACP?$AA@ 004144bc LIBCMTD:getqloc.obj + 0002:000014c0 ??_C@_07CJME@H?3mm?3ss?$AA@ 004144c0 LIBCMTD:strftime.obj + 0002:000014c8 ??_C@_0BE@MHI@dddd?0?5MMMM?5dd?0?5yyyy?$AA@ 004144c8 LIBCMTD:strftime.obj + 0002:000014dc ??_C@_06HCAD@M?1d?1yy?$AA@ 004144dc LIBCMTD:strftime.obj + 0002:000014e4 ??_C@_02DBLP@PM?$AA@ 004144e4 LIBCMTD:strftime.obj + 0002:000014e8 ??_C@_02ENLM@AM?$AA@ 004144e8 LIBCMTD:strftime.obj + 0002:000014ec ??_C@_08LIDF@December?$AA@ 004144ec LIBCMTD:strftime.obj + 0002:000014f8 ??_C@_08NJLI@November?$AA@ 004144f8 LIBCMTD:strftime.obj + 0002:00001504 ??_C@_07IAMM@October?$AA@ 00414504 LIBCMTD:strftime.obj + 0002:0000150c ??_C@_09MKGD@September?$AA@ 0041450c LIBCMTD:strftime.obj + 0002:00001518 ??_C@_06PADP@August?$AA@ 00414518 LIBCMTD:strftime.obj + 0002:00001520 ??_C@_04PIJO@July?$AA@ 00414520 LIBCMTD:strftime.obj + 0002:00001528 ??_C@_04ICFP@June?$AA@ 00414528 LIBCMTD:strftime.obj + 0002:00001530 ??_C@_05JFGC@April?$AA@ 00414530 LIBCMTD:strftime.obj + 0002:00001538 ??_C@_05FGPD@March?$AA@ 00414538 LIBCMTD:strftime.obj + 0002:00001540 ??_C@_08PGBA@February?$AA@ 00414540 LIBCMTD:strftime.obj + 0002:0000154c ??_C@_07BPKJ@January?$AA@ 0041454c LIBCMTD:strftime.obj + 0002:00001554 ??_C@_03PGJO@Dec?$AA@ 00414554 LIBCMTD:strftime.obj + 0002:00001558 ??_C@_03PDLM@Nov?$AA@ 00414558 LIBCMTD:strftime.obj + 0002:0000155c ??_C@_03BLHK@Oct?$AA@ 0041455c LIBCMTD:strftime.obj + 0002:00001560 ??_C@_03DPFM@Sep?$AA@ 00414560 LIBCMTD:strftime.obj + 0002:00001564 ??_C@_03CMCH@Aug?$AA@ 00414564 LIBCMTD:strftime.obj + 0002:00001568 ??_C@_03OBKI@Jul?$AA@ 00414568 LIBCMTD:strftime.obj + 0002:0000156c ??_C@_03LEIG@Jun?$AA@ 0041456c LIBCMTD:strftime.obj + 0002:00001570 ??_C@_03MGHB@May?$AA@ 00414570 LIBCMTD:strftime.obj + 0002:00001574 ??_C@_03MJJM@Apr?$AA@ 00414574 LIBCMTD:strftime.obj + 0002:00001578 ??_C@_03GNHA@Mar?$AA@ 00414578 LIBCMTD:strftime.obj + 0002:0000157c ??_C@_03PICE@Feb?$AA@ 0041457c LIBCMTD:strftime.obj + 0002:00001580 ??_C@_03IEIF@Jan?$AA@ 00414580 LIBCMTD:strftime.obj + 0002:00001584 ??_C@_08FAKH@Saturday?$AA@ 00414584 LIBCMTD:strftime.obj + 0002:00001590 ??_C@_06ONCK@Friday?$AA@ 00414590 LIBCMTD:strftime.obj + 0002:00001598 ??_C@_08CCFO@Thursday?$AA@ 00414598 LIBCMTD:strftime.obj + 0002:000015a4 ??_C@_09PBIN@Wednesday?$AA@ 004145a4 LIBCMTD:strftime.obj + 0002:000015b0 ??_C@_07BMBC@Tuesday?$AA@ 004145b0 LIBCMTD:strftime.obj + 0002:000015b8 ??_C@_06CHLK@Monday?$AA@ 004145b8 LIBCMTD:strftime.obj + 0002:000015c0 ??_C@_06OOEM@Sunday?$AA@ 004145c0 LIBCMTD:strftime.obj + 0002:000015c8 ??_C@_03MPKK@Sat?$AA@ 004145c8 LIBCMTD:strftime.obj + 0002:000015cc ??_C@_03FINJ@Fri?$AA@ 004145cc LIBCMTD:strftime.obj + 0002:000015d0 ??_C@_03HIKC@Thu?$AA@ 004145d0 LIBCMTD:strftime.obj + 0002:000015d4 ??_C@_03HECK@Wed?$AA@ 004145d4 LIBCMTD:strftime.obj + 0002:000015d8 ??_C@_03ECCP@Tue?$AA@ 004145d8 LIBCMTD:strftime.obj + 0002:000015dc ??_C@_03PIEP@Mon?$AA@ 004145dc LIBCMTD:strftime.obj + 0002:000015e0 ??_C@_03FHEP@Sun?$AA@ 004145e0 LIBCMTD:strftime.obj + 0002:000015e4 ??_C@_03MKGK@a?1p?$AA@ 004145e4 LIBCMTD:strftime.obj + 0002:000015e8 ??_C@_05BDJK@am?1pm?$AA@ 004145e8 LIBCMTD:strftime.obj + 0002:000015f0 ??_C@_0L@HKCB@inithelp?4c?$AA@ 004145f0 LIBCMTD:inithelp.obj + 0002:000015fc ??_C@_08OKNB@aw_loc?4c?$AA@ 004145fc LIBCMTD:aw_loc.obj + 0002:00001608 ___dnames 00414608 LIBCMTD:timeset.obj + 0002:00001620 ___mnames 00414620 LIBCMTD:timeset.obj + 0002:00001648 ??_C@_07DEKI@tzset?4c?$AA@ 00414648 LIBCMTD:tzset.obj + 0002:00001650 ??_C@_02JHIA@TZ?$AA@ 00414650 LIBCMTD:tzset.obj + 0002:00001654 ??_C@_0L@LIHO@wcstombs?4c?$AA@ 00414654 LIBCMTD:wcstombs.obj + 0002:00001660 ??_C@_0N@ILLM@pwcs?5?$CB?$DN?5NULL?$AA@ 00414660 LIBCMTD:wcstombs.obj + 0002:00001670 ??_C@_08GINJ@aw_map?4c?$AA@ 00414670 LIBCMTD:aw_map.obj + 0002:0000167c ??_C@_0L@EJNO@wtombenv?4c?$AA@ 0041467c LIBCMTD:wtombenv.obj + 0002:00001688 ??_C@_08BGPE@aw_cmp?4c?$AA@ 00414688 LIBCMTD:aw_cmp.obj + 0002:00001694 ??_C@_0DN@PPKB@cchCount1?$DN?$DN0?5?$CG?$CG?5cchCount2?$DN?$DN1?5?$HM?$HM?5@ 00414694 LIBCMTD:aw_cmp.obj + 0002:000016d4 ??_C@_08FEIK@setenv?4c?$AA@ 004146d4 LIBCMTD:setenv.obj + 0003:00000000 ___xc_a 00415000 LIBCMTD:crt0init.obj + 0003:00000004 ___xc_z 00415004 LIBCMTD:crt0init.obj + 0003:00000008 ___xi_a 00415008 LIBCMTD:crt0init.obj + 0003:00000010 ___xi_z 00415010 LIBCMTD:crt0init.obj + 0003:00000014 ___xp_a 00415014 LIBCMTD:crt0init.obj + 0003:0000001c ___xp_z 0041501c LIBCMTD:crt0init.obj + 0003:00000020 ___xt_a 00415020 LIBCMTD:crt0init.obj + 0003:00000024 ___xt_z 00415024 LIBCMTD:crt0init.obj + 0003:00000030 ?szName@@3PADA 00415030 Testui.obj + 0003:000000b0 __aexit_rtn 004150b0 LIBCMTD:wincrt0.obj + 0003:000000b4 ___app_type 004150b4 LIBCMTD:wincrt0.obj + 0003:000000b8 __XcptActTab 004150b8 LIBCMTD:winxfltr.obj + 0003:00000130 __First_FPE_Indx 00415130 LIBCMTD:winxfltr.obj + 0003:00000134 __Num_FPE 00415134 LIBCMTD:winxfltr.obj + 0003:00000138 __XcptActTabSize 00415138 LIBCMTD:winxfltr.obj + 0003:0000013c __XcptActTabCount 0041513c LIBCMTD:winxfltr.obj + 0003:00000238 ___badioinfo 00415238 LIBCMTD:ioinit.obj + 0003:0000025c ___tlsindex 0041525c LIBCMTD:tidtable.obj + 0003:00000260 __amblksiz 00415260 LIBCMTD:heapinit.obj + 0003:00000264 __NLG_Destination 00415264 LIBCMTD:exsup.obj + 0003:00000308 __crtDbgFlag 00415308 LIBCMTD:dbgheap.obj + 0003:00000310 __crtBreakAlloc 00415310 LIBCMTD:dbgheap.obj + 0003:00000338 __locktable 00415338 LIBCMTD:mlock.obj + 0003:000003f8 __pctype 004153f8 LIBCMTD:ctype.obj + 0003:000003fc __pwctype 004153fc LIBCMTD:ctype.obj + 0003:00000400 __ctype 00415400 LIBCMTD:ctype.obj + 0003:00000610 ___small_block_heap 00415610 LIBCMTD:sbheap.obj + 0003:00002634 ___sbh_threshold 00417634 LIBCMTD:sbheap.obj + 0003:00002640 __crtAssertBusy 00417640 LIBCMTD:dbgrpt.obj + 0003:00002648 __CrtDbgMode 00417648 LIBCMTD:dbgrpt.obj + 0003:00002658 __CrtDbgFile 00417658 LIBCMTD:dbgrpt.obj + 0003:00002674 __pfnAllocHook 00417674 LIBCMTD:dbghook.obj + 0003:00002678 ___mb_cur_max 00417678 LIBCMTD:nlsdata1.obj + 0003:0000267c ___decimal_point 0041767c LIBCMTD:nlsdata1.obj + 0003:00002680 ___decimal_point_length 00417680 LIBCMTD:nlsdata1.obj + 0003:00002688 __iob 00417688 LIBCMTD:_file.obj + 0003:00002a78 ___nullstring 00417a78 LIBCMTD:output.obj + 0003:00002a7c ___wnullstring 00417a7c LIBCMTD:output.obj + 0003:00002a80 __cfltcvt_tab 00417a80 LIBCMTD:cmiscdat.obj + 0003:00002c00 ___rg_lang_rec 00417c00 LIBCMTD:getqloc.obj + 0003:00002f18 ___rg_ctry_rec 00417f18 LIBCMTD:getqloc.obj + 0003:000031d0 ___rgrgwlang 004181d0 LIBCMTD:getqloc.obj + 0003:000033f8 ___lc_time_c 004183f8 LIBCMTD:strftime.obj + 0003:000034a4 ___lc_time_curr 004184a4 LIBCMTD:strftime.obj + 0003:000034a8 ___lconv_static_decimal 004184a8 LIBCMTD:lconv.obj + 0003:000034b0 ___lconv_c 004184b0 LIBCMTD:lconv.obj + 0003:000034e0 ___lconv 004184e0 LIBCMTD:lconv.obj + 0003:000034f0 __timezone 004184f0 LIBCMTD:timeset.obj + 0003:000034f4 __daylight 004184f4 LIBCMTD:timeset.obj + 0003:000034f8 __dstbias 004184f8 LIBCMTD:timeset.obj + 0003:00003580 __tzname 00418580 LIBCMTD:timeset.obj + 0003:000035b0 __lpdays 004185b0 LIBCMTD:days.obj + 0003:000035e8 __days 004185e8 LIBCMTD:days.obj + 0003:00003624 __aenvptr 00418624 LIBCMTD:wincrt0.obj + 0003:00003628 __wenvptr 00418628 LIBCMTD:wincrt0.obj + 0003:0000362c ___error_mode 0041862c LIBCMTD:wincrt0.obj + 0003:00003630 __umaskval 00418630 LIBCMTD:crt0dat.obj + 0003:00003634 __osver 00418634 LIBCMTD:crt0dat.obj + 0003:00003638 __winver 00418638 LIBCMTD:crt0dat.obj + 0003:0000363c __winmajor 0041863c LIBCMTD:crt0dat.obj + 0003:00003640 __winminor 00418640 LIBCMTD:crt0dat.obj + 0003:00003644 ___argc 00418644 LIBCMTD:crt0dat.obj + 0003:00003648 ___argv 00418648 LIBCMTD:crt0dat.obj + 0003:0000364c ___wargv 0041864c LIBCMTD:crt0dat.obj + 0003:00003650 __environ 00418650 LIBCMTD:crt0dat.obj + 0003:00003654 ___initenv 00418654 LIBCMTD:crt0dat.obj + 0003:00003658 __wenviron 00418658 LIBCMTD:crt0dat.obj + 0003:0000365c ___winitenv 0041865c LIBCMTD:crt0dat.obj + 0003:00003660 __pgmptr 00418660 LIBCMTD:crt0dat.obj + 0003:00003664 __wpgmptr 00418664 LIBCMTD:crt0dat.obj + 0003:00003668 __exitflag 00418668 LIBCMTD:crt0dat.obj + 0003:0000366c __C_Termination_Done 0041866c LIBCMTD:crt0dat.obj + 0003:00003670 __C_Exit_Done 00418670 LIBCMTD:crt0dat.obj + 0003:00003788 __mbctype 00418788 LIBCMTD:mbctype.obj + 0003:0000388c ___mbcodepage 0041888c LIBCMTD:mbctype.obj + 0003:00003890 ___mblcid 00418890 LIBCMTD:mbctype.obj + 0003:00003898 ___mbulinfo 00418898 LIBCMTD:mbctype.obj + 0003:000038a8 __adbgmsg 004188a8 LIBCMTD:crt0msg.obj + 0003:00003920 ___lc_handle 00418920 LIBCMTD:nlsdata2.obj + 0003:00003938 ___lc_codepage 00418938 LIBCMTD:nlsdata2.obj + 0003:00003950 __newmode 00418950 LIBCMTD:_newmode.obj + 0003:00003954 ?_pnhHeap@@3P6AHI@ZA 00418954 LIBCMTD:handler.obj + 0003:00003958 __cflush 00418958 LIBCMTD:_file.obj + 0003:00003984 ___lc_time_intl 00418984 LIBCMTD:inittime.obj + 0003:000039a0 ___lc_id 004189a0 LIBCMTD:nlsdata3.obj + 0003:000039c4 __alternate_form 004189c4 LIBCMTD:strftime.obj + 0003:000039c8 __no_lead_zeros 004189c8 LIBCMTD:strftime.obj + 0003:000039d8 ___lconv_static_null 004189d8 LIBCMTD:lconv.obj + 0003:00003ab4 ___setlc_active 00418ab4 + 0003:00003ab8 ___unguarded_readlc_active 00418ab8 + 0003:00003abc ___piob 00418abc + 0003:00003ac0 __bufin 00418ac0 + 0003:00004ac0 __nstream 00419ac0 + 0003:00004ac4 __pfnReportHook 00419ac4 + 0003:00004ac8 __pfnDumpClient 00419ac8 + 0003:00004acc __crtheap 00419acc + 0003:00004ae0 ___pioinfo 00419ae0 + 0003:00004be0 __nhandle 00419be0 + 0003:00004be4 ___onexitend 00419be4 + 0003:00004be8 ___onexitbegin 00419be8 + 0003:00004bec __FPinit 00419bec + 0003:00004bf0 __acmdln 00419bf0 + 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 0041a000 kernel32:KERNEL32.dll + 0004:00000014 __IMPORT_DESCRIPTOR_USER32 0041a014 user32:USER32.dll + 0004:00000028 __IMPORT_DESCRIPTOR_storm 0041a028 storm:storm.dll + 0004:0000003c __IMPORT_DESCRIPTOR_hellfrui 0041a03c hellfrui:hellfrui.dll + 0004:00000050 __NULL_IMPORT_DESCRIPTOR 0041a050 kernel32:KERNEL32.dll + 0004:000001f0 __imp__DeleteCriticalSection@4 0041a1f0 kernel32:KERNEL32.dll + 0004:000001f4 __imp__GetCurrentThreadId@0 0041a1f4 kernel32:KERNEL32.dll + 0004:000001f8 __imp__TlsSetValue@8 0041a1f8 kernel32:KERNEL32.dll + 0004:000001fc __imp__FreeEnvironmentStringsW@4 0041a1fc kernel32:KERNEL32.dll + 0004:00000200 __imp__SetEnvironmentVariableA@8 0041a200 kernel32:KERNEL32.dll + 0004:00000204 __imp__CompareStringW@24 0041a204 kernel32:KERNEL32.dll + 0004:00000208 __imp__CompareStringA@24 0041a208 kernel32:KERNEL32.dll + 0004:0000020c __imp__LCMapStringW@24 0041a20c kernel32:KERNEL32.dll + 0004:00000210 __imp__LCMapStringA@24 0041a210 kernel32:KERNEL32.dll + 0004:00000214 __imp__GetTimeZoneInformation@4 0041a214 kernel32:KERNEL32.dll + 0004:00000218 __imp__GetLocaleInfoW@16 0041a218 kernel32:KERNEL32.dll + 0004:0000021c __imp__GetLocaleInfoA@16 0041a21c kernel32:KERNEL32.dll + 0004:00000220 __imp__GetUserDefaultLCID@0 0041a220 kernel32:KERNEL32.dll + 0004:00000224 __imp__IsValidCodePage@4 0041a224 kernel32:KERNEL32.dll + 0004:00000228 __imp__IsValidLocale@8 0041a228 kernel32:KERNEL32.dll + 0004:0000022c __imp__CloseHandle@4 0041a22c kernel32:KERNEL32.dll + 0004:00000230 __imp__Sleep@4 0041a230 kernel32:KERNEL32.dll + 0004:00000234 __imp__SetStdHandle@8 0041a234 kernel32:KERNEL32.dll + 0004:00000238 __imp__FlushFileBuffers@4 0041a238 kernel32:KERNEL32.dll + 0004:0000023c __imp__SetFilePointer@16 0041a23c kernel32:KERNEL32.dll + 0004:00000240 __imp__GetStringTypeW@16 0041a240 kernel32:KERNEL32.dll + 0004:00000244 __imp__GetStringTypeA@20 0041a244 kernel32:KERNEL32.dll + 0004:00000248 __imp__SetConsoleCtrlHandler@8 0041a248 kernel32:KERNEL32.dll + 0004:0000024c __imp__HeapReAlloc@16 0041a24c kernel32:KERNEL32.dll + 0004:00000250 __imp__InterlockedIncrement@4 0041a250 kernel32:KERNEL32.dll + 0004:00000254 __imp__OutputDebugStringA@4 0041a254 kernel32:KERNEL32.dll + 0004:00000258 __imp__InterlockedDecrement@4 0041a258 kernel32:KERNEL32.dll + 0004:0000025c __imp__GetModuleHandleA@4 0041a25c kernel32:KERNEL32.dll + 0004:00000260 __imp__GetStartupInfoA@4 0041a260 kernel32:KERNEL32.dll + 0004:00000264 __imp__GetCommandLineA@0 0041a264 kernel32:KERNEL32.dll + 0004:00000268 __imp__GetVersion@0 0041a268 kernel32:KERNEL32.dll + 0004:0000026c __imp__ExitProcess@4 0041a26c kernel32:KERNEL32.dll + 0004:00000270 __imp__TerminateProcess@8 0041a270 kernel32:KERNEL32.dll + 0004:00000274 __imp__GetCurrentProcess@0 0041a274 kernel32:KERNEL32.dll + 0004:00000278 __imp__UnhandledExceptionFilter@4 0041a278 kernel32:KERNEL32.dll + 0004:0000027c __imp__GetModuleFileNameA@12 0041a27c kernel32:KERNEL32.dll + 0004:00000280 __imp__FreeEnvironmentStringsA@4 0041a280 kernel32:KERNEL32.dll + 0004:00000284 __imp__MultiByteToWideChar@24 0041a284 kernel32:KERNEL32.dll + 0004:00000288 __imp__DebugBreak@0 0041a288 kernel32:KERNEL32.dll + 0004:0000028c __imp__GetEnvironmentStrings@0 0041a28c kernel32:KERNEL32.dll + 0004:00000290 __imp__GetEnvironmentStringsW@0 0041a290 kernel32:KERNEL32.dll + 0004:00000294 __imp__WideCharToMultiByte@32 0041a294 kernel32:KERNEL32.dll + 0004:00000298 __imp__GetCPInfo@8 0041a298 kernel32:KERNEL32.dll + 0004:0000029c __imp__GetACP@0 0041a29c kernel32:KERNEL32.dll + 0004:000002a0 __imp__GetOEMCP@0 0041a2a0 kernel32:KERNEL32.dll + 0004:000002a4 __imp__SetHandleCount@4 0041a2a4 kernel32:KERNEL32.dll + 0004:000002a8 __imp__GetStdHandle@4 0041a2a8 kernel32:KERNEL32.dll + 0004:000002ac __imp__GetFileType@4 0041a2ac kernel32:KERNEL32.dll + 0004:000002b0 __imp__GetCurrentDirectoryA@8 0041a2b0 kernel32:KERNEL32.dll + 0004:000002b4 __imp__WriteFile@20 0041a2b4 kernel32:KERNEL32.dll + 0004:000002b8 __imp__IsBadWritePtr@8 0041a2b8 kernel32:KERNEL32.dll + 0004:000002bc __imp__TlsAlloc@0 0041a2bc kernel32:KERNEL32.dll + 0004:000002c0 __imp__TlsFree@4 0041a2c0 kernel32:KERNEL32.dll + 0004:000002c4 __imp__SetLastError@4 0041a2c4 kernel32:KERNEL32.dll + 0004:000002c8 __imp__TlsGetValue@4 0041a2c8 kernel32:KERNEL32.dll + 0004:000002cc __imp__GetLastError@0 0041a2cc kernel32:KERNEL32.dll + 0004:000002d0 __imp__GetCurrentThread@0 0041a2d0 kernel32:KERNEL32.dll + 0004:000002d4 __imp__HeapDestroy@4 0041a2d4 kernel32:KERNEL32.dll + 0004:000002d8 __imp__HeapCreate@12 0041a2d8 kernel32:KERNEL32.dll + 0004:000002dc __imp__VirtualFree@12 0041a2dc kernel32:KERNEL32.dll + 0004:000002e0 __imp__RtlUnwind@16 0041a2e0 kernel32:KERNEL32.dll + 0004:000002e4 __imp__LeaveCriticalSection@4 0041a2e4 kernel32:KERNEL32.dll + 0004:000002e8 __imp__FatalAppExitA@8 0041a2e8 kernel32:KERNEL32.dll + 0004:000002ec __imp__IsBadReadPtr@8 0041a2ec kernel32:KERNEL32.dll + 0004:000002f0 __imp__HeapValidate@12 0041a2f0 kernel32:KERNEL32.dll + 0004:000002f4 __imp__InitializeCriticalSection@4 0041a2f4 kernel32:KERNEL32.dll + 0004:000002f8 __imp__EnterCriticalSection@4 0041a2f8 kernel32:KERNEL32.dll + 0004:000002fc __imp__GetProcAddress@8 0041a2fc kernel32:KERNEL32.dll + 0004:00000300 __imp__HeapFree@12 0041a300 kernel32:KERNEL32.dll + 0004:00000304 __imp__VirtualAlloc@16 0041a304 kernel32:KERNEL32.dll + 0004:00000308 __imp__HeapAlloc@12 0041a308 kernel32:KERNEL32.dll + 0004:0000030c __imp__LoadLibraryA@4 0041a30c kernel32:KERNEL32.dll + 0004:00000310 \177KERNEL32_NULL_THUNK_DATA 0041a310 kernel32:KERNEL32.dll + 0004:00000314 __imp__MessageBoxA@16 0041a314 user32:USER32.dll + 0004:00000318 __imp__ShowCursor@4 0041a318 user32:USER32.dll + 0004:0000031c \177USER32_NULL_THUNK_DATA 0041a31c user32:USER32.dll + 0004:00000320 __imp__UiCategoryCallback@28 0041a320 hellfrui:hellfrui.dll + 0004:00000324 __imp__UiInitialize@0 0041a324 hellfrui:hellfrui.dll + 0004:00000328 __imp__UiCreatePlayerDescription@12 0041a328 hellfrui:hellfrui.dll + 0004:0000032c __imp__UiDestroy@0 0041a32c hellfrui:hellfrui.dll + 0004:00000330 __imp__UiArtCallback@32 0041a330 hellfrui:hellfrui.dll + 0004:00000334 __imp__UiCreateGameCallback@24 0041a334 hellfrui:hellfrui.dll + 0004:00000338 __imp__UiDrawDescCallback@32 0041a338 hellfrui:hellfrui.dll + 0004:0000033c __imp__UiMessageBoxCallback@16 0041a33c hellfrui:hellfrui.dll + 0004:00000340 __imp__UiSoundCallback@12 0041a340 hellfrui:hellfrui.dll + 0004:00000344 __imp__UiAuthCallback@28 0041a344 hellfrui:hellfrui.dll + 0004:00000348 __imp__UiGetDataCallback@20 0041a348 hellfrui:hellfrui.dll + 0004:0000034c __imp__UiSelectProvider@24 0041a34c hellfrui:hellfrui.dll + 0004:00000350 __imp__UiOnPaint@4 0041a350 hellfrui:hellfrui.dll + 0004:00000354 \177hellfrui_NULL_THUNK_DATA 0041a354 hellfrui:hellfrui.dll + 0004:00000358 __imp__SFileSetBasePath@4 0041a358 storm:storm.dll + 0004:0000035c __imp__StormDestroy@0 0041a35c storm:storm.dll + 0004:00000360 __imp__SDrawGetFrameWindow@4 0041a360 storm:storm.dll + 0004:00000364 __imp__SNetSelectGame@24 0041a364 storm:storm.dll + 0004:00000368 __imp__SFileEnableDirectAccess@4 0041a368 storm:storm.dll + 0004:0000036c __imp__SDrawAutoInitialize@32 0041a36c storm:storm.dll + 0004:00000370 __imp__SDrawMessageBox@12 0041a370 storm:storm.dll + 0004:00000374 __imp__SMsgRegisterMessage@12 0041a374 storm:storm.dll + 0004:00000378 \177storm_NULL_THUNK_DATA 0041a378 storm:storm.dll + + entry point at 0001:00000390 + + Static symbols + + 0001:000114a0 _$$$00001 004124a0 f LIBCMTD:strchr.obj + 0001:00011240 _findenv 00412240 f LIBCMTD:setenv.obj + 0001:000112c0 _copy_environ 004122c0 f LIBCMTD:setenv.obj + 0001:00010af0 _wcsncnt 00411af0 f LIBCMTD:aw_cmp.obj + 0001:00010f10 _strncnt 00411f10 f LIBCMTD:aw_cmp.obj + 0001:000103e0 _wcsncnt 004113e0 f LIBCMTD:aw_map.obj + 0001:00010700 _strncnt 00411700 f LIBCMTD:aw_map.obj + 0001:0000ffd0 _wcsncnt 00410fd0 f LIBCMTD:wcstombs.obj + 0001:0000efa0 __tzset_lk 0040ffa0 f LIBCMTD:tzset.obj + 0001:0000f330 __isindst_lk 00410330 f LIBCMTD:tzset.obj + 0001:0000f630 _cvtdate 00410630 f LIBCMTD:tzset.obj + 0001:0000e920 _wcstoxl 0040f920 f LIBCMTD:wcstol.obj + 0001:0000d730 __expandtime 0040e730 f LIBCMTD:strftime.obj + 0001:0000dd60 __store_str 0040ed60 f LIBCMTD:strftime.obj + 0001:0000ddb0 __store_num 0040edb0 f LIBCMTD:strftime.obj + 0001:0000de60 __store_number 0040ee60 f LIBCMTD:strftime.obj + 0001:0000df10 __store_winword 0040ef10 f LIBCMTD:strftime.obj + 0001:0000ccd0 _trans_lang_lang 0040dcd0 f LIBCMTD:getqloc.obj + 0001:0000cd60 _trans_ctry_ctry 0040dd60 f LIBCMTD:getqloc.obj + 0001:0000cdf0 _trans_ctry_lang 0040ddf0 f LIBCMTD:getqloc.obj + 0001:0000ce70 _testSpecialCtry 0040de70 f LIBCMTD:getqloc.obj + 0001:0000cea0 _match_ctry_lang 0040dea0 f LIBCMTD:getqloc.obj + 0001:0000c0e0 __get_lc_lconv 0040d0e0 f LIBCMTD:initmon.obj + 0001:0000c2f0 _fix_grouping 0040d2f0 f LIBCMTD:initmon.obj + 0001:0000c370 __free_lc_lconv 0040d370 f LIBCMTD:initmon.obj + 0001:0000bf30 _fix_grouping 0040cf30 f LIBCMTD:initnum.obj + 0001:0000b220 __get_lc_time 0040c220 f LIBCMTD:inittime.obj + 0001:0000b7b0 __free_lc_time 0040c7b0 f LIBCMTD:inittime.obj + 0001:0000bac0 _storeTimeFmt 0040cac0 f LIBCMTD:inittime.obj + 0001:0000a920 __setlocale_set_cat 0040b920 f LIBCMTD:setlocal.obj + 0001:0000aab0 __setlocale_get_all 0040bab0 f LIBCMTD:setlocal.obj + 0001:00009140 _flsall 0040a140 f LIBCMTD:fflush.obj + 0001:00008a10 _write_char 00409a10 f LIBCMTD:output.obj + 0001:00008a90 _write_multi_char 00409a90 f LIBCMTD:output.obj + 0001:00008ad0 _write_string 00409ad0 f LIBCMTD:output.obj + 0001:00008b20 _get_int_arg 00409b20 f LIBCMTD:output.obj + 0001:00008b40 _get_int64_arg 00409b40 f LIBCMTD:output.obj + 0001:00008b60 _get_short_arg 00409b60 f LIBCMTD:output.obj + 0001:00007630 _ctrlevent_capture@4 00408630 f LIBCMTD:winsig.obj + 0001:00007920 _siglookup 00408920 f LIBCMTD:winsig.obj + 0001:000073d0 _$$$00001 004083d0 f LIBCMTD:chkstk.obj + 0001:00006f50 _xtoa 00407f50 f LIBCMTD:xtoa.obj + 0001:000070d0 _x64toa@20 004080d0 f LIBCMTD:xtoa.obj + 0001:00006380 _CrtMessageWindow 00407380 f LIBCMTD:dbgrpt.obj + 0001:00002be0 _realloc_help 00403be0 f LIBCMTD:dbgheap.obj + 0001:00003820 _CheckBytes 00404820 f LIBCMTD:dbgheap.obj + 0001:00004410 __printMemBlockData 00405410 f LIBCMTD:dbgheap.obj + 0001:0000229c __unwind_handler 0040329c f LIBCMTD:exsup.obj + 0001:00001a10 _getSystemCP 00402a10 f LIBCMTD:mbctype.obj + 0001:00001a70 _CPtoLCID 00402a70 f LIBCMTD:mbctype.obj + 0001:00001af0 _setSBCS 00402af0 f LIBCMTD:mbctype.obj + 0001:00000e20 _parse_cmdline 00401e20 f LIBCMTD:stdargv.obj + 0001:00000ba0 _x_ismbbtype 00401ba0 f LIBCMTD:ismbbyte.obj + 0001:000009c0 _xcptlookup 004019c0 f LIBCMTD:winxfltr.obj + 0001:000006c0 _doexit 004016c0 f LIBCMTD:crt0dat.obj + 0001:000007d0 __initterm 004017d0 f LIBCMTD:crt0dat.obj + +FIXUPS: 17c6 fffffc47 b 8 b f 5 10 1e 8 5 5 42 aa c 23 10 33 9 6a9 29 26 +FIXUPS: 1cf5 12 1c fffffd09 20 20 23 20 20 20 1d 20 20 2d fffffc8e 13 fffffe03 +FIXUPS: 162f 1d 20 1e 20 1b 77 12 13 19 b 31 14dd 29a fffff7cc c 18 15 +FIXUPS: 2739 10a 45 ff 4c 15 7 e 179 fffff7a9 2e 88 2f 69 1a 16 12a 4a +FIXUPS: 26a5 2b fffff6d8 1b 13 22 fffffe50 28 195c 15 17 1d 14 13 14 1a +FIXUPS: 3683 fffffd4c d 11 2f 25 fffffe4f ffffff75 fffffd50 2a 2e 37 81 +FIXUPS: 308f 21 62 1a 1a 1a 1a 1a e fffff9f6 13 2327 1b ec 33 49 10e 1a +FIXUPS: 521e 20 31 28 4f 3a 31 18 45 18 f 1a 88 69 2a 34 39 16 7c 2a 28 +FIXUPS: 3474 1c 77 6e 11b0 45 c 5a 1f 93 57 8 51 2b 28 28 28 16 94 2b 32 +FIXUPS: 4b07 39 20 49 33 22 67 47 80 1f 5e 15 4d 5a 11 fffff2f4 20 1c 10 +FIXUPS: 41c0 24 1c 50 1d 1f 62 34 3b 2b 3b 45 2b c 41 6b 56 36 c 2b 1c +FIXUPS: 45f6 1c 16 c 1f 62 51 fffff3a0 1e 1b 33 2f 51 15 1e d 35 21 1b +FIXUPS: 3c5f 6b 28 32 4f 18 1f 5b 66 25 25 b3 19 59 5f 54 85 15 1e d 1e4f +FIXUPS: 61d7 11a 9e a3 102 119 fffff0d3 60 13 a 34 a 6a 2c 44 2c ffffde23 +FIXUPS: 372a 28 15 18 d 1d 25 2f 1c 69 28 5f 54 21 3e5b fffffebe 1b fffff947 +FIXUPS: 7104 2a 18 38 16 2b 14 2e 18 18 7a 63 34 47 1e d 2f 15 11 1d 21 +FIXUPS: 745b 26 19d 18 19 19 a 516 27 b 2a ffffff0d 14 1d a c fffffdb9 +FIXUPS: 7908 43 14 37 1b 40 14 59 14 a c 39 fffffd8f 14 36 14 f fffffe51 +FIXUPS: 7756 29 3e f 1020 99 ff 10 fffff962 2a 44 4b fffffe4d 2a 44 4b +FIXUPS: 7f1e 18 11b 21 4b 4a 17 a8 fffffc2b 35 18 a6 10 fffffe93 fffffe95 +FIXUPS: 7c46 45 4b fffffe98 8 f0a 108 10 3e 54 4d 28 fffffd06 31 21 1f +FIXUPS: 8a23 21 10 fffff9e3 43 9 82 24 27 2a 17 58 50 44 1d 16 c4 13 28 +FIXUPS: 87c5 1d 16a3 59 ffffeef8 34 24 cb 67 133 18 21 34 30 a8 e2 142 +FIXUPS: 94b6 31 1e 2a 1b 116 25 122 1e 30 75 32 22 26 177 55 53 ca4 fffffbfb +FIXUPS: a3ad 14 14 f 27 11 4c fffffb75 e c f 22 28 78 6e 21 68 33 40 25 +FIXUPS: a266 fffffc9a 5c 41 1f fffffcb5 5d 98 e e 1140 17 2e 2d a 16 fffffe11 +FIXUPS: ad96 c f 4c 27 f f 27 fffffa9f 21 13 50 5e fffffe04 37 fffffccd +FIXUPS: a4fd 14 14 f 6d 1a2 b 10 3e 1588 67 27 40 2a 45 2e 33 4a 25 2b +FIXUPS: b526 fffffa5b 82 2f 83 7d 11 b8 b d6 b 65 b 66 2f e b 18 31 3d +FIXUPS: b4ba 2cc 5a 38 47 17 31 11 1a 22 10 43 26 c 47 1b 40 3e 31 4e 4e +FIXUPS: bb40 25 2a 9b 19 1b 26 2e 1b 14 19 19 d4f 14 14 14 14 36 1c 1c +FIXUPS: cb4c 11b fffff456 3a fffffeab b 14 c f 1e 1b c 10 29 2d fffff4c8 +FIXUPS: b592 8c 48 51 19 2f 2d 39 10c8 11 11 11 11 11 11 11 11 11 11 11 +FIXUPS: c8f9 11 11 11 11 11 11 11 11 11 11 11 11 11 14 14 14 14 14 14 fffffa20 +FIXUPS: c48d 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 22 22 22 22 22 22 22 +FIXUPS: c730 22 22 18 3c 11 11 11 11 11 5e7 11 10 34 30 16 3b fffff288 +FIXUPS: c181 10 e 1e 11 25 11 5e 1f 1f 1f 1f 1f 1c 1f 1f 1f 1f 1f 1f 1f +FIXUPS: c411 1f 1f ce6 1f 1f 1f 17 17 1f 1f 1f 1f 1f 1f 1f 1f 1f bd 11 +FIXUPS: d3b6 11 11 11 11 fffff8b9 1d 1d 17 16 11 11 46 13 14 eb9 2c 29 +FIXUPS: dd0b 90 6c fffff646 1f 19 19 19 106 65 a6 22 17 e 15 e e e 2b 11 +FIXUPS: cfcf 1f 10 e 4c 11 4f 11 4d 17cc 2a 28 45 2d 2d 28 28 1c 29 41 +FIXUPS: eb2d 3a 24 31 36 50 a 21 164 31c 20 110 ffffe749 41 52 1d 22 8a +FIXUPS: db54 6a 1b 71f 1c 1c 1b 36 3a 9 2e 9 48 9 2e 9 2e 9 2c 9 2c 9 2c +FIXUPS: e559 3d 54 84 8d 7e 23 23 23 3a 51 24 1043 13 fffffab5 33 2c 32 +FIXUPS: f44d 2e 14 1b 43 6f ffffea8d 15 1b 50 9 2e 9 71 15 1b 51 9 2e 9 +FIXUPS: e249 15 37 15 1e 14 1f96 6c 29 c d b0 53 66 53 25 23 fffff9bd 24 +FIXUPS: ff0f 23 fffffd08 85 69 33 8c 34 fffffaf7 3c 136 27 11 d8 7e fffffaa7 +FIXUPS: f741 13 ea 12ca 6d a5 fffffde0 34 fffffe62 1d 14 8e 2c fffff5d4 +FIXUPS: ff60 14 12 8 7 1b 2b 17 af 16 3e e 15 18 c 18 17 a 15 3b 5b 1119 +FIXUPS: 1139b e 13 e eb 9b c9 a3 e 13 e fffff95c c d 2e 29 19 2c fffffb8c +FIXUPS: 10cac 13 62 3e 6b 60 64 54 8c 3b fffffb30 1c 167c 5a c 19 42 3c +FIXUPS: 12315 19 28 c 21 fffff542 19 e4 81 63 e 13 e f3 19 fc 140 72 5c +FIXUPS: 11ef9 fffff8f7 43 ffffff4b fffffa27 a0 7c fffefd80 7 23 15 15 1d +FIXUPS: 10c3 52 1d 17 39 1c 1e 10 59 3b 1a 5 5 11142 f 58 28 29 fffffaf6 +FIXUPS: 11fb9 29 3a 40 3e 33 4b diff --git a/Uisrc/DEBUG/DIABLOUI.PCH b/Uisrc/DEBUG/DIABLOUI.PCH new file mode 100644 index 0000000..405420d Binary files /dev/null and b/Uisrc/DEBUG/DIABLOUI.PCH differ diff --git a/Uisrc/DEBUG/DIABLOUI.PDB b/Uisrc/DEBUG/DIABLOUI.PDB new file mode 100644 index 0000000..c906e87 Binary files /dev/null and b/Uisrc/DEBUG/DIABLOUI.PDB differ diff --git a/Uisrc/DEBUG/TESTUI.OBJ b/Uisrc/DEBUG/TESTUI.OBJ new file mode 100644 index 0000000..ccff833 Binary files /dev/null and b/Uisrc/DEBUG/TESTUI.OBJ differ diff --git a/Uisrc/DEBUG/TESTUI.SBR b/Uisrc/DEBUG/TESTUI.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/DEBUG/VC50.IDB b/Uisrc/DEBUG/VC50.IDB new file mode 100644 index 0000000..1369c6e Binary files /dev/null and b/Uisrc/DEBUG/VC50.IDB differ diff --git a/Uisrc/DEBUG/VC50.PDB b/Uisrc/DEBUG/VC50.PDB new file mode 100644 index 0000000..00f7f2d Binary files /dev/null and b/Uisrc/DEBUG/VC50.PDB differ diff --git a/Uisrc/DIABLOUI.BAK b/Uisrc/DIABLOUI.BAK new file mode 100644 index 0000000..4e25fd7 --- /dev/null +++ b/Uisrc/DIABLOUI.BAK @@ -0,0 +1,2751 @@ +# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +!IF "$(CFG)" == "" +CFG=Standard - Win32 Debug +!MESSAGE No configuration specified. Defaulting to Standard - Win32 Debug. +!ENDIF + +!IF "$(CFG)" != "DiabloUI - Win32 Release" && "$(CFG)" !=\ + "DiabloUI - Win32 Debug" && "$(CFG)" != "ui - Win32 Release" && "$(CFG)" !=\ + "ui - Win32 Debug" && "$(CFG)" != "battle - Win32 Release" && "$(CFG)" !=\ + "battle - Win32 Debug" && "$(CFG)" != "Standard - Win32 Release" && "$(CFG)" !=\ + "Standard - Win32 Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE on this makefile +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Diabloui.mak" CFG="Standard - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DiabloUI - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "DiabloUI - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "ui - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "battle - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "battle - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Standard - Win32 Release" (based on\ + "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Standard - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE +!ERROR An invalid configuration is specified. +!ENDIF + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF +################################################################################ +# Begin Project +# PROP Target_Last_Scanned "Standard - Win32 Debug" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +OUTDIR=.\Release +INTDIR=.\Release + +ALL : "Standard - Win32 Release" "battle - Win32 Release" "ui - Win32 Release"\ + ".\bin\DiabloUI.exe" + +CLEAN : + -@erase "$(INTDIR)\Testui.obj" + -@erase "$(OUTDIR)\DiabloUI.map" + -@erase ".\bin\DiabloUI.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Diabloui.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Diabloui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\release\diabloui.lib battle\release\battle.lib standard\release\standard.lib /nologo /subsystem:windows /map /machine:I386 /out:"bin/DiabloUI.exe" +# SUBTRACT LINK32 /incremental:yes +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib ui\release\diabloui.lib battle\release\battle.lib\ + standard\release\standard.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/DiabloUI.pdb" /map:"$(INTDIR)/DiabloUI.map" /machine:I386\ + /out:"bin/DiabloUI.exe" +LINK32_OBJS= \ + "$(INTDIR)\Testui.obj" \ + ".\battle\Release\battle.lib" \ + ".\Standard\Release\Standard.lib" \ + ".\STORM.LIB" \ + ".\ui\Release\diabloui.lib" + +".\bin\DiabloUI.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +OUTDIR=.\Debug +INTDIR=.\Debug + +ALL : "Standard - Win32 Debug" "battle - Win32 Debug" "ui - Win32 Debug"\ + ".\bin\DiabloUI.exe" + +CLEAN : + -@erase "$(INTDIR)\Testui.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\DiabloUI.map" + -@erase "$(OUTDIR)\DiabloUI.pdb" + -@erase ".\bin\DiabloUI.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Diabloui.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Diabloui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /map /debug /machine:I386 /out:"bin/DiabloUI.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib\ + standard\debug\standard.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/DiabloUI.pdb" /map:"$(INTDIR)/DiabloUI.map" /debug\ + /machine:I386 /out:"bin/DiabloUI.exe" +LINK32_OBJS= \ + "$(INTDIR)\Testui.obj" \ + ".\battle\debug\battle.lib" \ + ".\Standard\Debug\Standard.lib" \ + ".\STORM.LIB" \ + ".\ui\Debug\diabloui.lib" + +".\bin\DiabloUI.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "ui - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ui\Release" +# PROP BASE Intermediate_Dir "ui\Release" +# PROP BASE Target_Dir "ui" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ui\Release" +# PROP Intermediate_Dir "ui\Release" +# PROP Target_Dir "ui" +OUTDIR=.\ui\Release +INTDIR=.\ui\Release + +ALL : ".\bin\diabloui.dll" + +CLEAN : + -@erase "$(INTDIR)\artfont.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\CopyProt.obj" + -@erase "$(INTDIR)\cr8game.obj" + -@erase "$(INTDIR)\CreaDung.obj" + -@erase "$(INTDIR)\CreaHero.obj" + -@erase "$(INTDIR)\credits.obj" + -@erase "$(INTDIR)\DiabEdit.obj" + -@erase "$(INTDIR)\Diabloui.obj" + -@erase "$(INTDIR)\DiabloUI.res" + -@erase "$(INTDIR)\DirLink.obj" + -@erase "$(INTDIR)\disclaim.obj" + -@erase "$(INTDIR)\Doom.obj" + -@erase "$(INTDIR)\EntrDial.obj" + -@erase "$(INTDIR)\EntrName.obj" + -@erase "$(INTDIR)\Fade.obj" + -@erase "$(INTDIR)\Focus.obj" + -@erase "$(INTDIR)\local.obj" + -@erase "$(INTDIR)\Logon.obj" + -@erase "$(INTDIR)\MainMenu.obj" + -@erase "$(INTDIR)\Modem.obj" + -@erase "$(INTDIR)\ModmStat.obj" + -@erase "$(INTDIR)\OkCancel.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\Sbar.obj" + -@erase "$(INTDIR)\SelClass.obj" + -@erase "$(INTDIR)\SelConn.obj" + -@erase "$(INTDIR)\SelDial.obj" + -@erase "$(INTDIR)\SelGame.obj" + -@erase "$(INTDIR)\SelHero.obj" + -@erase "$(INTDIR)\SelIPX.obj" + -@erase "$(INTDIR)\SelList.obj" + -@erase "$(INTDIR)\SelLoad.obj" + -@erase "$(INTDIR)\SelModem.obj" + -@erase "$(INTDIR)\SelYesNo.obj" + -@erase "$(INTDIR)\Title.obj" + -@erase "$(INTDIR)\UiSnd.obj" + -@erase "$(OUTDIR)\diabloui.exp" + -@erase "$(OUTDIR)\diabloui.lib" + -@erase "$(OUTDIR)\diabloui.map" + -@erase ".\bin\diabloui.dll" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/ui.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\ui\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/DiabloUI.res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/ui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows /dll /map /machine:I386 /out:"bin/diabloui.dll" +# SUBTRACT LINK32 /incremental:yes +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/diabloui.pdb"\ + /map:"$(INTDIR)/diabloui.map" /machine:I386 /def:".\Ui\Diabloui.def"\ + /out:"bin/diabloui.dll" /implib:"$(OUTDIR)/diabloui.lib" +DEF_FILE= \ + ".\Ui\Diabloui.def" +LINK32_OBJS= \ + "$(INTDIR)\artfont.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\CopyProt.obj" \ + "$(INTDIR)\cr8game.obj" \ + "$(INTDIR)\CreaDung.obj" \ + "$(INTDIR)\CreaHero.obj" \ + "$(INTDIR)\credits.obj" \ + "$(INTDIR)\DiabEdit.obj" \ + "$(INTDIR)\Diabloui.obj" \ + "$(INTDIR)\DiabloUI.res" \ + "$(INTDIR)\DirLink.obj" \ + "$(INTDIR)\disclaim.obj" \ + "$(INTDIR)\Doom.obj" \ + "$(INTDIR)\EntrDial.obj" \ + "$(INTDIR)\EntrName.obj" \ + "$(INTDIR)\Fade.obj" \ + "$(INTDIR)\Focus.obj" \ + "$(INTDIR)\local.obj" \ + "$(INTDIR)\Logon.obj" \ + "$(INTDIR)\MainMenu.obj" \ + "$(INTDIR)\Modem.obj" \ + "$(INTDIR)\ModmStat.obj" \ + "$(INTDIR)\OkCancel.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\Sbar.obj" \ + "$(INTDIR)\SelClass.obj" \ + "$(INTDIR)\SelConn.obj" \ + "$(INTDIR)\SelDial.obj" \ + "$(INTDIR)\SelGame.obj" \ + "$(INTDIR)\SelHero.obj" \ + "$(INTDIR)\SelIPX.obj" \ + "$(INTDIR)\SelList.obj" \ + "$(INTDIR)\SelLoad.obj" \ + "$(INTDIR)\SelModem.obj" \ + "$(INTDIR)\SelYesNo.obj" \ + "$(INTDIR)\Title.obj" \ + "$(INTDIR)\UiSnd.obj" \ + ".\STORM.LIB" + +".\bin\diabloui.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ui\ui___Win" +# PROP BASE Intermediate_Dir "ui\ui___Win" +# PROP BASE Target_Dir "ui" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ui\Debug" +# PROP Intermediate_Dir "ui\Debug" +# PROP Target_Dir "ui" +OUTDIR=.\ui\Debug +INTDIR=.\ui\Debug + +ALL : ".\bin\diabloui.dll" + +CLEAN : + -@erase "$(INTDIR)\artfont.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\CopyProt.obj" + -@erase "$(INTDIR)\cr8game.obj" + -@erase "$(INTDIR)\CreaDung.obj" + -@erase "$(INTDIR)\CreaHero.obj" + -@erase "$(INTDIR)\credits.obj" + -@erase "$(INTDIR)\DiabEdit.obj" + -@erase "$(INTDIR)\Diabloui.obj" + -@erase "$(INTDIR)\DiabloUI.res" + -@erase "$(INTDIR)\DirLink.obj" + -@erase "$(INTDIR)\disclaim.obj" + -@erase "$(INTDIR)\Doom.obj" + -@erase "$(INTDIR)\EntrDial.obj" + -@erase "$(INTDIR)\EntrName.obj" + -@erase "$(INTDIR)\Fade.obj" + -@erase "$(INTDIR)\Focus.obj" + -@erase "$(INTDIR)\local.obj" + -@erase "$(INTDIR)\Logon.obj" + -@erase "$(INTDIR)\MainMenu.obj" + -@erase "$(INTDIR)\Modem.obj" + -@erase "$(INTDIR)\ModmStat.obj" + -@erase "$(INTDIR)\OkCancel.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\Sbar.obj" + -@erase "$(INTDIR)\SelClass.obj" + -@erase "$(INTDIR)\SelConn.obj" + -@erase "$(INTDIR)\SelDial.obj" + -@erase "$(INTDIR)\SelGame.obj" + -@erase "$(INTDIR)\SelHero.obj" + -@erase "$(INTDIR)\SelIPX.obj" + -@erase "$(INTDIR)\SelList.obj" + -@erase "$(INTDIR)\SelLoad.obj" + -@erase "$(INTDIR)\SelModem.obj" + -@erase "$(INTDIR)\SelYesNo.obj" + -@erase "$(INTDIR)\Title.obj" + -@erase "$(INTDIR)\UiSnd.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\diabloui.exp" + -@erase "$(OUTDIR)\diabloui.lib" + -@erase "$(OUTDIR)\diabloui.map" + -@erase "$(OUTDIR)\diabloui.pdb" + -@erase ".\bin\diabloui.dll" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/ui.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\ui\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/DiabloUI.res" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/ui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /out:"bin/diabloui.dll" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/diabloui.pdb"\ + /map:"$(INTDIR)/diabloui.map" /debug /machine:I386 /def:".\Ui\Diabloui.def"\ + /out:"bin/diabloui.dll" /implib:"$(OUTDIR)/diabloui.lib" +DEF_FILE= \ + ".\Ui\Diabloui.def" +LINK32_OBJS= \ + "$(INTDIR)\artfont.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\CopyProt.obj" \ + "$(INTDIR)\cr8game.obj" \ + "$(INTDIR)\CreaDung.obj" \ + "$(INTDIR)\CreaHero.obj" \ + "$(INTDIR)\credits.obj" \ + "$(INTDIR)\DiabEdit.obj" \ + "$(INTDIR)\Diabloui.obj" \ + "$(INTDIR)\DiabloUI.res" \ + "$(INTDIR)\DirLink.obj" \ + "$(INTDIR)\disclaim.obj" \ + "$(INTDIR)\Doom.obj" \ + "$(INTDIR)\EntrDial.obj" \ + "$(INTDIR)\EntrName.obj" \ + "$(INTDIR)\Fade.obj" \ + "$(INTDIR)\Focus.obj" \ + "$(INTDIR)\local.obj" \ + "$(INTDIR)\Logon.obj" \ + "$(INTDIR)\MainMenu.obj" \ + "$(INTDIR)\Modem.obj" \ + "$(INTDIR)\ModmStat.obj" \ + "$(INTDIR)\OkCancel.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\Sbar.obj" \ + "$(INTDIR)\SelClass.obj" \ + "$(INTDIR)\SelConn.obj" \ + "$(INTDIR)\SelDial.obj" \ + "$(INTDIR)\SelGame.obj" \ + "$(INTDIR)\SelHero.obj" \ + "$(INTDIR)\SelIPX.obj" \ + "$(INTDIR)\SelList.obj" \ + "$(INTDIR)\SelLoad.obj" \ + "$(INTDIR)\SelModem.obj" \ + "$(INTDIR)\SelYesNo.obj" \ + "$(INTDIR)\Title.obj" \ + "$(INTDIR)\UiSnd.obj" \ + ".\STORM.LIB" + +".\bin\diabloui.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "battle - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "battle\Release" +# PROP BASE Intermediate_Dir "battle\Release" +# PROP BASE Target_Dir "battle" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "battle\Release" +# PROP Intermediate_Dir "battle\Release" +# PROP Target_Dir "battle" +OUTDIR=.\battle\Release +INTDIR=.\battle\Release + +ALL : ".\bin\battle.snp" + +CLEAN : + -@erase "$(INTDIR)\ad.obj" + -@erase "$(INTDIR)\Battle.obj" + -@erase "$(INTDIR)\Battle.res" + -@erase "$(INTDIR)\bnetlogo.obj" + -@erase "$(INTDIR)\Cache.obj" + -@erase "$(INTDIR)\cancel.obj" + -@erase "$(INTDIR)\chatchnl.obj" + -@erase "$(INTDIR)\Chatroom.obj" + -@erase "$(INTDIR)\clrpref.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\disconn.obj" + -@erase "$(INTDIR)\getpass.obj" + -@erase "$(INTDIR)\Joingame.obj" + -@erase "$(INTDIR)\logon.obj" + -@erase "$(INTDIR)\message.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\rasmgr.obj" + -@erase "$(INTDIR)\scrllbar.obj" + -@erase "$(INTDIR)\setpass.obj" + -@erase "$(INTDIR)\Spi.obj" + -@erase "$(INTDIR)\Srv.obj" + -@erase "$(INTDIR)\Ui.obj" + -@erase "$(OUTDIR)\battle.exp" + -@erase "$(OUTDIR)\battle.lib" + -@erase "$(OUTDIR)\battle.map" + -@erase ".\bin\battle.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/battle.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\battle\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /i "u:\diabloui" /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/battle.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll /map /machine:I386 /out:"bin\battle.snp" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll\ + /incremental:no /pdb:"$(OUTDIR)/battle.pdb" /map:"$(INTDIR)/battle.map"\ + /machine:I386 /def:".\battle\Battle.def" /out:"bin\battle.snp"\ + /implib:"$(OUTDIR)/battle.lib" +DEF_FILE= \ + ".\battle\Battle.def" +LINK32_OBJS= \ + "$(INTDIR)\ad.obj" \ + "$(INTDIR)\Battle.obj" \ + "$(INTDIR)\Battle.res" \ + "$(INTDIR)\bnetlogo.obj" \ + "$(INTDIR)\Cache.obj" \ + "$(INTDIR)\cancel.obj" \ + "$(INTDIR)\chatchnl.obj" \ + "$(INTDIR)\Chatroom.obj" \ + "$(INTDIR)\clrpref.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\disconn.obj" \ + "$(INTDIR)\getpass.obj" \ + "$(INTDIR)\Joingame.obj" \ + "$(INTDIR)\logon.obj" \ + "$(INTDIR)\message.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\rasmgr.obj" \ + "$(INTDIR)\scrllbar.obj" \ + "$(INTDIR)\setpass.obj" \ + "$(INTDIR)\Spi.obj" \ + "$(INTDIR)\Srv.obj" \ + "$(INTDIR)\Ui.obj" \ + ".\STORM.LIB" + +".\bin\battle.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "battle\battle__" +# PROP BASE Intermediate_Dir "battle\battle__" +# PROP BASE Target_Dir "battle" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "battle\debug" +# PROP Intermediate_Dir "battle\debug" +# PROP Target_Dir "battle" +OUTDIR=.\battle\debug +INTDIR=.\battle\debug + +ALL : ".\bin\battle.snp" + +CLEAN : + -@erase "$(INTDIR)\ad.obj" + -@erase "$(INTDIR)\Battle.obj" + -@erase "$(INTDIR)\Battle.res" + -@erase "$(INTDIR)\bnetlogo.obj" + -@erase "$(INTDIR)\Cache.obj" + -@erase "$(INTDIR)\cancel.obj" + -@erase "$(INTDIR)\chatchnl.obj" + -@erase "$(INTDIR)\Chatroom.obj" + -@erase "$(INTDIR)\clrpref.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\disconn.obj" + -@erase "$(INTDIR)\getpass.obj" + -@erase "$(INTDIR)\Joingame.obj" + -@erase "$(INTDIR)\logon.obj" + -@erase "$(INTDIR)\message.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\rasmgr.obj" + -@erase "$(INTDIR)\scrllbar.obj" + -@erase "$(INTDIR)\setpass.obj" + -@erase "$(INTDIR)\Spi.obj" + -@erase "$(INTDIR)\Srv.obj" + -@erase "$(INTDIR)\Ui.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\battle.exp" + -@erase "$(OUTDIR)\battle.lib" + -@erase "$(OUTDIR)\battle.map" + -@erase "$(OUTDIR)\battle.pdb" + -@erase ".\bin\battle.ilk" + -@erase ".\bin\battle.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/battle.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\battle\debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /i "u:\diabloui" /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/battle.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll /map /debug /machine:I386 /out:"bin\battle.snp" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll\ + /incremental:yes /pdb:"$(OUTDIR)/battle.pdb" /map:"$(INTDIR)/battle.map" /debug\ + /machine:I386 /def:".\battle\Battle.def" /out:"bin\battle.snp"\ + /implib:"$(OUTDIR)/battle.lib" +DEF_FILE= \ + ".\battle\Battle.def" +LINK32_OBJS= \ + "$(INTDIR)\ad.obj" \ + "$(INTDIR)\Battle.obj" \ + "$(INTDIR)\Battle.res" \ + "$(INTDIR)\bnetlogo.obj" \ + "$(INTDIR)\Cache.obj" \ + "$(INTDIR)\cancel.obj" \ + "$(INTDIR)\chatchnl.obj" \ + "$(INTDIR)\Chatroom.obj" \ + "$(INTDIR)\clrpref.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\disconn.obj" \ + "$(INTDIR)\getpass.obj" \ + "$(INTDIR)\Joingame.obj" \ + "$(INTDIR)\logon.obj" \ + "$(INTDIR)\message.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\rasmgr.obj" \ + "$(INTDIR)\scrllbar.obj" \ + "$(INTDIR)\setpass.obj" \ + "$(INTDIR)\Spi.obj" \ + "$(INTDIR)\Srv.obj" \ + "$(INTDIR)\Ui.obj" \ + ".\STORM.LIB" + +".\bin\battle.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "Standard - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Standard\Release" +# PROP BASE Intermediate_Dir "Standard\Release" +# PROP BASE Target_Dir "Standard" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Standard\Release" +# PROP Intermediate_Dir "Standard\Release" +# PROP Target_Dir "Standard" +OUTDIR=.\Standard\Release +INTDIR=.\Standard\Release + +ALL : ".\bin\Standard.snp" + +CLEAN : + -@erase "$(INTDIR)\IPX.OBJ" + -@erase "$(INTDIR)\MODEM.OBJ" + -@erase "$(INTDIR)\NULL.OBJ" + -@erase "$(INTDIR)\PERF.OBJ" + -@erase "$(INTDIR)\SERIAL.OBJ" + -@erase "$(INTDIR)\STANDARD.OBJ" + -@erase "$(INTDIR)\STANDARD.res" + -@erase "$(INTDIR)\Trace.obj" + -@erase "$(OUTDIR)\Standard.exp" + -@erase "$(OUTDIR)\Standard.lib" + -@erase "$(OUTDIR)\Standard.map" + -@erase ".\bin\Standard.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Standard.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\Standard\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/STANDARD.res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Standard.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows /dll /map /machine:I386 /out:"bin\Standard.snp" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/Standard.pdb"\ + /map:"$(INTDIR)/Standard.map" /machine:I386 /def:".\Standard\STANDARD.DEF"\ + /out:"bin\Standard.snp" /implib:"$(OUTDIR)/Standard.lib" +DEF_FILE= \ + ".\Standard\STANDARD.DEF" +LINK32_OBJS= \ + "$(INTDIR)\IPX.OBJ" \ + "$(INTDIR)\MODEM.OBJ" \ + "$(INTDIR)\NULL.OBJ" \ + "$(INTDIR)\PERF.OBJ" \ + "$(INTDIR)\SERIAL.OBJ" \ + "$(INTDIR)\STANDARD.OBJ" \ + "$(INTDIR)\STANDARD.res" \ + "$(INTDIR)\Trace.obj" \ + ".\STORM.LIB" + +".\bin\Standard.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Standard\Debug" +# PROP BASE Intermediate_Dir "Standard\Debug" +# PROP BASE Target_Dir "Standard" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Standard\Debug" +# PROP Intermediate_Dir "Standard\Debug" +# PROP Target_Dir "Standard" +OUTDIR=.\Standard\Debug +INTDIR=.\Standard\Debug + +ALL : ".\bin\Standard.snp" + +CLEAN : + -@erase "$(INTDIR)\IPX.OBJ" + -@erase "$(INTDIR)\MODEM.OBJ" + -@erase "$(INTDIR)\NULL.OBJ" + -@erase "$(INTDIR)\PERF.OBJ" + -@erase "$(INTDIR)\SERIAL.OBJ" + -@erase "$(INTDIR)\STANDARD.OBJ" + -@erase "$(INTDIR)\STANDARD.res" + -@erase "$(INTDIR)\Trace.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\Standard.exp" + -@erase "$(OUTDIR)\Standard.lib" + -@erase "$(OUTDIR)\Standard.map" + -@erase "$(OUTDIR)\Standard.pdb" + -@erase ".\bin\Standard.ilk" + -@erase ".\bin\Standard.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Standard.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Standard\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/STANDARD.res" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Standard.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows /dll /map /debug /machine:I386 /out:"bin\Standard.snp" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows\ + /dll /incremental:yes /pdb:"$(OUTDIR)/Standard.pdb"\ + /map:"$(INTDIR)/Standard.map" /debug /machine:I386\ + /def:".\Standard\STANDARD.DEF" /out:"bin\Standard.snp"\ + /implib:"$(OUTDIR)/Standard.lib" +DEF_FILE= \ + ".\Standard\STANDARD.DEF" +LINK32_OBJS= \ + "$(INTDIR)\IPX.OBJ" \ + "$(INTDIR)\MODEM.OBJ" \ + "$(INTDIR)\NULL.OBJ" \ + "$(INTDIR)\PERF.OBJ" \ + "$(INTDIR)\SERIAL.OBJ" \ + "$(INTDIR)\STANDARD.OBJ" \ + "$(INTDIR)\STANDARD.res" \ + "$(INTDIR)\Trace.obj" \ + ".\STORM.LIB" + +".\bin\Standard.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ENDIF + +################################################################################ +# Begin Target + +# Name "DiabloUI - Win32 Release" +# Name "DiabloUI - Win32 Debug" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "ui" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"ui - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="ui - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"ui - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="ui - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Source File + +SOURCE=.\Testui.cpp +DEP_CPP_TESTU=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\Diabloui.h"\ + + +"$(INTDIR)\Testui.obj" : $(SOURCE) $(DEP_CPP_TESTU) "$(INTDIR)" + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "battle" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"battle - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="battle - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"battle - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="battle - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "Standard" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"Standard - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"Standard - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="Standard - Win32 Debug" + +!ENDIF + +# End Project Dependency +# End Target +################################################################################ +# Begin Target + +# Name "ui - Win32 Release" +# Name "ui - Win32 Debug" + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Title.cpp +DEP_CPP_TITLE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Title.obj" : $(SOURCE) $(DEP_CPP_TITLE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DiabloUI.rc +DEP_RSC_DIABL=\ + ".\Ui\arrow.cur"\ + ".\Ui\But_sml.raw"\ + ".\Ui\Credits.txt"\ + ".\Ui\Frank.rc"\ + ".\Ui\ibeam.cur"\ + ".\Ui\link.cur"\ + ".\Ui\Mike.rc"\ + ".\Ui\Srpopup.pal"\ + ".\Ui\Srpopup.raw"\ + + +!IF "$(CFG)" == "ui - Win32 Release" + + +"$(INTDIR)\DiabloUI.res" : $(SOURCE) $(DEP_RSC_DIABL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/DiabloUI.res" /i "Ui" /d "NDEBUG" $(SOURCE) + + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + + +"$(INTDIR)\DiabloUI.res" : $(SOURCE) $(DEP_RSC_DIABL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/DiabloUI.res" /i "Ui" /d "_DEBUG" $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\local.cpp +DEP_CPP_LOCAL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\local.obj" : $(SOURCE) $(DEP_CPP_LOCAL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Diabloui.cpp +DEP_CPP_DIABLO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Diabloui.obj" : $(SOURCE) $(DEP_CPP_DIABLO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Diabloui.def + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\MainMenu.cpp +DEP_CPP_MAINM=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\MainMenu.obj" : $(SOURCE) $(DEP_CPP_MAINM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\credits.cpp +DEP_CPP_CREDI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\credits.obj" : $(SOURCE) $(DEP_CPP_CREDI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\cr8game.cpp +DEP_CPP_CR8GA=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\cr8game.obj" : $(SOURCE) $(DEP_CPP_CR8GA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelHero.cpp +DEP_CPP_SELHE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelHero.obj" : $(SOURCE) $(DEP_CPP_SELHE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\OkCancel.cpp +DEP_CPP_OKCAN=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\OkCancel.obj" : $(SOURCE) $(DEP_CPP_OKCAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Logon.cpp +DEP_CPP_LOGON=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Logon.obj" : $(SOURCE) $(DEP_CPP_LOGON) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Progress.cpp +DEP_CPP_PROGR=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Progress.obj" : $(SOURCE) $(DEP_CPP_PROGR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\connect.cpp +DEP_CPP_CONNE=\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\connect.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\disclaim.cpp +DEP_CPP_DISCL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\disclaim.obj" : $(SOURCE) $(DEP_CPP_DISCL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\artfont.cpp +DEP_CPP_ARTFO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\artfont.obj" : $(SOURCE) $(DEP_CPP_ARTFO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Focus.cpp +DEP_CPP_FOCUS=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Focus.obj" : $(SOURCE) $(DEP_CPP_FOCUS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelClass.cpp +DEP_CPP_SELCL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelClass.obj" : $(SOURCE) $(DEP_CPP_SELCL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelList.cpp +DEP_CPP_SELLI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelList.obj" : $(SOURCE) $(DEP_CPP_SELLI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\EntrName.cpp +DEP_CPP_ENTRN=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\EntrName.obj" : $(SOURCE) $(DEP_CPP_ENTRN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\UiSnd.cpp +DEP_CPP_UISND=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\UiSnd.obj" : $(SOURCE) $(DEP_CPP_UISND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelYesNo.cpp +DEP_CPP_SELYE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelYesNo.obj" : $(SOURCE) $(DEP_CPP_SELYE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelConn.cpp +DEP_CPP_SELCO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelConn.obj" : $(SOURCE) $(DEP_CPP_SELCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CreaHero.cpp +DEP_CPP_CREAH=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\CreaHero.obj" : $(SOURCE) $(DEP_CPP_CREAH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DiabEdit.cpp +DEP_CPP_DIABE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\DiabEdit.obj" : $(SOURCE) $(DEP_CPP_DIABE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Doom.cpp +DEP_CPP_DOOM_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Doom.obj" : $(SOURCE) $(DEP_CPP_DOOM_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Fade.cpp +DEP_CPP_FADE_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Fade.obj" : $(SOURCE) $(DEP_CPP_FADE_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelIPX.cpp +DEP_CPP_SELIP=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelIPX.obj" : $(SOURCE) $(DEP_CPP_SELIP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelGame.cpp +DEP_CPP_SELGA=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\SelGame.obj" : $(SOURCE) $(DEP_CPP_SELGA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CreaDung.cpp +DEP_CPP_CREAD=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\CreaDung.obj" : $(SOURCE) $(DEP_CPP_CREAD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DirLink.cpp +DEP_CPP_DIRLI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\DirLink.obj" : $(SOURCE) $(DEP_CPP_DIRLI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Sbar.cpp +DEP_CPP_SBAR_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Sbar.obj" : $(SOURCE) $(DEP_CPP_SBAR_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelLoad.cpp +DEP_CPP_SELLO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelLoad.obj" : $(SOURCE) $(DEP_CPP_SELLO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CopyProt.cpp +DEP_CPP_COPYP=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\CopyProt.obj" : $(SOURCE) $(DEP_CPP_COPYP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Modem.cpp +DEP_CPP_MODEM=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Modem.obj" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelModem.cpp +DEP_CPP_SELMO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelModem.obj" : $(SOURCE) $(DEP_CPP_SELMO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\EntrDial.cpp +DEP_CPP_ENTRD=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\EntrDial.obj" : $(SOURCE) $(DEP_CPP_ENTRD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelDial.cpp +DEP_CPP_SELDI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelDial.obj" : $(SOURCE) $(DEP_CPP_SELDI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\ModmStat.cpp +DEP_CPP_MODMS=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\ModmStat.obj" : $(SOURCE) $(DEP_CPP_MODMS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "battle - Win32 Release" +# Name "battle - Win32 Debug" + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\battle\Ui.cpp +DEP_CPP_UI_CP=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Ui.obj" : $(SOURCE) $(DEP_CPP_UI_CP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.rc +DEP_RSC_BATTL=\ + ".\battle\Chathelp.txt"\ + + +!IF "$(CFG)" == "battle - Win32 Release" + + +"$(INTDIR)\Battle.res" : $(SOURCE) $(DEP_RSC_BATTL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /i "battle" /d\ + "NDEBUG" $(SOURCE) + + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + + +"$(INTDIR)\Battle.res" : $(SOURCE) $(DEP_RSC_BATTL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /i "battle" /d\ + "_DEBUG" $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\bnetart.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Chatroom.cpp +DEP_CPP_CHATR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Chatroom.obj" : $(SOURCE) $(DEP_CPP_CHATR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Joingame.cpp +DEP_CPP_JOING=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Joingame.obj" : $(SOURCE) $(DEP_CPP_JOING) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Pch.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Resource.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Spi.cpp +DEP_CPP_SPI_C=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Spi.obj" : $(SOURCE) $(DEP_CPP_SPI_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Srv.cpp +DEP_CPP_SRV_C=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Srv.obj" : $(SOURCE) $(DEP_CPP_SRV_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.cpp +DEP_CPP_BATTLE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Battle.obj" : $(SOURCE) $(DEP_CPP_BATTLE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.def + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\connect.cpp +DEP_CPP_CONNE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\connect.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\logon.cpp +DEP_CPP_LOGON_=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\logon.obj" : $(SOURCE) $(DEP_CPP_LOGON_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Progress.cpp +DEP_CPP_PROGR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Progress.obj" : $(SOURCE) $(DEP_CPP_PROGR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\bnetlogo.cpp +DEP_CPP_BNETL=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\bnetlogo.obj" : $(SOURCE) $(DEP_CPP_BNETL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\cancel.cpp +DEP_CPP_CANCE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\cancel.obj" : $(SOURCE) $(DEP_CPP_CANCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Cache.cpp +DEP_CPP_CACHE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Cache.obj" : $(SOURCE) $(DEP_CPP_CACHE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\clrpref.cpp +DEP_CPP_CLRPR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\clrpref.obj" : $(SOURCE) $(DEP_CPP_CLRPR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\ad.cpp +DEP_CPP_AD_CP=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\ad.obj" : $(SOURCE) $(DEP_CPP_AD_CP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\rasmgr.cpp +DEP_CPP_RASMG=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\rasmgr.obj" : $(SOURCE) $(DEP_CPP_RASMG) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\disconn.cpp +DEP_CPP_DISCO=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\disconn.obj" : $(SOURCE) $(DEP_CPP_DISCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\chatchnl.cpp +DEP_CPP_CHATC=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\chatchnl.obj" : $(SOURCE) $(DEP_CPP_CHATC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\scrllbar.cpp +DEP_CPP_SCRLL=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\scrllbar.obj" : $(SOURCE) $(DEP_CPP_SCRLL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\message.cpp +DEP_CPP_MESSA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\message.obj" : $(SOURCE) $(DEP_CPP_MESSA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\setpass.cpp +DEP_CPP_SETPA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\setpass.obj" : $(SOURCE) $(DEP_CPP_SETPA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\getpass.cpp +DEP_CPP_GETPA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\getpass.obj" : $(SOURCE) $(DEP_CPP_GETPA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "Standard - Win32 Release" +# Name "Standard - Win32 Debug" + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.RC + +!IF "$(CFG)" == "Standard - Win32 Release" + + +"$(INTDIR)\STANDARD.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/STANDARD.res" /i "Standard" /d "NDEBUG"\ + $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + + +"$(INTDIR)\STANDARD.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/STANDARD.res" /i "Standard" /d "_DEBUG"\ + $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\MODEM.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_MODEM=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\MODEM.OBJ" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_MODEM=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\MODEM.OBJ" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\NULL.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_NULL_=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\NULL.OBJ" : $(SOURCE) $(DEP_CPP_NULL_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_NULL_=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\NULL.OBJ" : $(SOURCE) $(DEP_CPP_NULL_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\PERF.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_PERF_=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\PERF.OBJ" : $(SOURCE) $(DEP_CPP_PERF_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_PERF_=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\PERF.OBJ" : $(SOURCE) $(DEP_CPP_PERF_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\SERIAL.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_SERIA=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\SERIAL.OBJ" : $(SOURCE) $(DEP_CPP_SERIA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_SERIA=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\SERIAL.OBJ" : $(SOURCE) $(DEP_CPP_SERIA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_STAND=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\STANDARD.OBJ" : $(SOURCE) $(DEP_CPP_STAND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_STAND=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\STANDARD.OBJ" : $(SOURCE) $(DEP_CPP_STAND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\IPX.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_IPX_C=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\IPX.OBJ" : $(SOURCE) $(DEP_CPP_IPX_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_IPX_C=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\IPX.OBJ" : $(SOURCE) $(DEP_CPP_IPX_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.DEF + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\Trace.cpp +DEP_CPP_TRACE=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Standard\Trace.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Trace.obj" : $(SOURCE) $(DEP_CPP_TRACE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +# End Project +################################################################################ diff --git a/Uisrc/DIABLOUI.DSP b/Uisrc/DIABLOUI.DSP new file mode 100644 index 0000000..c05eab2 --- /dev/null +++ b/Uisrc/DIABLOUI.DSP @@ -0,0 +1,120 @@ +# Microsoft Developer Studio Project File - Name="DiabloUI" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=DiabloUI - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Diabloui.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Diabloui.mak" CFG="DiabloUI - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DiabloUI - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "DiabloUI - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir ".\Release" +# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir ".\Release" +# PROP Intermediate_Dir ".\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\release\hellfrui.lib battle\release\battle.lib standard\release\standard.lib /nologo /subsystem:windows /map /machine:I386 /out:".\bin\DiabloUI.exe" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir ".\Debug" +# PROP BASE Intermediate_Dir ".\Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir ".\Debug" +# PROP Intermediate_Dir ".\Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\hellfrui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /map /debug /machine:I386 /out:".\bin\DiabloUI.exe" +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "DiabloUI - Win32 Release" +# Name "DiabloUI - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\STORM.LIB +# End Source File +# Begin Source File + +SOURCE=.\Testui.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" +# Begin Source File + +SOURCE=.\Sclass.h +# End Source File +# Begin Source File + +SOURCE=.\storm.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/Uisrc/DIABLOUI.DSW b/Uisrc/DIABLOUI.DSW new file mode 100644 index 0000000..2430495 --- /dev/null +++ b/Uisrc/DIABLOUI.DSW @@ -0,0 +1,74 @@ +Microsoft Developer Studio Workspace File, Format Version 5.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "DiabloUI"=.\Diabloui.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name ui + End Project Dependency + Begin Project Dependency + Project_Dep_Name battle + End Project Dependency + Begin Project Dependency + Project_Dep_Name Standard + End Project Dependency +}}} + +############################################################################### + +Project: "Standard"=.\Standard\Standard.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "battle"=.\battle\battle.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "ui"=.\ui\ui.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Uisrc/DIABLOUI.MAK b/Uisrc/DIABLOUI.MAK new file mode 100644 index 0000000..4e25fd7 --- /dev/null +++ b/Uisrc/DIABLOUI.MAK @@ -0,0 +1,2751 @@ +# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +!IF "$(CFG)" == "" +CFG=Standard - Win32 Debug +!MESSAGE No configuration specified. Defaulting to Standard - Win32 Debug. +!ENDIF + +!IF "$(CFG)" != "DiabloUI - Win32 Release" && "$(CFG)" !=\ + "DiabloUI - Win32 Debug" && "$(CFG)" != "ui - Win32 Release" && "$(CFG)" !=\ + "ui - Win32 Debug" && "$(CFG)" != "battle - Win32 Release" && "$(CFG)" !=\ + "battle - Win32 Debug" && "$(CFG)" != "Standard - Win32 Release" && "$(CFG)" !=\ + "Standard - Win32 Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE on this makefile +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Diabloui.mak" CFG="Standard - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DiabloUI - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "DiabloUI - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "ui - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "battle - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "battle - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Standard - Win32 Release" (based on\ + "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Standard - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE +!ERROR An invalid configuration is specified. +!ENDIF + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF +################################################################################ +# Begin Project +# PROP Target_Last_Scanned "Standard - Win32 Debug" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +OUTDIR=.\Release +INTDIR=.\Release + +ALL : "Standard - Win32 Release" "battle - Win32 Release" "ui - Win32 Release"\ + ".\bin\DiabloUI.exe" + +CLEAN : + -@erase "$(INTDIR)\Testui.obj" + -@erase "$(OUTDIR)\DiabloUI.map" + -@erase ".\bin\DiabloUI.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Diabloui.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Diabloui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\release\diabloui.lib battle\release\battle.lib standard\release\standard.lib /nologo /subsystem:windows /map /machine:I386 /out:"bin/DiabloUI.exe" +# SUBTRACT LINK32 /incremental:yes +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib ui\release\diabloui.lib battle\release\battle.lib\ + standard\release\standard.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/DiabloUI.pdb" /map:"$(INTDIR)/DiabloUI.map" /machine:I386\ + /out:"bin/DiabloUI.exe" +LINK32_OBJS= \ + "$(INTDIR)\Testui.obj" \ + ".\battle\Release\battle.lib" \ + ".\Standard\Release\Standard.lib" \ + ".\STORM.LIB" \ + ".\ui\Release\diabloui.lib" + +".\bin\DiabloUI.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +OUTDIR=.\Debug +INTDIR=.\Debug + +ALL : "Standard - Win32 Debug" "battle - Win32 Debug" "ui - Win32 Debug"\ + ".\bin\DiabloUI.exe" + +CLEAN : + -@erase "$(INTDIR)\Testui.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\DiabloUI.map" + -@erase "$(OUTDIR)\DiabloUI.pdb" + -@erase ".\bin\DiabloUI.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Diabloui.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Diabloui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /map /debug /machine:I386 /out:"bin/DiabloUI.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib\ + standard\debug\standard.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/DiabloUI.pdb" /map:"$(INTDIR)/DiabloUI.map" /debug\ + /machine:I386 /out:"bin/DiabloUI.exe" +LINK32_OBJS= \ + "$(INTDIR)\Testui.obj" \ + ".\battle\debug\battle.lib" \ + ".\Standard\Debug\Standard.lib" \ + ".\STORM.LIB" \ + ".\ui\Debug\diabloui.lib" + +".\bin\DiabloUI.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "ui - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ui\Release" +# PROP BASE Intermediate_Dir "ui\Release" +# PROP BASE Target_Dir "ui" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ui\Release" +# PROP Intermediate_Dir "ui\Release" +# PROP Target_Dir "ui" +OUTDIR=.\ui\Release +INTDIR=.\ui\Release + +ALL : ".\bin\diabloui.dll" + +CLEAN : + -@erase "$(INTDIR)\artfont.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\CopyProt.obj" + -@erase "$(INTDIR)\cr8game.obj" + -@erase "$(INTDIR)\CreaDung.obj" + -@erase "$(INTDIR)\CreaHero.obj" + -@erase "$(INTDIR)\credits.obj" + -@erase "$(INTDIR)\DiabEdit.obj" + -@erase "$(INTDIR)\Diabloui.obj" + -@erase "$(INTDIR)\DiabloUI.res" + -@erase "$(INTDIR)\DirLink.obj" + -@erase "$(INTDIR)\disclaim.obj" + -@erase "$(INTDIR)\Doom.obj" + -@erase "$(INTDIR)\EntrDial.obj" + -@erase "$(INTDIR)\EntrName.obj" + -@erase "$(INTDIR)\Fade.obj" + -@erase "$(INTDIR)\Focus.obj" + -@erase "$(INTDIR)\local.obj" + -@erase "$(INTDIR)\Logon.obj" + -@erase "$(INTDIR)\MainMenu.obj" + -@erase "$(INTDIR)\Modem.obj" + -@erase "$(INTDIR)\ModmStat.obj" + -@erase "$(INTDIR)\OkCancel.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\Sbar.obj" + -@erase "$(INTDIR)\SelClass.obj" + -@erase "$(INTDIR)\SelConn.obj" + -@erase "$(INTDIR)\SelDial.obj" + -@erase "$(INTDIR)\SelGame.obj" + -@erase "$(INTDIR)\SelHero.obj" + -@erase "$(INTDIR)\SelIPX.obj" + -@erase "$(INTDIR)\SelList.obj" + -@erase "$(INTDIR)\SelLoad.obj" + -@erase "$(INTDIR)\SelModem.obj" + -@erase "$(INTDIR)\SelYesNo.obj" + -@erase "$(INTDIR)\Title.obj" + -@erase "$(INTDIR)\UiSnd.obj" + -@erase "$(OUTDIR)\diabloui.exp" + -@erase "$(OUTDIR)\diabloui.lib" + -@erase "$(OUTDIR)\diabloui.map" + -@erase ".\bin\diabloui.dll" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/ui.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\ui\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/DiabloUI.res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/ui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows /dll /map /machine:I386 /out:"bin/diabloui.dll" +# SUBTRACT LINK32 /incremental:yes +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/diabloui.pdb"\ + /map:"$(INTDIR)/diabloui.map" /machine:I386 /def:".\Ui\Diabloui.def"\ + /out:"bin/diabloui.dll" /implib:"$(OUTDIR)/diabloui.lib" +DEF_FILE= \ + ".\Ui\Diabloui.def" +LINK32_OBJS= \ + "$(INTDIR)\artfont.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\CopyProt.obj" \ + "$(INTDIR)\cr8game.obj" \ + "$(INTDIR)\CreaDung.obj" \ + "$(INTDIR)\CreaHero.obj" \ + "$(INTDIR)\credits.obj" \ + "$(INTDIR)\DiabEdit.obj" \ + "$(INTDIR)\Diabloui.obj" \ + "$(INTDIR)\DiabloUI.res" \ + "$(INTDIR)\DirLink.obj" \ + "$(INTDIR)\disclaim.obj" \ + "$(INTDIR)\Doom.obj" \ + "$(INTDIR)\EntrDial.obj" \ + "$(INTDIR)\EntrName.obj" \ + "$(INTDIR)\Fade.obj" \ + "$(INTDIR)\Focus.obj" \ + "$(INTDIR)\local.obj" \ + "$(INTDIR)\Logon.obj" \ + "$(INTDIR)\MainMenu.obj" \ + "$(INTDIR)\Modem.obj" \ + "$(INTDIR)\ModmStat.obj" \ + "$(INTDIR)\OkCancel.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\Sbar.obj" \ + "$(INTDIR)\SelClass.obj" \ + "$(INTDIR)\SelConn.obj" \ + "$(INTDIR)\SelDial.obj" \ + "$(INTDIR)\SelGame.obj" \ + "$(INTDIR)\SelHero.obj" \ + "$(INTDIR)\SelIPX.obj" \ + "$(INTDIR)\SelList.obj" \ + "$(INTDIR)\SelLoad.obj" \ + "$(INTDIR)\SelModem.obj" \ + "$(INTDIR)\SelYesNo.obj" \ + "$(INTDIR)\Title.obj" \ + "$(INTDIR)\UiSnd.obj" \ + ".\STORM.LIB" + +".\bin\diabloui.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ui\ui___Win" +# PROP BASE Intermediate_Dir "ui\ui___Win" +# PROP BASE Target_Dir "ui" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ui\Debug" +# PROP Intermediate_Dir "ui\Debug" +# PROP Target_Dir "ui" +OUTDIR=.\ui\Debug +INTDIR=.\ui\Debug + +ALL : ".\bin\diabloui.dll" + +CLEAN : + -@erase "$(INTDIR)\artfont.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\CopyProt.obj" + -@erase "$(INTDIR)\cr8game.obj" + -@erase "$(INTDIR)\CreaDung.obj" + -@erase "$(INTDIR)\CreaHero.obj" + -@erase "$(INTDIR)\credits.obj" + -@erase "$(INTDIR)\DiabEdit.obj" + -@erase "$(INTDIR)\Diabloui.obj" + -@erase "$(INTDIR)\DiabloUI.res" + -@erase "$(INTDIR)\DirLink.obj" + -@erase "$(INTDIR)\disclaim.obj" + -@erase "$(INTDIR)\Doom.obj" + -@erase "$(INTDIR)\EntrDial.obj" + -@erase "$(INTDIR)\EntrName.obj" + -@erase "$(INTDIR)\Fade.obj" + -@erase "$(INTDIR)\Focus.obj" + -@erase "$(INTDIR)\local.obj" + -@erase "$(INTDIR)\Logon.obj" + -@erase "$(INTDIR)\MainMenu.obj" + -@erase "$(INTDIR)\Modem.obj" + -@erase "$(INTDIR)\ModmStat.obj" + -@erase "$(INTDIR)\OkCancel.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\Sbar.obj" + -@erase "$(INTDIR)\SelClass.obj" + -@erase "$(INTDIR)\SelConn.obj" + -@erase "$(INTDIR)\SelDial.obj" + -@erase "$(INTDIR)\SelGame.obj" + -@erase "$(INTDIR)\SelHero.obj" + -@erase "$(INTDIR)\SelIPX.obj" + -@erase "$(INTDIR)\SelList.obj" + -@erase "$(INTDIR)\SelLoad.obj" + -@erase "$(INTDIR)\SelModem.obj" + -@erase "$(INTDIR)\SelYesNo.obj" + -@erase "$(INTDIR)\Title.obj" + -@erase "$(INTDIR)\UiSnd.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\diabloui.exp" + -@erase "$(OUTDIR)\diabloui.lib" + -@erase "$(OUTDIR)\diabloui.map" + -@erase "$(OUTDIR)\diabloui.pdb" + -@erase ".\bin\diabloui.dll" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/ui.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\ui\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/DiabloUI.res" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/ui.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /out:"bin/diabloui.dll" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x20000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/diabloui.pdb"\ + /map:"$(INTDIR)/diabloui.map" /debug /machine:I386 /def:".\Ui\Diabloui.def"\ + /out:"bin/diabloui.dll" /implib:"$(OUTDIR)/diabloui.lib" +DEF_FILE= \ + ".\Ui\Diabloui.def" +LINK32_OBJS= \ + "$(INTDIR)\artfont.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\CopyProt.obj" \ + "$(INTDIR)\cr8game.obj" \ + "$(INTDIR)\CreaDung.obj" \ + "$(INTDIR)\CreaHero.obj" \ + "$(INTDIR)\credits.obj" \ + "$(INTDIR)\DiabEdit.obj" \ + "$(INTDIR)\Diabloui.obj" \ + "$(INTDIR)\DiabloUI.res" \ + "$(INTDIR)\DirLink.obj" \ + "$(INTDIR)\disclaim.obj" \ + "$(INTDIR)\Doom.obj" \ + "$(INTDIR)\EntrDial.obj" \ + "$(INTDIR)\EntrName.obj" \ + "$(INTDIR)\Fade.obj" \ + "$(INTDIR)\Focus.obj" \ + "$(INTDIR)\local.obj" \ + "$(INTDIR)\Logon.obj" \ + "$(INTDIR)\MainMenu.obj" \ + "$(INTDIR)\Modem.obj" \ + "$(INTDIR)\ModmStat.obj" \ + "$(INTDIR)\OkCancel.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\Sbar.obj" \ + "$(INTDIR)\SelClass.obj" \ + "$(INTDIR)\SelConn.obj" \ + "$(INTDIR)\SelDial.obj" \ + "$(INTDIR)\SelGame.obj" \ + "$(INTDIR)\SelHero.obj" \ + "$(INTDIR)\SelIPX.obj" \ + "$(INTDIR)\SelList.obj" \ + "$(INTDIR)\SelLoad.obj" \ + "$(INTDIR)\SelModem.obj" \ + "$(INTDIR)\SelYesNo.obj" \ + "$(INTDIR)\Title.obj" \ + "$(INTDIR)\UiSnd.obj" \ + ".\STORM.LIB" + +".\bin\diabloui.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "battle - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "battle\Release" +# PROP BASE Intermediate_Dir "battle\Release" +# PROP BASE Target_Dir "battle" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "battle\Release" +# PROP Intermediate_Dir "battle\Release" +# PROP Target_Dir "battle" +OUTDIR=.\battle\Release +INTDIR=.\battle\Release + +ALL : ".\bin\battle.snp" + +CLEAN : + -@erase "$(INTDIR)\ad.obj" + -@erase "$(INTDIR)\Battle.obj" + -@erase "$(INTDIR)\Battle.res" + -@erase "$(INTDIR)\bnetlogo.obj" + -@erase "$(INTDIR)\Cache.obj" + -@erase "$(INTDIR)\cancel.obj" + -@erase "$(INTDIR)\chatchnl.obj" + -@erase "$(INTDIR)\Chatroom.obj" + -@erase "$(INTDIR)\clrpref.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\disconn.obj" + -@erase "$(INTDIR)\getpass.obj" + -@erase "$(INTDIR)\Joingame.obj" + -@erase "$(INTDIR)\logon.obj" + -@erase "$(INTDIR)\message.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\rasmgr.obj" + -@erase "$(INTDIR)\scrllbar.obj" + -@erase "$(INTDIR)\setpass.obj" + -@erase "$(INTDIR)\Spi.obj" + -@erase "$(INTDIR)\Srv.obj" + -@erase "$(INTDIR)\Ui.obj" + -@erase "$(OUTDIR)\battle.exp" + -@erase "$(OUTDIR)\battle.lib" + -@erase "$(OUTDIR)\battle.map" + -@erase ".\bin\battle.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/battle.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\battle\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /i "u:\diabloui" /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/battle.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll /map /machine:I386 /out:"bin\battle.snp" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll\ + /incremental:no /pdb:"$(OUTDIR)/battle.pdb" /map:"$(INTDIR)/battle.map"\ + /machine:I386 /def:".\battle\Battle.def" /out:"bin\battle.snp"\ + /implib:"$(OUTDIR)/battle.lib" +DEF_FILE= \ + ".\battle\Battle.def" +LINK32_OBJS= \ + "$(INTDIR)\ad.obj" \ + "$(INTDIR)\Battle.obj" \ + "$(INTDIR)\Battle.res" \ + "$(INTDIR)\bnetlogo.obj" \ + "$(INTDIR)\Cache.obj" \ + "$(INTDIR)\cancel.obj" \ + "$(INTDIR)\chatchnl.obj" \ + "$(INTDIR)\Chatroom.obj" \ + "$(INTDIR)\clrpref.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\disconn.obj" \ + "$(INTDIR)\getpass.obj" \ + "$(INTDIR)\Joingame.obj" \ + "$(INTDIR)\logon.obj" \ + "$(INTDIR)\message.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\rasmgr.obj" \ + "$(INTDIR)\scrllbar.obj" \ + "$(INTDIR)\setpass.obj" \ + "$(INTDIR)\Spi.obj" \ + "$(INTDIR)\Srv.obj" \ + "$(INTDIR)\Ui.obj" \ + ".\STORM.LIB" + +".\bin\battle.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "battle\battle__" +# PROP BASE Intermediate_Dir "battle\battle__" +# PROP BASE Target_Dir "battle" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "battle\debug" +# PROP Intermediate_Dir "battle\debug" +# PROP Target_Dir "battle" +OUTDIR=.\battle\debug +INTDIR=.\battle\debug + +ALL : ".\bin\battle.snp" + +CLEAN : + -@erase "$(INTDIR)\ad.obj" + -@erase "$(INTDIR)\Battle.obj" + -@erase "$(INTDIR)\Battle.res" + -@erase "$(INTDIR)\bnetlogo.obj" + -@erase "$(INTDIR)\Cache.obj" + -@erase "$(INTDIR)\cancel.obj" + -@erase "$(INTDIR)\chatchnl.obj" + -@erase "$(INTDIR)\Chatroom.obj" + -@erase "$(INTDIR)\clrpref.obj" + -@erase "$(INTDIR)\connect.obj" + -@erase "$(INTDIR)\disconn.obj" + -@erase "$(INTDIR)\getpass.obj" + -@erase "$(INTDIR)\Joingame.obj" + -@erase "$(INTDIR)\logon.obj" + -@erase "$(INTDIR)\message.obj" + -@erase "$(INTDIR)\Progress.obj" + -@erase "$(INTDIR)\rasmgr.obj" + -@erase "$(INTDIR)\scrllbar.obj" + -@erase "$(INTDIR)\setpass.obj" + -@erase "$(INTDIR)\Spi.obj" + -@erase "$(INTDIR)\Srv.obj" + -@erase "$(INTDIR)\Ui.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\battle.exp" + -@erase "$(OUTDIR)\battle.lib" + -@erase "$(OUTDIR)\battle.map" + -@erase "$(OUTDIR)\battle.pdb" + -@erase ".\bin\battle.ilk" + -@erase ".\bin\battle.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/battle.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\battle\debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /i "u:\diabloui" /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/battle.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll /map /debug /machine:I386 /out:"bin\battle.snp" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib\ + wsock32.lib storm.lib /nologo /base:0x19000000 /subsystem:windows /dll\ + /incremental:yes /pdb:"$(OUTDIR)/battle.pdb" /map:"$(INTDIR)/battle.map" /debug\ + /machine:I386 /def:".\battle\Battle.def" /out:"bin\battle.snp"\ + /implib:"$(OUTDIR)/battle.lib" +DEF_FILE= \ + ".\battle\Battle.def" +LINK32_OBJS= \ + "$(INTDIR)\ad.obj" \ + "$(INTDIR)\Battle.obj" \ + "$(INTDIR)\Battle.res" \ + "$(INTDIR)\bnetlogo.obj" \ + "$(INTDIR)\Cache.obj" \ + "$(INTDIR)\cancel.obj" \ + "$(INTDIR)\chatchnl.obj" \ + "$(INTDIR)\Chatroom.obj" \ + "$(INTDIR)\clrpref.obj" \ + "$(INTDIR)\connect.obj" \ + "$(INTDIR)\disconn.obj" \ + "$(INTDIR)\getpass.obj" \ + "$(INTDIR)\Joingame.obj" \ + "$(INTDIR)\logon.obj" \ + "$(INTDIR)\message.obj" \ + "$(INTDIR)\Progress.obj" \ + "$(INTDIR)\rasmgr.obj" \ + "$(INTDIR)\scrllbar.obj" \ + "$(INTDIR)\setpass.obj" \ + "$(INTDIR)\Spi.obj" \ + "$(INTDIR)\Srv.obj" \ + "$(INTDIR)\Ui.obj" \ + ".\STORM.LIB" + +".\bin\battle.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "Standard - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Standard\Release" +# PROP BASE Intermediate_Dir "Standard\Release" +# PROP BASE Target_Dir "Standard" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Standard\Release" +# PROP Intermediate_Dir "Standard\Release" +# PROP Target_Dir "Standard" +OUTDIR=.\Standard\Release +INTDIR=.\Standard\Release + +ALL : ".\bin\Standard.snp" + +CLEAN : + -@erase "$(INTDIR)\IPX.OBJ" + -@erase "$(INTDIR)\MODEM.OBJ" + -@erase "$(INTDIR)\NULL.OBJ" + -@erase "$(INTDIR)\PERF.OBJ" + -@erase "$(INTDIR)\SERIAL.OBJ" + -@erase "$(INTDIR)\STANDARD.OBJ" + -@erase "$(INTDIR)\STANDARD.res" + -@erase "$(INTDIR)\Trace.obj" + -@erase "$(OUTDIR)\Standard.exp" + -@erase "$(OUTDIR)\Standard.lib" + -@erase "$(OUTDIR)\Standard.map" + -@erase ".\bin\Standard.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /G5Fry /c +CPP_PROJ=/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Standard.pch" /YX /Fo"$(INTDIR)/" /G5Fry /c +CPP_OBJS=.\Standard\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/STANDARD.res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Standard.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows /dll /map /machine:I386 /out:"bin\Standard.snp" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows\ + /dll /incremental:no /pdb:"$(OUTDIR)/Standard.pdb"\ + /map:"$(INTDIR)/Standard.map" /machine:I386 /def:".\Standard\STANDARD.DEF"\ + /out:"bin\Standard.snp" /implib:"$(OUTDIR)/Standard.lib" +DEF_FILE= \ + ".\Standard\STANDARD.DEF" +LINK32_OBJS= \ + "$(INTDIR)\IPX.OBJ" \ + "$(INTDIR)\MODEM.OBJ" \ + "$(INTDIR)\NULL.OBJ" \ + "$(INTDIR)\PERF.OBJ" \ + "$(INTDIR)\SERIAL.OBJ" \ + "$(INTDIR)\STANDARD.OBJ" \ + "$(INTDIR)\STANDARD.res" \ + "$(INTDIR)\Trace.obj" \ + ".\STORM.LIB" + +".\bin\Standard.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Standard\Debug" +# PROP BASE Intermediate_Dir "Standard\Debug" +# PROP BASE Target_Dir "Standard" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Standard\Debug" +# PROP Intermediate_Dir "Standard\Debug" +# PROP Target_Dir "Standard" +OUTDIR=.\Standard\Debug +INTDIR=.\Standard\Debug + +ALL : ".\bin\Standard.snp" + +CLEAN : + -@erase "$(INTDIR)\IPX.OBJ" + -@erase "$(INTDIR)\MODEM.OBJ" + -@erase "$(INTDIR)\NULL.OBJ" + -@erase "$(INTDIR)\PERF.OBJ" + -@erase "$(INTDIR)\SERIAL.OBJ" + -@erase "$(INTDIR)\STANDARD.OBJ" + -@erase "$(INTDIR)\STANDARD.res" + -@erase "$(INTDIR)\Trace.obj" + -@erase "$(INTDIR)\vc40.idb" + -@erase "$(INTDIR)\vc40.pdb" + -@erase "$(OUTDIR)\Standard.exp" + -@erase "$(OUTDIR)\Standard.lib" + -@erase "$(OUTDIR)\Standard.map" + -@erase "$(OUTDIR)\Standard.pdb" + -@erase ".\bin\Standard.ilk" + -@erase ".\bin\Standard.snp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/Standard.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Standard\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +RSC_PROJ=/l 0x409 /fo"$(INTDIR)/STANDARD.res" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/Standard.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows /dll /map /debug /machine:I386 /out:"bin\Standard.snp" +LINK32_FLAGS=tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib\ + shell32.lib wsock32.lib storm.lib /nologo /base:0x18000000 /subsystem:windows\ + /dll /incremental:yes /pdb:"$(OUTDIR)/Standard.pdb"\ + /map:"$(INTDIR)/Standard.map" /debug /machine:I386\ + /def:".\Standard\STANDARD.DEF" /out:"bin\Standard.snp"\ + /implib:"$(OUTDIR)/Standard.lib" +DEF_FILE= \ + ".\Standard\STANDARD.DEF" +LINK32_OBJS= \ + "$(INTDIR)\IPX.OBJ" \ + "$(INTDIR)\MODEM.OBJ" \ + "$(INTDIR)\NULL.OBJ" \ + "$(INTDIR)\PERF.OBJ" \ + "$(INTDIR)\SERIAL.OBJ" \ + "$(INTDIR)\STANDARD.OBJ" \ + "$(INTDIR)\STANDARD.res" \ + "$(INTDIR)\Trace.obj" \ + ".\STORM.LIB" + +".\bin\Standard.snp" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ENDIF + +################################################################################ +# Begin Target + +# Name "DiabloUI - Win32 Release" +# Name "DiabloUI - Win32 Debug" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "ui" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"ui - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="ui - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"ui - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="ui - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Source File + +SOURCE=.\Testui.cpp +DEP_CPP_TESTU=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\Diabloui.h"\ + + +"$(INTDIR)\Testui.obj" : $(SOURCE) $(DEP_CPP_TESTU) "$(INTDIR)" + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "battle" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"battle - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="battle - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"battle - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="battle - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "Standard" + +!IF "$(CFG)" == "DiabloUI - Win32 Release" + +"Standard - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug" + +"Standard - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\Diabloui.mak" CFG="Standard - Win32 Debug" + +!ENDIF + +# End Project Dependency +# End Target +################################################################################ +# Begin Target + +# Name "ui - Win32 Release" +# Name "ui - Win32 Debug" + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Title.cpp +DEP_CPP_TITLE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Title.obj" : $(SOURCE) $(DEP_CPP_TITLE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DiabloUI.rc +DEP_RSC_DIABL=\ + ".\Ui\arrow.cur"\ + ".\Ui\But_sml.raw"\ + ".\Ui\Credits.txt"\ + ".\Ui\Frank.rc"\ + ".\Ui\ibeam.cur"\ + ".\Ui\link.cur"\ + ".\Ui\Mike.rc"\ + ".\Ui\Srpopup.pal"\ + ".\Ui\Srpopup.raw"\ + + +!IF "$(CFG)" == "ui - Win32 Release" + + +"$(INTDIR)\DiabloUI.res" : $(SOURCE) $(DEP_RSC_DIABL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/DiabloUI.res" /i "Ui" /d "NDEBUG" $(SOURCE) + + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + + +"$(INTDIR)\DiabloUI.res" : $(SOURCE) $(DEP_RSC_DIABL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/DiabloUI.res" /i "Ui" /d "_DEBUG" $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\local.cpp +DEP_CPP_LOCAL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\local.obj" : $(SOURCE) $(DEP_CPP_LOCAL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Diabloui.cpp +DEP_CPP_DIABLO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Diabloui.obj" : $(SOURCE) $(DEP_CPP_DIABLO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Diabloui.def + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\MainMenu.cpp +DEP_CPP_MAINM=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\MainMenu.obj" : $(SOURCE) $(DEP_CPP_MAINM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\credits.cpp +DEP_CPP_CREDI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\credits.obj" : $(SOURCE) $(DEP_CPP_CREDI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\cr8game.cpp +DEP_CPP_CR8GA=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\cr8game.obj" : $(SOURCE) $(DEP_CPP_CR8GA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelHero.cpp +DEP_CPP_SELHE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelHero.obj" : $(SOURCE) $(DEP_CPP_SELHE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\OkCancel.cpp +DEP_CPP_OKCAN=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\OkCancel.obj" : $(SOURCE) $(DEP_CPP_OKCAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Logon.cpp +DEP_CPP_LOGON=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Logon.obj" : $(SOURCE) $(DEP_CPP_LOGON) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Progress.cpp +DEP_CPP_PROGR=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Progress.obj" : $(SOURCE) $(DEP_CPP_PROGR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\connect.cpp +DEP_CPP_CONNE=\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\connect.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\disclaim.cpp +DEP_CPP_DISCL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\disclaim.obj" : $(SOURCE) $(DEP_CPP_DISCL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\artfont.cpp +DEP_CPP_ARTFO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\artfont.obj" : $(SOURCE) $(DEP_CPP_ARTFO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Focus.cpp +DEP_CPP_FOCUS=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Focus.obj" : $(SOURCE) $(DEP_CPP_FOCUS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelClass.cpp +DEP_CPP_SELCL=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelClass.obj" : $(SOURCE) $(DEP_CPP_SELCL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelList.cpp +DEP_CPP_SELLI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelList.obj" : $(SOURCE) $(DEP_CPP_SELLI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\EntrName.cpp +DEP_CPP_ENTRN=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\EntrName.obj" : $(SOURCE) $(DEP_CPP_ENTRN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\UiSnd.cpp +DEP_CPP_UISND=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\UiSnd.obj" : $(SOURCE) $(DEP_CPP_UISND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelYesNo.cpp +DEP_CPP_SELYE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelYesNo.obj" : $(SOURCE) $(DEP_CPP_SELYE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelConn.cpp +DEP_CPP_SELCO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelConn.obj" : $(SOURCE) $(DEP_CPP_SELCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CreaHero.cpp +DEP_CPP_CREAH=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\CreaHero.obj" : $(SOURCE) $(DEP_CPP_CREAH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DiabEdit.cpp +DEP_CPP_DIABE=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\DiabEdit.obj" : $(SOURCE) $(DEP_CPP_DIABE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Doom.cpp +DEP_CPP_DOOM_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Doom.obj" : $(SOURCE) $(DEP_CPP_DOOM_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Fade.cpp +DEP_CPP_FADE_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Fade.obj" : $(SOURCE) $(DEP_CPP_FADE_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelIPX.cpp +DEP_CPP_SELIP=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelIPX.obj" : $(SOURCE) $(DEP_CPP_SELIP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelGame.cpp +DEP_CPP_SELGA=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\SelGame.obj" : $(SOURCE) $(DEP_CPP_SELGA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CreaDung.cpp +DEP_CPP_CREAD=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\CreaDung.obj" : $(SOURCE) $(DEP_CPP_CREAD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\DirLink.cpp +DEP_CPP_DIRLI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\DirLink.obj" : $(SOURCE) $(DEP_CPP_DIRLI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Sbar.cpp +DEP_CPP_SBAR_=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + + +"$(INTDIR)\Sbar.obj" : $(SOURCE) $(DEP_CPP_SBAR_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelLoad.cpp +DEP_CPP_SELLO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelLoad.obj" : $(SOURCE) $(DEP_CPP_SELLO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\CopyProt.cpp +DEP_CPP_COPYP=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\CopyProt.obj" : $(SOURCE) $(DEP_CPP_COPYP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\Modem.cpp +DEP_CPP_MODEM=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\Modem.obj" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelModem.cpp +DEP_CPP_SELMO=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelModem.obj" : $(SOURCE) $(DEP_CPP_SELMO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\EntrDial.cpp +DEP_CPP_ENTRD=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\EntrDial.obj" : $(SOURCE) $(DEP_CPP_ENTRD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\SelDial.cpp +DEP_CPP_SELDI=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\SelDial.obj" : $(SOURCE) $(DEP_CPP_SELDI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Ui\ModmStat.cpp +DEP_CPP_MODMS=\ + ".\Sclass.h"\ + ".\Ui\..\storm.h"\ + ".\Ui\artfont.h"\ + ".\Ui\DiabEdit.h"\ + ".\Ui\Diabloui.h"\ + ".\Ui\Doom.h"\ + ".\Ui\Fade.h"\ + ".\Ui\local.h"\ + ".\Ui\Pch.h"\ + ".\Ui\Sbar.h"\ + ".\Ui\UiSnd.h"\ + + +"$(INTDIR)\ModmStat.obj" : $(SOURCE) $(DEP_CPP_MODMS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "battle - Win32 Release" +# Name "battle - Win32 Debug" + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\battle\Ui.cpp +DEP_CPP_UI_CP=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Ui.obj" : $(SOURCE) $(DEP_CPP_UI_CP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.rc +DEP_RSC_BATTL=\ + ".\battle\Chathelp.txt"\ + + +!IF "$(CFG)" == "battle - Win32 Release" + + +"$(INTDIR)\Battle.res" : $(SOURCE) $(DEP_RSC_BATTL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /i "battle" /d\ + "NDEBUG" $(SOURCE) + + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + + +"$(INTDIR)\Battle.res" : $(SOURCE) $(DEP_RSC_BATTL) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/Battle.res" /i "u:\diabloui" /i "battle" /d\ + "_DEBUG" $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\bnetart.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Chatroom.cpp +DEP_CPP_CHATR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Chatroom.obj" : $(SOURCE) $(DEP_CPP_CHATR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Joingame.cpp +DEP_CPP_JOING=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Joingame.obj" : $(SOURCE) $(DEP_CPP_JOING) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Pch.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Resource.h + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Spi.cpp +DEP_CPP_SPI_C=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Spi.obj" : $(SOURCE) $(DEP_CPP_SPI_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Srv.cpp +DEP_CPP_SRV_C=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Srv.obj" : $(SOURCE) $(DEP_CPP_SRV_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.cpp +DEP_CPP_BATTLE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Battle.obj" : $(SOURCE) $(DEP_CPP_BATTLE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Battle.def + +!IF "$(CFG)" == "battle - Win32 Release" + +!ELSEIF "$(CFG)" == "battle - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\connect.cpp +DEP_CPP_CONNE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\connect.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\logon.cpp +DEP_CPP_LOGON_=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\logon.obj" : $(SOURCE) $(DEP_CPP_LOGON_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Progress.cpp +DEP_CPP_PROGR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Progress.obj" : $(SOURCE) $(DEP_CPP_PROGR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\bnetlogo.cpp +DEP_CPP_BNETL=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\bnetlogo.obj" : $(SOURCE) $(DEP_CPP_BNETL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\cancel.cpp +DEP_CPP_CANCE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\cancel.obj" : $(SOURCE) $(DEP_CPP_CANCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\Cache.cpp +DEP_CPP_CACHE=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Cache.obj" : $(SOURCE) $(DEP_CPP_CACHE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\clrpref.cpp +DEP_CPP_CLRPR=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\clrpref.obj" : $(SOURCE) $(DEP_CPP_CLRPR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\ad.cpp +DEP_CPP_AD_CP=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\ad.obj" : $(SOURCE) $(DEP_CPP_AD_CP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\rasmgr.cpp +DEP_CPP_RASMG=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\rasmgr.obj" : $(SOURCE) $(DEP_CPP_RASMG) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\disconn.cpp +DEP_CPP_DISCO=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\disconn.obj" : $(SOURCE) $(DEP_CPP_DISCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\chatchnl.cpp +DEP_CPP_CHATC=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\chatchnl.obj" : $(SOURCE) $(DEP_CPP_CHATC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\scrllbar.cpp +DEP_CPP_SCRLL=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\scrllbar.obj" : $(SOURCE) $(DEP_CPP_SCRLL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\message.cpp +DEP_CPP_MESSA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Sclass.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\message.obj" : $(SOURCE) $(DEP_CPP_MESSA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\setpass.cpp +DEP_CPP_SETPA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\setpass.obj" : $(SOURCE) $(DEP_CPP_SETPA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\battle\getpass.cpp +DEP_CPP_GETPA=\ + ".\battle\Battle.h"\ + ".\battle\chat.h"\ + ".\battle\Pch.h"\ + ".\battle\rasmgr.h"\ + ".\Ui\..\battle\bnetart.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\getpass.obj" : $(SOURCE) $(DEP_CPP_GETPA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "Standard - Win32 Release" +# Name "Standard - Win32 Debug" + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.RC + +!IF "$(CFG)" == "Standard - Win32 Release" + + +"$(INTDIR)\STANDARD.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/STANDARD.res" /i "Standard" /d "NDEBUG"\ + $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + + +"$(INTDIR)\STANDARD.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)/STANDARD.res" /i "Standard" /d "_DEBUG"\ + $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\MODEM.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_MODEM=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\MODEM.OBJ" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_MODEM=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\MODEM.OBJ" : $(SOURCE) $(DEP_CPP_MODEM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\NULL.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_NULL_=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\NULL.OBJ" : $(SOURCE) $(DEP_CPP_NULL_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_NULL_=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\NULL.OBJ" : $(SOURCE) $(DEP_CPP_NULL_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\PERF.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_PERF_=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\PERF.OBJ" : $(SOURCE) $(DEP_CPP_PERF_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_PERF_=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\PERF.OBJ" : $(SOURCE) $(DEP_CPP_PERF_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\SERIAL.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_SERIA=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\SERIAL.OBJ" : $(SOURCE) $(DEP_CPP_SERIA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_SERIA=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\SERIAL.OBJ" : $(SOURCE) $(DEP_CPP_SERIA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_STAND=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\STANDARD.OBJ" : $(SOURCE) $(DEP_CPP_STAND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_STAND=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\STANDARD.OBJ" : $(SOURCE) $(DEP_CPP_STAND) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\IPX.CPP + +!IF "$(CFG)" == "Standard - Win32 Release" + +DEP_CPP_IPX_C=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + + +"$(INTDIR)\IPX.OBJ" : $(SOURCE) $(DEP_CPP_IPX_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +DEP_CPP_IPX_C=\ + ".\Sclass.h"\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\IPX.OBJ" : $(SOURCE) $(DEP_CPP_IPX_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\STORM.LIB + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\STANDARD.DEF + +!IF "$(CFG)" == "Standard - Win32 Release" + +!ELSEIF "$(CFG)" == "Standard - Win32 Debug" + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\Standard\Trace.cpp +DEP_CPP_TRACE=\ + ".\Standard\Pch.h"\ + ".\Standard\Standard.h"\ + ".\Standard\Trace.h"\ + ".\Ui\..\storm.h"\ + + +"$(INTDIR)\Trace.obj" : $(SOURCE) $(DEP_CPP_TRACE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +# End Source File +# End Target +# End Project +################################################################################ diff --git a/Uisrc/DIABLOUI.MDP b/Uisrc/DIABLOUI.MDP new file mode 100644 index 0000000..3b901a4 Binary files /dev/null and b/Uisrc/DIABLOUI.MDP differ diff --git a/Uisrc/DIABLOUI.NCB b/Uisrc/DIABLOUI.NCB new file mode 100644 index 0000000..55e1e5a Binary files /dev/null and b/Uisrc/DIABLOUI.NCB differ diff --git a/Uisrc/DIABLOUI.OPT b/Uisrc/DIABLOUI.OPT new file mode 100644 index 0000000..1a2d257 Binary files /dev/null and b/Uisrc/DIABLOUI.OPT differ diff --git a/Uisrc/DIABLOUI.PLG b/Uisrc/DIABLOUI.PLG new file mode 100644 index 0000000..7da553c --- /dev/null +++ b/Uisrc/DIABLOUI.PLG @@ -0,0 +1,31 @@ +--------------------Configuration: DiabloUI - Win32 Debug-------------------- +Begining build with project "C:\hellfire\diabloui\Diabloui.dsp", at root. +Active configuration is Win32 (x86) Application (based on Win32 (x86) Application) + +Project's tools are: + "32-bit C/C++ Compiler for 80x86" with flags "/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR".\Debug/" /Fp".\Debug/Diabloui.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c " + "OLE Type Library Maker" with flags "/nologo /D "_DEBUG" /mktyplib203 /win32 " + "Win32 Resource Compiler" with flags "/l 0x409 /d "_DEBUG" " + "Browser Database Maker" with flags "/nologo /o".\Debug/Diabloui.bsc" " + "COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /pdb:".\Debug/DiabloUI.pdb" /map:".\Debug/DiabloUI.map" /debug /machine:I386 /out:".\bin\DiabloUI.exe" " + "Custom Build" with flags "" + "" with flags "" + +Creating temp file "C:\WINDOWS\TEMP\RSP40A3.TMP" with contents +Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP40A3.TMP" +Compiling... +Testui.cpp +Creating temp file "C:\WINDOWS\TEMP\RSP41B4.TMP" with contents +Creating command line "link.exe @C:\WINDOWS\TEMP\RSP41B4.TMP" +Linking... +Creating command line "bscmake.exe /nologo /o".\Debug/Diabloui.bsc" .\Debug\Testui.sbr" +Creating browse info file... + + + +DiabloUI.exe - 0 error(s), 0 warning(s) diff --git a/Uisrc/MSSCCPRJ.SCC b/Uisrc/MSSCCPRJ.SCC new file mode 100644 index 0000000..f37e866 --- /dev/null +++ b/Uisrc/MSSCCPRJ.SCC @@ -0,0 +1,4 @@ +SCC = This is a Source Code Control file + +[DIABLOUI.MAK] +SCC_Project_Name = "$/UiSrc", RJAAAAAA diff --git a/Uisrc/NEWSTM/STORM.H b/Uisrc/NEWSTM/STORM.H new file mode 100644 index 0000000..7916c00 --- /dev/null +++ b/Uisrc/NEWSTM/STORM.H @@ -0,0 +1,3331 @@ +#ifndef _STORM_H_ +#define _STORM_H_ + +#if PRAGMA_IMPORT_SUPPORTED +#pragma import on +#endif + + +//#########################################################################// +//#########################################################################// +// // +// // +// STANDARD PROGRAMMING INTERFACE // +// // +// // +//#########################################################################// +//#########################################################################// + + +#define DECLARE_STRICT_HANDLE(name) typedef struct name##__ { int unused; } *name +#define DECLARE_DERIVED_HANDLE(name,base) typedef struct name##__ : public base##__ { int unused; } *name + + +/**************************************************************************** +* +* Error codes +* (Error text is defined in Stormerr.mc) +* +***/ + +#define STORMFAC 0x510 +#define STORMERROR(code) (0x80000000 | (STORMFAC << 16) | ((code) & 0xFFFF)) + +#define STORM_ERROR_ASSERTION STORMERROR(0) +#define STORM_ERROR_BAD_ARGUMENT STORMERROR(101) +#define STORM_ERROR_GAME_ALREADY_STARTED STORMERROR(102) +#define STORM_ERROR_GAME_FULL STORMERROR(103) +#define STORM_ERROR_GAME_NOT_FOUND STORMERROR(104) +#define STORM_ERROR_GAME_TERMINATED STORMERROR(105) +#define STORM_ERROR_INVALID_PLAYER STORMERROR(106) +#define STORM_ERROR_NO_MESSAGES_WAITING STORMERROR(107) +#define STORM_ERROR_NOT_ARCHIVE STORMERROR(108) +#define STORM_ERROR_NOT_ENOUGH_ARGUMENTS STORMERROR(109) +#define STORM_ERROR_NOT_IMPLEMENTED STORMERROR(110) +#define STORM_ERROR_NOT_IN_ARCHIVE STORMERROR(111) +#define STORM_ERROR_NOT_IN_GAME STORMERROR(112) +#define STORM_ERROR_NOT_INITIALIZED STORMERROR(113) +#define STORM_ERROR_NOT_PLAYING STORMERROR(114) +#define STORM_ERROR_NOT_REGISTERED STORMERROR(115) +#define STORM_ERROR_REQUIRES_CODEC STORMERROR(116) +#define STORM_ERROR_REQUIRES_DDRAW STORMERROR(117) +#define STORM_ERROR_REQUIRES_DSOUND STORMERROR(118) +#define STORM_ERROR_REQUIRES_UPGRADE STORMERROR(119) +#define STORM_ERROR_STILL_ACTIVE STORMERROR(120) +#define STORM_ERROR_VERSION_MISMATCH STORMERROR(121) +#define STORM_ERROR_MEMORY_ALREADY_FREED STORMERROR(122) +#define STORM_ERROR_MEMORY_CORRUPT STORMERROR(123) +#define STORM_ERROR_MEMORY_INVALID_BLOCK STORMERROR(124) +#define STORM_ERROR_MEMORY_MANAGER_INACTIVE STORMERROR(125) +#define STORM_ERROR_MEMORY_NEVER_RELEASED STORMERROR(126) +#define STORM_ERROR_HANDLE_NEVER_RELEASED STORMERROR(127) +#define STORM_ERROR_ACCESS_OUT_OF_BOUNDS STORMERROR(128) +#define STORM_ERROR_MEMORY_NULL_POINTER STORMERROR(129) + + +/**************************************************************************** +* +* BitBlt functions +* +***/ + +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SBltDestroy (); +#endif +extern "C" BOOL APIENTRY SBltGetSCode (DWORD rop3, + LPSTR buffer, + DWORD buffersize, + BOOL optimize = 1); +extern "C" BOOL APIENTRY SBltROP3 (LPBYTE dest, + LPBYTE source, + int width, + int height, + int destcx, + int sourcecx, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Clipped (LPBYTE dest, + LPRECT destrect, + LPSIZE destsize, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + LPSIZE sourcesize, + int sourcepitch, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Tiled (LPBYTE dest, + LPRECT destrect, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + int sourcepitch, + int sourceoffsetx, + int sourceoffsety, + DWORD pattern, + DWORD rop3); + + +/**************************************************************************** +* +* Bitmap functions +* +***/ + +#define SBMP_IMAGETYPE_AUTO 0 +#define SBMP_IMAGETYPE_BMP 1 +#define SBMP_IMAGETYPE_PCX 2 + +typedef LPVOID (APIENTRY *SBMPALLOCPROC)(DWORD); + +extern "C" BOOL APIENTRY SBmpAllocLoadImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE *returnedbuffer, + int *width = NULL, + int *height = NULL, + int *bitdepth = NULL, + int requestedbitdepth = 0, + SBMPALLOCPROC allocproc = NULL); +extern "C" BOOL APIENTRY SBmpDecodeImage (DWORD imagetype, + LPBYTE imagedata, + DWORD imagebytes, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width = NULL, + int *height = NULL, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SBmpLoadImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width = NULL, + int *height = NULL, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SBmpSaveImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + int width, + int height, + int bitdepth); + + +/**************************************************************************** +* +* Command line parsing functions +* +***/ + +#define SCMD_ARG_FLAGGED (0 << 24) +#define SCMD_ARG_OPTIONAL (1 << 24) +#define SCMD_ARG_REQUIRED (2 << 24) +#define SCMD_ARG_MASK (SCMD_ARG_FLAGGED | SCMD_ARG_OPTIONAL | SCMD_ARG_REQUIRED) + +#define SCMD_BOOL_SET 0 +#define SCMD_BOOL_CLEAR 1 +#define SCMD_BOOL_MASK (SCMD_BOOL_CLEAR | SCMD_BOOL_SET) + +#define SCMD_CASESENSITIVE (0x01 << 8) + +#define SCMD_NUM_UNSIGNED 0 +#define SCMD_NUM_SIGNED 1 +#define SCMD_NUM_MASK (SCMD_NUM_UNSIGNED | SCMD_NUM_SIGNED) + +#define SCMD_TYPE_BOOL (0 << 16) +#define SCMD_TYPE_NUMERIC (1 << 16) +#define SCMD_TYPE_STRING (2 << 16) +#define SCMD_TYPE_MASK (SCMD_TYPE_BOOL | SCMD_TYPE_NUMERIC | SCMD_TYPE_STRING) + +#define SCMD_ERROR_BAD_ARGUMENT STORM_ERROR_BAD_ARGUMENT +#define SCMD_ERROR_NOT_ENOUGH_ARGUMENTS STORM_ERROR_NOT_ENOUGH_ARGUMENTS +#define SCMD_ERROR_OPEN_FAILED ERROR_OPEN_FAILED + +typedef struct _CMDERROR { + DWORD errorcode; + LPCTSTR itemstr; + LPCTSTR errorstr; +} CMDERROR, *CMDERRORPTR; + +typedef struct _CMDPARAMS { + DWORD flags; + DWORD id; + LPCTSTR name; + LPVOID variable; + DWORD setvalue; + DWORD setmask; + union { + BOOL boolvalue; + LONG signedvalue; + DWORD unsignedvalue; + LPCTSTR stringvalue; + }; +} CMDPARAMS, *CMDPARAMSPTR; + +typedef BOOL (CALLBACK *SCMDCALLBACK)(CMDPARAMSPTR,LPCTSTR); +typedef void (CALLBACK *SCMDERRORCALLBACK)(CMDERRORPTR); +typedef BOOL (CALLBACK *SCMDEXTRACALLBACK)(LPCTSTR); + +typedef struct _ARGLIST { + DWORD flags; + DWORD id; + LPCTSTR name; + SCMDCALLBACK callback; +} ARGLIST, *ARGLISTPTR; + +extern "C" BOOL APIENTRY SCmdCheckId (DWORD id); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SCmdDestroy (); +#endif +extern "C" BOOL APIENTRY SCmdGetBool (DWORD id); +extern "C" DWORD APIENTRY SCmdGetNum (DWORD id); +extern "C" BOOL APIENTRY SCmdGetString (DWORD id, + LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SCmdProcess (LPCTSTR cmdline, + BOOL skipprogname, + SCMDEXTRACALLBACK extracallback, + SCMDERRORCALLBACK errorcallback); +extern "C" BOOL APIENTRY SCmdRegisterArgList (const ARGLIST *listptr, + DWORD numargs); +extern "C" BOOL APIENTRY SCmdRegisterArgument (DWORD flags, + DWORD id, + LPCTSTR name, + LPVOID variableptr = NULL, + DWORD variablebytes = 0, + DWORD setvalue = TRUE, + DWORD setmask = 0xFFFFFFFF, + SCMDCALLBACK callback = NULL); + +#define SCmdProcessCommandLine(ext,err) SCmdProcess(GetCommandLine(),TRUE,(ext),(err)) + +#define ARGBOOL(flags,name,var,callback) SCmdRegisterArgument(SCMD_TYPE_BOOL | (flags),0xFFFFFFFF,name,var,sizeof(var),TRUE,0xFFFFFFFF,callback) +#define ARGFLAG(flags,name,var,valuecallback) SCmdRegisterArgument(SCMD_TYPE_BOOL | (flags),0xFFFFFFFF,name,var,sizeof(var),value,value,callback) +#define ARGNUMBER(flags,name,var,callback) SCmdRegisterArgument(SCMD_TYPE_NUMERIC | (flags),0xFFFFFFFF,name,var,sizeof(var),0,0,callback) +#define ARGSTRING(flags,name,buffer,chars,callback) SCmdRegisterArgument(SCMD_TYPE_STRING | (flags),0xFFFFFFFF,name,buffer,(chars),0,0,callback) + + +/**************************************************************************** +* +* S-Code functions +* +***/ + +#define SCODE_CF_AUTOALIGNDWORD 0x00040000 +#define SCODE_CF_USESALTADJUSTS 0x04000000 + +DECLARE_STRICT_HANDLE(HSCODESTREAM); + +typedef struct _SCODEEXECUTEDATA { + DWORD size; + DWORD flags; + int xiterations; + int yiterations; + int adjustdest; + int adjustsource; + LPVOID dest; + LPVOID source; + LPVOID table; + DWORD a; + DWORD b; + DWORD c; + int adjustdestalt; + int adjustsourcealt; + DWORD reserved[2]; +} SCODEEXECUTEDATA, *SCODEEXECUTEDATAPTR; + +extern "C" BOOL APIENTRY SCodeCompile (LPCSTR prologstring, + LPCSTR loopstring, + LPCSTR *firsterror, + DWORD maxiterations, + DWORD flags, + HSCODESTREAM *handle); +extern "C" BOOL APIENTRY SCodeDelete (HSCODESTREAM handle); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SCodeDestroy (); +#endif +extern "C" BOOL APIENTRY SCodeExecute (HSCODESTREAM handle, + SCODEEXECUTEDATAPTR executedata); +extern "C" BOOL APIENTRY SCodeGetJumpTable (HSCODESTREAM handle, + LPBYTE **jumptableptr, + LPDWORD *prologpatchlocation, + LPDWORD *looppatchlocation, + LPDWORD *epilogpatchlocation); +extern "C" BOOL APIENTRY SCodeGetPseudocode (LPCSTR scodestring, + LPSTR buffer, + DWORD buffersize); + + +/**************************************************************************** +* +* Compression functions +* +***/ + +#define SCOMP_HINT_NONE 0 +#define SCOMP_HINT_BINARY 1 +#define SCOMP_HINT_TEXT 2 +#define SCOMP_HINT_EXECUTABLE 3 +#define SCOMP_HINT_ADPCM4 4 +#define SCOMP_HINT_ADPCM6 5 +#define SCOMP_HINTS 6 + +#define SCOMP_OPT_DEFAULT 0 +#define SCOMP_OPT_COMPRESSION 1 +#define SCOMP_OPT_SPEED 2 +#define SCOMP_OPT_QUALITY 3 + +#define SCOMP_TYPE_HUFFMAN 0x01 +#define SCOMP_TYPE_PKWARE 0x08 +#define SCOMP_TYPE_LOSSY_ADPCM_MONO 0x10 +#define SCOMP_TYPE_LOSSY_ADPCM_STEREO 0x20 + +extern "C" BOOL APIENTRY SCompCompress (LPVOID dest, + DWORD *destsize, + LPCVOID source, + DWORD sourcesize, + DWORD compressiontypes, + DWORD hint, + DWORD optimization); +extern "C" BOOL APIENTRY SCompDecompress (LPVOID dest, + DWORD *destsize, + LPCVOID source, + DWORD sourcesize); + + +/**************************************************************************** +* +* Dialog box functions +* +***/ + +#define SDLG_ADJUST_NONE 0 +#define SDLG_ADJUST_VERTICAL 1 +#define SDLG_ADJUST_CONTROLPOS 2 + +#define SDLG_DBF_TILE 0x00000001 +#define SDLG_DBF_VCENTER 0x00000002 + +#define SDLG_STYLE_ANY 0xFFFFFFFF +#define SDLG_STYLE_ANYPUSHBUTTON 0x00010001 + +#define SDLG_USAGE_BACKGROUND 0x00000001 +#define SDLG_USAGE_NORMAL_UNFOCUSED 0x00000010 +#define SDLG_USAGE_NORMAL_FOCUSED 0x00000020 +#define SDLG_USAGE_NORMAL (SDLG_USAGE_NORMAL_UNFOCUSED | SDLG_USAGE_NORMAL_FOCUSED) +#define SDLG_USAGE_SELECTED_UNFOCUSED 0x00000040 +#define SDLG_USAGE_SELECTED_FOCUSED 0x00000080 +#define SDLG_USAGE_SELECTED (SDLG_USAGE_SELECTED_UNFOCUSED | SDLG_USAGE_SELECTED_FOCUSED) +#define SDLG_USAGE_NORMAL_GRAYED 0x00000100 +#define SDLG_USAGE_SELECTED_GRAYED 0x00000400 +#define SDLG_USAGE_GRAYED (SDLG_USAGE_NORMAL_GRAYED | SDLG_USAGE_SELECTED_GRAYED) +#define SDLG_USAGE_CURSORMASK 0x00001000 +#define SDLG_USAGE_CURSORIMAGE 0x00002000 + +extern "C" HDC APIENTRY SDlgBeginPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgBltToWindowE (HWND window, + HRGN region, + int x, + int y, + LPBYTE bitmapbits, + LPRECT bitmaprect, + LPSIZE bitmapsize, + DWORD colorkey = 0xFFFFFFFF, + DWORD pattern = 0, + DWORD rop3 = SRCCOPY); +extern "C" BOOL APIENTRY SDlgBltToWindowI (HWND window, + HRGN region, + int x, + int y, + LPBYTE bitmapbits, + LPRECT bitmaprect, + LPSIZE bitmapsize, + DWORD colorkey = 0xFFFFFFFF, + DWORD pattern = 0, + DWORD rop3 = SRCCOPY); +extern "C" BOOL APIENTRY SDlgCheckTimers (); +extern "C" HWND APIENTRY SDlgCreateDialogIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" HWND APIENTRY SDlgCreateDialogParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDefDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SDlgDestroy (); +#endif +extern "C" int APIENTRY SDlgDialogBoxIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" int APIENTRY SDlgDialogBoxParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDrawBitmap (HWND window, + DWORD usage, + HRGN region, + int offsetx = 0, + int offsety = 0, + LPRECT boundingoffset = NULL, + DWORD flags = 0); +extern "C" BOOL APIENTRY SDlgEndDialog (HWND window, + int result); +extern "C" BOOL APIENTRY SDlgEndPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgKillTimer (HWND window, + UINT event); +extern "C" BOOL APIENTRY SDlgSetBaseFont (int pointsize, + int weight, + DWORD flags, + DWORD family, + LPCTSTR face); +extern "C" BOOL APIENTRY SDlgSetBitmapE (HWND window, + HWND parentwindow, + LPCTSTR controltype, + DWORD controlstyle, + DWORD usage, + LPBYTE bitmapbits, + LPRECT rect, + int width, + int height, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetBitmapI (HWND window, + HWND parentwindow, + LPCTSTR controltype, + DWORD controlstyle, + DWORD usage, + LPBYTE bitmapbits, + LPRECT rect, + int width, + int height, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetControlBitmaps (HWND parentwindow, + LPINT controllist, + LPDWORD usagelist, + LPBYTE bitmapbits, + LPSIZE bitmapsize, + DWORD adjusttype, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetCursor (HWND window, + HCURSOR cursor, + DWORD id, + HCURSOR *oldcursor); +extern "C" BOOL APIENTRY SDlgSetSystemCursor (LPBYTE maskbitmap, + LPBYTE imagebitmap, + LPSIZE size, + DWORD id = 32512); +extern "C" BOOL APIENTRY SDlgSetTimer (HWND window, + UINT event, + UINT elapse, + TIMERPROC timerfunc); +extern "C" BOOL APIENTRY SDlgUpdateCursor (); + +#define SDlgCreateDialog(ins,tpl,wnd,prc) SDlgCreateDialogParam(ins,tpl,wnd,prc,0) +#define SDlgCreateDialogIndirect(ins,tpl,wnd,prc) SDlgCreateDialogIndirectParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBox(ins,tpl,wnd,prc) SDlgDialogBoxParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBoxIndirect(ins,tpl,wnd,prc) SDlgDialogBoxIndirectParam(ins,tpl,wnd,prc,0) + +#ifdef SDLG_USE_INCLUSIVE_RECTS +#define SDlgBltToWindow SDlgBltToWindowI +#define SDlgSetBitmap SDlgSetBitmapI +#else +#define SDlgBltToWindow SDlgBltToWindowE +#define SDlgSetBitmap SDlgSetBitmapE +#endif + +/**************************************************************************** +* +* DirectDraw functions +* +***/ + +#define SDRAW_SERVICE_BASIC 1 +#define SDRAW_SERVICE_PAGEFLIP 2 +#define SDRAW_SERVICE_DOUBLEBUFFER 3 +#define SDRAW_SERVICE_MAX 3 + +#define SDRAW_SURFACE_FRONT 0 +#define SDRAW_SURFACE_BACK 1 +#define SDRAW_SURFACE_SYSTEM 2 +#define SDRAW_SURFACE_TEMPORARY 3 + +#ifndef MAC +extern "C" BOOL APIENTRY SDrawAutoInitialize (HINSTANCE instance, + LPCTSTR classname, + LPCTSTR title, + WNDPROC wndproc = NULL, + int servicelevel = SDRAW_SERVICE_BASIC, + int width = 640, + int height = 480, + int bitdepth = 8); +extern "C" BOOL APIENTRY SDrawCaptureScreen (LPCTSTR filename = NULL); +#endif +extern "C" BOOL APIENTRY SDrawClearSurface (int surfacenumber); +extern "C" BOOL APIENTRY SDrawDestroy (); +extern "C" BOOL APIENTRY SDrawFlipPage (); +extern "C" HWND APIENTRY SDrawGetFrameWindow (HWND *window = NULL); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawGetObjects (LPDIRECTDRAW *directdraw, + LPDIRECTDRAWSURFACE *frontbuffer, + LPDIRECTDRAWSURFACE *backbuffer, + LPDIRECTDRAWSURFACE *systembuffer, + LPDIRECTDRAWSURFACE *temporarybuffer, + LPDIRECTDRAWPALETTE *palette, + HPALETTE *gdipalette); +#endif +extern "C" BOOL APIENTRY SDrawGetScreenSize (int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SDrawGetServiceLevel (int *servicelevel = NULL); +extern "C" BOOL APIENTRY SDrawLockSurface (int surfacenumber, + LPCRECT rect, + LPBYTE *ptr, + int *pitch = NULL, + DWORD flags = 0); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawManualInitialize (HWND framewindow, + LPDIRECTDRAW directdraw, + LPDIRECTDRAWSURFACE frontbuffer, + LPDIRECTDRAWSURFACE backbuffer, + LPDIRECTDRAWSURFACE systembuffer, + LPDIRECTDRAWSURFACE temporarybuffer, + LPDIRECTDRAWPALETTE palette, + HPALETTE gdipalette); +#endif +extern "C" int APIENTRY SDrawMessageBox (LPCTSTR text, + LPCTSTR title, + UINT flags); +extern "C" BOOL APIENTRY SDrawPostClose (); +extern "C" BOOL APIENTRY SDrawRealizePalette (); +#ifndef MAC +extern "C" BOOL APIENTRY SDrawSelectGdiSurface (BOOL select, BOOL copy); +#endif +extern "C" BOOL APIENTRY SDrawUnlockSurface (int surfacenumber, + LPBYTE ptr, + DWORD numrects = 0, + LPCRECT rectarray = NULL); +extern "C" BOOL APIENTRY SDrawUpdatePalette (DWORD firstentry, + DWORD numentries, + LPPALETTEENTRY entries, + BOOL reservedentries = FALSE); +extern "C" BOOL APIENTRY SDrawUpdateScreen (LPCRECT rect); +#ifdef MAC +extern "C" BOOL APIENTRY SDrawVidDriverInitialize (HWND framewindow, + int servicelevel); +#endif + + +/**************************************************************************** +* +* Error handling functions +* +***/ + +#define SERR_LINECODE_FUNCTION -1 +#define SERR_LINECODE_OBJECT -2 +#define SERR_LINECODE_HANDLE -3 +#define SERR_LINECODE_FILE -4 + +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SErrDestroy (); +#endif +extern "C" BOOL APIENTRY SErrDisplayError (DWORD errorcode, + LPCTSTR filename, + int linenumber, + LPCTSTR description, + BOOL recoverable, + UINT exitcode = 1); +extern "C" BOOL APIENTRY SErrGetErrorStr (DWORD errorcode, + LPTSTR buffer, + DWORD bufferchars); +extern "C" DWORD APIENTRY SErrGetLastError (); +extern "C" BOOL APIENTRY SErrRegisterMessageSource (WORD facility, + HMODULE module, + LPVOID reserved = NULL); +extern "C" void APIENTRY SErrReportResourceLeak (LPCTSTR handlename); +extern "C" void APIENTRY SErrSetLastError (DWORD errorcode); +extern "C" void APIENTRY SErrSuppressErrors (BOOL suppress); + +#define SErrGetLastErrorStr(buf,len) SErrGetErrorStr(SErrGetLastError(),buf,len) +#define FATALRESULT(str) SErrDisplayError(SErrGetLastError(),str,SERR_LINECODE_FUNCTION,NULL,FALSE) +#define REPORTRESOURCELEAK(handle) SErrReportResourceLeak(#handle) + +#ifdef _DEBUG +#define ASSERT(a) if (!(a)) \ + SErrDisplayError(STORM_ERROR_ASSERTION, \ + __FILE__, \ + __LINE__, \ + #a, \ + FALSE) +#define VALIDATEBEGIN do { +#define VALIDATE(a) ASSERT(a) +#define VALIDATEANDBLANK(a) do { \ + ASSERT(a); \ + *(a) = 0; \ + } while (0) +#define VALIDATEEND } while (0) +#define VALIDATEENDVOID } while (0) +#else +#define ASSERT(a) +#define VALIDATEBEGIN do { \ + int intrn_valresult = -1 +#define VALIDATE(a) intrn_valresult &= (a) ? -1 : 0 +#define VALIDATEANDBLANK(a) if (a) \ + *a = 0; \ + else \ + intrn_valresult = 0 +#define VALIDATEEND if (!intrn_valresult) { \ + SErrSetLastError( \ + ERROR_INVALID_PARAMETER); \ + return 0; \ + } \ + } while (0) +#define VALIDATEENDVOID if (!intrn_valresult) { \ + SErrSetLastError( \ + ERROR_INVALID_PARAMETER); \ + return; \ + } \ + } while (0) +#endif + + +/**************************************************************************** +* +* Event dispatching functions +* +***/ + +typedef void (CALLBACK *SEVTHANDLER)(LPVOID); + +extern "C" BOOL APIENTRY SEvtBreakHandlerChain (LPVOID data); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SEvtDestroy (); +#endif +extern "C" BOOL APIENTRY SEvtDispatch (DWORD type, + DWORD subtype, + DWORD id, + LPVOID data); +extern "C" BOOL APIENTRY SEvtPopState (DWORD type, + DWORD subtype); +extern "C" BOOL APIENTRY SEvtPushState (DWORD type, + DWORD subtype); +extern "C" BOOL APIENTRY SEvtRegisterHandler (DWORD type, + DWORD subtype, + DWORD id, + DWORD flags, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterHandler (DWORD type, + DWORD subtype, + DWORD id, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterType (DWORD type, + DWORD subtype); + + +/**************************************************************************** +* +* File I/O functions +* +***/ + +#define SFILE_AUTH_UNABLETOAUTHENTICATE 0 +#define SFILE_AUTH_NOSIGNATURE 1 +#define SFILE_AUTH_BADSIGNATURE 2 +#define SFILE_AUTH_UNKNOWNSIGNATURE 3 +#define SFILE_AUTH_FIRSTAUTHENTIC 5 +#define SFILE_AUTH_AUTHENTICBLIZZARD 5 + +#define SFILE_DDA_LOOP 0x00040000 + +#define SFILE_ERROR_BAD_FORMAT ERROR_BAD_FORMAT +#define SFILE_ERROR_BAD_PATHNAME ERROR_BAD_PATHNAME +#define SFILE_ERROR_CALL_NOT_IMPLEMENTED ERROR_CALL_NOT_IMPLEMENTED +#define SFILE_ERROR_FILE_INVALID ERROR_FILE_INVALID +#define SFILE_ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND +#define SFILE_ERROR_HANDLE_EOF ERROR_HANDLE_EOF +#define SFILE_ERROR_INVALID_DATA ERROR_INVALID_DATA +#define SFILE_ERROR_INVALID_DRIVE ERROR_INVALID_DRIVE +#define SFILE_ERROR_INVALID_HANDLE ERROR_INVALID_HANDLE +#define SFILE_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SFILE_ERROR_NOT_ARCHIVE STORM_ERROR_NOT_ARCHIVE +#define SFILE_ERROR_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define SFILE_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SFILE_ERROR_NOT_IN_ARCHIVE STORM_ERROR_NOT_IN_ARCHIVE +#define SFILE_ERROR_NOT_INITIALIZED STORM_ERROR_NOT_INITIALIZED +#define SFILE_ERROR_NOT_PLAYING STORM_ERROR_NOT_PLAYING + +#define SFILE_ERRORMODE_RETURNCODE 0 +#define SFILE_ERRORMODE_CUSTOM 1 +#define SFILE_ERRORMODE_FATAL 2 + +#define SFILE_FIND_FILES 0x00000001 +#define SFILE_FIND_DIRECTORIES 0x00000002 + +DECLARE_STRICT_HANDLE(HSARCHIVE); +DECLARE_STRICT_HANDLE(HSFILE); + +typedef BOOL (CALLBACK *SFILEERRORPROC)(LPCTSTR,DWORD); + +extern "C" BOOL APIENTRY SFileAuthenticateArchive (HSARCHIVE archive, + DWORD *extendedresult); +extern "C" BOOL APIENTRY SFileCloseArchive (HSARCHIVE handle); +extern "C" BOOL APIENTRY SFileCloseFile (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaBegin (HSFILE handle, + DWORD buffersize, + DWORD flags); +extern "C" BOOL APIENTRY SFileDdaBeginEx (HSFILE handle, + DWORD buffersize, + DWORD flags, + DWORD offset, + LONG volume, + LONG pan, + LPVOID reserved); +extern "C" BOOL APIENTRY SFileDdaDestroy (); +extern "C" BOOL APIENTRY SFileDdaEnd (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaGetPos (HSFILE handle, + DWORD *position, + DWORD *maxposition); +extern "C" BOOL APIENTRY SFileDdaGetVolume (HSFILE handle, + LONG *volume, + LONG *pan); +#ifdef __DSOUND_INCLUDED__ +extern "C" BOOL APIENTRY SFileDdaInitialize (LPDIRECTSOUND directsound); +#endif +extern "C" BOOL APIENTRY SFileDdaSetVolume (HSFILE handle, + LONG volume, + LONG pan); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SFileDestroy (); +#endif +extern "C" BOOL APIENTRY SFileEnableDirectAccess (BOOL enable); +extern "C" BOOL APIENTRY SFileGetArchiveInfo (HSARCHIVE archive, + int *priority, + BOOL *cdrom); +extern "C" BOOL APIENTRY SFileGetArchiveName (HSARCHIVE archive, + LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SFileGetBasePath (LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SFileGetFileArchive (HSFILE file, + HSARCHIVE *archive); +extern "C" BOOL APIENTRY SFileGetFileName (HSFILE file, + LPTSTR buffer, + DWORD bufferchars); +extern "C" DWORD APIENTRY SFileGetFileSize (HSFILE handle, + LPDWORD filesizehigh = NULL); +extern "C" BOOL APIENTRY SFileOpenArchive (LPCTSTR archivename, + int priority, + BOOL cdonly, + HSARCHIVE *handle); +extern "C" BOOL APIENTRY SFileOpenFile (LPCTSTR filename, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileOpenFileEx (HSARCHIVE archivehandle, + LPCTSTR filename, + DWORD flags, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileReadFile (HSFILE handle, + LPVOID buffer, + DWORD bytestoread, + LPDWORD bytesread = NULL, + LPOVERLAPPED overlapped = NULL); +extern "C" BOOL APIENTRY SFileSetBasePath (LPCTSTR path); +extern "C" DWORD APIENTRY SFileSetFilePointer (HSFILE handle, + LONG distancetomove, + PLONG distancetomovehigh, + DWORD movemethod); +extern "C" BOOL APIENTRY SFileSetIoErrorMode (DWORD errormode, + SFILEERRORPROC errorproc = NULL); +extern "C" BOOL APIENTRY SFileSetLocale (LCID lcid); + + +/**************************************************************************** +* +* GDI functions +* +***/ + +#define ETO_TEXT_TRANSPARENT 0 +#define ETO_TEXT_COLOR 1 +#define ETO_TEXT_BLACK 2 +#define ETO_TEXT_WHITE 3 +#define ETO_BKG_TRANSPARENT 0 +#define ETO_BKG_COLOR 1 +#define ETO_BKG_BLACK 2 +#define ETO_BKG_WHITE 3 + +DECLARE_STRICT_HANDLE(HSGDIOBJ); +DECLARE_DERIVED_HANDLE(HSGDIFONT,HSGDIOBJ); + +extern "C" BOOL APIENTRY SGdiBitBlt (LPBYTE videobuffer, + int destx, + int desty, + LPBYTE sourcedata, + LPRECT sourcerect, + int sourcecx, + int sourcecy, + COLORREF color = 0, + DWORD rop = SRCCOPY); +extern "C" BOOL APIENTRY SGdiCreateFont (LPBYTE bits, + int width, + int height, + int bitdepth, + int filecharwidth, + int filecharheight, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiDeleteObject (HSGDIOBJ handle); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SGdiDestroy (); +#endif +extern "C" BOOL APIENTRY SGdiExtTextOut (LPBYTE videobuffer, + int x, + int y, + LPRECT rect, + COLORREF color, + int textcoloruse, + int bkgcoloruse, + LPCTSTR string, + int chars = -1); +extern "C" BOOL APIENTRY SGdiGetTextExtent (LPCTSTR string, + int chars, + LPSIZE size); +extern "C" BOOL APIENTRY SGdiImportFont (HFONT windowsfont, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiLoadFont (LPCTSTR filename, + int filecharwidth, + int filecharheight, + int basecharwidth, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiRectangle (LPBYTE videobuffer, + int left, + int top, + int right, + int bottom, + COLORREF color); +extern "C" BOOL APIENTRY SGdiSelectObject (HSGDIOBJ handle); +extern "C" BOOL APIENTRY SGdiSetPitch (int pitch); +extern "C" BOOL APIENTRY SGdiSetTargetDimensions (int width, + int height, + int bitdepth, + int pitch); +extern "C" BOOL APIENTRY SGdiTextOut (LPBYTE videobuffer, + int x, + int y, + COLORREF color, + LPCTSTR string, + int chars = -1); + + +/**************************************************************************** +* +* Logging functions +* +***/ + +DECLARE_STRICT_HANDLE(HSLOG); + +extern "C" void APIENTRY SLogClose (HSLOG log); +extern "C" BOOL APIENTRY SLogCreate (LPCTSTR filename, + DWORD flags, + HSLOG *log); +#ifdef STORMSTATIC +extern "C" void APIENTRY SLogDestroy (); +#endif +extern "C" void APIENTRY SLogDump (HSLOG log, + LPCVOID data, + DWORD bytes); +extern "C" void APIENTRY SLogFlush (HSLOG log); +extern "C" void APIENTRY SLogFlushAll (); +#ifdef STORMSTATIC +extern "C" void APIENTRY SLogInitialize (); +#endif +extern "C" void __cdecl SLogPend (HSLOG log, + LPCTSTR format, + ...); +extern "C" void __cdecl SLogWrite (HSLOG log, + LPCTSTR format, + ...); + + +/**************************************************************************** +* +* Memory allocation functions +* +***/ + +#define SMEM_FLAG_ZEROMEMORY 0x00000008 +#define SMEM_FLAG_PRESERVEONDESTROY 0x08000000 + +DECLARE_STRICT_HANDLE(HSHEAP); + +typedef struct _SMEMBLOCKDETAILS { + DWORD size; + LPVOID ptr; + BOOL allocated; + BOOL valid; + DWORD bytes; + DWORD overhead; +} SMEMBLOCKDETAILS, *LPSMEMBLOCKDETAILS; + +typedef struct _SMEMHEAPDETAILS { + DWORD size; + HSHEAP handle; + char filename[MAX_PATH]; + int linenumber; + DWORD regions; + DWORD committedbytes; + DWORD reservedbytes; + DWORD maximumsize; + DWORD allocatedblocks; +} SMEMHEAPDETAILS, *LPSMEMHEAPDETAILS; + +extern "C" LPVOID APIENTRY SMemAlloc (DWORD bytes, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SMemDestroy (); +#endif +extern "C" BOOL APIENTRY SMemFindNextBlock (HSHEAP heap, + LPVOID prevblock, + LPVOID *nextblock, + LPSMEMBLOCKDETAILS details); +extern "C" BOOL APIENTRY SMemFindNextHeap (HSHEAP prevheap, + HSHEAP *nextheap, + LPSMEMHEAPDETAILS details); +extern "C" BOOL APIENTRY SMemFree (LPVOID ptr, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +extern "C" HSHEAP APIENTRY SMemGetHeapByCaller (LPCSTR filename, + int linenumber); +extern "C" HSHEAP APIENTRY SMemGetHeapByPtr (LPVOID ptr); +extern "C" LPVOID APIENTRY SMemHeapAlloc (HSHEAP handle, + DWORD flags, + DWORD bytes); +extern "C" HSHEAP APIENTRY SMemHeapCreate (DWORD options, + DWORD initialsize, + DWORD maximumsize); +extern "C" BOOL APIENTRY SMemHeapDestroy (HSHEAP handle); +extern "C" BOOL APIENTRY SMemHeapFree (HSHEAP handle, + DWORD flags, + LPVOID ptr); +#ifdef STORMSTATIC +extern "C" void APIENTRY SMemInitialize (); +#endif + +inline void __cdecl operator delete (void *ptr) { + if (ptr) + SMemFree(ptr,__FILE__,__LINE__,0); +} + +inline void * __cdecl operator new (size_t bytes) { + return SMemAlloc(bytes,__FILE__,__LINE__,0); +} + +#ifndef __ICL +#ifndef __MWERKS__ +inline void __cdecl operator delete[] (void *ptr) { + if (ptr) + SMemFree(ptr,__FILE__,__LINE__,0); +} + +inline void * __cdecl operator new[] (size_t bytes) { + return SMemAlloc(bytes,__FILE__,__LINE__,0); +} +#endif +#endif + +#ifndef __PLACEMENT_NEW_INLINE +#define __PLACEMENT_NEW_INLINE +inline void * __cdecl operator new (size_t, void *ptr) { + return (ptr); +} + +inline void * __cdecl operator new[] (size_t, void *ptr) { + return (ptr); +} +#endif + +#define ALLOC(bytes) SMemAlloc(bytes,__FILE__,__LINE__,0) +#define ALLOCZERO(bytes) SMemAlloc(bytes,__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY) +#define DEL(ptr) delete(ptr) +#define DELIFUSED(ptr) delete(ptr) +#define FREE(ptr) SMemFree(ptr,__FILE__,__LINE__,0) +#define FREEIFUSED(ptr) do if (ptr) SMemFree(ptr,__FILE__,__LINE__,0); while (0) +#define NEW(struct) (new(SMemAlloc(sizeof(struct),__FILE__,__LINE__,0)) struct) +#define NEWZERO(struct) (new(SMemAlloc(sizeof(struct),__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY)) struct) + + +/**************************************************************************** +* +* Message functions +* +***/ + +typedef struct _PARAMS { + HWND window; + UINT message; + WPARAM wparam; + LPARAM lparam; + UINT notifycode; + LPVOID extra; + BOOL useresult; + LRESULT result; +} PARAMS, *PARAMSPTR, *LPPARAMS; + +typedef BOOL (CALLBACK *SMSGIDLEPROC)(DWORD); +typedef void (CALLBACK *SMSGHANDLER)(LPPARAMS); + +extern "C" BOOL APIENTRY SMsgBreakHandlerChain (LPPARAMS params); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY SMsgDestroy (); +#endif +extern "C" BOOL APIENTRY SMsgDispatchMessage (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam, + BOOL *useresult, + LRESULT *result); +extern "C" BOOL APIENTRY SMsgDoMessageLoop (SMSGIDLEPROC idleproc = NULL, + BOOL cleanuponquit = TRUE); +extern "C" BOOL APIENTRY SMsgPopRegisterState (HWND window); +extern "C" BOOL APIENTRY SMsgPushRegisterState (HWND window); +extern "C" BOOL APIENTRY SMsgRegisterCommand (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyDown (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyUp (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterMessage (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgUnregisterCommand (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgUnregisterKeyDown (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgUnregisterKeyUp (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgUnregisterMessage (HWND window, + UINT id, + SMSGHANDLER handler); + + +/**************************************************************************** +* +* Networking functions +* +***/ + +#define SNET_ART_BACKGROUND 0 +#define SNET_ART_BUTTONTEXTURE 1 +#define SNET_ART_JOINBACKGROUND 2 +#define SNET_ART_HELPBACKGROUND 3 +#define SNET_ART_POPUPBACKGROUND 4 +#define SNET_ART_BUTTON_XSML 5 +#define SNET_ART_BUTTON_SML 6 +#define SNET_ART_BUTTON_MED 7 +#define SNET_ART_BUTTON_LRG 8 +#define SNET_ART_APP_LOGO_SML 9 +#define SNET_ART_PROGRESS_BACKGROUND 10 +#define SNET_ART_PROGRESS_FILLER 11 +#define SNET_ART_POPUPBACKGROUND_SML 12 +#define SNET_ART_SCROLLBARARROWS 13 +#define SNET_ART_SCROLLTHUMB 14 +#define SNET_ART_SCROLLBAR 15 +#define SNET_ART_COMBOLEFT 16 +#define SNET_ART_COMBOMIDDLE 17 +#define SNET_ART_COMBORIGHT 18 + +#define SNET_AUTHTYPE_CHANNEL 1 +#define SNET_AUTHTYPE_GAME 2 + +#define SNET_BROADCASTNONLOCALPLAYERID 0xFFFFFFFE +#define SNET_BROADCASTPLAYERID 0xFFFFFFFF +#define SNET_INVALIDPLAYERID 0xFFFFFFFF + +#define SNET_CAPS_PAGELOCKEDBUFFERS 0x00000001 +#define SNET_CAPS_BASICINTERFACE 0x00000002 +#define SNET_CAPS_DEBUGONLY 0x10000000 +#define SNET_CAPS_RETAILONLY 0x20000000 + +#define SNET_CF_ALLOWPRIVATEGAMES 0x00000001 + +#define SNET_DATA_SYSCOLORS 1 +#define SNET_DATA_CURSORLINK 2 +#define SNET_DATA_CURSORARROW 3 +#define SNET_DATA_CURSORIBEAM 4 + +#define SNET_DDF_INCLUDENAME 0x00000001 +#define SNET_DDF_MULTILINE 0x00000002 + +#define SNET_DDPF_BLIZZARD 0x00000001 +#define SNET_DDPF_MODERATOR 0x00000002 +#define SNET_DDPF_SPEAKER 0x00000004 +#define SNET_DDPF_SYSOP 0x00000008 +#define SNET_DDPF_SQUELCHED 0x00000020 + +#define SNET_DRAWTYPE_GAME 1 +#define SNET_DRAWTYPE_PLAYER 2 + +#define SNET_ERROR_ALREADY_EXISTS ERROR_ALREADY_EXISTS +#define SNET_ERROR_BAD_PROVIDER ERROR_BAD_PROVIDER +#define SNET_ERROR_CANCELLED ERROR_CANCELLED +#define SNET_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SNET_ERROR_INVALID_PLAYER STORM_ERROR_INVALID_PLAYER +#define SNET_ERROR_GAME_ALREADY_STARTED STORM_ERROR_GAME_ALREADY_STARTED +#define SNET_ERROR_GAME_FULL STORM_ERROR_GAME_FULL +#define SNET_ERROR_GAME_NOT_FOUND STORM_ERROR_GAME_NOT_FOUND +#define SNET_ERROR_GAME_TERMINATED STORM_ERROR_GAME_TERMINATED +#define SNET_ERROR_HOST_UNREACHABLE ERROR_HOST_UNREACHABLE +#define SNET_ERROR_MAX_THRDS_REACHED ERROR_MAX_THRDS_REACHED +#define SNET_ERROR_NETWORK_BUSY ERROR_NETWORK_BUSY +#define SNET_ERROR_NO_MESSAGES_WAITING STORM_ERROR_NO_MESSAGES_WAITING +#define SNET_ERROR_NO_NETWORK ERROR_NO_NETWORK +#define SNET_ERROR_NOT_CONNECTED ERROR_NOT_CONNECTED +#define SNET_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SNET_ERROR_NOT_IMPLEMENTED STORM_ERROR_NOT_IMPLEMENTED +#define SNET_ERROR_NOT_IN_GAME STORM_ERROR_NOT_IN_GAME +#define SNET_ERROR_NOT_OWNER ERROR_NOT_OWNER +#define SNET_ERROR_NOT_REGISTERED STORM_ERROR_NOT_REGISTERED +#define SNET_ERROR_REQUIRES_UPGRADE STORM_ERROR_REQUIRES_UPGRADE +#define SNET_ERROR_STILL_ACTIVE STORM_ERROR_STILL_ACTIVE +#define SNET_ERROR_TOO_MANY_NAMES ERROR_TOO_MANY_NAMES +#define SNET_ERROR_VERSION_MISMATCH STORM_ERROR_VERSION_MISMATCH + +#define SNET_EVENT_INITDATA 1 +#define SNET_EVENT_PLAYERJOIN 2 +#define SNET_EVENT_PLAYERLEAVE 3 +#define SNET_EVENT_SERVERMESSAGE 4 + +#define SNET_EXIT_AUTO_JOINING 0x00000001 +#define SNET_EXIT_AUTO_NEWGAME 0x00000002 +#define SNET_EXIT_AUTO_SHUTDOWN 0x00000003 +#define SNET_EXIT_PLAYERQUIT 0x40000001 +#define SNET_EXIT_PLAYERKILLED 0x40000002 +#define SNET_EXIT_PLAYERWON 0x40000004 +#define SNET_EXIT_GAMEOVER 0x40000005 +#define SNET_EXIT_NOTRESPONDING 0x40000006 + +#define SNET_GM_PRIVATE 0x00000001 +#define SNET_GM_FULL 0x00000002 +#define SNET_GM_ADVERTISED 0x00000004 +#define SNET_GM_UNJOINABLE 0x00000008 +#define SNET_GM_UNLISTEDMASK (SNET_GM_PRIVATE | SNET_GM_FULL | SNET_GM_UNJOINABLE) + +#define SNET_INFO_GAMENAME 1 +#define SNET_INFO_GAMEPASSWORD 2 +#define SNET_INFO_GAMEDESCRIPTION 3 +#define SNET_INFO_GAMEMODE 4 +#define SNET_INFO_INITDATA 5 +#define SNET_INFO_MAXPLAYERS 6 + +#define SNET_LMT_EXPECTED 1 +#define SNET_LMT_CURRENT 2 +#define SNET_LMT_PEAK 4 + +#define SNET_PERFID_TURN 1 +#define SNET_PERFID_TURNSSENT 4 +#define SNET_PERFID_TURNSRECV 5 +#define SNET_PERFID_MSGSENT 6 +#define SNET_PERFID_MSGRECV 7 +#define SNET_PERFID_USERBYTESSENT 8 +#define SNET_PERFID_USERBYTESRECV 9 +#define SNET_PERFID_TOTALBYTESSENT 10 +#define SNET_PERFID_TOTALBYTESRECV 11 +#define SNET_PERFID_PKTSENTONWIRE 12 +#define SNET_PERFID_PKTRECVONWIRE 13 +#define SNET_PERFID_BYTESSENTONWIRE 14 +#define SNET_PERFID_BYTESRECVONWIRE 15 +#define SNET_PERFIDNUM 16 + +#define SNET_PERFTYPE_COUNTER 0x10410400 +#define SNET_PERFTYPE_RAWCOUNT 0x00010000 + +#define SNET_PSF_ACTIVE 0x00010000 +#define SNET_PSF_TURNAVAILABLE 0x00020000 +#define SNET_PSF_RESPONDING 0x00040000 + +#define SNET_SF_ALLOWCREATE 0x00000001 + +#define SNET_SND_CHANGEFOCUS 0 +#define SNET_SND_SELECTITEM 1 + +#define SNET_UPGRADE_FAILED -1 +#define SNET_UPGRADE_NOT_NEEDED 0 +#define SNET_UPGRADE_SUCCEEDED 1 +#define SNET_UPGRADING_TERMINATE 2 + +#define SNET_MAXNAMELENGTH 128 +#define SNET_MAXDESCLENGTH 128 + +typedef struct _SNETCAPS { + DWORD size; + DWORD flags; + DWORD maxmessagesize; + DWORD maxqueuesize; + DWORD maxplayers; + DWORD bytessec; + DWORD latencyms; + DWORD defaultturnssec; + DWORD defaultturnsintransit; +} SNETCAPS, *SNETCAPSPTR; + +typedef struct _SNETCREATEDATA { + DWORD size; + DWORD providerid; + DWORD maxplayers; + DWORD createflags; +} SNETCREATEDATA, *SNETCREATEDATAPTR; + +typedef struct _SNET_DATA_SYSCOLORTABLE { + DWORD syscolor; + COLORREF rgb; +} SNET_DATA_SYSCOLORTABLE, *SNET_DATA_SYSCOLORTABLEPTR; + +typedef struct _SNETEVENT { + DWORD eventid; + DWORD playerid; + LPVOID data; + DWORD databytes; +} SNETEVENT, *SNETEVENTPTR; + +typedef struct _SNETGAME { + DWORD size; + DWORD id; + LPCSTR gamename; + LPCSTR gamedescription; + DWORD categorybits; + DWORD numplayers; + DWORD maxplayers; +} SNETGAME, *SNETGAMEPTR; + +struct _SNETPROGRAMDATA; +struct _SNETPLAYERDATA; +struct _SNETUIDATA; +struct _SNETVERSIONDATA; + +typedef BOOL (CALLBACK *SNETABORTPROC )(); +typedef void (CALLBACK *SNETADDCATEGORYPROC )(LPCSTR,DWORD,DWORD); +typedef void (CALLBACK *SNETCATEGORYLISTPROC )(_SNETPLAYERDATA *,SNETADDCATEGORYPROC); +typedef BOOL (CALLBACK *SNETCATEGORYPROC )(BOOL,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *,DWORD *); +typedef BOOL (CALLBACK *SNETCHECKAUTHPROC )(DWORD,LPCSTR,LPCSTR,DWORD,LPCSTR,LPSTR,DWORD); +typedef BOOL (CALLBACK *SNETCREATEPROC )(SNETCREATEDATAPTR,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *); +typedef BOOL (CALLBACK *SNETDRAWDESCPROC )(DWORD,DWORD,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,LPDRAWITEMSTRUCT); +typedef BOOL (CALLBACK *SNETENUMDEVICESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMGAMESEXPROC )(SNETGAMEPTR); +typedef BOOL (CALLBACK *SNETENUMGAMESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMPROVIDERSPROC)(DWORD,LPCSTR,LPCSTR,SNETCAPSPTR); +typedef void (CALLBACK *SNETEVENTPROC )(SNETEVENTPTR); +typedef BOOL (CALLBACK *SNETGETARTPROC )(DWORD,DWORD,LPPALETTEENTRY,LPBYTE,DWORD,int *,int *,int *); +typedef BOOL (CALLBACK *SNETGETDATAPROC )(DWORD,DWORD,LPVOID,DWORD,DWORD *); +typedef int (CALLBACK *SNETMESSAGEBOXPROC )(HWND,LPCSTR,LPCSTR,UINT); +typedef BOOL (CALLBACK *SNETPLAYSOUNDPROC )(DWORD,DWORD,DWORD); +typedef BOOL (CALLBACK *SNETSELECTEDPROC )(DWORD,SNETCAPSPTR,_SNETUIDATA *,_SNETVERSIONDATA *); +typedef BOOL (CALLBACK *SNETSTATUSPROC )(LPCSTR,DWORD,DWORD,DWORD,SNETABORTPROC); +typedef BOOL (CALLBACK *SNETPROFILEPROC )(); // tbd -- include callback to save info +typedef BOOL (CALLBACK *SNETNEWACCOUNTPROC )(); // tbd -- include callback to try to create + +typedef struct _SNETPLAYERDATA { + DWORD size; + LPCSTR playername; + LPCSTR playerdescription; + // new for 1.05: + LPCSTR displayedfields; +} SNETPLAYERDATA, *SNETPLAYERDATAPTR; + +typedef struct _SNETPROGRAMDATA { + DWORD size; + LPCSTR programname; + LPCSTR programdescription; + DWORD programid; + DWORD versionid; + DWORD reserved1; + DWORD maxplayers; + LPVOID initdata; + DWORD initdatabytes; + LPVOID reserved2; + DWORD optcategorybits; +} SNETPROGRAMDATA, *SNETPROGRAMDATAPTR; + +typedef struct _SNETUIDATA { + DWORD size; + DWORD uiflags; + HWND parentwindow; + SNETGETARTPROC artcallback; + SNETCHECKAUTHPROC authcallback; + SNETCREATEPROC createcallback; + SNETDRAWDESCPROC drawdesccallback; + SNETSELECTEDPROC selectedcallback; + SNETMESSAGEBOXPROC messageboxcallback; + SNETPLAYSOUNDPROC soundcallback; + SNETSTATUSPROC statuscallback; + SNETGETDATAPROC getdatacallback; + SNETCATEGORYPROC categorycallback; + // new for 1.05: + SNETCATEGORYLISTPROC categorylistcallback; + SNETNEWACCOUNTPROC newaccountcallback; + SNETPROFILEPROC profilecallback; +} SNETUIDATA, *SNETUIDATAPTR; + +typedef struct _SNETVERSIONDATA { + DWORD size; + LPCSTR versionstring; + LPCSTR executablefile; + LPCSTR originalarchivefile; + LPCSTR patcharchivefile; +} SNETVERSIONDATA, *SNETVERSIONDATAPTR; + +extern "C" BOOL APIENTRY SNetCreateGame (LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR gamedescription, + DWORD gamecategorybits, + LPVOID initdata, + DWORD initdatabytes, + DWORD maxplayers, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetDestroy (); +extern "C" BOOL APIENTRY SNetDropPlayer (DWORD playerid, DWORD exitcode); +extern "C" BOOL APIENTRY SNetEnumDevices (SNETENUMDEVICESPROC callback); +extern "C" BOOL APIENTRY SNetEnumGames (DWORD categorybits, + DWORD categorymask, + SNETENUMGAMESPROC callback, + DWORD *hintnextcall); +extern "C" BOOL APIENTRY SNetEnumGamesEx (DWORD categorybits, + DWORD categorymask, + SNETENUMGAMESEXPROC callback, + DWORD *hintnextcall); +extern "C" BOOL APIENTRY SNetEnumProviders (SNETCAPSPTR mincaps, + SNETENUMPROVIDERSPROC callback); +extern "C" BOOL APIENTRY SNetGetGameInfo (DWORD index, + LPVOID buffer, + DWORD buffersize, + DWORD *byteswritten); +extern "C" BOOL APIENTRY SNetGetNetworkLatency (DWORD measurementtype, + DWORD *result); +extern "C" BOOL APIENTRY SNetGetNumPlayers (DWORD *firstplayerid, + DWORD *lastplayerid, + DWORD *activeplayers); +extern "C" BOOL APIENTRY SNetGetOwnerId (DWORD *playerid); +extern "C" BOOL APIENTRY SNetGetOwnerTurnsWaiting (DWORD *turns); +extern "C" BOOL APIENTRY SNetGetPerformanceData (DWORD counterid, + DWORD *countervalue, + DWORD *countertype, + LONG *counterscale, + LARGE_INTEGER *measurementtime, + LARGE_INTEGER *measurementfreq); +extern "C" BOOL APIENTRY SNetGetPlayerCaps (DWORD playerid, + SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetPlayerName (DWORD playerid, + LPSTR buffer, + DWORD buffersize); +extern "C" BOOL APIENTRY SNetGetProviderCaps (SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetTurnsInTransit (DWORD *turns); +extern "C" BOOL APIENTRY SNetInitializeDevice (DWORD deviceid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetInitializeProvider (DWORD providerid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetJoinGame (DWORD gameid, + LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetLeaveGame (DWORD exitcode); +extern "C" BOOL APIENTRY SNetPerformUpgrade (DWORD *upgradestatus); +extern "C" BOOL APIENTRY SNetReceiveMessage (DWORD *senderplayerid, + LPVOID *data, + DWORD *databytes); +extern "C" BOOL APIENTRY SNetReceiveTurns (DWORD firstplayerid, + DWORD arraysize, + LPVOID *arraydata, + LPDWORD arraydatabytes, + LPDWORD arrayplayerstatus); +extern "C" BOOL APIENTRY SNetRegisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); +extern "C" BOOL APIENTRY SNetResetLatencyMeasurements (); +extern "C" BOOL APIENTRY SNetSelectGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetSelectProvider (SNETCAPSPTR mincaps, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *providerid); +extern "C" BOOL APIENTRY SNetSendMessage (DWORD targetplayerid, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSendServerChatCommand (LPCSTR command); +extern "C" BOOL APIENTRY SNetSendTurn (LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSetBasePlayer (DWORD playerid); +extern "C" BOOL APIENTRY SNetSetGameMode (DWORD modeflags); +extern "C" BOOL APIENTRY SNetUnregisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); + + +/**************************************************************************** +* +* Networking service provider interface +* +***/ + +#define SNETSPI_MAXCLIENTDATA 256 +#define SNETSPI_MAXSTRINGLENGTH 128 + +typedef struct _SNETADDR { + BYTE address[16]; +} SNETADDR, *SNETADDRPTR; + +typedef struct _SNETSPI_DEVICELIST { + DWORD deviceid; + SNETCAPS devicecaps; + char devicename[SNETSPI_MAXSTRINGLENGTH]; + char devicedescription[SNETSPI_MAXSTRINGLENGTH]; + DWORD reserved; + _SNETSPI_DEVICELIST *next; +} SNETSPI_DEVICELIST, *SNETSPI_DEVICELISTPTR; + +typedef struct _SNETSPI_GAMELIST { + DWORD gameid; + DWORD gamemode; + DWORD creationtime; + SNETADDR owner; + DWORD ownerlatency; + DWORD ownerlasttime; + DWORD gamecategorybits; + char gamename[SNETSPI_MAXSTRINGLENGTH]; + char gamedescription[SNETSPI_MAXSTRINGLENGTH]; + _SNETSPI_GAMELIST *next; + // new for 1.05: + LPVOID clientdata; + DWORD clientdatabytes; +} SNETSPI_GAMELIST, *SNETSPI_GAMELISTPTR; + +typedef struct _SNETSPI { + DWORD size; + BOOL (CALLBACK *CompareNetAddresses)(SNETADDRPTR,SNETADDRPTR,DWORD *); + BOOL (CALLBACK *Destroy)(); + BOOL (CALLBACK *Free)(SNETADDRPTR,LPVOID,DWORD); + BOOL (CALLBACK *FreeExternalMessage)(LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *GetGameInfo)(DWORD,LPCSTR,LPCSTR,SNETSPI_GAMELIST *); + BOOL (CALLBACK *GetPerformanceData)(DWORD,DWORD *,LARGE_INTEGER *,LARGE_INTEGER *); + BOOL (CALLBACK *Initialize)(SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,HANDLE); + BOOL (CALLBACK *InitializeDevice)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR); + BOOL (CALLBACK *LockDeviceList)(SNETSPI_DEVICELISTPTR *); + BOOL (CALLBACK *LockGameList)(DWORD,DWORD,SNETSPI_GAMELISTPTR *); + +/* note: this is the way that the Receive call should look... + + BOOL (CALLBACK *Receive)(SNETADDRPTR *,LPVOID *,DWORD *); + + below is the receive call with two parameters switched around + to make it incompatible with older .snp's during the beta... */ + + BOOL (CALLBACK *Receive)(LPVOID *,DWORD *,SNETADDRPTR *); + + BOOL (CALLBACK *ReceiveExternalMessage)(LPCSTR *,LPCSTR *,LPCSTR *); + BOOL (CALLBACK *SelectGame)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,DWORD *); + BOOL (CALLBACK *Send)(DWORD,SNETADDRPTR *,LPVOID,DWORD); + BOOL (CALLBACK *SendExternalMessage)(LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *StartAdvertisingGame)(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCVOID,DWORD); + BOOL (CALLBACK *StopAdvertisingGame)(); + BOOL (CALLBACK *UnlockDeviceList)(SNETSPI_DEVICELISTPTR); + BOOL (CALLBACK *UnlockGameList)(SNETSPI_GAMELISTPTR,DWORD *); + // new for 1.05: + BOOL (CALLBACK *GetLocalPlayerName)(LPSTR,DWORD,LPSTR,DWORD); +} SNETSPI, *SNETSPIPTR; + +typedef BOOL (APIENTRY *SNETSPIBIND )(DWORD,SNETSPIPTR *); +typedef BOOL (APIENTRY *SNETSPIQUERY)(DWORD,DWORD *,LPCSTR *,LPCSTR *,SNETCAPSPTR *); + + +/**************************************************************************** +* +* Registry functions +* +***/ + +#define SREG_FLAG_USERSPECIFIC 0x00000001 +#define SREG_FLAG_BATTLENET 0x00000002 +#define SREG_FLAG_FLUSHTODISK 0x00000008 +#define SREG_FLAG_MULTISZ 0x00000080 + +extern "C" BOOL APIENTRY SRegGetBaseKey (DWORD flags, + LPSTR buffer, + DWORD buffersize); +extern "C" BOOL APIENTRY SRegLoadData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID buffer, + DWORD buffersize, + DWORD *bytesread); +extern "C" BOOL APIENTRY SRegLoadString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SRegLoadValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD *value); +extern "C" BOOL APIENTRY SRegSaveData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SRegSaveString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPCTSTR string); +extern "C" BOOL APIENTRY SRegSaveValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD value); + + +/**************************************************************************** +* +* Region manager functions +* +***/ + +#define SRGN_AND RGN_AND +#define SRGN_COPY RGN_COPY +#define SRGN_DIFF RGN_DIFF +#define SRGN_OR RGN_OR +#define SRGN_XOR RGN_XOR +#define SRGN_PARAMONLY 6 +#define SRGN_MIN 1 +#define SRGN_MAX 6 + +DECLARE_STRICT_HANDLE(HSRGN); + +extern "C" void APIENTRY SRgnClear (HSRGN handle); +extern "C" void APIENTRY SRgnCombineRect (HSRGN handle, + LPCRECT rect, + LPVOID param, + int combinemode); +extern "C" void APIENTRY SRgnCreate (HSRGN *handle, + DWORD reserved = 0); +extern "C" void APIENTRY SRgnDelete (HSRGN handle); +#ifdef STORMSTATIC +extern "C" void APIENTRY SRgnDestroy (); +#endif +extern "C" void APIENTRY SRgnDuplicate (HSRGN orighandle, + HSRGN *handle, + DWORD reserved = 0); +extern "C" void APIENTRY SRgnGetBoundingRect (HSRGN handle, + LPRECT rect); +extern "C" void APIENTRY SRgnGetRectParams (HSRGN handle, + LPCRECT rect, + DWORD *numparams, + LPVOID *buffer); +extern "C" void APIENTRY SRgnGetRects (HSRGN handle, + DWORD *numrects, + LPRECT buffer); + +#define SRgnAddParam(handle,rect,param) SRgnCombineRect(handle,rect,param,SRGN_PARAMONLY); +#define SRgnAddRect(handle,rect,param) SRgnCombineRect(handle,rect,param,SRGN_OR) + + +/**************************************************************************** +* +* Run-time library functions +* +***/ + +#define ONCE ONCEEXPAND(__FILE__##__##__LINE__##__once) +#define ONCEEXPAND(a) BOOL a = TRUE; a; a = FALSE + +#define TRY goto trylabel; trylabel: +#define LEAVE goto finallylabel +#define FINALLY goto finallylabel; finallylabel: + + +/**************************************************************************** +* +* String functions +* +***/ + +#define SSTR_HASH_CASESENSITIVE 0x00000001 + +#define SSTR_UNBOUNDED 0x7FFFFFFF + +extern "C" LPTSTR APIENTRY SStrChr (LPCTSTR string, + char ch, + BOOL reverse = FALSE); +extern "C" DWORD APIENTRY SStrCopy (LPTSTR dest, + LPCTSTR source, + DWORD destsize = SSTR_UNBOUNDED); +extern "C" DWORD APIENTRY SStrHash (LPCTSTR string, + DWORD flags = 0, + DWORD seed = 0); +extern "C" DWORD APIENTRY SStrLen (LPCTSTR string); +extern "C" void APIENTRY SStrPack (LPTSTR dest, + LPCTSTR source, + DWORD destsize = SSTR_UNBOUNDED); +extern "C" void APIENTRY SStrTokenize (LPCTSTR *string, + LPTSTR buffer, + DWORD bufferchars, + LPCTSTR whitespace, + BOOL *quoted = NULL); + + +/**************************************************************************** +* +* Transparency functions +* +***/ + +#define STRANS_CF_INTERSECT 0x00000001 +#define STRANS_CF_INVERTSECOND 0x00000002 +#define STRANS_CF_SUBTRACT (STRANS_CF_INTERSECT | STRANS_CF_INVERTSECOND) + +DECLARE_STRICT_HANDLE(HSTRANS); +typedef HSTRANS HTRANS; + +extern "C" BOOL APIENTRY STransBlt (LPBYTE dest, + int destx, + int desty, + int destpitch, + HSTRANS transparency); +extern "C" BOOL APIENTRY STransBltUsingMask (LPBYTE dest, + LPBYTE source, + int destpitch, + int sourcepitch, + HSTRANS mask); +extern "C" BOOL APIENTRY STransCombineMasks (HSTRANS basemask, + HSTRANS secondmask, + int offsetx, + int offsety, + DWORD flags, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransCreateE (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransCreateI (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransCreateMaskE (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransCreateMaskI (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransDelete (HSTRANS handle); +#ifdef STORMSTATIC +extern "C" BOOL APIENTRY STransDestroy (); +#endif +extern "C" BOOL APIENTRY STransDuplicate (HSTRANS source, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransIntersectDirtyArray (HSTRANS sourcemask, + LPBYTE dirtyarray, + BYTE dirtyarraymask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransInvertMask (HSTRANS sourcemask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransIsPixelInMask (HSTRANS mask, + int offsetx, + int offsety); +extern "C" BOOL APIENTRY STransLoadE (LPCTSTR filename, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransLoadI (LPCTSTR filename, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransSetDirtyArrayInfo (int screencx, + int screency, + int cellcx, + int cellcy); +extern "C" BOOL APIENTRY STransUpdateDirtyArray (LPBYTE dirtyarray, + BYTE dirtyvalue, + int destx, + int desty, + HSTRANS transparency, + BOOL tracecontour); + +#ifdef STRANS_USE_INCLUSIVE_RECTS +#define STransCreate STransCreateI +#define STransCreateMask STransCreateMaskI +#define STransLoad STransLoadI +#else +#define STransCreate STransCreateE +#define STransCreateMask STransCreateMaskE +#define STransLoad STransLoadE +#endif + + +/**************************************************************************** +* +* Video functions +* +***/ + +#define SVID_FLAG_DOUBLESCANS 0x00000001 +#define SVID_FLAG_INTERPOLATE 0x00000002 +#define SVID_FLAG_INTERLACE 0x00000004 +#define SVID_FLAG_AUTOQUALITY 0x00000008 +#define SVID_FLAG_1XSIZE 0x00000100 +#define SVID_FLAG_2XSIZE 0x00000200 +#define SVID_FLAG_AUTOSIZE 0x00000800 +#define SVID_FLAG_FILEHANDLE 0x00010000 +#define SVID_FLAG_PRELOAD 0x00020000 +#define SVID_FLAG_LOOP 0x00040000 +#define SVID_FLAG_FULLSCREEN 0x00080000 +#define SVID_FLAG_USECURRENTPALETTE 0x00100000 +#define SVID_FLAG_CLEARSCREEN 0x00200000 +#define SVID_FLAG_NOSKIP 0x00400000 +#define SVID_FLAG_NEEDPAN 0x02000000 +#define SVID_FLAG_NEEDVOLUME 0x04000000 +#define SVID_FLAG_TOSCREEN 0x10000000 +#define SVID_FLAG_TOBUFFER 0x20000000 + +#define SVID_CUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_2XSIZE) +#define SVID_AUTOCUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_AUTOSIZE | SVID_FLAG_AUTOQUALITY) + +#define SVID_QUALITY_LOW_SKIPSCANS SVID_FLAG_2XSIZE +#define SVID_QUALITY_LOW (SVID_FLAG_2XSIZE | SVID_FLAG_DOUBLESCANS) +#define SVID_QUALITY_HIGH_SKIPSCANS (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE) +#define SVID_QUALITY_HIGH (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE | SVID_FLAG_DOUBLESCANS) + +DECLARE_STRICT_HANDLE(HSVIDEO); + +typedef struct _SVIDPALETTEUSE { + DWORD size; + DWORD firstentry; + DWORD numentries; +} SVIDPALETTEUSE, *SVIDPALETTEUSEPTR; + +extern "C" BOOL APIENTRY SVidDestroy (); +extern "C" BOOL APIENTRY SVidGetPerformanceData (HSVIDEO video, + BOOL averageframems, + DWORD *framems, + BOOL averagepalettems, + DWORD *palettems); +extern "C" BOOL APIENTRY SVidGetSize (HSVIDEO video, + int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SVidInitialize (LPVOID directsound); +extern "C" BOOL APIENTRY SVidPlayBegin (LPCTSTR filename, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayBeginFromMemory (LPVOID sourceptr, + DWORD sourcebytes, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayContinue (); +extern "C" BOOL APIENTRY SVidPlayContinueSingle (HSVIDEO video, + BOOL forceupdate, + BOOL *updated); +extern "C" BOOL APIENTRY SVidPlayEnd (HSVIDEO video); +extern "C" BOOL APIENTRY SVidSetVolume (HSVIDEO video, + LONG volume, + LONG pan, + DWORD track = 0); + + +/**************************************************************************** +* +* Storm global functions +* +***/ + +extern "C" BOOL APIENTRY StormDestroy (); + +#ifdef MAC +extern "C" void StormStartup(); +extern "C" void StormShutdown(); +#endif + + +//#########################################################################// +//#########################################################################// +// // +// // +// CLASS-BASED PROGRAMMING INTERFACE // +// (under construction) // +// // +// // +//#########################################################################// +//#########################################################################// + + +/**************************************************************************** +* +* CSLog +* +***/ + +class CSLog { + + private: + HSLOG m_handle; + + public: + + //======================================================================= + CSLog (LPCTSTR filename) { + SLogCreate(filename,0,&m_handle); + } + + //======================================================================= + CSLog (LPCTSTR keyname, + LPCTSTR valuename) { + char filename[MAX_PATH] = ""; + SRegLoadString(keyname,valuename,0,filename,MAX_PATH); +#ifdef _DEBUG + SRegSaveString(keyname,valuename,0,filename); +#endif + if (filename[0]) + SLogCreate(filename,0,&m_handle); + } + + //======================================================================= + ~CSLog () { + SLogClose(m_handle); + } + + //======================================================================= + void Dump (LPCVOID data, + DWORD bytes) { + SLogDump(m_handle, + data, + bytes); + } + + //======================================================================= + void Flush () { + SLogFlush(m_handle); + } + + //======================================================================= + HSLOG GetHandle () { + return m_handle; + } + + //======================================================================= + void Pend (LPCSTR string) { + SLogPend(m_handle, + string); + } + + //======================================================================= + void Write (LPCSTR string) { + SLogWrite(m_handle, + string); + } + +}; + + +/**************************************************************************** +* +* CSRgn +* +***/ + +class CSRgn { + + private: + HSRGN m_handle; + + //======================================================================= + void CopyConstructor (const CSRgn & source) { + SRgnDuplicate(source.m_handle, + &m_handle); + } + + public: + + //======================================================================= + CSRgn () { + SRgnCreate(&m_handle); + } + + //======================================================================= + CSRgn (const CSRgn & source) { + CopyConstructor(source); + } + + //======================================================================= + ~CSRgn () { + SRgnDelete(m_handle); + } + + //======================================================================= + CSRgn & operator= (const CSRgn &source) { + if (this != &source) { + this->~CSRgn(); + CopyConstructor(source); + } + return *this; + } + + //======================================================================= + void AddParam (LPCRECT rect, + LPVOID param) { + SRgnAddParam(m_handle, + rect, + param); + } + + //======================================================================= + void AddRect (LPCRECT rect, + LPVOID param) { + SRgnAddRect(m_handle, + rect, + param); + } + + //======================================================================= + void Clear () { + SRgnClear(m_handle); + } + + //======================================================================= + void CombineRect (LPCRECT rect, + LPVOID param, + int combinemode) { + SRgnCombineRect(m_handle, + rect, + param, + combinemode); + } + + //======================================================================= + void GetBoundingRect (LPRECT rect) { + SRgnGetBoundingRect(m_handle, + rect); + } + + //======================================================================= + void GetRects (DWORD *numrects, + LPRECT buffer) { + SRgnGetRects(m_handle, + numrects, + buffer); + } + + //======================================================================= + void GetRectParams (LPCRECT rect, + DWORD *numparams, + LPVOID *buffer) { + SRgnGetRectParams(m_handle, + rect, + numparams, + buffer); + } + +}; + + +//#########################################################################// +//#########################################################################// +// // +// // +// UTILITY CLASSES AND TEMPLATES // +// // +// // +//#########################################################################// +//#########################################################################// + + +/**************************************************************************** +* +* CCritSect -- Critical section class +* +* Methods: +* +* void Enter () +* void Leave () +* +***/ + +class CCritSect { + private: + CRITICAL_SECTION m_critsect; + public: + CCritSect () { InitializeCriticalSection(&m_critsect); } + ~CCritSect () { DeleteCriticalSection(&m_critsect); } + void Enter () { EnterCriticalSection(&m_critsect); } + void Enter (BOOL) { EnterCriticalSection(&m_critsect); } + void Leave () { LeaveCriticalSection(&m_critsect); } + void Leave (BOOL) { LeaveCriticalSection(&m_critsect); } +}; + + +/**************************************************************************** +* +* CLock -- Reader/writer lock class +* +* Methods: +* +* void Enter (BOOL forwriting) +* void Leave (BOOL fromwriting) +* +***/ + +class CLock { + + private: + + HANDLE m_mutexevent; + HANDLE m_readerevent; + LONG m_readercount; + + public: + + //======================================================================= + CLock () { + m_mutexevent = CreateEvent(NULL,FALSE,TRUE,NULL); + m_readerevent = CreateEvent(NULL,TRUE,FALSE,NULL); + m_readercount = -1; + } + + //======================================================================= + ~CLock () { + CloseHandle(m_readerevent); + CloseHandle(m_mutexevent); + } + + //======================================================================= + void Enter (BOOL forwriting) { + if (forwriting) + WaitForSingleObject(m_mutexevent,INFINITE); + else if (!InterlockedIncrement(&m_readercount)) { + WaitForSingleObject(m_mutexevent,INFINITE); + SetEvent(m_readerevent); + } + else + WaitForSingleObject(m_readerevent,INFINITE); + } + + //======================================================================= + void Leave (BOOL fromwriting) { + if (fromwriting) + SetEvent(m_mutexevent); + else if (InterlockedDecrement(&m_readercount) < 0) { + ResetEvent(m_readerevent); + SetEvent(m_mutexevent); + } + } + +}; + + +/**************************************************************************** +* +* CNullSync -- Null synchronization class +* +* (used for templates that take a synchronization class as a parameter) +* +***/ + +class CNullSync { + public: + void Enter (BOOL) { } + void Leave (BOOL) { } +}; + + +/**************************************************************************** +* +* type_info +* +* (used by templates to obtain the name of an object) +* +***/ + +#ifdef _MSC_VER + #ifdef _INC_TYPEINFO + #define INTERNALRAWNAME raw_name + #else + #define INTERNALRAWNAME internal_raw_name + class type_info { + public: + virtual ~type_info (); + const char * internal_raw_name () const { return _m_d_name; }; + private: + void *_m_data; + char _m_d_name[1]; + type_info (const type_info& rhs); + type_info& operator= (const type_info& rhs); + }; + #endif +#else + #if defined(MAC) && !defined(__typeinfo__) + #include + #endif + #define INTERNALRAWNAME name +#endif + + +/**************************************************************************** +* +* ARRAY -- Dynamically allocated array template +* +* Types: +* +* ARRAY(structname) -- dynamically sized array of struct +* +* Pointers to types: +* +* ARRAYPTR(structname) +* +* Array methods: +* +* void AddDiscontiguousElements (DWORD count, +* int stride, +* const *newelements); +* void AddElement (const *newelement); +* void AddElements (DWORD count, +* const *newelements); +* DWORD NumElements (); +* * NewElement (); +* * Ptr (); +* void ReserveSpace (DWORD count); +* void SetNumElements (DWORD totalcount); +* +***/ + +template +class TSArray { + + private: + DWORD m_allocchunksize; + T *m_data; + DWORD m_elements; + DWORD m_elementsalloc; + + //======================================================================= + BOOL CheckSpace (DWORD count) { + return (m_elements+count <= m_elementsalloc); + } + + //======================================================================= + void Constructor () { + m_allocchunksize = max(16,256/sizeof(T)); + m_data = NULL; + m_elements = 0; + m_elementsalloc = 0; + } + + //======================================================================= + void CopyConstructor (const TSArray & source) { + Constructor(); + m_allocchunksize = source.m_allocchunksize; + ReserveSpace(source.m_elementsalloc); + AddElements(source.m_elements, + source.m_data); + } + + public: + + //======================================================================= + TSArray () { + Constructor(); + } + + //======================================================================= + TSArray (const TSArray & source) { + CopyConstructor(source); + } + + //======================================================================= + ~TSArray () { + if (m_data) { + while (m_elements) { + --m_elements; + m_data[m_elements].~T(); + } + SMemFree(m_data,__FILE__,__LINE__,0); + m_data = NULL; + } + } + + //======================================================================= + TSArray & operator= (const TSArray &source) { + if (this != &source) { + this->~TSArray(); + CopyConstructor(source); + } + return *this; + } + + //======================================================================= + T & operator[] (DWORD num) { + if (num >= m_elements) + SErrDisplayError(STORM_ERROR_ACCESS_OUT_OF_BOUNDS, + typeid(T).INTERNALRAWNAME(), + SERR_LINECODE_OBJECT, + NULL, + TRUE); + return m_data[num]; + } + + //======================================================================= + void AddDiscontiguousElements (DWORD count, + int stride, + const T *newelements) { + if (!CheckSpace(count)) + ReserveSpace(count); + if (stride == sizeof(T)) + AddElements(count,newelements); + else + for (DWORD loop = 0; loop < count; ++loop) { + new(m_data+m_elements++) T(*newelements); + newelements = (const T *)((LPBYTE)newelements+stride); + } + } + + //======================================================================= + void AddElement (const T *newelement) { + if (!CheckSpace(1)) + ReserveSpace(1); + new(m_data+m_elements++) T(*newelement); + } + + //======================================================================= + void AddElements (DWORD count, + const T *newelements) { + if (!CheckSpace(count)) + ReserveSpace(count); + for (DWORD loop = 0; loop < count; ++loop) + new(m_data+m_elements++) T(newelements[loop]); + } + + //======================================================================= + DWORD NumElements () { + return m_elements; + } + + //======================================================================= + T * NewElement () { + if (!CheckSpace(1)) + ReserveSpace(1); + return new(m_data+m_elements++) T; + } + + //======================================================================= + T * Ptr () { + if (!m_data) + ReserveSpace(1); + return m_data; + } + + //======================================================================= + void ReserveSpace (DWORD count) { + if (CheckSpace(count)) + return; + + // DETERMINE THE NUMBER OF NEW ELEMENTS TO ALLOCATE + DWORD newelements = m_elements+count; + DWORD partialchunk = newelements & (m_allocchunksize-1); + if (partialchunk) + newelements += m_allocchunksize-partialchunk; + + // ALLOCATE THE NEW ARRAY AND COPY DATA FROM THE OLD ARRAY + T *newdata = (T *)ALLOC(newelements*sizeof(T)); + if (m_data) { + for (DWORD loop = 0; loop < m_elements; ++loop) + new(newdata+loop) T(m_data[loop]); + FREE(m_data); + } + m_data = newdata; + m_elementsalloc = newelements; + + } + + //======================================================================= + void SetNumElements (DWORD totalcount) { + if (totalcount > m_elements) { + ReserveSpace(totalcount-m_elements); + for (DWORD loop = m_elements; loop < totalcount; ++loop) + new(m_data+loop) T; + } + else if (totalcount < m_elements) { + for (DWORD loop = totalcount; loop < m_elements; ++loop) + m_data[loop].~T(); + } + m_elements = totalcount; + } + +}; + +#define ARRAY(structname) TSArray< structname > +#define ARRAYDECL(structname,varname) TSArray< structname > varname +#define ARRAYPTR(structname) TSArray< structname > * + + +/**************************************************************************** +* +* NODE/LIST -- Linked list template +* +* Types: +* +* LINKEX(structname) -- explicit link field +* LIST(structname) -- linked list of implicitly linked nodes +* LISTEX(structname,linkname) -- linked list of explicitly linked nodes +* LISTEXDYN(structname) -- linked list of explicitly linked nodes, +* where the link field to be used by +* this list is not known at compile time +* NODEDECL(structname) -- implicitly linked node +* NODEDECLEX(structname) -- explicitly linked node (must contain one +* or more LINKEX fields) +* +* Pointers to types: +* +* LISTPTR(structname) +* LISTPTREX(structname) +* +* Link methods: +* +* * Next (); +* * Prev (); +* void Unlink (); +* +* Explicitly linked node methods: +* +* None. Use link methods for the link you want to manipulate. +* +* Implicitly linked node methods: +* +* * Next (); +* * Prev (); +* void Unlink (); +* +* List methods: +* +* void Clear (); +* * DeleteNode ( *ptr); +* * Head () const; +* BOOL IsEmpty () const; +* void LinkNode ( *ptr, +* DWORD linktype = LIST_TAIL, +* *existingptr = NULL); +* * NewNode (DWORD location = LIST_TAIL, +* DWORD extrabytes = 0, +* DWORD flags = 0); +* * Next (const *ptr) const; +* * Prev (const *ptr) const; +* * Tail () const; +* void UnlinkAll (); +* void UnlinkNode ( *ptr); +* +* Constants for use with LinkNode() and NewNode(): +* +* LIST_UNLINKED +* LIST_LINK_AFTER +* LIST_LINK_BEFORE +* LIST_HEAD +* LIST_TAIL +* +* Macros: +* +* LISTEXSETLINK(structname,listname,linkname) +* ITERATELIST(structname,listname,ptrname) +* ITERATELISTPTR(structname,listname,ptrname) +* ITERATEPARTIALLIST(structname,listname,start,ptrname) +* ITERATEPARTIALLISTPTR(structname,listname,start,ptrname) +* ITERATELISTREVERSE(structname,listname,ptrname) +* ITERATELISTREVERSEPTR(structname,listname,ptrname) +* ITERATEPARTIALLISTREVERSE(structname,listname,start,ptrname) +* ITERATEPARTIALLISTREVERSEPTR(structname,listname,start,ptrname) +* ITERATE_DELETE +* ITERATE_DELETEANDBREAK +* +***/ + +#define LIST_UNLINKED 0 +#define LIST_LINK_AFTER 1 +#define LIST_LINK_BEFORE 2 +#define LIST_HEAD LIST_LINK_AFTER +#define LIST_TAIL LIST_LINK_BEFORE + +template +class TSList; + +template +class TSLink { + friend class TSList; + friend class TSList; + + private: + TSLink *m_prevlink; + T *m_next; + + //======================================================================= + void Constructor () { + m_prevlink = NULL; + m_next = NULL; + } + + //======================================================================= + void CopyConstructor (const TSLink &) { + Constructor(); + } + + //======================================================================= + TSLink *NextLink () const { + + // IF THE NEXT NODE IS A TERMINATOR, ITS LINK POINTER IS THE SAME AS + // ITS NODE POINTER. + if ((int)m_next < 0) + return (TSLink *)~(DWORD)m_next; + + // OTHERWISE, COMPUTE THE LINK ADDRESS BY USING THE OFFSET OF THIS + // NODE'S LINK AND POINTER ADDRESSES. (THIS NODE MUST NOT BE A + // TERMINATOR.) + else { + DWORD linkoffset = (DWORD)this-(DWORD)(m_prevlink->m_next); + return (TSLink *)(linkoffset+(DWORD)m_next); + } + + } + + protected: + + //======================================================================= + T *NextThroughTerminator () const { + return ((int)m_next > 0) ? m_next : (T *)~(DWORD)m_next; + } + + public: + + //======================================================================= + TSLink () { + Constructor(); + } + + //======================================================================= + TSLink (const TSLink & source) { + CopyConstructor(source); + } + + //======================================================================= + ~TSLink () { + Unlink(); + } + + //======================================================================= + TSLink & operator= (const TSLink &) { + // LEAVE THE DESTINATION NODE LINKED INTO ITS CURRENT LIST + return *this; + } + + //======================================================================= + T * Next () const { + return ((int)m_next > 0) ? m_next : NULL; + } + + //======================================================================= + T * Prev () const { + return m_prevlink->m_prevlink->Next(); + } + + //======================================================================= + void Unlink () { + if (!m_prevlink) + return; + NextLink()->m_prevlink = m_prevlink; + m_prevlink->m_next = m_next; + m_prevlink = NULL; + m_next = NULL; + } + +}; + +template +class TSBaseNode { + public: + + //======================================================================= + inline void * __cdecl operator new (size_t bytes, + size_t extra, + DWORD flags) { + void *ptr = SMemAlloc(bytes+extra, + typeid(T).INTERNALRAWNAME(), + SERR_LINECODE_OBJECT, + flags | SMEM_FLAG_ZEROMEMORY); + return ptr; + } + +}; + +template +class TSExplicitNode : public TSBaseNode { + friend class TSList; + + private: + + //======================================================================= + TSLink *Link (BOOL explicitlink, int linkoffset) const { + ASSERT(explicitlink); + explicitlink; + return (TSLink *)((LPBYTE)this+linkoffset); + } + +}; + +template +class TSLinkedNode : public TSBaseNode { + friend class TSList; + + private: + TSLink m_link; + + //======================================================================= + TSLink *Link (BOOL explicitlink, int linkoffset) const { + if (explicitlink) + return (TSLink *)((LPBYTE)this+linkoffset); + else + return (TSLink *)&m_link; + } + + public: + + //======================================================================= + ~TSLinkedNode () { + Unlink(); + } + + //======================================================================= + T * Next () const { + return m_link.Next(); + } + + //======================================================================= + T * Prev () const { + return m_link.Prev(); + } + + //======================================================================= + void Unlink () { + m_link.Unlink(); + } + +}; + +template +class TSList { + + private: + int m_linkoffset; + TSLink m_terminator; + + //======================================================================= + void Constructor () { + m_linkoffset = 0; + InitializeTerminator(); + } + + //======================================================================= + void CopyConstructor (const TSList & source) { + m_linkoffset = source.m_linkoffset; + InitializeTerminator(); + } + + //======================================================================= + void InitializeTerminator () { + m_terminator.m_prevlink = &m_terminator; + m_terminator.m_next = (T *)~(DWORD)&m_terminator; + } + + //======================================================================= + TSLink *Link (const T *ptr) const { + // THIS FUNCTION CALLS THE LINK METHOD IN EITHER THE NODE OR THE LINK + // TO WHICH THIS LIST REFERS. IF THIS FUNCTION WON'T COMPILE, IT'S + // BECAUSE A NODE WITH EXPLICIT LINKS WAS DEFINED WITH NODEDECL() + // INSTEAD OF NODEDECLEX(). + return ptr->Link(explicitlink,m_linkoffset); + } + + protected: + + //======================================================================= + void SetLinkOffset (int linkoffset) { + m_linkoffset = linkoffset; + InitializeTerminator(); + } + + public: + + //======================================================================= + TSList () { + Constructor(); + }; + + //======================================================================= + TSList (const TSList &source) { + CopyConstructor(source); + }; + + //======================================================================= + TSList (int linkoffset) { + m_linkoffset = linkoffset; + InitializeTerminator(); + }; + + //======================================================================= + ~TSList () { + UnlinkAll(); + } + + //======================================================================= + TSList & operator= (const TSList &source) { + if (this != &source) { + this->~TSList(); + CopyConstructor(source); + } + return *this; + } + + //======================================================================= + void ChangeLinkOffset (int linkoffset) { + UnlinkAll(); + SetLinkOffset(linkoffset); + } + + //======================================================================= + void Clear () { + T *curr; + while ((curr = Head()) != NULL) + delete curr; + } + + //======================================================================= + T * DeleteNode (T *ptr) { + T *nextptr = Next(ptr); + delete ptr; + return nextptr; + } + + //======================================================================= + T * Head () const { + return m_terminator.Next(); + } + + //======================================================================= + BOOL IsEmpty () const { + return !m_terminator.Next(); + } + + //======================================================================= + T * Iterate_RawNext (const T *ptr) const { + return Link(ptr)->m_next; + } + + //======================================================================= + void LinkNode (T *ptr, + DWORD linktype = LIST_TAIL, + T *existingptr = NULL) { + TSLink *link = Link(ptr); + + // IF THIS NODE IS ALREADY LINKED INTO THE LIST, UNLINK IT + if (link->m_prevlink) + link->Unlink(); + + // FIND THE NODE THAT WE WILL LINK BEFORE OR AFTER. USE THE + // TERMINATOR NODE IF WE'RE LINKING ONTO THE HEAD OR TAIL. + TSLink *existinglink; + if (existingptr) + existinglink = Link(existingptr); + else + existinglink = &m_terminator; + + // LINK THIS NODE INTO THE LIST + switch (linktype) { + + case LIST_LINK_AFTER: + { + link->m_prevlink = existinglink; + link->m_next = existinglink->m_next; + Link(existinglink->NextThroughTerminator())->m_prevlink = link; + existinglink->m_next = ptr; + } + break; + + case LIST_LINK_BEFORE: + { + TSLink *prevlink = existinglink->m_prevlink; + link->m_prevlink = prevlink; + link->m_next = prevlink->m_next; + prevlink->m_next = ptr; + existinglink->m_prevlink = link; + } + break; + + } + } + + //======================================================================= + T * NewNode (DWORD location = LIST_TAIL, + DWORD extrabytes = 0, + DWORD flags = 0) { + T *ptr = new(extrabytes,flags) T; + if (location != LIST_UNLINKED) + LinkNode(ptr,location); + return ptr; + } + + //======================================================================= + T * Next (const T *ptr) const { + return Link(ptr)->Next(); + } + + //======================================================================= + T * Prev (const T *ptr) const { + return Link(ptr)->Prev(); + } + + //======================================================================= + T * Tail () const { + return m_terminator.Prev(); + } + + //======================================================================= + void UnlinkAll () { + T *curr; + while ((curr = Head()) != NULL) + UnlinkNode(curr); + } + + //======================================================================= + void UnlinkNode (T *ptr) { + Link(ptr)->Unlink(); + } + +}; + +template +class TSExplicitList : public TSList { + public: + + //======================================================================= + TSExplicitList () { + SetLinkOffset(linkoffset); + } + +}; + + +#define LINKEX(structname) TSLink< structname > +#define LINKDECLEX(structname,varname) TSLink< structname > varname +#define LIST(structname) TSList< structname ,FALSE> +#define LISTDECL(structname,varname) TSList< structname ,FALSE> varname +#define LISTPTR(structname) TSList< structname ,FALSE> * +#define LISTPTREX(structname) TSList< structname ,TRUE> * +#define NODEDECL(structname) typedef struct structname : public TSLinkedNode< structname > +#define NODEDECLEX(structname) typedef struct structname : public TSExplicitNode< structname > + +#define LISTEX(structname,linkname) \ + TSExplicitList< structname ,(int)&(((structname *)0)->linkname)> + +#define LISTEXDYN(structname) \ + TSExplicitList< structname ,(int)0xDDDDDDDD> + +#define LISTEXSETLINK(structname,listname,linkname) \ + listname.ChangeLinkOffset((int)&(((structname *)0)->linkname)); + +#define LISTDECLEX(structname,linkname,varname) \ + TSExplicitList< structname ,(int)&(((structname *)0)->linkname)> varname + +#define ITERATEFORWARDTEMPLATE(structname,listname,start,ptrname,op) \ + for (structname *ptrname = start, \ + *iterate_delete = NULL; \ + (int)ptrname > 0; \ + iterate_delete \ + ? (ptrname = (listname)##op##DeleteNode(ptrname), \ + ptrname = ((int)iterate_delete > 0) ? ptrname : NULL, \ + iterate_delete = NULL, \ + ptrname) \ + : ptrname = (listname)##op##Iterate_RawNext(ptrname)) + +#define ITERATEREVERSETEMPLATE(structname,listname,start,ptrname,op) \ + for (structname *ptrname = start, \ + *iterate_delete = NULL, \ + *iterate_delete_temp = NULL; \ + ptrname; \ + iterate_delete \ + ? (iterate_delete_temp = ((int)iterate_delete > 0) \ + ? (listname)##op##Prev(ptrname) \ + : NULL, \ + (listname)##op##DeleteNode(ptrname), \ + iterate_delete = NULL, \ + ptrname = iterate_delete_temp) \ + : ptrname = (listname)##op##Prev(ptrname)) + +#define ITERATELIST(structname,listname,ptrname) \ + ITERATEFORWARDTEMPLATE(structname,listname,(listname).Head(),ptrname,.) + +#define ITERATELISTPTR(structname,listname,ptrname) \ + ITERATEFORWARDTEMPLATE(structname,listname,(listname)->Head(),ptrname,->) + +#define ITERATEPARTIALLIST(structname,listname,start,ptrname) \ + ITERATEFORWARDTEMPLATE(structname,listname,start,ptrname,.) + +#define ITERATEPARTIALLISTPTR(structname,listname,start,ptrname) \ + ITERATEFORWARDTEMPLATE(structname,listname,start,ptrname,->) + +#define ITERATELISTREVERSE(structname,listname,ptrname) \ + ITERATEREVERSETEMPLATE(structname,listname,(listname).Tail(),ptrname,.) + +#define ITERATELISTREVERSEPTR(structname,listname,ptrname) \ + ITERATEREVERSETEMPLATE(structname,listname,(listname)->Tail(),ptrname,->) + +#define ITERATEPARTIALLISTREVERSE(structname,listname,start,ptrname) \ + ITERATEREVERSETEMPLATE(structname,listname,start,ptrname,.) + +#define ITERATEPARTIALLISTREVERSEPTR(structname,listname,start,ptrname) \ + ITERATEREVERSETEMPLATE(structname,listname,start,ptrname,->) + +#define ITERATE_DELETE \ + { \ + ++iterate_delete; \ + continue; \ + } + +#define ITERATE_DELETEANDBREAK \ + { \ + --iterate_delete; \ + continue; \ + } + + +/**************************************************************************** +* +* EXPORTOBJECT/EXPORTTABLE -- Export manager template +* +* Types: +* +* DECLARE_STRICT_HANDLE(handle) -- handle to object +* DECLARE_STRICT_HANDLE(lockedhandle) -- handle to locked object +* EXPORTOBJECTDECL(structname) -- object to be exported +* EXPORTTABLE(structname,handlename,lockedhandlename,synctype) +* EXPORTTABLEREUSE(structname,handlename,lockedhandlename,synctype) +* +* Export table methods: +* +* void Delete ( handle); +* void DeleteUnlock ( *ptr, +* lockedhandle); +* void Destroy (); +* * Lock ( handle, +* *lockedhandle, +* BOOL forwriting = FALSE); +* void New ( *handle); +* * NewLock ( *handle, +* *lockedhandle); +* void Unlock ( lockedhandle); +* +* Synchronization types for use with EXPORTTABLE(): +* +* SYNC_NONE -- use no synchronization +* SYNC_READWRITE -- use a reader/writer lock +* SYNC_ALWAYS -- use a critical section +* +***/ + +template +class TSExportTableBase { + + protected: + + //======================================================================= + T * BaseFindByHandle (LISTPTREX(T) list, unsigned handle) { + ITERATELISTPTR(T,list,curr) + if (curr->m_handle == handle) + return curr; + return NULL; + } + + //======================================================================= + T * BaseFindByHandleEx (LISTPTREX(T) list, unsigned handle, unsigned *count) { + *count = 0; + ITERATELISTPTR(T,list,curr) + if (curr->m_handle == handle) + return curr; + else + ++*count; + return NULL; + } + + //======================================================================= + unsigned BaseGetHandle (const T *ptr) { + return ptr->m_handle; + } + + //======================================================================= + int BaseGetLinkOffset () { + return (int)&(((T *)0)->m_linktoslot); + } + + //======================================================================= + void BaseSetHandle (T *ptr, unsigned handle) { + ptr->m_handle = handle; + } + +}; + +template +class TSExportTable : public TSExportTableBase { + + private: + ARRAY(LISTEXDYN(T)) m_listarray; + LISTEXDYN(T) m_reuselist; + H m_sequence; + unsigned m_slotmask; + SYNC m_sync; + + //======================================================================= + unsigned ComputeSlot (H handle) { + return (unsigned)handle & m_slotmask; + } + + //======================================================================= + H GenerateUniqueHandle () { + unsigned count; + for (;;) { + m_sequence = (H)((unsigned)m_sequence+1); + if (!BaseFindByHandleEx(&m_listarray[ComputeSlot(m_sequence)], + (unsigned)m_sequence, + &count)) + break; + } + if (count >= 4) + GrowListArray(); + return m_sequence; + } + + //======================================================================= + void GrowListArray () { +return; // note: out for testing + if (m_slotmask >= 1023) + return; + + // DETERMINE THE NEW ARRAY SIZE + unsigned oldarraysize = m_slotmask+1; + unsigned newarraysize = oldarraysize*2; + + // GROW THE ARRAY + { + m_listarray.SetNumElements(newarraysize); + int linkoffset = BaseGetLinkOffset(); + for (unsigned slot = oldarraysize; slot < newarraysize; ++slot) + m_listarray[slot].ChangeLinkOffset(linkoffset); + } + + // MOVE ALL RECORDS FROM THE OLD LISTS TO THE NEW LISTS + m_slotmask = newarraysize-1; + { + for (unsigned slot = 0; slot < oldarraysize; ++slot) { + T *currptr = m_listarray[slot].Head(); + while (currptr) { + T *nextptr = m_listarray[slot].Next(currptr); + unsigned newslot = ComputeSlot((H)BaseGetHandle(currptr)); + if (newslot != slot) { + m_listarray[slot].UnlinkNode(currptr); + m_listarray[newslot].LinkNode(currptr); + } + currptr = nextptr; + } + } + } + + } + + //======================================================================= + BOOL IsForWriting (LH lockedhandle) { + return (lockedhandle == (LH)1); + } + + //======================================================================= + void SyncEnterLock (LH *lockedhandle, BOOL forwriting) { + m_sync.Enter(forwriting); + *lockedhandle = (LH)(forwriting ? 1 : -1); + } + + //======================================================================= + void SyncLeaveLock (LH lockedhandle) { + if (lockedhandle) + m_sync.Leave(IsForWriting(lockedhandle)); + } + + public: + + //======================================================================= + TSExportTable () { + m_sequence = (H)0; + m_slotmask = 3; + m_listarray.SetNumElements(m_slotmask+1); + int linkoffset = BaseGetLinkOffset(); + for (unsigned slot = 0; slot <= m_slotmask; ++slot) + m_listarray[slot].ChangeLinkOffset(linkoffset); + m_reuselist.ChangeLinkOffset(linkoffset); + } + + //======================================================================= + ~TSExportTable () { + Destroy(); + } + + //======================================================================= + void Delete (H handle) { + LH lockedhandle; + T *ptr = Lock(handle,&lockedhandle,TRUE); + DeleteUnlock(ptr,lockedhandle); + } + + //======================================================================= + void DeleteUnlock (T *ptr, + LH lockedhandle) { + if (ptr) + if (REUSE) + m_reuselist.LinkNode(ptr); + else + delete ptr; + Unlock(lockedhandle); + } + + //======================================================================= + void Destroy () { + LH lockedhandle; + SyncEnterLock(&lockedhandle,TRUE); + for (unsigned slot = 0; slot <= m_slotmask; ++slot) { + T *curr; + while ((curr = m_listarray[slot].Head()) != NULL) { + delete curr; + SErrReportResourceLeak(typeid(H).INTERNALRAWNAME()); + } + } + m_reuselist.Clear(); + SyncLeaveLock(lockedhandle); + } + + //======================================================================= + T * Lock (H handle, + LH *lockedhandle, + BOOL forwriting = FALSE) { + SyncEnterLock(lockedhandle,forwriting); + T *result = BaseFindByHandle(&m_listarray[ComputeSlot(handle)], + (unsigned)handle); + if (!result) { + SyncLeaveLock(*lockedhandle); + *lockedhandle = (LH)0; + } + return result; + } + + //======================================================================= + void New (H *handle) { + LH lockedhandle; + NewLock(handle,&lockedhandle); + Unlock(lockedhandle); + } + + //======================================================================= + T * NewLock (H *handle, LH *lockedhandle) { + SyncEnterLock(lockedhandle,TRUE); + H newhandle = GenerateUniqueHandle(); + T *ptr = NULL; + if (REUSE) { + ptr = m_reuselist.Head(); + if (ptr) + m_listarray[ComputeSlot(newhandle)].LinkNode(ptr); + } + if (!ptr) + ptr = m_listarray[ComputeSlot(newhandle)].NewNode(); + BaseSetHandle(ptr,(unsigned)newhandle); + *handle = newhandle; + return ptr; + } + + //======================================================================= + void Unlock (LH lockedhandle) { + SyncLeaveLock(lockedhandle); + } + +}; + +template +class TSExportObject : public TSExplicitNode { + friend class TSExportTableBase; + + private: + unsigned m_handle; + LINKEX(T) m_linktoslot; + + public: + + //======================================================================= + TSExportObject () { + } + + //======================================================================= + TSExportObject (const TSExportObject &source) { + } + + //======================================================================= + TSExportObject & operator= (const TSExportObject &source) { + // COPY THE OBJECT DATA, BUT DON'T OVERWRITE THE DESTINATION OBJECT'S + // HANDLE OR LINK + return *this; + } + +}; + +#define SYNC_NONE CNullSync +#define SYNC_READWRITE CLock +#define SYNC_ALWAYS CCritSect + +#define EXPORTOBJECTDECL(structname) \ + typedef struct structname : public TSExportObject< structname > + +#define EXPORTTABLE(structname,handlename,lockedhandlename,synctype) \ + TSExportTable + +#define EXPORTTABLEREUSE(structname,handlename,lockedhandlename,synctype) \ + TSExportTable + + +/**************************************************************************** +* +* SWAP -- Swap template +* +* Macros: +* +* SWAP(a,b) +* +***/ + +//=========================================================================== +template +void inline TSSwap (T &a, T &b) { + T temp = a; + a = b; + b = temp; +} +#define SWAP(a,b) TSSwap(a,b) + + +/**************************************************************************** +* +* Old TList Template -- Obsolete!! +* +***/ + +//=========================================================================== +template +BOOL inline TListAdd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return FALSE; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return FALSE; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = *head; + *head = newptr; + return TRUE; +} +#define LISTADD(a,b) TListAdd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddEnd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return FALSE; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return FALSE; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = NULL; + + T **next = head; + while (*next) + next = &(*next)->next; + *next = newptr; + + return TRUE; +} +#define LISTADDEND(a,b) TListAddEnd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddPtr (T **head, T *ptr) { + if (!(head && ptr)) + return FALSE; + + ptr->next = *head; + *head = ptr; + return TRUE; +} +#define LISTADDPTR(a,b) TListAddPtr(a,b) + +//=========================================================================== +template +BOOL inline TListAddPtrEnd (T **head, T *ptr) { + if (!(head && ptr)) + return FALSE; + + ptr->next = NULL; + T **next = head; + while (*next) + next = &(*next)->next; + *next = ptr; + + return TRUE; +} +#define LISTADDPTREND(a,b) TListAddPtrEnd(a,b) + +//=========================================================================== +template +BOOL inline TListClear (T **head, LPCSTR filename = NULL, int linenumber = 0) { + if (!head) + return FALSE; + + while (*head) { + T *next = (*head)->next; + SMemFree(*head,filename,linenumber,0); + *head = next; + } + return TRUE; +} +#define LISTCLEAR(a) TListClear(a,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFree (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return FALSE; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + SMemFree(ptr,filename,linenumber,0); + return (*next != NULL); +} +#define LISTFREE(a,b) TListFree(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFreePtr (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return FALSE; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + return (*next != NULL); +} +#define LISTFREEPTR(a,b) TListFreePtr(a,b,(LPCSTR)__FILE__,__LINE__) + + +#if PRAGMA_IMPORT_SUPPORTED +#pragma import off +#endif + +#endif // ifndef _STORM_H_ diff --git a/Uisrc/OLD/STORM.H b/Uisrc/OLD/STORM.H new file mode 100644 index 0000000..0561112 --- /dev/null +++ b/Uisrc/OLD/STORM.H @@ -0,0 +1,1342 @@ +#ifndef _STORM_H_ +#define _STORM_H_ + +/**************************************************************************** +* +* BitBlt functions +* +***/ + +extern "C" BOOL APIENTRY SBltDestroy (); +extern "C" BOOL APIENTRY SBltGetSCode (DWORD rop3, + LPSTR buffer, + DWORD buffersize, + BOOL optimize = 1); +extern "C" BOOL APIENTRY SBltROP3 (LPBYTE dest, + LPBYTE source, + int width, + int height, + int destcx, + int sourcecx, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Clipped (LPBYTE dest, + LPRECT destrect, + LPSIZE destsize, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + LPSIZE sourcesize, + int sourcepitch, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Tiled (LPBYTE dest, + LPRECT destrect, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + int sourcepitch, + int sourceoffsetx, + int sourceoffsety, + DWORD pattern, + DWORD rop3); + +/**************************************************************************** +* +* Bitmap functions +* +***/ + +#define SBMP_IMAGETYPE_BMP 1 +#define SBMP_IMAGETYPE_PCX 2 + +extern "C" BOOL APIENTRY SBmpDecodeImage (DWORD imagetype, + LPBYTE imagedata, + DWORD imagebytes, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width, + int *height, + int *bitdepth); +extern "C" BOOL APIENTRY SBmpDestroy (); +extern "C" BOOL APIENTRY SBmpLoadImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width = NULL, + int *height = NULL, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SBmpSaveImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + int width, + int height, + int bitdepth); + +/**************************************************************************** +* +* S-Code functions +* +***/ + +#define SCODE_CF_AUTOALIGNDWORD 0x00040000 +#define SCODE_CF_USESALTADJUSTS 0x04000000 + +typedef struct _HSCODESTREAM { int unused; } *HSCODESTREAM; + +typedef struct _SCODEEXECUTEDATA { + DWORD size; + DWORD flags; + int xiterations; + int yiterations; + int adjustdest; + int adjustsource; + LPVOID dest; + LPVOID source; + LPVOID table; + DWORD a; + DWORD b; + DWORD c; + int adjustdestalt; + int adjustsourcealt; + DWORD reserved[2]; +} SCODEEXECUTEDATA, *SCODEEXECUTEDATAPTR; + +extern "C" BOOL APIENTRY SCodeCompile (LPCSTR prologstring, + LPCSTR loopstring, + LPCSTR *firsterror, + DWORD maxiterations, + DWORD flags, + HSCODESTREAM *handle); +extern "C" BOOL APIENTRY SCodeDelete (HSCODESTREAM handle); +extern "C" BOOL APIENTRY SCodeDestroy (); +extern "C" BOOL APIENTRY SCodeExecute (HSCODESTREAM handle, + SCODEEXECUTEDATAPTR executedata); +extern "C" BOOL APIENTRY SCodeGetJumpTable (HSCODESTREAM handle, + LPBYTE **jumptableptr, + LPDWORD *prologpatchlocation, + LPDWORD *looppatchlocation, + LPDWORD *epilogpatchlocation); +extern "C" BOOL APIENTRY SCodeGetPseudocode (LPCSTR scodestring, + LPSTR buffer, + DWORD buffersize); + +/**************************************************************************** +* +* Dialog box functions +* +***/ + +#define SDLG_ADJUST_NONE 0 +#define SDLG_ADJUST_VERTICAL 1 +#define SDLG_ADJUST_CONTROLPOS 2 + +#define SDLG_DBF_TILE 0x00000001 +#define SDLG_DBF_VCENTER 0x00000002 + +#define SDLG_STYLE_ANY 0xFFFFFFFF +#define SDLG_STYLE_ANYPUSHBUTTON 0x00010001 + +#define SDLG_USAGE_BACKGROUND 0x00000001 +#define SDLG_USAGE_NORMAL_UNFOCUSED 0x00000010 +#define SDLG_USAGE_NORMAL_FOCUSED 0x00000020 +#define SDLG_USAGE_NORMAL (SDLG_USAGE_NORMAL_UNFOCUSED | SDLG_USAGE_NORMAL_FOCUSED) +#define SDLG_USAGE_SELECTED_UNFOCUSED 0x00000040 +#define SDLG_USAGE_SELECTED_FOCUSED 0x00000080 +#define SDLG_USAGE_SELECTED (SDLG_USAGE_SELECTED_UNFOCUSED | SDLG_USAGE_SELECTED_FOCUSED) +#define SDLG_USAGE_NORMAL_GRAYED 0x00000100 +#define SDLG_USAGE_SELECTED_GRAYED 0x00000400 +#define SDLG_USAGE_GRAYED (SDLG_USAGE_NORMAL_GRAYED | SDLG_USAGE_SELECTED_GRAYED) +#define SDLG_USAGE_CURSORMASK 0x00001000 +#define SDLG_USAGE_CURSORIMAGE 0x00002000 + +extern "C" HDC APIENTRY SDlgBeginPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgBltToWindow (HWND window, + HRGN region, + int x, + int y, + LPBYTE bitmapbits, + LPRECT bitmaprect, + LPSIZE bitmapsize, + DWORD colorkey = 0xFFFFFFFF, + DWORD pattern = 0, + DWORD rop3 = SRCCOPY); +extern "C" BOOL APIENTRY SDlgCheckTimers (); +extern "C" HWND APIENTRY SDlgCreateDialogIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" HWND APIENTRY SDlgCreateDialogParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDefDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam); +extern "C" BOOL APIENTRY SDlgDestroy (); +extern "C" int APIENTRY SDlgDialogBoxIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" int APIENTRY SDlgDialogBoxParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDrawBitmap (HWND window, + DWORD usage, + HRGN region, + int offsetx = 0, + int offsety = 0, + LPRECT boundingoffset = NULL, + DWORD flags = 0); +extern "C" BOOL APIENTRY SDlgEndDialog (HWND window, + int result); +extern "C" BOOL APIENTRY SDlgEndPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgKillTimer (HWND window, + UINT event); +extern "C" BOOL APIENTRY SDlgSetBaseFont (int pointsize, + int weight, + DWORD flags, + DWORD family, + LPCTSTR face); +extern "C" BOOL APIENTRY SDlgSetBitmap (HWND window, + HWND parentwindow, + LPCTSTR controltype, + DWORD controlstyle, + DWORD usage, + LPBYTE bitmapbits, + LPRECT rect, + int width, + int height, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetControlBitmaps (HWND parentwindow, + LPINT controllist, + LPDWORD usagelist, + LPBYTE bitmapbits, + LPSIZE bitmapsize, + DWORD adjusttype, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetCursor (HWND window, + HCURSOR cursor, + DWORD id, + HCURSOR *oldcursor); +extern "C" BOOL APIENTRY SDlgSetSystemCursor (LPBYTE maskbitmap, + LPBYTE imagebitmap, + LPSIZE size, + DWORD id = 32512); +extern "C" BOOL APIENTRY SDlgSetTimer (HWND window, + UINT event, + UINT elapse, + TIMERPROC timerfunc); +extern "C" BOOL APIENTRY SDlgUpdateCursor (); + +#define SDlgCreateDialog(ins,tpl,wnd,prc) SDlgCreateDialogParam(ins,tpl,wnd,prc,0) +#define SDlgCreateDialogIndirect(ins,tpl,wnd,prc) SDlgCreateDialogIndirectParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBox(ins,tpl,wnd,prc) SDlgDialogBoxParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBoxIndirect(ins,tpl,wnd,prc) SDlgDialogBoxIndirectParam(ins,tpl,wnd,prc,0) + +/**************************************************************************** +* +* DirectDraw functions +* +***/ + +#define SDRAW_SERVICE_BASIC 1 +#define SDRAW_SERVICE_PAGEFLIP 2 +#define SDRAW_SERVICE_DOUBLEBUFFER 3 +#define SDRAW_SERVICE_MAX 3 + +#define SDRAW_SURFACE_FRONT 0 +#define SDRAW_SURFACE_BACK 1 +#define SDRAW_SURFACE_SYSTEM 2 +#define SDRAW_SURFACE_TEMPORARY 3 + +extern "C" BOOL APIENTRY SDrawAutoInitialize (HINSTANCE instance, + LPCTSTR classname, + LPCTSTR title, + WNDPROC wndproc = NULL, + int servicelevel = SDRAW_SERVICE_BASIC, + int width = 640, + int height = 480, + int bitdepth = 8); +extern "C" BOOL APIENTRY SDrawCaptureScreen (LPCTSTR filename = NULL); +extern "C" BOOL APIENTRY SDrawClearSurface (int surfacenumber); +extern "C" BOOL APIENTRY SDrawDestroy (); +extern "C" BOOL APIENTRY SDrawFlipPage (); +extern "C" HWND APIENTRY SDrawGetFrameWindow (HWND *window = NULL); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawGetObjects (LPDIRECTDRAW *directdraw, + LPDIRECTDRAWSURFACE *frontbuffer, + LPDIRECTDRAWSURFACE *backbuffer, + LPDIRECTDRAWSURFACE *systembuffer, + LPDIRECTDRAWSURFACE *temporarybuffer, + LPDIRECTDRAWPALETTE *palette, + HPALETTE *gdipalette); +#endif +extern "C" BOOL APIENTRY SDrawGetScreenSize (int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SDrawGetServiceLevel (int *servicelevel = NULL); +extern "C" BOOL APIENTRY SDrawLockSurface (int surfacenumber, + LPCRECT rect, + LPBYTE *ptr, + int *pitch = NULL, + DWORD flags = 0); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawManualInitialize (HWND framewindow, + LPDIRECTDRAW directdraw, + LPDIRECTDRAWSURFACE frontbuffer, + LPDIRECTDRAWSURFACE backbuffer, + LPDIRECTDRAWSURFACE systembuffer, + LPDIRECTDRAWSURFACE temporarybuffer, + LPDIRECTDRAWPALETTE palette, + HPALETTE gdipalette); +#endif +extern "C" BOOL APIENTRY SDrawMessageBox (LPCTSTR text, + LPCTSTR title, + UINT flags); +extern "C" BOOL APIENTRY SDrawPostClose (); +extern "C" BOOL APIENTRY SDrawRealizePalette (); +extern "C" BOOL APIENTRY SDrawSelectGdiSurface (BOOL select, BOOL copy); +extern "C" BOOL APIENTRY SDrawUnlockSurface (int surfacenumber, + LPBYTE ptr, + DWORD numrects = 0, + LPCRECT rectarray = NULL); +extern "C" BOOL APIENTRY SDrawUpdatePalette (DWORD firstentry, + DWORD numentries, + LPPALETTEENTRY entries, + BOOL reservedentries = 0); +extern "C" BOOL APIENTRY SDrawUpdateScreen (LPCRECT rect); + +/**************************************************************************** +* +* Event dispatching functions +* +***/ + +typedef void (CALLBACK *SEVTHANDLER)(LPVOID); + +extern "C" BOOL APIENTRY SEvtDestroy (); +extern "C" BOOL APIENTRY SEvtDispatch (DWORD type, + DWORD subtype, + DWORD id, + LPVOID data); +extern "C" BOOL APIENTRY SEvtRegisterHandler (DWORD type, + DWORD subtype, + DWORD id, + DWORD flags, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterHandler (DWORD type, + DWORD subtype, + DWORD id, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterType (DWORD type, + DWORD subtype); + +/**************************************************************************** +* +* File I/O functions +* +***/ + +#define SFILE_AUTH_UNABLETOAUTHENTICATE 0 +#define SFILE_AUTH_NOSIGNATURE 1 +#define SFILE_AUTH_BADSIGNATURE 2 +#define SFILE_AUTH_UNKNOWNSIGNATURE 3 +#define SFILE_AUTH_FIRSTAUTHENTIC 5 +#define SFILE_AUTH_AUTHENTICBLIZZARD 5 + +#define SFILE_DDA_LOOP 0x00040000 + +#define SFILE_ERROR_BASE 0x21030000 +#define SFILE_ERROR_BAD_FORMAT ERROR_BAD_FORMAT +#define SFILE_ERROR_BAD_PATHNAME ERROR_BAD_PATHNAME +#define SFILE_ERROR_CALL_NOT_IMPLEMENTED ERROR_CALL_NOT_IMPLEMENTED +#define SFILE_ERROR_FILE_INVALID ERROR_FILE_INVALID +#define SFILE_ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND +#define SFILE_ERROR_HANDLE_EOF ERROR_HANDLE_EOF +#define SFILE_ERROR_INVALID_DATA ERROR_INVALID_DATA +#define SFILE_ERROR_INVALID_DRIVE ERROR_INVALID_DRIVE +#define SFILE_ERROR_INVALID_HANDLE ERROR_INVALID_HANDLE +#define SFILE_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SFILE_ERROR_NOT_ARCHIVE (SFILE_ERROR_BASE+1) +#define SFILE_ERROR_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define SFILE_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SFILE_ERROR_NOT_IN_ARCHIVE (SFILE_ERROR_BASE+2) +#define SFILE_ERROR_NOT_PLAYING (SFILE_ERROR_BASE+3) + +#define SFILE_FIND_FILES 0x00000001 +#define SFILE_FIND_DIRECTORIES 0x00000002 + +typedef struct _HSARCHIVE { int unused; } *HSARCHIVE; +typedef struct _HSFILE { int unused; } *HSFILE; +typedef struct _HSFINDFILE { int unused; } *HSFINDFILE; + +extern "C" BOOL APIENTRY SFileAuthenticateArchive (HSARCHIVE archive, + DWORD *extendedresult); +extern "C" BOOL APIENTRY SFileCloseArchive (HSARCHIVE handle); +extern "C" BOOL APIENTRY SFileCloseFile (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaBegin (HSFILE handle, + DWORD buffersize, + DWORD flags); +extern "C" BOOL APIENTRY SFileDdaBeginEx (HSFILE handle, + DWORD buffersize, + DWORD flags, + DWORD offset, + LONG volume, + LONG pan, + LPVOID reserved); +extern "C" BOOL APIENTRY SFileDdaDestroy (); +extern "C" BOOL APIENTRY SFileDdaEnd (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaGetPos (HSFILE handle, + DWORD *position, + DWORD *maxposition); +extern "C" BOOL APIENTRY SFileDdaGetVolume (HSFILE handle, + LONG *volume, + LONG *pan); +#ifdef __DSOUND_INCLUDED__ +extern "C" BOOL APIENTRY SFileDdaInitialize (LPDIRECTSOUND directsound); +#endif +extern "C" BOOL APIENTRY SFileDdaSetVolume (HSFILE handle, + LONG volume, + LONG pan); +extern "C" BOOL APIENTRY SFileDestroy (); +extern "C" BOOL APIENTRY SFileEnableDirectAccess (BOOL enable); +extern "C" BOOL APIENTRY SFileGetFileArchive (HSFILE file, + HSARCHIVE *archive); +extern "C" DWORD APIENTRY SFileGetFileSize (HSFILE handle, + LPDWORD filesizehigh = NULL); +extern "C" BOOL APIENTRY SFileOpenArchive (LPCTSTR archivename, + int priority, + BOOL cdonly, + HSARCHIVE *handle); +extern "C" BOOL APIENTRY SFileOpenFile (LPCTSTR filename, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileOpenFileEx (HSARCHIVE archivehandle, + LPCTSTR filename, + DWORD flags, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileOpenFileWin32 (LPCTSTR filename, + HANDLE *handle); +extern "C" BOOL APIENTRY SFileReadFile (HSFILE handle, + LPVOID buffer, + DWORD bytestoread, + LPDWORD bytesread = NULL, + LPVOID reserved = NULL); +extern "C" BOOL APIENTRY SFileSetBasePath (LPCTSTR path); +extern "C" DWORD APIENTRY SFileSetFilePointer (HSFILE handle, + LONG distancetomove, + PLONG distancetomovehigh, + DWORD movemethod); +extern "C" BOOL APIENTRY SFileSetLocale (LCID lcid); + +/**************************************************************************** +* +* GDI functions +* +***/ + +#define ETO_TEXT_TRANSPARENT 0 +#define ETO_TEXT_COLOR 1 +#define ETO_TEXT_BLACK 2 +#define ETO_TEXT_WHITE 3 +#define ETO_BKG_TRANSPARENT 0 +#define ETO_BKG_COLOR 1 +#define ETO_BKG_BLACK 2 +#define ETO_BKG_WHITE 3 + +typedef struct _HSGDIOBJ { int unused; } *HSGDIOBJ; +typedef struct _HSGDIFONT : public _HSGDIOBJ { int unused; } *HSGDIFONT; + +extern "C" BOOL APIENTRY SGdiBitBlt (LPBYTE videobuffer, + int destx, + int desty, + LPBYTE sourcedata, + LPRECT sourcerect, + int sourcecx, + int sourcecy, + COLORREF color = 0, + DWORD rop = SRCCOPY); +extern "C" BOOL APIENTRY SGdiCreateFont (LPBYTE bits, + int width, + int height, + int bitdepth, + int filecharwidth, + int filecharheight, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiDeleteObject (HSGDIOBJ handle); +extern "C" BOOL APIENTRY SGdiDestroy (); +extern "C" BOOL APIENTRY SGdiExtTextOut (LPBYTE videobuffer, + int x, + int y, + LPRECT rect, + COLORREF color, + int textcoloruse, + int bkgcoloruse, + LPCTSTR string, + int chars = -1); +extern "C" BOOL APIENTRY SGdiImportFont (HFONT windowsfont, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiLoadFont (LPCTSTR filename, + int filecharwidth, + int filecharheight, + int basecharwidth, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiRectangle (LPBYTE videobuffer, + int left, + int top, + int right, + int bottom, + COLORREF color); +extern "C" BOOL APIENTRY SGdiSelectObject (HSGDIOBJ handle); +extern "C" BOOL APIENTRY SGdiSetPitch (int pitch); +extern "C" BOOL APIENTRY SGdiTextOut (LPBYTE videobuffer, + int x, + int y, + COLORREF color, + LPCTSTR string, + int chars = -1); + +/**************************************************************************** +* +* Memory allocation functions +* +***/ + +#define SMEM_FLAG_ZEROMEMORY 0x00000008 + +extern "C" LPVOID APIENTRY SMemAlloc (DWORD bytes, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +extern "C" BOOL APIENTRY SMemDestroy (); +extern "C" BOOL APIENTRY SMemFree (LPVOID ptr, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +extern "C" void APIENTRY SMemInitialize (); + +#define ALLOC(bytes) SMemAlloc(bytes,__FILE__,__LINE__,0) +#define ALLOCZERO(bytes) SMemAlloc(bytes,__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY) +#define FREE(ptr) SMemFree(ptr,__FILE__,__LINE__,0) +#define NEW(struct) (struct *)SMemAlloc(sizeof(struct),__FILE__,__LINE__,0) +#define NEWZERO(struct) (struct *)SMemAlloc(sizeof(struct),__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY) + +/**************************************************************************** +* +* Message functions +* +***/ + +typedef struct _PARAMS { + HWND window; + UINT message; + WPARAM wparam; + LPARAM lparam; + UINT notifycode; + LPVOID extra; + BOOL useresult; + LRESULT result; +} PARAMS, *PARAMSPTR, *LPPARAMS; + +typedef BOOL (CALLBACK *SMSGIDLEPROC)(DWORD); +typedef void (CALLBACK *SMSGHANDLER)(LPPARAMS); + +extern "C" BOOL APIENTRY SMsgDestroy (); +extern "C" BOOL APIENTRY SMsgDispatchMessage (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam, + BOOL *useresult, + LRESULT *result); +extern "C" BOOL APIENTRY SMsgDoMessageLoop (SMSGIDLEPROC idleproc = NULL, + BOOL cleanuponquit = 1); +extern "C" BOOL APIENTRY SMsgRegisterCommand (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyDown (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyUp (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterMessage (HWND window, + UINT id, + SMSGHANDLER handler); + +/**************************************************************************** +* +* Networking functions +* +***/ + +#define SNET_ART_BACKGROUND 0 +#define SNET_ART_BUTTONTEXTURE 1 +#define SNET_ART_JOINBACKGROUND 2 +#define SNET_ART_HELPBACKGROUND 3 +#define SNET_ART_POPUPBACKGROUND 4 +#define SNET_ART_BUTTON_XSML 5 +#define SNET_ART_BUTTON_SML 6 +#define SNET_ART_BUTTON_MED 7 +#define SNET_ART_BUTTON_LRG 8 +#define SNET_ART_APP_LOGO_SML 9 +#define SNET_ART_PROGRESS_BACKGROUND 10 +#define SNET_ART_PROGRESS_FILLER 11 +#define SNET_ART_POPUPBACKGROUND_SML 12 +#define SNET_ART_SCROLLBARARROWS 13 +#define SNET_ART_SCROLLTHUMB 14 +#define SNET_ART_SCROLLBAR 15 + +#define SNET_AUTHTYPE_CHANNEL 1 +#define SNET_AUTHTYPE_GAME 2 + +#define SNET_BROADCASTNONLOCALPLAYERID 0xFFFFFFFE +#define SNET_BROADCASTPLAYERID 0xFFFFFFFF +#define SNET_INVALIDPLAYERID 0xFFFFFFFF + +#define SNET_CAPS_PAGELOCKEDBUFFERS 0x00000001 +#define SNET_CAPS_BASICINTERFACE 0x00000002 + +#define SNET_CF_ALLOWPRIVATEGAMES 0x00000001 + +#define SNET_DATA_SYSCOLORS 1 +#define SNET_DATA_CURSORLINK 2 +#define SNET_DATA_CURSORARROW 3 +#define SNET_DATA_CURSORIBEAM 4 + +#define SNET_DDF_INCLUDENAME 0x00000001 +#define SNET_DDF_MULTILINE 0x00000002 + +#define SNET_DDPF_BLIZZARD 0x00000001 +#define SNET_DDPF_MODERATOR 0x00000002 +#define SNET_DDPF_SPEAKER 0x00000004 +#define SNET_DDPF_SYSOP 0x00000008 +#define SNET_DDPF_SQUELCHED 0x00000020 + +#define SNET_DRAWTYPE_GAME 1 +#define SNET_DRAWTYPE_PLAYER 2 + +#define SNET_ERROR_BASE 0x21050000 +#define SNET_ERROR_ALREADY_EXISTS ERROR_ALREADY_EXISTS +#define SNET_ERROR_BAD_PROVIDER ERROR_BAD_PROVIDER +#define SNET_ERROR_CANCELLED ERROR_CANCELLED +#define SNET_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SNET_ERROR_INVALID_PLAYER (SNET_ERROR_BASE+1) +#define SNET_ERROR_GAME_ALREADY_STARTED (SNET_ERROR_BASE+2) +#define SNET_ERROR_GAME_FULL (SNET_ERROR_BASE+3) +#define SNET_ERROR_GAME_NOT_FOUND (SNET_ERROR_BASE+4) +#define SNET_ERROR_GAME_TERMINATED (SNET_ERROR_BASE+5) +#define SNET_ERROR_HOST_UNREACHABLE ERROR_HOST_UNREACHABLE +#define SNET_ERROR_MAX_THRDS_REACHED ERROR_MAX_THRDS_REACHED +#define SNET_ERROR_NETWORK_BUSY ERROR_NETWORK_BUSY +#define SNET_ERROR_NO_MESSAGES_WAITING (SNET_ERROR_BASE+6) +#define SNET_ERROR_NO_NETWORK ERROR_NO_NETWORK +#define SNET_ERROR_NOT_CONNECTED ERROR_NOT_CONNECTED +#define SNET_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SNET_ERROR_NOT_IMPLEMENTED (SNET_ERROR_BASE+7) +#define SNET_ERROR_NOT_IN_GAME (SNET_ERROR_BASE+8) +#define SNET_ERROR_NOT_OWNER ERROR_NOT_OWNER +#define SNET_ERROR_NOT_REGISTERED (SNET_ERROR_BASE+9) +#define SNET_ERROR_REQUIRES_UPGRADE (SNET_ERROR_BASE+10) +#define SNET_ERROR_STILL_ACTIVE (SNET_ERROR_BASE+11) +#define SNET_ERROR_TOO_MANY_NAMES ERROR_TOO_MANY_NAMES +#define SNET_ERROR_VERSION_MISMATCH (SNET_ERROR_BASE+12) + +#define SNET_EVENT_INITDATA 1 +#define SNET_EVENT_PLAYERJOIN 2 +#define SNET_EVENT_PLAYERLEAVE 3 +#define SNET_EVENT_SERVERMESSAGE 4 + +#define SNET_EXIT_AUTO_JOINING 0x00000001 +#define SNET_EXIT_AUTO_NEWGAME 0x00000002 +#define SNET_EXIT_AUTO_SHUTDOWN 0x00000003 +#define SNET_EXIT_PLAYERQUIT 0x40000001 +#define SNET_EXIT_PLAYERKILLED 0x40000002 +#define SNET_EXIT_PLAYERWON 0x40000004 +#define SNET_EXIT_GAMEOVER 0x40000005 +#define SNET_EXIT_NOTRESPONDING 0x40000006 + +#define SNET_GM_PRIVATE 0x00000001 +#define SNET_GM_FULL 0x00000002 +#define SNET_GM_ADVERTISED 0x00000004 + +#define SNET_INFO_GAMENAME 1 +#define SNET_INFO_GAMEPASSWORD 2 +#define SNET_INFO_GAMEDESCRIPTION 3 +#define SNET_INFO_GAMEMODE 4 +#define SNET_INFO_INITDATA 5 +#define SNET_INFO_MAXPLAYERS 6 + +#define SNET_LMT_EXPECTED 1 +#define SNET_LMT_CURRENT 2 +#define SNET_LMT_PEAK 4 + +#define SNET_PERFID_TURN 1 +#define SNET_PERFID_TURNSSENT 4 +#define SNET_PERFID_TURNSRECV 5 +#define SNET_PERFID_MSGSENT 6 +#define SNET_PERFID_MSGRECV 7 +#define SNET_PERFID_USERBYTESSENT 8 +#define SNET_PERFID_USERBYTESRECV 9 +#define SNET_PERFID_TOTALBYTESSENT 10 +#define SNET_PERFID_TOTALBYTESRECV 11 +#define SNET_PERFID_PKTSENTONWIRE 12 +#define SNET_PERFID_PKTRECVONWIRE 13 +#define SNET_PERFID_BYTESSENTONWIRE 14 +#define SNET_PERFID_BYTESRECVONWIRE 15 +#define SNET_PERFIDNUM 16 + +#define SNET_PERFTYPE_COUNTER 0x10410400 +#define SNET_PERFTYPE_RAWCOUNT 0x00010000 + +#define SNET_PSF_ACTIVE 0x00010000 +#define SNET_PSF_TURNAVAILABLE 0x00020000 +#define SNET_PSF_RESPONDING 0x00040000 + +#define SNET_SF_ALLOWCREATE 0x00000001 + +#define SNET_SND_CHANGEFOCUS 0 +#define SNET_SND_SELECTITEM 1 + +#define SNET_UPGRADE_FAILED -1 +#define SNET_UPGRADE_NOT_NEEDED 0 +#define SNET_UPGRADE_SUCCEEDED 1 +#define SNET_UPGRADING_TERMINATE 2 + +#define SNET_MAXNAMELENGTH 128 +#define SNET_MAXDESCLENGTH 128 + +typedef struct _SNETCAPS { + DWORD size; + DWORD flags; + DWORD maxmessagesize; + DWORD maxqueuesize; + DWORD maxplayers; + DWORD bytessec; + DWORD latencyms; + DWORD defaultturnssec; + DWORD defaultturnsintransit; +} SNETCAPS, *SNETCAPSPTR; + +typedef struct _SNETCREATEDATA { + DWORD size; + DWORD providerid; + DWORD maxplayers; + DWORD createflags; +} SNETCREATEDATA, *SNETCREATEDATAPTR; + +typedef struct _SNET_DATA_SYSCOLORTABLE { + DWORD syscolor; + COLORREF rgb; +} SNET_DATA_SYSCOLORTABLE, *SNET_DATA_SYSCOLORTABLEPTR; + +typedef struct _SNETEVENT { + DWORD eventid; + DWORD playerid; + LPVOID data; + DWORD databytes; +} SNETEVENT, *SNETEVENTPTR; + +struct _SNETPROGRAMDATA; +struct _SNETPLAYERDATA; +struct _SNETUIDATA; +struct _SNETVERSIONDATA; + +typedef BOOL (CALLBACK *SNETABORTPROC )(); +typedef BOOL (CALLBACK *SNETCATEGORYPROC )(BOOL,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *,DWORD *); +typedef BOOL (CALLBACK *SNETCHECKAUTHPROC )(DWORD,LPCSTR,LPCSTR,DWORD,LPCSTR,LPSTR,DWORD); +typedef BOOL (CALLBACK *SNETCREATEPROC )(SNETCREATEDATAPTR,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *); +typedef BOOL (CALLBACK *SNETDRAWDESCPROC )(DWORD,DWORD,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,LPDRAWITEMSTRUCT); +typedef BOOL (CALLBACK *SNETENUMDEVICESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMGAMESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMPROVIDERSPROC)(DWORD,LPCSTR,LPCSTR,SNETCAPSPTR); +typedef void (CALLBACK *SNETEVENTPROC )(SNETEVENTPTR); +typedef BOOL (CALLBACK *SNETGETARTPROC )(DWORD,DWORD,LPPALETTEENTRY,LPBYTE,DWORD,int *,int *,int *); +typedef BOOL (CALLBACK *SNETGETDATAPROC )(DWORD,DWORD,LPVOID,DWORD,DWORD *); +typedef int (CALLBACK *SNETMESSAGEBOXPROC )(HWND,LPCSTR,LPCSTR,UINT); +typedef BOOL (CALLBACK *SNETPLAYSOUNDPROC )(DWORD,DWORD,DWORD); +typedef BOOL (CALLBACK *SNETSELECTEDPROC )(DWORD,SNETCAPSPTR,_SNETUIDATA *,_SNETVERSIONDATA *); +typedef BOOL (CALLBACK *SNETSTATUSPROC )(LPCSTR,DWORD,DWORD,DWORD,SNETABORTPROC); + +typedef struct _SNETPLAYERDATA { + DWORD size; + LPCSTR playername; + LPCSTR playerdescription; +} SNETPLAYERDATA, *SNETPLAYERDATAPTR; + +typedef struct _SNETPROGRAMDATA { + DWORD size; + LPCSTR programname; + LPCSTR programdescription; + DWORD programid; + DWORD versionid; + DWORD reserved1; + DWORD maxplayers; + LPVOID initdata; + DWORD initdatabytes; + LPVOID reserved2; + DWORD optcategorybits; +} SNETPROGRAMDATA, *SNETPROGRAMDATAPTR; + +typedef struct _SNETUIDATA { + DWORD size; + DWORD uiflags; + HWND parentwindow; + SNETGETARTPROC artcallback; + SNETCHECKAUTHPROC authcallback; + SNETCREATEPROC createcallback; + SNETDRAWDESCPROC drawdesccallback; + SNETSELECTEDPROC selectedcallback; + SNETMESSAGEBOXPROC messageboxcallback; + SNETPLAYSOUNDPROC soundcallback; + SNETSTATUSPROC statuscallback; + SNETGETDATAPROC getdatacallback; + SNETCATEGORYPROC categorycallback; +} SNETUIDATA, *SNETUIDATAPTR; + +typedef struct _SNETVERSIONDATA { + DWORD size; + LPCSTR versionstring; + LPCSTR executablefile; + LPCSTR originalarchivefile; + LPCSTR patcharchivefile; +} SNETVERSIONDATA, *SNETVERSIONDATAPTR; + +extern "C" BOOL APIENTRY SNetCreateGame (LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR gamedescription, + DWORD gamecategorybits, + LPVOID initdata, + DWORD initdatabytes, + DWORD maxplayers, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetDestroy (); +extern "C" BOOL APIENTRY SNetDropPlayer (DWORD playerid, DWORD exitcode); +extern "C" BOOL APIENTRY SNetEnumDevices (SNETENUMDEVICESPROC callback); +extern "C" BOOL APIENTRY SNetEnumGames (DWORD categorybits, + DWORD categorymask, + SNETENUMGAMESPROC callback, + DWORD *hintnextcall); +extern "C" BOOL APIENTRY SNetEnumProviders (SNETCAPSPTR mincaps, + SNETENUMPROVIDERSPROC callback); +extern "C" BOOL APIENTRY SNetGetGameInfo (DWORD index, + LPVOID buffer, + DWORD buffersize, + DWORD *byteswritten); +extern "C" BOOL APIENTRY SNetGetNetworkLatency (DWORD measurementtype, + DWORD *result); +extern "C" BOOL APIENTRY SNetGetNumPlayers (DWORD *firstplayerid, + DWORD *lastplayerid, + DWORD *activeplayers); +extern "C" BOOL APIENTRY SNetGetOwnerTurnsWaiting (DWORD *turns); +extern "C" BOOL APIENTRY SNetGetPerformanceData (DWORD counterid, + DWORD *countervalue, + DWORD *countertype, + LONG *counterscale, + LARGE_INTEGER *measurementtime, + LARGE_INTEGER *measurementfreq); +extern "C" BOOL APIENTRY SNetGetPlayerCaps (DWORD playerid, + SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetPlayerName (DWORD playerid, + LPSTR buffer, + DWORD buffersize); +extern "C" BOOL APIENTRY SNetGetProviderCaps (SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetTurnsInTransit (DWORD *turns); +extern "C" BOOL APIENTRY SNetInitializeDevice (DWORD deviceid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetInitializeProvider (DWORD providerid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetJoinGame (DWORD gameid, + LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetLeaveGame (DWORD exitcode); +extern "C" BOOL APIENTRY SNetPerformUpgrade (DWORD *upgradestatus); +extern "C" BOOL APIENTRY SNetReceiveMessage (DWORD *senderplayerid, + LPVOID *data, + DWORD *databytes); +extern "C" BOOL APIENTRY SNetReceiveTurns (DWORD firstplayerid, + DWORD arraysize, + LPVOID *arraydata, + LPDWORD arraydatabytes, + LPDWORD arrayplayerstatus); +extern "C" BOOL APIENTRY SNetRegisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); +extern "C" BOOL APIENTRY SNetResetLatencyMeasurements (); +extern "C" BOOL APIENTRY SNetSelectGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetSelectProvider (SNETCAPSPTR mincaps, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *providerid); +extern "C" BOOL APIENTRY SNetSendMessage (DWORD targetplayerid, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSendTurn (LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSetBasePlayer (DWORD playerid); +extern "C" BOOL APIENTRY SNetSetGameMode (DWORD modeflags); +extern "C" BOOL APIENTRY SNetUnregisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); + +/**************************************************************************** +* +* Networking service provider interface +* +***/ + +#define SNETSPI_MAXSTRINGLENGTH 128 + +typedef struct _SNETADDR { + BYTE address[16]; +} SNETADDR, *SNETADDRPTR; + +typedef struct _SNETSPI_DEVICELIST { + DWORD deviceid; + SNETCAPS devicecaps; + char devicename[SNETSPI_MAXSTRINGLENGTH]; + char devicedescription[SNETSPI_MAXSTRINGLENGTH]; + DWORD reserved; + _SNETSPI_DEVICELIST *next; +} SNETSPI_DEVICELIST, *SNETSPI_DEVICELISTPTR; + +typedef struct _SNETSPI_GAMELIST { + DWORD gameid; + DWORD gamemode; + DWORD creationtime; + SNETADDR owner; + DWORD ownerlatency; + DWORD ownerlasttime; + DWORD gamecategorybits; + char gamename[SNETSPI_MAXSTRINGLENGTH]; + char gamedescription[SNETSPI_MAXSTRINGLENGTH]; + _SNETSPI_GAMELIST *next; +} SNETSPI_GAMELIST, *SNETSPI_GAMELISTPTR; + +typedef struct _SNETSPI { + DWORD size; + BOOL (CALLBACK *CompareNetAddresses)(SNETADDRPTR,SNETADDRPTR,DWORD *); + BOOL (CALLBACK *Destroy)(); + BOOL (CALLBACK *Free)(SNETADDRPTR,LPVOID,DWORD); + BOOL (CALLBACK *FreeExternalMessage)(LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *GetGameInfo)(DWORD,LPCSTR,LPCSTR,SNETSPI_GAMELIST *); + BOOL (CALLBACK *GetPerformanceData)(DWORD,DWORD *,LARGE_INTEGER *,LARGE_INTEGER *); + BOOL (CALLBACK *Initialize)(SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,HANDLE); + BOOL (CALLBACK *InitializeDevice)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR); + BOOL (CALLBACK *LockDeviceList)(SNETSPI_DEVICELISTPTR *); + BOOL (CALLBACK *LockGameList)(DWORD,DWORD,SNETSPI_GAMELISTPTR *); + BOOL (CALLBACK *Receive)(SNETADDRPTR *,LPVOID *,DWORD *); + BOOL (CALLBACK *ReceiveExternalMessage)(LPCSTR *,LPCSTR *,LPCSTR *); + BOOL (CALLBACK *SelectGame)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,DWORD *); + BOOL (CALLBACK *Send)(DWORD,SNETADDRPTR *,LPVOID,DWORD); + BOOL (CALLBACK *SendExternalMessage)(LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *StartAdvertisingGame)(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD); + BOOL (CALLBACK *StopAdvertisingGame)(); + BOOL (CALLBACK *UnlockDeviceList)(SNETSPI_DEVICELISTPTR); + BOOL (CALLBACK *UnlockGameList)(SNETSPI_GAMELISTPTR,DWORD *); +} SNETSPI, *SNETSPIPTR; + +typedef BOOL (APIENTRY *SNETSPIBIND )(DWORD,SNETSPIPTR *); +typedef BOOL (APIENTRY *SNETSPIQUERY)(DWORD,DWORD *,LPCSTR *,LPCSTR *,SNETCAPSPTR *); + +/**************************************************************************** +* +* Registry functions +* +***/ + +#define SREG_FLAG_USERSPECIFIC 0x00000001 +#define SREG_FLAG_BATTLENET 0x00000002 +#define SREG_FLAG_FLUSHTODISK 0x00000008 +#define SREG_FLAG_MULTISZ 0x00000080 + +extern "C" BOOL APIENTRY SRegLoadData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID buffer, + DWORD buffersize, + DWORD *bytesread); +extern "C" BOOL APIENTRY SRegLoadString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SRegLoadValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD *value); +extern "C" BOOL APIENTRY SRegSaveData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SRegSaveString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPCTSTR string); +extern "C" BOOL APIENTRY SRegSaveValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD value); + +/**************************************************************************** +* +* Run-time library functions +* +***/ + +#define TRY goto trylabel; trylabel: +#define LEAVE goto finallylabel +#define FINALLY goto finallylabel; finallylabel: + +/**************************************************************************** +* +* Transparency functions +* +***/ + +typedef struct _HSTRANS { int unused; } *HSTRANS; +typedef HSTRANS HTRANS; + +extern "C" BOOL APIENTRY STransBlt (LPBYTE dest, + int destx, + int desty, + int destpitch, + HSTRANS transparency); +extern "C" BOOL APIENTRY STransBltUsingMask (LPBYTE dest, + LPBYTE source, + int destpitch, + int sourcepitch, + HSTRANS mask); +extern "C" BOOL APIENTRY STransCreate (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransDelete (HSTRANS handle); +extern "C" BOOL APIENTRY STransDestroy (); +extern "C" BOOL APIENTRY STransDuplicate (HSTRANS source, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransIntersectDirtyArray (HSTRANS sourcemask, + LPBYTE dirtyarray, + BYTE dirtyarraymask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransInvertMask (HSTRANS sourcemask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransLoad (LPCTSTR filename, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransSetDirtyArrayInfo (int screencx, + int screency, + int cellcx, + int cellcy); +extern "C" BOOL APIENTRY STransUpdateDirtyArray (LPBYTE dirtyarray, + BYTE dirtyvalue, + int destx, + int desty, + HSTRANS transparency, + BOOL tracecontour); + +/**************************************************************************** +* +* Video functions +* +***/ + +#define SVID_FLAG_DOUBLESCANS 0x00000001 +#define SVID_FLAG_INTERPOLATE 0x00000002 +#define SVID_FLAG_AUTOQUALITY 0x00000008 +#define SVID_FLAG_1XSIZE 0x00000100 +#define SVID_FLAG_2XSIZE 0x00000200 +#define SVID_FLAG_AUTOSIZE 0x00000800 +#define SVID_FLAG_FILEHANDLE 0x00010000 +#define SVID_FLAG_PRELOAD 0x00020000 +#define SVID_FLAG_LOOP 0x00040000 +#define SVID_FLAG_FULLSCREEN 0x00080000 +#define SVID_FLAG_USECURRENTPALETTE 0x00100000 +#define SVID_FLAG_CLEARSCREEN 0x00200000 +#define SVID_FLAG_TOSCREEN 0x10000000 +#define SVID_FLAG_TOBUFFER 0x20000000 + +#define SVID_CUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_2XSIZE) +#define SVID_AUTOCUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_AUTOSIZE | SVID_FLAG_AUTOQUALITY) + +#define SVID_QUALITY_LOW_SKIPSCANS SVID_FLAG_2XSIZE +#define SVID_QUALITY_LOW (SVID_FLAG_2XSIZE | SVID_FLAG_DOUBLESCANS) +#define SVID_QUALITY_HIGH_SKIPSCANS (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE) +#define SVID_QUALITY_HIGH (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE | SVID_FLAG_DOUBLESCANS) + +typedef struct _HSVIDEO { int unused; } *HSVIDEO; + +typedef struct _SVIDPALETTEUSE { + DWORD size; + DWORD firstentry; + DWORD numentries; +} SVIDPALETTEUSE, *SVIDPALETTEUSEPTR; + +extern "C" BOOL APIENTRY SVidDestroy (); +extern "C" BOOL APIENTRY SVidGetPerformanceData (HSVIDEO video, + BOOL averageframems, + DWORD *framems, + BOOL averagepalettems, + DWORD *palettems); +extern "C" BOOL APIENTRY SVidGetSize (HSVIDEO video, + int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SVidInitialize (LPVOID directsound); +extern "C" BOOL APIENTRY SVidPlayBegin (LPCTSTR filename, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayBeginFromMemory (LPVOID sourceptr, + DWORD sourcebytes, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayContinue (); +extern "C" BOOL APIENTRY SVidPlayContinueSingle (HSVIDEO video, + BOOL forceupdate, + BOOL *updated); +extern "C" BOOL APIENTRY SVidPlayEnd (HSVIDEO video); + +/**************************************************************************** +* +* Storm global functions +* +***/ + +extern "C" BOOL APIENTRY StormDestroy (); + +/**************************************************************************** +* +* C++ Utility Classes and Templates +* +***/ + +#ifndef __cplusplus +extern "C++" +#endif + +/**************************************************************************** +* +* CCRITSECT -- Critical section class +* +***/ + +class CCritSect { + private: + CRITICAL_SECTION m_critsect; + public: + CCritSect () { InitializeCriticalSection(&m_critsect); } + ~CCritSect () { DeleteCriticalSection(&m_critsect); } + void inline Enter () { EnterCriticalSection(&m_critsect); } + void inline Leave () { LeaveCriticalSection(&m_critsect); } +}; + +/**************************************************************************** +* +* CLOCK -- Lock class +* +***/ + +class CLock { + + private: + + HANDLE m_mutexevent; + HANDLE m_readerevent; + LONG m_readercount; + + public: + + CLock () { + m_mutexevent = CreateEvent(NULL,FALSE,TRUE,NULL); + m_readerevent = CreateEvent(NULL,TRUE,FALSE,NULL); + m_readercount = -1; + } + + ~CLock () { + CloseHandle(m_readerevent); + CloseHandle(m_mutexevent); + } + + void inline Enter (BOOL forwriting) { + if (forwriting) + WaitForSingleObject(m_mutexevent,INFINITE); + else if (!InterlockedIncrement(&m_readercount)) { + WaitForSingleObject(m_mutexevent,INFINITE); + SetEvent(m_readerevent); + } + else + WaitForSingleObject(m_readerevent,INFINITE); + } + + void inline Leave (BOOL fromwriting) { + if (fromwriting) + SetEvent(m_mutexevent); + else if (InterlockedDecrement(&m_readercount) < 0) { + ResetEvent(m_readerevent); + SetEvent(m_mutexevent); + } + } + +}; + +/**************************************************************************** +* +* TLIST -- Linked list function templates +* +***/ + +//=========================================================================== +template +BOOL inline TListAdd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = *head; + *head = newptr; + return 1; +} +#define LISTADD(a,b) TListAdd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddEnd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = NULL; + + T **next = head; + while (*next) + next = &(*next)->next; + *next = newptr; + + return 1; +} +#define LISTADDEND(a,b) TListAddEnd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddPtr (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = *head; + *head = ptr; + return 1; +} +#define LISTADDPTR(a,b) TListAddPtr(a,b) + +//=========================================================================== +template +BOOL inline TListAddPtrEnd (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = NULL; + T **next = head; + while (*next) + next = &(*next)->next; + *next = ptr; + + return 1; +} +#define LISTADDPTREND(a,b) TListAddPtrEnd(a,b) + +//=========================================================================== +template +BOOL inline TListClear (T **head, LPCSTR filename = NULL, int linenumber = 0) { + if (!head) + return 0; + + while (*head) { + T *next = (*head)->next; + SMemFree(*head,filename,linenumber,0); + *head = next; + } + return 1; +} +#define LISTCLEAR(a) TListClear(a,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFree (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + SMemFree(ptr,filename,linenumber,0); + return (*next != NULL); +} +#define LISTFREE(a,b) TListFree(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFreePtr (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + return (*next != NULL); +} +#define LISTFREEPTR(a,b) TListFreePtr(a,b,(LPCSTR)__FILE__,__LINE__) + +#ifndef __cplusplus +} // extern "C++" +#endif + +#endif // ifndef _STORM_H_ diff --git a/Uisrc/OLD/STORM.LIB b/Uisrc/OLD/STORM.LIB new file mode 100644 index 0000000..67499fd Binary files /dev/null and b/Uisrc/OLD/STORM.LIB differ diff --git a/Uisrc/RELEASE/DIABLOUI.MAP b/Uisrc/RELEASE/DIABLOUI.MAP new file mode 100644 index 0000000..873e116 --- /dev/null +++ b/Uisrc/RELEASE/DIABLOUI.MAP @@ -0,0 +1,330 @@ + DiabloUI + + Timestamp is 34c4c9fb (Tue Jan 20 15:59:55 1998) + + Preferred load address is 00400000 + + Start Length Name Class + 0001:00000000 00002f56H .text CODE + 0002:00000000 00000337H .rdata DATA + 0002:00000337 00000000H .edata DATA + 0003:00000000 00000004H .CRT$XCA DATA + 0003:00000004 00000004H .CRT$XCZ DATA + 0003:00000008 00000004H .CRT$XIA DATA + 0003:0000000c 00000004H .CRT$XIC DATA + 0003:00000010 00000004H .CRT$XIZ DATA + 0003:00000014 00000004H .CRT$XPA DATA + 0003:00000018 00000004H .CRT$XPX DATA + 0003:0000001c 00000004H .CRT$XPZ DATA + 0003:00000020 00000004H .CRT$XTA DATA + 0003:00000024 00000004H .CRT$XTZ DATA + 0003:00000030 00002998H .data DATA + 0003:000029c8 0000146cH .bss DATA + 0004:00000000 00000050H .idata$2 DATA + 0004:00000050 00000014H .idata$3 DATA + 0004:00000064 00000120H .idata$4 DATA + 0004:00000184 00000120H .idata$5 DATA + 0004:000002a4 00000470H .idata$6 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0001:00000000 _WinMain@16 00401000 f Testui.obj + 0001:00000240 _SMsgRegisterMessage@12 00401240 f storm:storm.dll + 0001:00000246 _SDrawMessageBox@12 00401246 f storm:storm.dll + 0001:0000024c _SDrawAutoInitialize@32 0040124c f storm:storm.dll + 0001:00000252 _SFileEnableDirectAccess@4 00401252 f storm:storm.dll + 0001:00000258 _SFileSetBasePath@4 00401258 f storm:storm.dll + 0001:0000025e _SNetSelectGame@24 0040125e f storm:storm.dll + 0001:00000264 _SDrawGetFrameWindow@4 00401264 f storm:storm.dll + 0001:0000026a _StormDestroy@0 0040126a f storm:storm.dll + 0001:00000270 _UiOnPaint@4 00401270 f hellfrui:hellfrui.dll + 0001:00000276 _UiSelectProvider@24 00401276 f hellfrui:hellfrui.dll + 0001:0000027c _UiCategoryCallback@28 0040127c f hellfrui:hellfrui.dll + 0001:00000282 _UiGetDataCallback@20 00401282 f hellfrui:hellfrui.dll + 0001:00000288 _UiAuthCallback@28 00401288 f hellfrui:hellfrui.dll + 0001:0000028e _UiSoundCallback@12 0040128e f hellfrui:hellfrui.dll + 0001:00000294 _UiMessageBoxCallback@16 00401294 f hellfrui:hellfrui.dll + 0001:0000029a _UiDrawDescCallback@32 0040129a f hellfrui:hellfrui.dll + 0001:000002a0 _UiCreateGameCallback@24 004012a0 f hellfrui:hellfrui.dll + 0001:000002a6 _UiArtCallback@32 004012a6 f hellfrui:hellfrui.dll + 0001:000002ac _UiDestroy@0 004012ac f hellfrui:hellfrui.dll + 0001:000002b2 _UiCreatePlayerDescription@12 004012b2 f hellfrui:hellfrui.dll + 0001:000002b8 _UiInitialize@0 004012b8 f hellfrui:hellfrui.dll + 0001:000002c0 _WinMainCRTStartup 004012c0 f LIBCMT:wincrt0.obj + 0001:00000470 __amsg_exit 00401470 f LIBCMT:wincrt0.obj + 0001:000004a0 __cinit 004014a0 f LIBCMT:crt0dat.obj + 0001:000004d0 _exit 004014d0 f LIBCMT:crt0dat.obj + 0001:000004f0 __exit 004014f0 f LIBCMT:crt0dat.obj + 0001:000005d0 __lockexit 004015d0 f LIBCMT:crt0dat.obj + 0001:000005e0 __unlockexit 004015e0 f LIBCMT:crt0dat.obj + 0001:00000610 __XcptFilter 00401610 f LIBCMT:winxfltr.obj + 0001:00000860 __ismbblead 00401860 f LIBCMT:ismbbyte.obj + 0001:000008c0 __setenvp 004018c0 f LIBCMT:stdenvp.obj + 0001:000009b0 __setargv 004019b0 f LIBCMT:stdargv.obj + 0001:00000c60 ___crtGetEnvironmentStringsA 00401c60 f LIBCMT:aw_env.obj + 0001:00000dc0 __setmbcp 00401dc0 f LIBCMT:mbctype.obj + 0001:000010c0 ___initmbctable 004020c0 f LIBCMT:mbctype.obj + 0001:000010d0 __ioinit 004020d0 f LIBCMT:ioinit.obj + 0001:000012e0 __mtinit 004022e0 f LIBCMT:tidtable.obj + 0001:00001340 __initptd 00402340 f LIBCMT:tidtable.obj + 0001:00001360 __getptd 00402360 f LIBCMT:tidtable.obj + 0001:000013e0 __heap_init 004023e0 f LIBCMT:heapinit.obj + 0001:00001420 __global_unwind2 00402420 f LIBCMT:exsup.obj + 0001:00001462 __local_unwind2 00402462 f LIBCMT:exsup.obj + 0001:000014ba __NLG_Return2 004024ba LIBCMT:exsup.obj + 0001:000014ca __abnormal_termination 004024ca f LIBCMT:exsup.obj + 0001:000014ed __NLG_Notify1 004024ed f LIBCMT:exsup.obj + 0001:000014f6 __NLG_Notify 004024f6 f LIBCMT:exsup.obj + 0001:00001509 __NLG_Dispatch 00402509 LIBCMT:exsup.obj + 0001:00001518 __except_handler3 00402518 f LIBCMT:exsup3.obj + 0001:000015d5 __seh_longjmp_unwind@4 004025d5 f LIBCMT:exsup3.obj + 0001:000015f0 __FF_MSGBANNER 004025f0 f LIBCMT:crt0msg.obj + 0001:00001630 __NMSG_WRITE 00402630 f LIBCMT:crt0msg.obj + 0001:00001810 __mtinitlocks 00402810 f LIBCMT:mlock.obj + 0001:00001840 __lock 00402840 f LIBCMT:mlock.obj + 0001:000018c0 __unlock 004028c0 f LIBCMT:mlock.obj + 0001:000018e0 __lock_file 004028e0 f LIBCMT:mlock.obj + 0001:00001920 __lock_file2 00402920 f LIBCMT:mlock.obj + 0001:00001950 __unlock_file 00402950 f LIBCMT:mlock.obj + 0001:00001990 __unlock_file2 00402990 f LIBCMT:mlock.obj + 0001:000019c0 _free 004029c0 f LIBCMT:free.obj + 0001:00001a30 _malloc 00402a30 f LIBCMT:malloc.obj + 0001:00001a50 __nh_malloc 00402a50 f LIBCMT:malloc.obj + 0001:00001aa0 __heap_alloc 00402aa0 f LIBCMT:malloc.obj + 0001:00001b00 _calloc 00402b00 f LIBCMT:calloc.obj + 0001:00001bb0 ___sbh_new_region 00402bb0 f LIBCMT:sbheap.obj + 0001:00001d20 ___sbh_release_region 00402d20 f LIBCMT:sbheap.obj + 0001:00001d80 ___sbh_decommit_pages 00402d80 f LIBCMT:sbheap.obj + 0001:00001e50 ___sbh_find_block 00402e50 f LIBCMT:sbheap.obj + 0001:00001eb0 ___sbh_free_block 00402eb0 f LIBCMT:sbheap.obj + 0001:00001f10 ___sbh_alloc_block 00402f10 f LIBCMT:sbheap.obj + 0001:00002150 ___sbh_alloc_block_from_page 00403150 f LIBCMT:sbheap.obj + 0001:000022d0 ___crtMessageBoxA 004032d0 f LIBCMT:crtmbox.obj + 0001:00002360 _strncpy 00403360 f LIBCMT:strncpy.obj + 0001:00002460 ___initstdio 00403460 f LIBCMT:_file.obj + 0001:00002520 ___endstdio 00403520 f LIBCMT:_file.obj + 0001:00002540 __callnewh 00403540 f LIBCMT:handler.obj + 0001:00002560 __fcloseall 00403560 f LIBCMT:closeall.obj + 0001:00002600 __fflush_lk 00403600 f LIBCMT:fflush.obj + 0001:00002640 __flush 00403640 f LIBCMT:fflush.obj + 0001:000026b0 __flushall 004036b0 f LIBCMT:fflush.obj + 0001:00002780 _fclose 00403780 f LIBCMT:fclose.obj + 0001:000027c0 __fclose_lk 004037c0 f LIBCMT:fclose.obj + 0001:00002830 __commit 00403830 f LIBCMT:commit.obj + 0001:000028d0 __write 004038d0 f LIBCMT:write.obj + 0001:00002950 __write_lk 00403950 f LIBCMT:write.obj + 0001:00002b60 __close 00403b60 f LIBCMT:close.obj + 0001:00002bd0 __close_lk 00403bd0 f LIBCMT:close.obj + 0001:00002c60 __freebuf 00403c60 f LIBCMT:_freebuf.obj + 0001:00002ca0 __free_osfhnd 00403ca0 f LIBCMT:osfinfo.obj + 0001:00002d40 __get_osfhandle 00403d40 f LIBCMT:osfinfo.obj + 0001:00002d90 __lock_fhandle 00403d90 f LIBCMT:osfinfo.obj + 0001:00002e00 __unlock_fhandle 00403e00 f LIBCMT:osfinfo.obj + 0001:00002e30 __dosmaperr 00403e30 f LIBCMT:dosmap.obj + 0001:00002eb0 __errno 00403eb0 f LIBCMT:dosmap.obj + 0001:00002ec0 ___doserrno 00403ec0 f LIBCMT:dosmap.obj + 0001:00002ed0 __lseek_lk 00403ed0 f LIBCMT:lseek.obj + 0001:00002f50 _RtlUnwind@16 00403f50 f kernel32:KERNEL32.dll + 0002:0000000c ??_C@_0P@GGKG@runtime?5error?5?$AA@ 0040400c LIBCMT:crt0msg.obj + 0002:0000001c ??_C@_02PIMC@?$AN?6?$AA@ 0040401c LIBCMT:crt0msg.obj + 0002:00000020 ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 00404020 LIBCMT:crt0msg.obj + 0002:00000030 ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 00404030 LIBCMT:crt0msg.obj + 0002:00000040 ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 00404040 LIBCMT:crt0msg.obj + 0002:00000050 ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 00404050 LIBCMT:crt0msg.obj + 0002:00000078 ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 00404078 LIBCMT:crt0msg.obj + 0002:000000b0 ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 004040b0 LIBCMT:crt0msg.obj + 0002:000000e8 ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 004040e8 LIBCMT:crt0msg.obj + 0002:00000110 ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 00404110 LIBCMT:crt0msg.obj + 0002:00000148 ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 00404148 LIBCMT:crt0msg.obj + 0002:00000174 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 00404174 LIBCMT:crt0msg.obj + 0002:00000198 ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 00404198 LIBCMT:crt0msg.obj + 0002:000001c8 ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 004041c8 LIBCMT:crt0msg.obj + 0002:000001f4 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 004041f4 LIBCMT:crt0msg.obj + 0002:00000218 ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 00404218 LIBCMT:crt0msg.obj + 0002:00000244 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 00404244 LIBCMT:crt0msg.obj + 0002:00000270 ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 00404270 LIBCMT:crt0msg.obj + 0002:00000298 ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 00404298 LIBCMT:crt0msg.obj + 0002:000002c0 ??_C@_02JJJH@?6?6?$AA@ 004042c0 LIBCMT:crt0msg.obj + 0002:000002c4 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 004042c4 LIBCMT:crt0msg.obj + 0002:000002e0 ??_C@_03NAME@?4?4?4?$AA@ 004042e0 LIBCMT:crt0msg.obj + 0002:000002e4 ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 004042e4 LIBCMT:crt0msg.obj + 0002:000002fc ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 004042fc LIBCMT:crtmbox.obj + 0002:00000310 ??_C@_0BA@GILI@GetActiveWindow?$AA@ 00404310 LIBCMT:crtmbox.obj + 0002:00000320 ??_C@_0M@PKCK@MessageBoxA?$AA@ 00404320 LIBCMT:crtmbox.obj + 0002:0000032c ??_C@_0L@HKL@user32?4dll?$AA@ 0040432c LIBCMT:crtmbox.obj + 0003:00000000 ___xc_a 00405000 LIBCMT:crt0init.obj + 0003:00000004 ___xc_z 00405004 LIBCMT:crt0init.obj + 0003:00000008 ___xi_a 00405008 LIBCMT:crt0init.obj + 0003:00000010 ___xi_z 00405010 LIBCMT:crt0init.obj + 0003:00000014 ___xp_a 00405014 LIBCMT:crt0init.obj + 0003:0000001c ___xp_z 0040501c LIBCMT:crt0init.obj + 0003:00000020 ___xt_a 00405020 LIBCMT:crt0init.obj + 0003:00000024 ___xt_z 00405024 LIBCMT:crt0init.obj + 0003:00000030 ?szName@@3PADA 00405030 Testui.obj + 0003:00000040 ??_C@_0CB@HHFB@Unable?5to?5initialize?5DirectDraw?4@ 00405040 Testui.obj + 0003:00000064 ??_C@_0M@ONLE@TESTUICLASS?$AA@ 00405064 Testui.obj + 0003:00000070 ??_C@_0P@GBPA@Diablo?5UI?5Test?$AA@ 00405070 Testui.obj + 0003:00000080 ??_C@_04JDHC@Test?$AA@ 00405080 Testui.obj + 0003:00000088 __aexit_rtn 00405088 LIBCMT:wincrt0.obj + 0003:0000008c ___app_type 0040508c LIBCMT:wincrt0.obj + 0003:00000090 __XcptActTab 00405090 LIBCMT:winxfltr.obj + 0003:00000108 __First_FPE_Indx 00405108 LIBCMT:winxfltr.obj + 0003:0000010c __Num_FPE 0040510c LIBCMT:winxfltr.obj + 0003:00000110 __XcptActTabSize 00405110 LIBCMT:winxfltr.obj + 0003:00000114 __XcptActTabCount 00405114 LIBCMT:winxfltr.obj + 0003:00000210 ___badioinfo 00405210 LIBCMT:ioinit.obj + 0003:00000234 ___tlsindex 00405234 LIBCMT:tidtable.obj + 0003:00000238 __amblksiz 00405238 LIBCMT:heapinit.obj + 0003:0000023c __NLG_Destination 0040523c LIBCMT:exsup.obj + 0003:000002e0 __locktable 004052e0 LIBCMT:mlock.obj + 0003:000003a0 __pctype 004053a0 LIBCMT:ctype.obj + 0003:000003a4 __pwctype 004053a4 LIBCMT:ctype.obj + 0003:000003a8 __ctype 004053a8 LIBCMT:ctype.obj + 0003:000005b0 ___small_block_heap 004055b0 LIBCMT:sbheap.obj + 0003:000025d4 ___sbh_threshold 004075d4 LIBCMT:sbheap.obj + 0003:000025e0 __iob 004075e0 LIBCMT:_file.obj + 0003:000029c8 ??_C@_00A@?$AA@ 004079c8 Testui.obj + 0003:000029cc __aenvptr 004079cc LIBCMT:wincrt0.obj + 0003:000029d0 __wenvptr 004079d0 LIBCMT:wincrt0.obj + 0003:000029d4 ___error_mode 004079d4 LIBCMT:wincrt0.obj + 0003:000029d8 __umaskval 004079d8 LIBCMT:crt0dat.obj + 0003:000029dc __osver 004079dc LIBCMT:crt0dat.obj + 0003:000029e0 __winver 004079e0 LIBCMT:crt0dat.obj + 0003:000029e4 __winmajor 004079e4 LIBCMT:crt0dat.obj + 0003:000029e8 __winminor 004079e8 LIBCMT:crt0dat.obj + 0003:000029ec ___argc 004079ec LIBCMT:crt0dat.obj + 0003:000029f0 ___argv 004079f0 LIBCMT:crt0dat.obj + 0003:000029f4 ___wargv 004079f4 LIBCMT:crt0dat.obj + 0003:000029f8 __environ 004079f8 LIBCMT:crt0dat.obj + 0003:000029fc ___initenv 004079fc LIBCMT:crt0dat.obj + 0003:00002a00 __wenviron 00407a00 LIBCMT:crt0dat.obj + 0003:00002a04 ___winitenv 00407a04 LIBCMT:crt0dat.obj + 0003:00002a08 __pgmptr 00407a08 LIBCMT:crt0dat.obj + 0003:00002a0c __wpgmptr 00407a0c LIBCMT:crt0dat.obj + 0003:00002a10 __exitflag 00407a10 LIBCMT:crt0dat.obj + 0003:00002a14 __C_Termination_Done 00407a14 LIBCMT:crt0dat.obj + 0003:00002a18 __C_Exit_Done 00407a18 LIBCMT:crt0dat.obj + 0003:00002b30 __mbctype 00407b30 LIBCMT:mbctype.obj + 0003:00002c34 ___mbcodepage 00407c34 LIBCMT:mbctype.obj + 0003:00002c38 ___mblcid 00407c38 LIBCMT:mbctype.obj + 0003:00002c40 ___mbulinfo 00407c40 LIBCMT:mbctype.obj + 0003:00002c50 __adbgmsg 00407c50 LIBCMT:crt0msg.obj + 0003:00002cb8 ___lc_handle 00407cb8 LIBCMT:nlsdata2.obj + 0003:00002cd0 ___lc_codepage 00407cd0 LIBCMT:nlsdata2.obj + 0003:00002ce4 __cflush 00407ce4 LIBCMT:_file.obj + 0003:00002ce8 __newmode 00407ce8 LIBCMT:_newmode.obj + 0003:00002cec ?_pnhHeap@@3P6AHI@ZA 00407cec LIBCMT:handler.obj + 0003:00002cf0 ___piob 00407cf0 + 0003:00002d00 __bufin 00407d00 + 0003:00003d00 __nstream 00408d00 + 0003:00003d04 __crtheap 00408d04 + 0003:00003d20 ___pioinfo 00408d20 + 0003:00003e20 __nhandle 00408e20 + 0003:00003e24 ___onexitend 00408e24 + 0003:00003e28 ___onexitbegin 00408e28 + 0003:00003e2c __FPinit 00408e2c + 0003:00003e30 __acmdln 00408e30 + 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 00409000 kernel32:KERNEL32.dll + 0004:00000014 __IMPORT_DESCRIPTOR_USER32 00409014 user32:USER32.dll + 0004:00000028 __IMPORT_DESCRIPTOR_storm 00409028 storm:storm.dll + 0004:0000003c __IMPORT_DESCRIPTOR_hellfrui 0040903c hellfrui:hellfrui.dll + 0004:00000050 __NULL_IMPORT_DESCRIPTOR 00409050 kernel32:KERNEL32.dll + 0004:00000184 __imp__FreeEnvironmentStringsW@4 00409184 kernel32:KERNEL32.dll + 0004:00000188 __imp__GetModuleHandleA@4 00409188 kernel32:KERNEL32.dll + 0004:0000018c __imp__SetFilePointer@16 0040918c kernel32:KERNEL32.dll + 0004:00000190 __imp__SetStdHandle@8 00409190 kernel32:KERNEL32.dll + 0004:00000194 __imp__CloseHandle@4 00409194 kernel32:KERNEL32.dll + 0004:00000198 __imp__FlushFileBuffers@4 00409198 kernel32:KERNEL32.dll + 0004:0000019c __imp__LoadLibraryA@4 0040919c kernel32:KERNEL32.dll + 0004:000001a0 __imp__GetProcAddress@8 004091a0 kernel32:KERNEL32.dll + 0004:000001a4 __imp__VirtualAlloc@16 004091a4 kernel32:KERNEL32.dll + 0004:000001a8 __imp__HeapAlloc@12 004091a8 kernel32:KERNEL32.dll + 0004:000001ac __imp__HeapFree@12 004091ac kernel32:KERNEL32.dll + 0004:000001b0 __imp__LeaveCriticalSection@4 004091b0 kernel32:KERNEL32.dll + 0004:000001b4 __imp__EnterCriticalSection@4 004091b4 kernel32:KERNEL32.dll + 0004:000001b8 __imp__InitializeCriticalSection@4 004091b8 kernel32:KERNEL32.dll + 0004:000001bc __imp__WriteFile@20 004091bc kernel32:KERNEL32.dll + 0004:000001c0 __imp__RtlUnwind@16 004091c0 kernel32:KERNEL32.dll + 0004:000001c4 __imp__VirtualFree@12 004091c4 kernel32:KERNEL32.dll + 0004:000001c8 __imp__HeapCreate@12 004091c8 kernel32:KERNEL32.dll + 0004:000001cc __imp__HeapDestroy@4 004091cc kernel32:KERNEL32.dll + 0004:000001d0 __imp__GetLastError@0 004091d0 kernel32:KERNEL32.dll + 0004:000001d4 __imp__TlsGetValue@4 004091d4 kernel32:KERNEL32.dll + 0004:000001d8 __imp__SetLastError@4 004091d8 kernel32:KERNEL32.dll + 0004:000001dc __imp__TlsAlloc@0 004091dc kernel32:KERNEL32.dll + 0004:000001e0 __imp__GetEnvironmentStrings@0 004091e0 kernel32:KERNEL32.dll + 0004:000001e4 __imp__GetStartupInfoA@4 004091e4 kernel32:KERNEL32.dll + 0004:000001e8 __imp__GetCommandLineA@0 004091e8 kernel32:KERNEL32.dll + 0004:000001ec __imp__GetVersion@0 004091ec kernel32:KERNEL32.dll + 0004:000001f0 __imp__ExitProcess@4 004091f0 kernel32:KERNEL32.dll + 0004:000001f4 __imp__TerminateProcess@8 004091f4 kernel32:KERNEL32.dll + 0004:000001f8 __imp__GetCurrentProcess@0 004091f8 kernel32:KERNEL32.dll + 0004:000001fc __imp__UnhandledExceptionFilter@4 004091fc kernel32:KERNEL32.dll + 0004:00000200 __imp__GetModuleFileNameA@12 00409200 kernel32:KERNEL32.dll + 0004:00000204 __imp__FreeEnvironmentStringsA@4 00409204 kernel32:KERNEL32.dll + 0004:00000208 __imp__GetCurrentDirectoryA@8 00409208 kernel32:KERNEL32.dll + 0004:0000020c __imp__GetOEMCP@0 0040920c kernel32:KERNEL32.dll + 0004:00000210 __imp__SetHandleCount@4 00409210 kernel32:KERNEL32.dll + 0004:00000214 __imp__GetEnvironmentStringsW@0 00409214 kernel32:KERNEL32.dll + 0004:00000218 __imp__WideCharToMultiByte@32 00409218 kernel32:KERNEL32.dll + 0004:0000021c __imp__GetCPInfo@8 0040921c kernel32:KERNEL32.dll + 0004:00000220 __imp__GetACP@0 00409220 kernel32:KERNEL32.dll + 0004:00000224 __imp__GetCurrentThreadId@0 00409224 kernel32:KERNEL32.dll + 0004:00000228 __imp__GetStdHandle@4 00409228 kernel32:KERNEL32.dll + 0004:0000022c __imp__GetFileType@4 0040922c kernel32:KERNEL32.dll + 0004:00000230 __imp__DeleteCriticalSection@4 00409230 kernel32:KERNEL32.dll + 0004:00000234 __imp__TlsSetValue@8 00409234 kernel32:KERNEL32.dll + 0004:00000238 \177KERNEL32_NULL_THUNK_DATA 00409238 kernel32:KERNEL32.dll + 0004:0000023c __imp__ShowCursor@4 0040923c user32:USER32.dll + 0004:00000240 __imp__MessageBoxA@16 00409240 user32:USER32.dll + 0004:00000244 \177USER32_NULL_THUNK_DATA 00409244 user32:USER32.dll + 0004:00000248 __imp__UiCategoryCallback@28 00409248 hellfrui:hellfrui.dll + 0004:0000024c __imp__UiInitialize@0 0040924c hellfrui:hellfrui.dll + 0004:00000250 __imp__UiCreatePlayerDescription@12 00409250 hellfrui:hellfrui.dll + 0004:00000254 __imp__UiDestroy@0 00409254 hellfrui:hellfrui.dll + 0004:00000258 __imp__UiArtCallback@32 00409258 hellfrui:hellfrui.dll + 0004:0000025c __imp__UiCreateGameCallback@24 0040925c hellfrui:hellfrui.dll + 0004:00000260 __imp__UiDrawDescCallback@32 00409260 hellfrui:hellfrui.dll + 0004:00000264 __imp__UiMessageBoxCallback@16 00409264 hellfrui:hellfrui.dll + 0004:00000268 __imp__UiSoundCallback@12 00409268 hellfrui:hellfrui.dll + 0004:0000026c __imp__UiAuthCallback@28 0040926c hellfrui:hellfrui.dll + 0004:00000270 __imp__UiGetDataCallback@20 00409270 hellfrui:hellfrui.dll + 0004:00000274 __imp__UiSelectProvider@24 00409274 hellfrui:hellfrui.dll + 0004:00000278 __imp__UiOnPaint@4 00409278 hellfrui:hellfrui.dll + 0004:0000027c \177hellfrui_NULL_THUNK_DATA 0040927c hellfrui:hellfrui.dll + 0004:00000280 __imp__SFileSetBasePath@4 00409280 storm:storm.dll + 0004:00000284 __imp__StormDestroy@0 00409284 storm:storm.dll + 0004:00000288 __imp__SDrawGetFrameWindow@4 00409288 storm:storm.dll + 0004:0000028c __imp__SNetSelectGame@24 0040928c storm:storm.dll + 0004:00000290 __imp__SFileEnableDirectAccess@4 00409290 storm:storm.dll + 0004:00000294 __imp__SDrawAutoInitialize@32 00409294 storm:storm.dll + 0004:00000298 __imp__SDrawMessageBox@12 00409298 storm:storm.dll + 0004:0000029c __imp__SMsgRegisterMessage@12 0040929c storm:storm.dll + 0004:000002a0 \177storm_NULL_THUNK_DATA 004092a0 storm:storm.dll + + entry point at 0001:000002c0 + + Static symbols + + 0001:000026c0 _flsall 004036c0 f LIBCMT:fflush.obj + 0001:00001440 __unwind_handler 00402440 f LIBCMT:exsup.obj + 0001:00000fe0 _getSystemCP 00401fe0 f LIBCMT:mbctype.obj + 0001:00001030 _CPtoLCID 00402030 f LIBCMT:mbctype.obj + 0001:00001090 _setSBCS 00402090 f LIBCMT:mbctype.obj + 0001:00000a50 _parse_cmdline 00401a50 f LIBCMT:stdargv.obj + 0001:00000880 _x_ismbbtype 00401880 f LIBCMT:ismbbyte.obj + 0001:00000820 _xcptlookup 00401820 f LIBCMT:winxfltr.obj + 0001:00000510 _doexit 00401510 f LIBCMT:crt0dat.obj + 0001:000005f0 __initterm 004015f0 f LIBCMT:crt0dat.obj + +FIXUPS: 14b6 12 12 20 1a 73 12 c 2e 10 fffffd35 b 8 b f 5 10 19 8 5 5 2b +FIXUPS: 140e 9 13 10 40 a efd 21 25 fffffd16 12 9d fffffc3e d 19 c3 31 +FIXUPS: 1efe 7 14 7c 35 f9 fffffc35 25 55 fffffc7f 14 10 1c fffffec8 1a +FIXUPS: 193d 10 44 fffffed9 fffffdac 10 145e 34 e c fffffefb 13 17 a d +FIXUPS: 2856 10 a 23 a 64 2f 41 2f fffffc6d 18 d8 ae fffffdc8 d 11 2f 25 +FIXUPS: 2434 ffffffc6 fffffee8 19 20 14cd 23 fffffdfc 1d 4b 44 1d 2a 1e +FIXUPS: 3735 1a 14 fffffe04 32 2b 23 fffffe9d 1f 13 6b e fffff8fe cd 60 +FIXUPS: 2f95 169 fffffa3d e c 3f fffffea8 33 1126 b d b 20 19 c d 20 24 +FIXUPS: 38fc 13 b d b 7e cb b 1a 36 b fffffd82 13 23 7 f e fffffee0 9 b +FIXUPS: 37d1 b ffffd890 7 27 14 10 5 7d 1b 5e 21 1e 17 c 5 2cb8 d 3a ffffff13 +FIXUPS: 3e5d 1d d d 1d 10 fffffe56 b 4e b 44 1e fffffe98 ffffff17 diff --git a/Uisrc/RELEASE/DIABLOUI.PCH b/Uisrc/RELEASE/DIABLOUI.PCH new file mode 100644 index 0000000..c805464 Binary files /dev/null and b/Uisrc/RELEASE/DIABLOUI.PCH differ diff --git a/Uisrc/RELEASE/STANDARD.LIB b/Uisrc/RELEASE/STANDARD.LIB new file mode 100644 index 0000000..7d6fc5f Binary files /dev/null and b/Uisrc/RELEASE/STANDARD.LIB differ diff --git a/Uisrc/RELEASE/TESTUI.OBJ b/Uisrc/RELEASE/TESTUI.OBJ new file mode 100644 index 0000000..62ef1bb Binary files /dev/null and b/Uisrc/RELEASE/TESTUI.OBJ differ diff --git a/Uisrc/RELEASE/VC50.IDB b/Uisrc/RELEASE/VC50.IDB new file mode 100644 index 0000000..e49812d Binary files /dev/null and b/Uisrc/RELEASE/VC50.IDB differ diff --git a/Uisrc/SCLASS.H b/Uisrc/SCLASS.H new file mode 100644 index 0000000..0e1c039 --- /dev/null +++ b/Uisrc/SCLASS.H @@ -0,0 +1,158 @@ +#ifndef _STORM_SCLASS_H_ +#define _STORM_SCLASS_H_ + +extern "C++" { + +/**************************************************************************** +* +* CCRITSECT -- Critical section class +* +***/ + +class CCritSect { + private: + CRITICAL_SECTION m_critsect; + public: + CCritSect () { InitializeCriticalSection(&m_critsect); } + ~CCritSect () { DeleteCriticalSection(&m_critsect); } + void inline Enter () { EnterCriticalSection(&m_critsect); } + void inline Leave () { LeaveCriticalSection(&m_critsect); } +}; + +/**************************************************************************** +* +* CLOCK -- Lock class +* +***/ + +class CLock { + private: + SSYNCLOCK m_lock; + public: + CLock () { SSyncInitializeLock(&m_lock); } + ~CLock () { SSyncDeleteLock(&m_lock); } + void inline Enter (BOOL forwriting) { SSyncEnterLock(&m_lock,forwriting); } + void inline Leave (BOOL fromwriting) { SSyncLeaveLock(&m_lock,fromwriting); } +}; + +/**************************************************************************** +* +* TLIST -- Linked list function templates +* +***/ + +//=========================================================================== +template +BOOL inline TListAdd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = *head; + *head = newptr; + return 1; +} +#define LISTADD(a,b) TListAdd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddEnd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = NULL; + + T **next = head; + while (*next) + next = &(*next)->next; + *next = newptr; + + return 1; +} +#define LISTADDEND(a,b) TListAddEnd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddPtr (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = *head; + *head = ptr; + return 1; +} +#define LISTADDPTR(a,b) TListAddPtr(a,b) + +//=========================================================================== +template +BOOL inline TListAddPtrEnd (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = NULL; + T **next = head; + while (*next) + next = &(*next)->next; + *next = ptr; + + return 1; +} +#define LISTADDPTREND(a,b) TListAddPtrEnd(a,b) + +//=========================================================================== +template +BOOL inline TListClear (T **head, LPCSTR filename = NULL, int linenumber = 0) { + if (!head) + return 0; + + while (*head) { + T *next = (*head)->next; + SMemFree(*head,filename,linenumber); + *head = next; + } + return 1; +} +#define LISTCLEAR(a) TListClear(a,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFree (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + SMemFree(ptr,filename,linenumber); + return (*next != NULL); +} +#define LISTFREE(a,b) TListFree(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFreePtr (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + return (*next != NULL); +} +#define LISTFREEPTR(a,b) TListFreePtr(a,b,(LPCSTR)__FILE__,__LINE__) + +} // extern "C++" +#endif // ifndef _STORM_SCLASS_H_ diff --git a/Uisrc/STANDARD/DEBUG/STANDARD.LIB b/Uisrc/STANDARD/DEBUG/STANDARD.LIB new file mode 100644 index 0000000..7d6fc5f Binary files /dev/null and b/Uisrc/STANDARD/DEBUG/STANDARD.LIB differ diff --git a/Uisrc/STANDARD/RELEASE/STANDARD.LIB b/Uisrc/STANDARD/RELEASE/STANDARD.LIB new file mode 100644 index 0000000..7d6fc5f Binary files /dev/null and b/Uisrc/STANDARD/RELEASE/STANDARD.LIB differ diff --git a/Uisrc/STORM.H b/Uisrc/STORM.H new file mode 100644 index 0000000..0561112 --- /dev/null +++ b/Uisrc/STORM.H @@ -0,0 +1,1342 @@ +#ifndef _STORM_H_ +#define _STORM_H_ + +/**************************************************************************** +* +* BitBlt functions +* +***/ + +extern "C" BOOL APIENTRY SBltDestroy (); +extern "C" BOOL APIENTRY SBltGetSCode (DWORD rop3, + LPSTR buffer, + DWORD buffersize, + BOOL optimize = 1); +extern "C" BOOL APIENTRY SBltROP3 (LPBYTE dest, + LPBYTE source, + int width, + int height, + int destcx, + int sourcecx, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Clipped (LPBYTE dest, + LPRECT destrect, + LPSIZE destsize, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + LPSIZE sourcesize, + int sourcepitch, + DWORD pattern, + DWORD rop3); +extern "C" BOOL APIENTRY SBltROP3Tiled (LPBYTE dest, + LPRECT destrect, + int destpitch, + LPBYTE source, + LPRECT sourcerect, + int sourcepitch, + int sourceoffsetx, + int sourceoffsety, + DWORD pattern, + DWORD rop3); + +/**************************************************************************** +* +* Bitmap functions +* +***/ + +#define SBMP_IMAGETYPE_BMP 1 +#define SBMP_IMAGETYPE_PCX 2 + +extern "C" BOOL APIENTRY SBmpDecodeImage (DWORD imagetype, + LPBYTE imagedata, + DWORD imagebytes, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width, + int *height, + int *bitdepth); +extern "C" BOOL APIENTRY SBmpDestroy (); +extern "C" BOOL APIENTRY SBmpLoadImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + DWORD buffersize, + int *width = NULL, + int *height = NULL, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SBmpSaveImage (LPCTSTR filename, + LPPALETTEENTRY paletteentries, + LPBYTE bitmapbits, + int width, + int height, + int bitdepth); + +/**************************************************************************** +* +* S-Code functions +* +***/ + +#define SCODE_CF_AUTOALIGNDWORD 0x00040000 +#define SCODE_CF_USESALTADJUSTS 0x04000000 + +typedef struct _HSCODESTREAM { int unused; } *HSCODESTREAM; + +typedef struct _SCODEEXECUTEDATA { + DWORD size; + DWORD flags; + int xiterations; + int yiterations; + int adjustdest; + int adjustsource; + LPVOID dest; + LPVOID source; + LPVOID table; + DWORD a; + DWORD b; + DWORD c; + int adjustdestalt; + int adjustsourcealt; + DWORD reserved[2]; +} SCODEEXECUTEDATA, *SCODEEXECUTEDATAPTR; + +extern "C" BOOL APIENTRY SCodeCompile (LPCSTR prologstring, + LPCSTR loopstring, + LPCSTR *firsterror, + DWORD maxiterations, + DWORD flags, + HSCODESTREAM *handle); +extern "C" BOOL APIENTRY SCodeDelete (HSCODESTREAM handle); +extern "C" BOOL APIENTRY SCodeDestroy (); +extern "C" BOOL APIENTRY SCodeExecute (HSCODESTREAM handle, + SCODEEXECUTEDATAPTR executedata); +extern "C" BOOL APIENTRY SCodeGetJumpTable (HSCODESTREAM handle, + LPBYTE **jumptableptr, + LPDWORD *prologpatchlocation, + LPDWORD *looppatchlocation, + LPDWORD *epilogpatchlocation); +extern "C" BOOL APIENTRY SCodeGetPseudocode (LPCSTR scodestring, + LPSTR buffer, + DWORD buffersize); + +/**************************************************************************** +* +* Dialog box functions +* +***/ + +#define SDLG_ADJUST_NONE 0 +#define SDLG_ADJUST_VERTICAL 1 +#define SDLG_ADJUST_CONTROLPOS 2 + +#define SDLG_DBF_TILE 0x00000001 +#define SDLG_DBF_VCENTER 0x00000002 + +#define SDLG_STYLE_ANY 0xFFFFFFFF +#define SDLG_STYLE_ANYPUSHBUTTON 0x00010001 + +#define SDLG_USAGE_BACKGROUND 0x00000001 +#define SDLG_USAGE_NORMAL_UNFOCUSED 0x00000010 +#define SDLG_USAGE_NORMAL_FOCUSED 0x00000020 +#define SDLG_USAGE_NORMAL (SDLG_USAGE_NORMAL_UNFOCUSED | SDLG_USAGE_NORMAL_FOCUSED) +#define SDLG_USAGE_SELECTED_UNFOCUSED 0x00000040 +#define SDLG_USAGE_SELECTED_FOCUSED 0x00000080 +#define SDLG_USAGE_SELECTED (SDLG_USAGE_SELECTED_UNFOCUSED | SDLG_USAGE_SELECTED_FOCUSED) +#define SDLG_USAGE_NORMAL_GRAYED 0x00000100 +#define SDLG_USAGE_SELECTED_GRAYED 0x00000400 +#define SDLG_USAGE_GRAYED (SDLG_USAGE_NORMAL_GRAYED | SDLG_USAGE_SELECTED_GRAYED) +#define SDLG_USAGE_CURSORMASK 0x00001000 +#define SDLG_USAGE_CURSORIMAGE 0x00002000 + +extern "C" HDC APIENTRY SDlgBeginPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgBltToWindow (HWND window, + HRGN region, + int x, + int y, + LPBYTE bitmapbits, + LPRECT bitmaprect, + LPSIZE bitmapsize, + DWORD colorkey = 0xFFFFFFFF, + DWORD pattern = 0, + DWORD rop3 = SRCCOPY); +extern "C" BOOL APIENTRY SDlgCheckTimers (); +extern "C" HWND APIENTRY SDlgCreateDialogIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" HWND APIENTRY SDlgCreateDialogParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDefDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam); +extern "C" BOOL APIENTRY SDlgDestroy (); +extern "C" int APIENTRY SDlgDialogBoxIndirectParam (HINSTANCE instance, + LPCDLGTEMPLATE templatedata, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" int APIENTRY SDlgDialogBoxParam (HINSTANCE instance, + LPCTSTR templatename, + HWND parentwindow, + DLGPROC dialogproc, + LPARAM initparam); +extern "C" BOOL APIENTRY SDlgDrawBitmap (HWND window, + DWORD usage, + HRGN region, + int offsetx = 0, + int offsety = 0, + LPRECT boundingoffset = NULL, + DWORD flags = 0); +extern "C" BOOL APIENTRY SDlgEndDialog (HWND window, + int result); +extern "C" BOOL APIENTRY SDlgEndPaint (HWND window, LPPAINTSTRUCT ps); +extern "C" BOOL APIENTRY SDlgKillTimer (HWND window, + UINT event); +extern "C" BOOL APIENTRY SDlgSetBaseFont (int pointsize, + int weight, + DWORD flags, + DWORD family, + LPCTSTR face); +extern "C" BOOL APIENTRY SDlgSetBitmap (HWND window, + HWND parentwindow, + LPCTSTR controltype, + DWORD controlstyle, + DWORD usage, + LPBYTE bitmapbits, + LPRECT rect, + int width, + int height, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetControlBitmaps (HWND parentwindow, + LPINT controllist, + LPDWORD usagelist, + LPBYTE bitmapbits, + LPSIZE bitmapsize, + DWORD adjusttype, + COLORREF colorkey = 0xFFFFFFFF); +extern "C" BOOL APIENTRY SDlgSetCursor (HWND window, + HCURSOR cursor, + DWORD id, + HCURSOR *oldcursor); +extern "C" BOOL APIENTRY SDlgSetSystemCursor (LPBYTE maskbitmap, + LPBYTE imagebitmap, + LPSIZE size, + DWORD id = 32512); +extern "C" BOOL APIENTRY SDlgSetTimer (HWND window, + UINT event, + UINT elapse, + TIMERPROC timerfunc); +extern "C" BOOL APIENTRY SDlgUpdateCursor (); + +#define SDlgCreateDialog(ins,tpl,wnd,prc) SDlgCreateDialogParam(ins,tpl,wnd,prc,0) +#define SDlgCreateDialogIndirect(ins,tpl,wnd,prc) SDlgCreateDialogIndirectParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBox(ins,tpl,wnd,prc) SDlgDialogBoxParam(ins,tpl,wnd,prc,0) +#define SDlgDialogBoxIndirect(ins,tpl,wnd,prc) SDlgDialogBoxIndirectParam(ins,tpl,wnd,prc,0) + +/**************************************************************************** +* +* DirectDraw functions +* +***/ + +#define SDRAW_SERVICE_BASIC 1 +#define SDRAW_SERVICE_PAGEFLIP 2 +#define SDRAW_SERVICE_DOUBLEBUFFER 3 +#define SDRAW_SERVICE_MAX 3 + +#define SDRAW_SURFACE_FRONT 0 +#define SDRAW_SURFACE_BACK 1 +#define SDRAW_SURFACE_SYSTEM 2 +#define SDRAW_SURFACE_TEMPORARY 3 + +extern "C" BOOL APIENTRY SDrawAutoInitialize (HINSTANCE instance, + LPCTSTR classname, + LPCTSTR title, + WNDPROC wndproc = NULL, + int servicelevel = SDRAW_SERVICE_BASIC, + int width = 640, + int height = 480, + int bitdepth = 8); +extern "C" BOOL APIENTRY SDrawCaptureScreen (LPCTSTR filename = NULL); +extern "C" BOOL APIENTRY SDrawClearSurface (int surfacenumber); +extern "C" BOOL APIENTRY SDrawDestroy (); +extern "C" BOOL APIENTRY SDrawFlipPage (); +extern "C" HWND APIENTRY SDrawGetFrameWindow (HWND *window = NULL); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawGetObjects (LPDIRECTDRAW *directdraw, + LPDIRECTDRAWSURFACE *frontbuffer, + LPDIRECTDRAWSURFACE *backbuffer, + LPDIRECTDRAWSURFACE *systembuffer, + LPDIRECTDRAWSURFACE *temporarybuffer, + LPDIRECTDRAWPALETTE *palette, + HPALETTE *gdipalette); +#endif +extern "C" BOOL APIENTRY SDrawGetScreenSize (int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SDrawGetServiceLevel (int *servicelevel = NULL); +extern "C" BOOL APIENTRY SDrawLockSurface (int surfacenumber, + LPCRECT rect, + LPBYTE *ptr, + int *pitch = NULL, + DWORD flags = 0); +#ifdef __DDRAW_INCLUDED__ +extern "C" BOOL APIENTRY SDrawManualInitialize (HWND framewindow, + LPDIRECTDRAW directdraw, + LPDIRECTDRAWSURFACE frontbuffer, + LPDIRECTDRAWSURFACE backbuffer, + LPDIRECTDRAWSURFACE systembuffer, + LPDIRECTDRAWSURFACE temporarybuffer, + LPDIRECTDRAWPALETTE palette, + HPALETTE gdipalette); +#endif +extern "C" BOOL APIENTRY SDrawMessageBox (LPCTSTR text, + LPCTSTR title, + UINT flags); +extern "C" BOOL APIENTRY SDrawPostClose (); +extern "C" BOOL APIENTRY SDrawRealizePalette (); +extern "C" BOOL APIENTRY SDrawSelectGdiSurface (BOOL select, BOOL copy); +extern "C" BOOL APIENTRY SDrawUnlockSurface (int surfacenumber, + LPBYTE ptr, + DWORD numrects = 0, + LPCRECT rectarray = NULL); +extern "C" BOOL APIENTRY SDrawUpdatePalette (DWORD firstentry, + DWORD numentries, + LPPALETTEENTRY entries, + BOOL reservedentries = 0); +extern "C" BOOL APIENTRY SDrawUpdateScreen (LPCRECT rect); + +/**************************************************************************** +* +* Event dispatching functions +* +***/ + +typedef void (CALLBACK *SEVTHANDLER)(LPVOID); + +extern "C" BOOL APIENTRY SEvtDestroy (); +extern "C" BOOL APIENTRY SEvtDispatch (DWORD type, + DWORD subtype, + DWORD id, + LPVOID data); +extern "C" BOOL APIENTRY SEvtRegisterHandler (DWORD type, + DWORD subtype, + DWORD id, + DWORD flags, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterHandler (DWORD type, + DWORD subtype, + DWORD id, + SEVTHANDLER handler); +extern "C" BOOL APIENTRY SEvtUnregisterType (DWORD type, + DWORD subtype); + +/**************************************************************************** +* +* File I/O functions +* +***/ + +#define SFILE_AUTH_UNABLETOAUTHENTICATE 0 +#define SFILE_AUTH_NOSIGNATURE 1 +#define SFILE_AUTH_BADSIGNATURE 2 +#define SFILE_AUTH_UNKNOWNSIGNATURE 3 +#define SFILE_AUTH_FIRSTAUTHENTIC 5 +#define SFILE_AUTH_AUTHENTICBLIZZARD 5 + +#define SFILE_DDA_LOOP 0x00040000 + +#define SFILE_ERROR_BASE 0x21030000 +#define SFILE_ERROR_BAD_FORMAT ERROR_BAD_FORMAT +#define SFILE_ERROR_BAD_PATHNAME ERROR_BAD_PATHNAME +#define SFILE_ERROR_CALL_NOT_IMPLEMENTED ERROR_CALL_NOT_IMPLEMENTED +#define SFILE_ERROR_FILE_INVALID ERROR_FILE_INVALID +#define SFILE_ERROR_FILE_NOT_FOUND ERROR_FILE_NOT_FOUND +#define SFILE_ERROR_HANDLE_EOF ERROR_HANDLE_EOF +#define SFILE_ERROR_INVALID_DATA ERROR_INVALID_DATA +#define SFILE_ERROR_INVALID_DRIVE ERROR_INVALID_DRIVE +#define SFILE_ERROR_INVALID_HANDLE ERROR_INVALID_HANDLE +#define SFILE_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SFILE_ERROR_NOT_ARCHIVE (SFILE_ERROR_BASE+1) +#define SFILE_ERROR_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define SFILE_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SFILE_ERROR_NOT_IN_ARCHIVE (SFILE_ERROR_BASE+2) +#define SFILE_ERROR_NOT_PLAYING (SFILE_ERROR_BASE+3) + +#define SFILE_FIND_FILES 0x00000001 +#define SFILE_FIND_DIRECTORIES 0x00000002 + +typedef struct _HSARCHIVE { int unused; } *HSARCHIVE; +typedef struct _HSFILE { int unused; } *HSFILE; +typedef struct _HSFINDFILE { int unused; } *HSFINDFILE; + +extern "C" BOOL APIENTRY SFileAuthenticateArchive (HSARCHIVE archive, + DWORD *extendedresult); +extern "C" BOOL APIENTRY SFileCloseArchive (HSARCHIVE handle); +extern "C" BOOL APIENTRY SFileCloseFile (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaBegin (HSFILE handle, + DWORD buffersize, + DWORD flags); +extern "C" BOOL APIENTRY SFileDdaBeginEx (HSFILE handle, + DWORD buffersize, + DWORD flags, + DWORD offset, + LONG volume, + LONG pan, + LPVOID reserved); +extern "C" BOOL APIENTRY SFileDdaDestroy (); +extern "C" BOOL APIENTRY SFileDdaEnd (HSFILE handle); +extern "C" BOOL APIENTRY SFileDdaGetPos (HSFILE handle, + DWORD *position, + DWORD *maxposition); +extern "C" BOOL APIENTRY SFileDdaGetVolume (HSFILE handle, + LONG *volume, + LONG *pan); +#ifdef __DSOUND_INCLUDED__ +extern "C" BOOL APIENTRY SFileDdaInitialize (LPDIRECTSOUND directsound); +#endif +extern "C" BOOL APIENTRY SFileDdaSetVolume (HSFILE handle, + LONG volume, + LONG pan); +extern "C" BOOL APIENTRY SFileDestroy (); +extern "C" BOOL APIENTRY SFileEnableDirectAccess (BOOL enable); +extern "C" BOOL APIENTRY SFileGetFileArchive (HSFILE file, + HSARCHIVE *archive); +extern "C" DWORD APIENTRY SFileGetFileSize (HSFILE handle, + LPDWORD filesizehigh = NULL); +extern "C" BOOL APIENTRY SFileOpenArchive (LPCTSTR archivename, + int priority, + BOOL cdonly, + HSARCHIVE *handle); +extern "C" BOOL APIENTRY SFileOpenFile (LPCTSTR filename, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileOpenFileEx (HSARCHIVE archivehandle, + LPCTSTR filename, + DWORD flags, + HSFILE *handle); +extern "C" BOOL APIENTRY SFileOpenFileWin32 (LPCTSTR filename, + HANDLE *handle); +extern "C" BOOL APIENTRY SFileReadFile (HSFILE handle, + LPVOID buffer, + DWORD bytestoread, + LPDWORD bytesread = NULL, + LPVOID reserved = NULL); +extern "C" BOOL APIENTRY SFileSetBasePath (LPCTSTR path); +extern "C" DWORD APIENTRY SFileSetFilePointer (HSFILE handle, + LONG distancetomove, + PLONG distancetomovehigh, + DWORD movemethod); +extern "C" BOOL APIENTRY SFileSetLocale (LCID lcid); + +/**************************************************************************** +* +* GDI functions +* +***/ + +#define ETO_TEXT_TRANSPARENT 0 +#define ETO_TEXT_COLOR 1 +#define ETO_TEXT_BLACK 2 +#define ETO_TEXT_WHITE 3 +#define ETO_BKG_TRANSPARENT 0 +#define ETO_BKG_COLOR 1 +#define ETO_BKG_BLACK 2 +#define ETO_BKG_WHITE 3 + +typedef struct _HSGDIOBJ { int unused; } *HSGDIOBJ; +typedef struct _HSGDIFONT : public _HSGDIOBJ { int unused; } *HSGDIFONT; + +extern "C" BOOL APIENTRY SGdiBitBlt (LPBYTE videobuffer, + int destx, + int desty, + LPBYTE sourcedata, + LPRECT sourcerect, + int sourcecx, + int sourcecy, + COLORREF color = 0, + DWORD rop = SRCCOPY); +extern "C" BOOL APIENTRY SGdiCreateFont (LPBYTE bits, + int width, + int height, + int bitdepth, + int filecharwidth, + int filecharheight, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiDeleteObject (HSGDIOBJ handle); +extern "C" BOOL APIENTRY SGdiDestroy (); +extern "C" BOOL APIENTRY SGdiExtTextOut (LPBYTE videobuffer, + int x, + int y, + LPRECT rect, + COLORREF color, + int textcoloruse, + int bkgcoloruse, + LPCTSTR string, + int chars = -1); +extern "C" BOOL APIENTRY SGdiImportFont (HFONT windowsfont, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiLoadFont (LPCTSTR filename, + int filecharwidth, + int filecharheight, + int basecharwidth, + LPSIZE charsizetable, + HSGDIFONT *handle); +extern "C" BOOL APIENTRY SGdiRectangle (LPBYTE videobuffer, + int left, + int top, + int right, + int bottom, + COLORREF color); +extern "C" BOOL APIENTRY SGdiSelectObject (HSGDIOBJ handle); +extern "C" BOOL APIENTRY SGdiSetPitch (int pitch); +extern "C" BOOL APIENTRY SGdiTextOut (LPBYTE videobuffer, + int x, + int y, + COLORREF color, + LPCTSTR string, + int chars = -1); + +/**************************************************************************** +* +* Memory allocation functions +* +***/ + +#define SMEM_FLAG_ZEROMEMORY 0x00000008 + +extern "C" LPVOID APIENTRY SMemAlloc (DWORD bytes, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +extern "C" BOOL APIENTRY SMemDestroy (); +extern "C" BOOL APIENTRY SMemFree (LPVOID ptr, + LPCSTR filename = NULL, + int linenumber = 0, + DWORD flags = 0); +extern "C" void APIENTRY SMemInitialize (); + +#define ALLOC(bytes) SMemAlloc(bytes,__FILE__,__LINE__,0) +#define ALLOCZERO(bytes) SMemAlloc(bytes,__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY) +#define FREE(ptr) SMemFree(ptr,__FILE__,__LINE__,0) +#define NEW(struct) (struct *)SMemAlloc(sizeof(struct),__FILE__,__LINE__,0) +#define NEWZERO(struct) (struct *)SMemAlloc(sizeof(struct),__FILE__,__LINE__,SMEM_FLAG_ZEROMEMORY) + +/**************************************************************************** +* +* Message functions +* +***/ + +typedef struct _PARAMS { + HWND window; + UINT message; + WPARAM wparam; + LPARAM lparam; + UINT notifycode; + LPVOID extra; + BOOL useresult; + LRESULT result; +} PARAMS, *PARAMSPTR, *LPPARAMS; + +typedef BOOL (CALLBACK *SMSGIDLEPROC)(DWORD); +typedef void (CALLBACK *SMSGHANDLER)(LPPARAMS); + +extern "C" BOOL APIENTRY SMsgDestroy (); +extern "C" BOOL APIENTRY SMsgDispatchMessage (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam, + BOOL *useresult, + LRESULT *result); +extern "C" BOOL APIENTRY SMsgDoMessageLoop (SMSGIDLEPROC idleproc = NULL, + BOOL cleanuponquit = 1); +extern "C" BOOL APIENTRY SMsgRegisterCommand (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyDown (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterKeyUp (HWND window, + UINT id, + SMSGHANDLER handler); +extern "C" BOOL APIENTRY SMsgRegisterMessage (HWND window, + UINT id, + SMSGHANDLER handler); + +/**************************************************************************** +* +* Networking functions +* +***/ + +#define SNET_ART_BACKGROUND 0 +#define SNET_ART_BUTTONTEXTURE 1 +#define SNET_ART_JOINBACKGROUND 2 +#define SNET_ART_HELPBACKGROUND 3 +#define SNET_ART_POPUPBACKGROUND 4 +#define SNET_ART_BUTTON_XSML 5 +#define SNET_ART_BUTTON_SML 6 +#define SNET_ART_BUTTON_MED 7 +#define SNET_ART_BUTTON_LRG 8 +#define SNET_ART_APP_LOGO_SML 9 +#define SNET_ART_PROGRESS_BACKGROUND 10 +#define SNET_ART_PROGRESS_FILLER 11 +#define SNET_ART_POPUPBACKGROUND_SML 12 +#define SNET_ART_SCROLLBARARROWS 13 +#define SNET_ART_SCROLLTHUMB 14 +#define SNET_ART_SCROLLBAR 15 + +#define SNET_AUTHTYPE_CHANNEL 1 +#define SNET_AUTHTYPE_GAME 2 + +#define SNET_BROADCASTNONLOCALPLAYERID 0xFFFFFFFE +#define SNET_BROADCASTPLAYERID 0xFFFFFFFF +#define SNET_INVALIDPLAYERID 0xFFFFFFFF + +#define SNET_CAPS_PAGELOCKEDBUFFERS 0x00000001 +#define SNET_CAPS_BASICINTERFACE 0x00000002 + +#define SNET_CF_ALLOWPRIVATEGAMES 0x00000001 + +#define SNET_DATA_SYSCOLORS 1 +#define SNET_DATA_CURSORLINK 2 +#define SNET_DATA_CURSORARROW 3 +#define SNET_DATA_CURSORIBEAM 4 + +#define SNET_DDF_INCLUDENAME 0x00000001 +#define SNET_DDF_MULTILINE 0x00000002 + +#define SNET_DDPF_BLIZZARD 0x00000001 +#define SNET_DDPF_MODERATOR 0x00000002 +#define SNET_DDPF_SPEAKER 0x00000004 +#define SNET_DDPF_SYSOP 0x00000008 +#define SNET_DDPF_SQUELCHED 0x00000020 + +#define SNET_DRAWTYPE_GAME 1 +#define SNET_DRAWTYPE_PLAYER 2 + +#define SNET_ERROR_BASE 0x21050000 +#define SNET_ERROR_ALREADY_EXISTS ERROR_ALREADY_EXISTS +#define SNET_ERROR_BAD_PROVIDER ERROR_BAD_PROVIDER +#define SNET_ERROR_CANCELLED ERROR_CANCELLED +#define SNET_ERROR_INVALID_PARAMETER ERROR_INVALID_PARAMETER +#define SNET_ERROR_INVALID_PLAYER (SNET_ERROR_BASE+1) +#define SNET_ERROR_GAME_ALREADY_STARTED (SNET_ERROR_BASE+2) +#define SNET_ERROR_GAME_FULL (SNET_ERROR_BASE+3) +#define SNET_ERROR_GAME_NOT_FOUND (SNET_ERROR_BASE+4) +#define SNET_ERROR_GAME_TERMINATED (SNET_ERROR_BASE+5) +#define SNET_ERROR_HOST_UNREACHABLE ERROR_HOST_UNREACHABLE +#define SNET_ERROR_MAX_THRDS_REACHED ERROR_MAX_THRDS_REACHED +#define SNET_ERROR_NETWORK_BUSY ERROR_NETWORK_BUSY +#define SNET_ERROR_NO_MESSAGES_WAITING (SNET_ERROR_BASE+6) +#define SNET_ERROR_NO_NETWORK ERROR_NO_NETWORK +#define SNET_ERROR_NOT_CONNECTED ERROR_NOT_CONNECTED +#define SNET_ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define SNET_ERROR_NOT_IMPLEMENTED (SNET_ERROR_BASE+7) +#define SNET_ERROR_NOT_IN_GAME (SNET_ERROR_BASE+8) +#define SNET_ERROR_NOT_OWNER ERROR_NOT_OWNER +#define SNET_ERROR_NOT_REGISTERED (SNET_ERROR_BASE+9) +#define SNET_ERROR_REQUIRES_UPGRADE (SNET_ERROR_BASE+10) +#define SNET_ERROR_STILL_ACTIVE (SNET_ERROR_BASE+11) +#define SNET_ERROR_TOO_MANY_NAMES ERROR_TOO_MANY_NAMES +#define SNET_ERROR_VERSION_MISMATCH (SNET_ERROR_BASE+12) + +#define SNET_EVENT_INITDATA 1 +#define SNET_EVENT_PLAYERJOIN 2 +#define SNET_EVENT_PLAYERLEAVE 3 +#define SNET_EVENT_SERVERMESSAGE 4 + +#define SNET_EXIT_AUTO_JOINING 0x00000001 +#define SNET_EXIT_AUTO_NEWGAME 0x00000002 +#define SNET_EXIT_AUTO_SHUTDOWN 0x00000003 +#define SNET_EXIT_PLAYERQUIT 0x40000001 +#define SNET_EXIT_PLAYERKILLED 0x40000002 +#define SNET_EXIT_PLAYERWON 0x40000004 +#define SNET_EXIT_GAMEOVER 0x40000005 +#define SNET_EXIT_NOTRESPONDING 0x40000006 + +#define SNET_GM_PRIVATE 0x00000001 +#define SNET_GM_FULL 0x00000002 +#define SNET_GM_ADVERTISED 0x00000004 + +#define SNET_INFO_GAMENAME 1 +#define SNET_INFO_GAMEPASSWORD 2 +#define SNET_INFO_GAMEDESCRIPTION 3 +#define SNET_INFO_GAMEMODE 4 +#define SNET_INFO_INITDATA 5 +#define SNET_INFO_MAXPLAYERS 6 + +#define SNET_LMT_EXPECTED 1 +#define SNET_LMT_CURRENT 2 +#define SNET_LMT_PEAK 4 + +#define SNET_PERFID_TURN 1 +#define SNET_PERFID_TURNSSENT 4 +#define SNET_PERFID_TURNSRECV 5 +#define SNET_PERFID_MSGSENT 6 +#define SNET_PERFID_MSGRECV 7 +#define SNET_PERFID_USERBYTESSENT 8 +#define SNET_PERFID_USERBYTESRECV 9 +#define SNET_PERFID_TOTALBYTESSENT 10 +#define SNET_PERFID_TOTALBYTESRECV 11 +#define SNET_PERFID_PKTSENTONWIRE 12 +#define SNET_PERFID_PKTRECVONWIRE 13 +#define SNET_PERFID_BYTESSENTONWIRE 14 +#define SNET_PERFID_BYTESRECVONWIRE 15 +#define SNET_PERFIDNUM 16 + +#define SNET_PERFTYPE_COUNTER 0x10410400 +#define SNET_PERFTYPE_RAWCOUNT 0x00010000 + +#define SNET_PSF_ACTIVE 0x00010000 +#define SNET_PSF_TURNAVAILABLE 0x00020000 +#define SNET_PSF_RESPONDING 0x00040000 + +#define SNET_SF_ALLOWCREATE 0x00000001 + +#define SNET_SND_CHANGEFOCUS 0 +#define SNET_SND_SELECTITEM 1 + +#define SNET_UPGRADE_FAILED -1 +#define SNET_UPGRADE_NOT_NEEDED 0 +#define SNET_UPGRADE_SUCCEEDED 1 +#define SNET_UPGRADING_TERMINATE 2 + +#define SNET_MAXNAMELENGTH 128 +#define SNET_MAXDESCLENGTH 128 + +typedef struct _SNETCAPS { + DWORD size; + DWORD flags; + DWORD maxmessagesize; + DWORD maxqueuesize; + DWORD maxplayers; + DWORD bytessec; + DWORD latencyms; + DWORD defaultturnssec; + DWORD defaultturnsintransit; +} SNETCAPS, *SNETCAPSPTR; + +typedef struct _SNETCREATEDATA { + DWORD size; + DWORD providerid; + DWORD maxplayers; + DWORD createflags; +} SNETCREATEDATA, *SNETCREATEDATAPTR; + +typedef struct _SNET_DATA_SYSCOLORTABLE { + DWORD syscolor; + COLORREF rgb; +} SNET_DATA_SYSCOLORTABLE, *SNET_DATA_SYSCOLORTABLEPTR; + +typedef struct _SNETEVENT { + DWORD eventid; + DWORD playerid; + LPVOID data; + DWORD databytes; +} SNETEVENT, *SNETEVENTPTR; + +struct _SNETPROGRAMDATA; +struct _SNETPLAYERDATA; +struct _SNETUIDATA; +struct _SNETVERSIONDATA; + +typedef BOOL (CALLBACK *SNETABORTPROC )(); +typedef BOOL (CALLBACK *SNETCATEGORYPROC )(BOOL,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *,DWORD *); +typedef BOOL (CALLBACK *SNETCHECKAUTHPROC )(DWORD,LPCSTR,LPCSTR,DWORD,LPCSTR,LPSTR,DWORD); +typedef BOOL (CALLBACK *SNETCREATEPROC )(SNETCREATEDATAPTR,_SNETPROGRAMDATA *,_SNETPLAYERDATA *,_SNETUIDATA *,_SNETVERSIONDATA *,DWORD *); +typedef BOOL (CALLBACK *SNETDRAWDESCPROC )(DWORD,DWORD,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,LPDRAWITEMSTRUCT); +typedef BOOL (CALLBACK *SNETENUMDEVICESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMGAMESPROC )(DWORD,LPCSTR,LPCSTR); +typedef BOOL (CALLBACK *SNETENUMPROVIDERSPROC)(DWORD,LPCSTR,LPCSTR,SNETCAPSPTR); +typedef void (CALLBACK *SNETEVENTPROC )(SNETEVENTPTR); +typedef BOOL (CALLBACK *SNETGETARTPROC )(DWORD,DWORD,LPPALETTEENTRY,LPBYTE,DWORD,int *,int *,int *); +typedef BOOL (CALLBACK *SNETGETDATAPROC )(DWORD,DWORD,LPVOID,DWORD,DWORD *); +typedef int (CALLBACK *SNETMESSAGEBOXPROC )(HWND,LPCSTR,LPCSTR,UINT); +typedef BOOL (CALLBACK *SNETPLAYSOUNDPROC )(DWORD,DWORD,DWORD); +typedef BOOL (CALLBACK *SNETSELECTEDPROC )(DWORD,SNETCAPSPTR,_SNETUIDATA *,_SNETVERSIONDATA *); +typedef BOOL (CALLBACK *SNETSTATUSPROC )(LPCSTR,DWORD,DWORD,DWORD,SNETABORTPROC); + +typedef struct _SNETPLAYERDATA { + DWORD size; + LPCSTR playername; + LPCSTR playerdescription; +} SNETPLAYERDATA, *SNETPLAYERDATAPTR; + +typedef struct _SNETPROGRAMDATA { + DWORD size; + LPCSTR programname; + LPCSTR programdescription; + DWORD programid; + DWORD versionid; + DWORD reserved1; + DWORD maxplayers; + LPVOID initdata; + DWORD initdatabytes; + LPVOID reserved2; + DWORD optcategorybits; +} SNETPROGRAMDATA, *SNETPROGRAMDATAPTR; + +typedef struct _SNETUIDATA { + DWORD size; + DWORD uiflags; + HWND parentwindow; + SNETGETARTPROC artcallback; + SNETCHECKAUTHPROC authcallback; + SNETCREATEPROC createcallback; + SNETDRAWDESCPROC drawdesccallback; + SNETSELECTEDPROC selectedcallback; + SNETMESSAGEBOXPROC messageboxcallback; + SNETPLAYSOUNDPROC soundcallback; + SNETSTATUSPROC statuscallback; + SNETGETDATAPROC getdatacallback; + SNETCATEGORYPROC categorycallback; +} SNETUIDATA, *SNETUIDATAPTR; + +typedef struct _SNETVERSIONDATA { + DWORD size; + LPCSTR versionstring; + LPCSTR executablefile; + LPCSTR originalarchivefile; + LPCSTR patcharchivefile; +} SNETVERSIONDATA, *SNETVERSIONDATAPTR; + +extern "C" BOOL APIENTRY SNetCreateGame (LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR gamedescription, + DWORD gamecategorybits, + LPVOID initdata, + DWORD initdatabytes, + DWORD maxplayers, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetDestroy (); +extern "C" BOOL APIENTRY SNetDropPlayer (DWORD playerid, DWORD exitcode); +extern "C" BOOL APIENTRY SNetEnumDevices (SNETENUMDEVICESPROC callback); +extern "C" BOOL APIENTRY SNetEnumGames (DWORD categorybits, + DWORD categorymask, + SNETENUMGAMESPROC callback, + DWORD *hintnextcall); +extern "C" BOOL APIENTRY SNetEnumProviders (SNETCAPSPTR mincaps, + SNETENUMPROVIDERSPROC callback); +extern "C" BOOL APIENTRY SNetGetGameInfo (DWORD index, + LPVOID buffer, + DWORD buffersize, + DWORD *byteswritten); +extern "C" BOOL APIENTRY SNetGetNetworkLatency (DWORD measurementtype, + DWORD *result); +extern "C" BOOL APIENTRY SNetGetNumPlayers (DWORD *firstplayerid, + DWORD *lastplayerid, + DWORD *activeplayers); +extern "C" BOOL APIENTRY SNetGetOwnerTurnsWaiting (DWORD *turns); +extern "C" BOOL APIENTRY SNetGetPerformanceData (DWORD counterid, + DWORD *countervalue, + DWORD *countertype, + LONG *counterscale, + LARGE_INTEGER *measurementtime, + LARGE_INTEGER *measurementfreq); +extern "C" BOOL APIENTRY SNetGetPlayerCaps (DWORD playerid, + SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetPlayerName (DWORD playerid, + LPSTR buffer, + DWORD buffersize); +extern "C" BOOL APIENTRY SNetGetProviderCaps (SNETCAPSPTR caps); +extern "C" BOOL APIENTRY SNetGetTurnsInTransit (DWORD *turns); +extern "C" BOOL APIENTRY SNetInitializeDevice (DWORD deviceid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetInitializeProvider (DWORD providerid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata); +extern "C" BOOL APIENTRY SNetJoinGame (DWORD gameid, + LPCSTR gamename, + LPCSTR gamepassword, + LPCSTR playername, + LPCSTR playerdescription, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetLeaveGame (DWORD exitcode); +extern "C" BOOL APIENTRY SNetPerformUpgrade (DWORD *upgradestatus); +extern "C" BOOL APIENTRY SNetReceiveMessage (DWORD *senderplayerid, + LPVOID *data, + DWORD *databytes); +extern "C" BOOL APIENTRY SNetReceiveTurns (DWORD firstplayerid, + DWORD arraysize, + LPVOID *arraydata, + LPDWORD arraydatabytes, + LPDWORD arrayplayerstatus); +extern "C" BOOL APIENTRY SNetRegisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); +extern "C" BOOL APIENTRY SNetResetLatencyMeasurements (); +extern "C" BOOL APIENTRY SNetSelectGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); +extern "C" BOOL APIENTRY SNetSelectProvider (SNETCAPSPTR mincaps, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *providerid); +extern "C" BOOL APIENTRY SNetSendMessage (DWORD targetplayerid, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSendTurn (LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SNetSetBasePlayer (DWORD playerid); +extern "C" BOOL APIENTRY SNetSetGameMode (DWORD modeflags); +extern "C" BOOL APIENTRY SNetUnregisterEventHandler (DWORD eventid, + SNETEVENTPROC callback); + +/**************************************************************************** +* +* Networking service provider interface +* +***/ + +#define SNETSPI_MAXSTRINGLENGTH 128 + +typedef struct _SNETADDR { + BYTE address[16]; +} SNETADDR, *SNETADDRPTR; + +typedef struct _SNETSPI_DEVICELIST { + DWORD deviceid; + SNETCAPS devicecaps; + char devicename[SNETSPI_MAXSTRINGLENGTH]; + char devicedescription[SNETSPI_MAXSTRINGLENGTH]; + DWORD reserved; + _SNETSPI_DEVICELIST *next; +} SNETSPI_DEVICELIST, *SNETSPI_DEVICELISTPTR; + +typedef struct _SNETSPI_GAMELIST { + DWORD gameid; + DWORD gamemode; + DWORD creationtime; + SNETADDR owner; + DWORD ownerlatency; + DWORD ownerlasttime; + DWORD gamecategorybits; + char gamename[SNETSPI_MAXSTRINGLENGTH]; + char gamedescription[SNETSPI_MAXSTRINGLENGTH]; + _SNETSPI_GAMELIST *next; +} SNETSPI_GAMELIST, *SNETSPI_GAMELISTPTR; + +typedef struct _SNETSPI { + DWORD size; + BOOL (CALLBACK *CompareNetAddresses)(SNETADDRPTR,SNETADDRPTR,DWORD *); + BOOL (CALLBACK *Destroy)(); + BOOL (CALLBACK *Free)(SNETADDRPTR,LPVOID,DWORD); + BOOL (CALLBACK *FreeExternalMessage)(LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *GetGameInfo)(DWORD,LPCSTR,LPCSTR,SNETSPI_GAMELIST *); + BOOL (CALLBACK *GetPerformanceData)(DWORD,DWORD *,LARGE_INTEGER *,LARGE_INTEGER *); + BOOL (CALLBACK *Initialize)(SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,HANDLE); + BOOL (CALLBACK *InitializeDevice)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR); + BOOL (CALLBACK *LockDeviceList)(SNETSPI_DEVICELISTPTR *); + BOOL (CALLBACK *LockGameList)(DWORD,DWORD,SNETSPI_GAMELISTPTR *); + BOOL (CALLBACK *Receive)(SNETADDRPTR *,LPVOID *,DWORD *); + BOOL (CALLBACK *ReceiveExternalMessage)(LPCSTR *,LPCSTR *,LPCSTR *); + BOOL (CALLBACK *SelectGame)(DWORD,SNETPROGRAMDATAPTR,SNETPLAYERDATAPTR,SNETUIDATAPTR,SNETVERSIONDATAPTR,DWORD *); + BOOL (CALLBACK *Send)(DWORD,SNETADDRPTR *,LPVOID,DWORD); + BOOL (CALLBACK *SendExternalMessage)(LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL (CALLBACK *StartAdvertisingGame)(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD); + BOOL (CALLBACK *StopAdvertisingGame)(); + BOOL (CALLBACK *UnlockDeviceList)(SNETSPI_DEVICELISTPTR); + BOOL (CALLBACK *UnlockGameList)(SNETSPI_GAMELISTPTR,DWORD *); +} SNETSPI, *SNETSPIPTR; + +typedef BOOL (APIENTRY *SNETSPIBIND )(DWORD,SNETSPIPTR *); +typedef BOOL (APIENTRY *SNETSPIQUERY)(DWORD,DWORD *,LPCSTR *,LPCSTR *,SNETCAPSPTR *); + +/**************************************************************************** +* +* Registry functions +* +***/ + +#define SREG_FLAG_USERSPECIFIC 0x00000001 +#define SREG_FLAG_BATTLENET 0x00000002 +#define SREG_FLAG_FLUSHTODISK 0x00000008 +#define SREG_FLAG_MULTISZ 0x00000080 + +extern "C" BOOL APIENTRY SRegLoadData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID buffer, + DWORD buffersize, + DWORD *bytesread); +extern "C" BOOL APIENTRY SRegLoadString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPTSTR buffer, + DWORD bufferchars); +extern "C" BOOL APIENTRY SRegLoadValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD *value); +extern "C" BOOL APIENTRY SRegSaveData (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPVOID data, + DWORD databytes); +extern "C" BOOL APIENTRY SRegSaveString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPCTSTR string); +extern "C" BOOL APIENTRY SRegSaveValue (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + DWORD value); + +/**************************************************************************** +* +* Run-time library functions +* +***/ + +#define TRY goto trylabel; trylabel: +#define LEAVE goto finallylabel +#define FINALLY goto finallylabel; finallylabel: + +/**************************************************************************** +* +* Transparency functions +* +***/ + +typedef struct _HSTRANS { int unused; } *HSTRANS; +typedef HSTRANS HTRANS; + +extern "C" BOOL APIENTRY STransBlt (LPBYTE dest, + int destx, + int desty, + int destpitch, + HSTRANS transparency); +extern "C" BOOL APIENTRY STransBltUsingMask (LPBYTE dest, + LPBYTE source, + int destpitch, + int sourcepitch, + HSTRANS mask); +extern "C" BOOL APIENTRY STransCreate (LPBYTE bits, + int width, + int height, + int bitdepth, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransDelete (HSTRANS handle); +extern "C" BOOL APIENTRY STransDestroy (); +extern "C" BOOL APIENTRY STransDuplicate (HSTRANS source, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransIntersectDirtyArray (HSTRANS sourcemask, + LPBYTE dirtyarray, + BYTE dirtyarraymask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransInvertMask (HSTRANS sourcemask, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransLoad (LPCTSTR filename, + LPRECT rect, + COLORREF colorkey, + HSTRANS *handle); +extern "C" BOOL APIENTRY STransSetDirtyArrayInfo (int screencx, + int screency, + int cellcx, + int cellcy); +extern "C" BOOL APIENTRY STransUpdateDirtyArray (LPBYTE dirtyarray, + BYTE dirtyvalue, + int destx, + int desty, + HSTRANS transparency, + BOOL tracecontour); + +/**************************************************************************** +* +* Video functions +* +***/ + +#define SVID_FLAG_DOUBLESCANS 0x00000001 +#define SVID_FLAG_INTERPOLATE 0x00000002 +#define SVID_FLAG_AUTOQUALITY 0x00000008 +#define SVID_FLAG_1XSIZE 0x00000100 +#define SVID_FLAG_2XSIZE 0x00000200 +#define SVID_FLAG_AUTOSIZE 0x00000800 +#define SVID_FLAG_FILEHANDLE 0x00010000 +#define SVID_FLAG_PRELOAD 0x00020000 +#define SVID_FLAG_LOOP 0x00040000 +#define SVID_FLAG_FULLSCREEN 0x00080000 +#define SVID_FLAG_USECURRENTPALETTE 0x00100000 +#define SVID_FLAG_CLEARSCREEN 0x00200000 +#define SVID_FLAG_TOSCREEN 0x10000000 +#define SVID_FLAG_TOBUFFER 0x20000000 + +#define SVID_CUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_2XSIZE) +#define SVID_AUTOCUTSCENE (SVID_FLAG_TOSCREEN | SVID_FLAG_FULLSCREEN | SVID_FLAG_CLEARSCREEN | SVID_FLAG_AUTOSIZE | SVID_FLAG_AUTOQUALITY) + +#define SVID_QUALITY_LOW_SKIPSCANS SVID_FLAG_2XSIZE +#define SVID_QUALITY_LOW (SVID_FLAG_2XSIZE | SVID_FLAG_DOUBLESCANS) +#define SVID_QUALITY_HIGH_SKIPSCANS (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE) +#define SVID_QUALITY_HIGH (SVID_FLAG_2XSIZE | SVID_FLAG_INTERPOLATE | SVID_FLAG_DOUBLESCANS) + +typedef struct _HSVIDEO { int unused; } *HSVIDEO; + +typedef struct _SVIDPALETTEUSE { + DWORD size; + DWORD firstentry; + DWORD numentries; +} SVIDPALETTEUSE, *SVIDPALETTEUSEPTR; + +extern "C" BOOL APIENTRY SVidDestroy (); +extern "C" BOOL APIENTRY SVidGetPerformanceData (HSVIDEO video, + BOOL averageframems, + DWORD *framems, + BOOL averagepalettems, + DWORD *palettems); +extern "C" BOOL APIENTRY SVidGetSize (HSVIDEO video, + int *width, + int *height, + int *bitdepth = NULL); +extern "C" BOOL APIENTRY SVidInitialize (LPVOID directsound); +extern "C" BOOL APIENTRY SVidPlayBegin (LPCTSTR filename, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayBeginFromMemory (LPVOID sourceptr, + DWORD sourcebytes, + LPVOID destbuffer, + LPCRECT destrect, + LPSIZE destsize, + SVIDPALETTEUSEPTR paletteuse, + DWORD flags, + HSVIDEO *handle); +extern "C" BOOL APIENTRY SVidPlayContinue (); +extern "C" BOOL APIENTRY SVidPlayContinueSingle (HSVIDEO video, + BOOL forceupdate, + BOOL *updated); +extern "C" BOOL APIENTRY SVidPlayEnd (HSVIDEO video); + +/**************************************************************************** +* +* Storm global functions +* +***/ + +extern "C" BOOL APIENTRY StormDestroy (); + +/**************************************************************************** +* +* C++ Utility Classes and Templates +* +***/ + +#ifndef __cplusplus +extern "C++" +#endif + +/**************************************************************************** +* +* CCRITSECT -- Critical section class +* +***/ + +class CCritSect { + private: + CRITICAL_SECTION m_critsect; + public: + CCritSect () { InitializeCriticalSection(&m_critsect); } + ~CCritSect () { DeleteCriticalSection(&m_critsect); } + void inline Enter () { EnterCriticalSection(&m_critsect); } + void inline Leave () { LeaveCriticalSection(&m_critsect); } +}; + +/**************************************************************************** +* +* CLOCK -- Lock class +* +***/ + +class CLock { + + private: + + HANDLE m_mutexevent; + HANDLE m_readerevent; + LONG m_readercount; + + public: + + CLock () { + m_mutexevent = CreateEvent(NULL,FALSE,TRUE,NULL); + m_readerevent = CreateEvent(NULL,TRUE,FALSE,NULL); + m_readercount = -1; + } + + ~CLock () { + CloseHandle(m_readerevent); + CloseHandle(m_mutexevent); + } + + void inline Enter (BOOL forwriting) { + if (forwriting) + WaitForSingleObject(m_mutexevent,INFINITE); + else if (!InterlockedIncrement(&m_readercount)) { + WaitForSingleObject(m_mutexevent,INFINITE); + SetEvent(m_readerevent); + } + else + WaitForSingleObject(m_readerevent,INFINITE); + } + + void inline Leave (BOOL fromwriting) { + if (fromwriting) + SetEvent(m_mutexevent); + else if (InterlockedDecrement(&m_readercount) < 0) { + ResetEvent(m_readerevent); + SetEvent(m_mutexevent); + } + } + +}; + +/**************************************************************************** +* +* TLIST -- Linked list function templates +* +***/ + +//=========================================================================== +template +BOOL inline TListAdd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = *head; + *head = newptr; + return 1; +} +#define LISTADD(a,b) TListAdd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddEnd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && rec)) + return 0; + + T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber,0); + if (!newptr) + return 0; + CopyMemory(newptr,rec,sizeof(T)); + newptr->next = NULL; + + T **next = head; + while (*next) + next = &(*next)->next; + *next = newptr; + + return 1; +} +#define LISTADDEND(a,b) TListAddEnd(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListAddPtr (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = *head; + *head = ptr; + return 1; +} +#define LISTADDPTR(a,b) TListAddPtr(a,b) + +//=========================================================================== +template +BOOL inline TListAddPtrEnd (T **head, T *ptr) { + if (!(head && ptr)) + return 0; + + ptr->next = NULL; + T **next = head; + while (*next) + next = &(*next)->next; + *next = ptr; + + return 1; +} +#define LISTADDPTREND(a,b) TListAddPtrEnd(a,b) + +//=========================================================================== +template +BOOL inline TListClear (T **head, LPCSTR filename = NULL, int linenumber = 0) { + if (!head) + return 0; + + while (*head) { + T *next = (*head)->next; + SMemFree(*head,filename,linenumber,0); + *head = next; + } + return 1; +} +#define LISTCLEAR(a) TListClear(a,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFree (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + SMemFree(ptr,filename,linenumber,0); + return (*next != NULL); +} +#define LISTFREE(a,b) TListFree(a,b,(LPCSTR)__FILE__,__LINE__) + +//=========================================================================== +template +BOOL inline TListFreePtr (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) { + if (!(head && ptr)) + return 0; + + T **next = head; + while (*next && (*next != ptr)) + next = &(*next)->next; + if (*next) + *next = (*next)->next; + + return (*next != NULL); +} +#define LISTFREEPTR(a,b) TListFreePtr(a,b,(LPCSTR)__FILE__,__LINE__) + +#ifndef __cplusplus +} // extern "C++" +#endif + +#endif // ifndef _STORM_H_ diff --git a/Uisrc/STORM.HLP b/Uisrc/STORM.HLP new file mode 100644 index 0000000..3a09005 Binary files /dev/null and b/Uisrc/STORM.HLP differ diff --git a/Uisrc/STORM.LIB b/Uisrc/STORM.LIB new file mode 100644 index 0000000..67499fd Binary files /dev/null and b/Uisrc/STORM.LIB differ diff --git a/Uisrc/TESTUI.CPP b/Uisrc/TESTUI.CPP new file mode 100644 index 0000000..8f9b309 --- /dev/null +++ b/Uisrc/TESTUI.CPP @@ -0,0 +1,151 @@ +//**************************************************************************** +// +// TESTUI.CPP +// Diablo UI test program +// +// By Michael O'Brien (9/12/96) +// +//**************************************************************************** + +#include +#include "storm.h" +#include "ui\diabloui.h" + +//**************************************************************************** +//**************************************************************************** +#define CLASS TEXT("TESTUICLASS") +#define TITLE TEXT("Diablo UI Test") +#define PROGRAMID 'DTST' +#define VERSIONID 1 +#define MAXPLAYERS 4 + +char szName[MAX_COMPUTERNAME_LENGTH+1] = "TestUI"; + + +//**************************************************************************** +//**************************************************************************** +BOOL Initialize (HINSTANCE instance) { + + // FOR DEBUG VERSIONS OF THE PROGRAM, SETUP STORM'S MOPAQ ARCHIVE SUPPORT + // SO THAT IT CAN READ FILES DIRECTLY FROM THE DISK (RATHER THAN ONLY FROM + // MOPAQ FILES) AND SO THAT FILE ACCESS IS BASED IN THE CURRENT DIRECTORY + // RATHER THAN THE EXECUTABLE DIRECTORY + { + TCHAR directory[MAX_PATH] = TEXT(""); + GetCurrentDirectory(MAX_PATH,directory); + SFileSetBasePath(directory); + SFileEnableDirectAccess(1); + } + + // INITIALIZE DIRECTDRAW + if (!SDrawAutoInitialize(instance,CLASS,TITLE)) { + SDrawMessageBox("Unable to initialize DirectDraw.",TITLE,0); + return 1; + } + + // REGISTER MESSAGE HANDLERS FOR THOSE MESSAGES THAT WILL BE HANDLED + // BY THE FRAME WINDOW + SMsgRegisterMessage(NULL,WM_PAINT,UiOnPaint); + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY Connect (SNETPROGRAMDATAPTR programdata, SNETPLAYERDATAPTR playerdata, DWORD *pdwLocalPlayer) { + // BUILD AN INTERFACE DATA RECORD + SNETUIDATA Interfacedata; + + ZeroMemory(&Interfacedata,sizeof(SNETUIDATA)); + Interfacedata.size = sizeof(SNETUIDATA); + Interfacedata.parentwindow = SDrawGetFrameWindow(); + Interfacedata.artcallback = UiArtCallback; + Interfacedata.createcallback = UiCreateGameCallback; + Interfacedata.drawdesccallback = UiDrawDescCallback; + Interfacedata.messageboxcallback = UiMessageBoxCallback; + Interfacedata.soundcallback = UiSoundCallback; + Interfacedata.authcallback = UiAuthCallback; + Interfacedata.getdatacallback = UiGetDataCallback; + Interfacedata.categorycallback = UiCategoryCallback; + + + // SELECT A NETWORK PROVIDER + while (UiSelectProvider(NULL, + programdata, + playerdata, + &Interfacedata, + NULL, + NULL)) { + + // SELECT A GAME + if (SNetSelectGame(SNET_SF_ALLOWCREATE, + programdata, + playerdata, + &Interfacedata, + NULL, + pdwLocalPlayer)) { + MessageBox(SDrawGetFrameWindow(), "Test", "Test", MB_OK); + return 1; + } + + } + + return 0; +} + + +//**************************************************************************** +//**************************************************************************** +int APIENTRY WinMain (HINSTANCE instance, HINSTANCE, LPSTR, int) { + + DWORD dwLocalPlayer; + char szDesc[256]; + TUIHEROINFO HeroInfo; + + + ShowCursor(FALSE); + + ZeroMemory(&HeroInfo, sizeof(HeroInfo)); + HeroInfo.level = 5; + HeroInfo.herorank = 3; + + if (!Initialize(instance)) { + ShowCursor(TRUE); + return 1; + } + + + // Must be called after storm is initialized + UiInitialize(); + + // BUILD A PROGRAM DATA RECORD + SNETPROGRAMDATA programdata; + ZeroMemory(&programdata,sizeof(SNETPROGRAMDATA)); + programdata.size = sizeof(SNETPROGRAMDATA); + programdata.programname = TITLE; + programdata.programid = PROGRAMID; + programdata.versionid = VERSIONID; + programdata.maxplayers = MAXPLAYERS; + programdata.initdata = NULL; + programdata.initdatabytes = 0; + + + // BUILD A PLAYER DATA RECORD + SNETPLAYERDATA playerdata; + ZeroMemory(&playerdata,sizeof(SNETPLAYERDATA)); + playerdata.size = sizeof(SNETPLAYERDATA); + playerdata.playername = szName; + playerdata.playerdescription = (LPSTR)szDesc; + + // Create player description string + UiCreatePlayerDescription(&HeroInfo, PROGRAMID, (LPSTR)szDesc); + + Connect(&programdata, &playerdata, &dwLocalPlayer); + + UiDestroy(); + StormDestroy(); + + ShowCursor(TRUE); + return 0; +} diff --git a/Uisrc/UI/ARROW.CUR b/Uisrc/UI/ARROW.CUR new file mode 100644 index 0000000..348f576 Binary files /dev/null and b/Uisrc/UI/ARROW.CUR differ diff --git a/Uisrc/UI/ARTFONT.CPP b/Uisrc/UI/ARTFONT.CPP new file mode 100644 index 0000000..8d26ec8 --- /dev/null +++ b/Uisrc/UI/ARTFONT.CPP @@ -0,0 +1,343 @@ +//**************************************************************************** +// artfont.cpp +// created 10.15.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" + + +//**************************************************************************** +//**************************************************************************** + + static TARTFONT sgHugeFont; + static TARTFONT sgHugeFontGray; + static TARTFONT sgBigFont; + static TARTFONT sgBigFontGray; + static TARTFONT sgMedFont; + static TARTFONT sgMedFontGray; + static TARTFONT sgSmallFont; + static TARTFONT sgSmallFontGray; + static TPARTFONT sgpCurrFont; + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetHuge(void) { + sgpCurrFont = &sgHugeFont; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetHugeGray(void) { + sgpCurrFont = &sgHugeFontGray; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetBig(void) { + sgpCurrFont = &sgBigFont; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetBigGray(void) { + sgpCurrFont = &sgBigFontGray; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetMed(void) { + sgpCurrFont = &sgMedFont; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetMedGray(void) { + sgpCurrFont = &sgMedFontGray; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetSmall(void) { + sgpCurrFont = &sgSmallFont; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSetSmallGray(void) { + sgpCurrFont = &sgSmallFontGray; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontSet(int fontnum) { + switch (fontnum) { + case AF_HUGE: + ArtFontSetHuge(); + break; + case AF_HUGEGRAY: + ArtFontSetHugeGray(); + break; + case AF_BIG: + ArtFontSetBig(); + break; + case AF_BIGGRAY: + ArtFontSetBigGray(); + break; + case AF_MED: + ArtFontSetMed(); + break; + case AF_MEDGRAY: + ArtFontSetMedGray(); + break; + case AF_SMALL: + ArtFontSetSmall(); + break; + case AF_SMALLGRAY: + default: + ArtFontSetSmallGray(); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontInit(void) { + sgHugeFont.bValid = FALSE; + sgHugeFontGray.bValid = FALSE; + sgBigFont.bValid = FALSE; + sgBigFontGray.bValid = FALSE; + sgMedFont.bValid = FALSE; + sgMedFontGray.bValid = FALSE; + sgSmallFont.bValid = FALSE; + sgSmallFontGray.bValid = FALSE; + sgpCurrFont = NULL; +} + + +//**************************************************************************** +//**************************************************************************** +static void ArtFontDestroyFont(TPARTFONT pFont) { + if (! pFont->bValid) return; + + for (int index = 0; index < MAX_CHARS; index++) { + if (pFont->pCharData[index]) { + STransDelete(pFont->pCharData[index]); + pFont->pCharData[index] = NULL; + } + } + + pFont->bValid = FALSE; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontDestroy(void) { + ArtFontDestroyFont(&sgHugeFont); + ArtFontDestroyFont(&sgHugeFontGray); + ArtFontDestroyFont(&sgBigFont); + ArtFontDestroyFont(&sgBigFontGray); + ArtFontDestroyFont(&sgMedFont); + ArtFontDestroyFont(&sgMedFontGray); + ArtFontDestroyFont(&sgSmallFont); + ArtFontDestroyFont(&sgSmallFontGray); + + sgpCurrFont = NULL; +} + + +//**************************************************************************** +//**************************************************************************** +static void ArtFontLoadFont(TPARTFONT pFont, LPCSTR datafile, LPCSTR artfile) { + HSFILE file; + LPBYTE pFontBmp; + SIZE BmpSize; + + if (pFont->bValid) return; + + // load the font specs for the font + if (! SFileOpenFile(datafile, &file)) + return; + if (! SFileReadFile(file, &pFont->tFontSpecs, SFileGetFileSize(file))) { + SFileCloseFile(file); + return; + } + SFileCloseFile(file); + + // load the artwork for the font + UiLoadBmpFile(artfile, &pFontBmp, &BmpSize); + + memset(pFont->pCharData, 0, sizeof(sgBigFont.pCharData)); + if (pFontBmp) { + RECT rect; + // create an HTRANS for each character in the font + for (int index = 0; index <= MAX_CHARS; index++) { + if (! pFont->tFontSpecs.bCharWidths[index]) continue; + + rect.left = 0; + rect.right = pFont->tFontSpecs.bCharWidths[index]; + rect.top = index * pFont->tFontSpecs.bCharHeight; + rect.bottom = rect.top + pFont->tFontSpecs.bCharHeight - 1; + + STransCreate( + pFontBmp, + BmpSize.cx, + BmpSize.cy, + 8, + &rect, + PALETTEINDEX(32), + &pFont->pCharData[index] + ); + } + + pFont->bValid = TRUE; + FREE(pFontBmp); + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL ArtFontLoad(void) { + ArtFontLoadFont(&sgBigFont, "ui_art\\font30.bin", "ui_art\\font30g.pcx"); + ArtFontLoadFont(&sgBigFontGray, "ui_art\\font30.bin", "ui_art\\font30s.pcx"); + ArtFontLoadFont(&sgMedFont, "ui_art\\font24.bin", "ui_art\\font24g.pcx"); + ArtFontLoadFont(&sgMedFontGray, "ui_art\\font24.bin", "ui_art\\font24s.pcx"); + ArtFontLoadFont(&sgSmallFont, "ui_art\\font16.bin", "ui_art\\font16g.pcx"); + ArtFontLoadFont(&sgSmallFontGray, "ui_art\\font16.bin", "ui_art\\font16s.pcx"); + ArtFontLoadFont(&sgHugeFont, "ui_art\\font42.bin", "ui_art\\font42g.pcx"); + ArtFontLoadFont(&sgHugeFontGray, "ui_art\\font42.bin", "ui_art\\font42y.pcx"); + + return 1; +} + + +//**************************************************************************** +// return the height of the current font +//**************************************************************************** +int ArtFontHeight(void) { + if (! sgpCurrFont) return 0; + if (! sgpCurrFont->bValid) return 0; + return sgpCurrFont->tFontSpecs.bCharHeight; +} + + +//**************************************************************************** +//**************************************************************************** +int ArtFontGridWidth(void) { + if (! sgpCurrFont) return 0; + if (! sgpCurrFont->bValid) return 0; + + return sgpCurrFont->tFontSpecs.bCharWidth; +} + + +//**************************************************************************** +// calculate the witdth of the given string +//**************************************************************************** +int ArtFontPixelWidth(LPCTSTR text) { + unsigned char c; + int len = 0; + + if (! sgpCurrFont) return 0; + if (! sgpCurrFont->bValid) return 0; + + while (0 != (c = *text)) { + if (! sgpCurrFont->tFontSpecs.bCharWidths[c]) + len += sgpCurrFont->tFontSpecs.bCharWidth; + else + len += sgpCurrFont->tFontSpecs.bCharWidths[c]; + text++; + } + + return len; +} + + +//**************************************************************************** +//**************************************************************************** +int ArtFontWordLen(LPCTSTR text) { + unsigned char c; + int len = 0; + + if (! sgpCurrFont) return 0; + if (! sgpCurrFont->bValid) return 0; + + while (0 != (c = *text)) { + switch (c) { + case ' ': + case '\n': + return len; + + default: + if (! sgpCurrFont->tFontSpecs.bCharWidths[c]) + return len; + else + len += sgpCurrFont->tFontSpecs.bCharWidths[c]; + break; + } + text++; + } + return len; +} + + +//**************************************************************************** +//**************************************************************************** +void ArtFontDraw(LPCTSTR text, TPBMP dest, int x, int y) { + unsigned char c; + if (! dest) return; + if (! dest->data) return; + if (! sgpCurrFont) return; + if (! sgpCurrFont->bValid) return; + + if (x < 0) x = 0; + if (y < 0) y = 0; + + while (0 != (c = *text)) { + + // check for vertical overflow + if ((y + sgpCurrFont->tFontSpecs.bCharHeight) > dest->datasize.cy) + break; + + if (c == '\n') { + x = 0; + y += sgpCurrFont->tFontSpecs.bCharHeight; + text++; + } + else if (! sgpCurrFont->tFontSpecs.bCharWidths[c]) { // word break + if ((x + sgpCurrFont->tFontSpecs.bCharWidth + ArtFontWordLen(text+1)) >= dest->datasize.cx) { // line overrun + x = 0; + y += sgpCurrFont->tFontSpecs.bCharHeight; + } + else { + x += sgpCurrFont->tFontSpecs.bCharWidth; + } + text++; + } + else if (sgpCurrFont->pCharData[c]) { + if ((x + sgpCurrFont->tFontSpecs.bCharWidths[c]) > dest->datasize.cx) { + x = 0; + y += sgpCurrFont->tFontSpecs.bCharHeight; + continue; + } + + STransBlt(dest->data, x, y, dest->datasize.cx, sgpCurrFont->pCharData[c]); + x += sgpCurrFont->tFontSpecs.bCharWidths[c]; + // advance char + text++; + } + } +} \ No newline at end of file diff --git a/Uisrc/UI/ARTFONT.H b/Uisrc/UI/ARTFONT.H new file mode 100644 index 0000000..91f2fa5 --- /dev/null +++ b/Uisrc/UI/ARTFONT.H @@ -0,0 +1,52 @@ +//**************************************************************************** +// artfont.h +// created 10.15.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** + #define MAX_CHARS 256 + + enum _artfonts { + AF_SMALL, + AF_SMALLGRAY, + AF_MED, + AF_MEDGRAY, + AF_BIG, + AF_BIGGRAY, + AF_HUGE, + AF_HUGEGRAY + }; + + typedef struct _fontspecs { + BYTE bCharWidth; // max char width + BYTE bCharHeight; // max char height + BYTE bCharWidths[MAX_CHARS]; // actual char widths + } TFONTSPECS, * TPFONTSPECS; + + typedef struct _artfont { + TFONTSPECS tFontSpecs; + HTRANS pCharData[MAX_CHARS]; + BOOL bValid; + } TARTFONT, * TPARTFONT; + + +//**************************************************************************** +//**************************************************************************** + void ArtFontInit(void); + void ArtFontDestroy(void); + BOOL ArtFontLoad(void); + + void ArtFontSetBig(void); + void ArtFontSetBigGray(void); + void ArtFontSetMed(void); + void ArtFontSetMedGray(void); + void ArtFontSetSmall(void); + void ArtFontSetSmallGray(void); + void ArtFontSet(int fontnum); + + void ArtFontDraw(LPCSTR text, TPBMP dest, int x, int y); + int ArtFontGridWidth(void); + int ArtFontPixelWidth(LPCSTR text); + int ArtFontHeight(void); diff --git a/Uisrc/UI/BNET.H b/Uisrc/UI/BNET.H new file mode 100644 index 0000000..bc76501 --- /dev/null +++ b/Uisrc/UI/BNET.H @@ -0,0 +1,33 @@ +/**************************************************************************** +* +* bnet.h +* BattleNet Chat Room +* +* By Michael Morhaime +* +***/ + + +#define PROVIDERID 'BATL' +#define BATTLENET_MAXPLAYERS 256 +typedef struct _UIPARAMS { + DWORD flags; + SNETPROGRAMDATAPTR programdata; + SNETPLAYERDATAPTR playerdata; + SNETUIDATAPTR interfacedata; + SNETVERSIONDATAPTR versiondata; + LPDWORD playeridptr; +} UIPARAMS, *UIPARAMSPTR; + + + +BOOL DoLoadArtwork (SNETGETARTPROC artcallback, + HWND hWnd, + HWND hWndParent, + DWORD artid, + LPCTSTR controltype, + DWORD controlstyle, + LONG usageflags, + BOOL setpalette, + LPBYTE *data, + SIZE *size); diff --git a/Uisrc/UI/BUT_SML.RAW b/Uisrc/UI/BUT_SML.RAW new file mode 100644 index 0000000..73e89ea --- /dev/null +++ b/Uisrc/UI/BUT_SML.RAW @@ -0,0 +1 @@ +·¸¸ºººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº¸¸·ÿÿ¸²°³´³³´³°°°°°°°°°°°°±²²²±°°°°°°°°²²²²²²²²²²²²²²²²²²²²²²²°°°°²°°°°°°°°°°°±±°°°³³´³°°°°°°°°°°°°±²²²±°°°°³´³±°²¸ÿÿ¸°¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿°¸ÿÿº°¿·¹ºººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº¹·¿°ºÿÿº±¿»¸¸ºº¹ºººººº¹¹¹¹ººº¹¹ºººº¹¹ººººº¹¹¹ººººººº¹¹¹ººººººº¹ºº¹ºººººº¹ººº¹¹¹¹ºº¹¹¹ººº¹ºººººº¹¹¹¹ººº¹¹ºººº¹¹º¸¸¼¿±ºÿÿº³¿»¼º·¶¶µµ´´´´±±³³µ¶¶¶¶¶¶µ¶·¸¸¸¸¸·¸¹¸··¸¸¸¹·¸¹¸¶¸¸¸¹·¹··¶¶µµ¶¶¶···¸··¸¹¸¹¸¸·¸··¶¶µµ´´´´±±³³µ¶¶¶¶¶¶µ¶·¸·º¼½¿³ºÿÿ·´¿¼½½····¶µ´¶µ³´´µµµ¶·¸¶¶¶·¸¸¹¸¸º¸¸¸····¶¸··¶¶·¸·¸¸¸¸¸¹¹··¶··¸·¸¸¸¸¹¹¸¹¹¸¸¸··¸····¶µ´¶µ³´´µµµ¶·¸¶¶¶···¸¼½¼¿´ºÿÿ¶µ¿»½½·¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸·¸¹¹¸¸¸¸¸¸¶¶µµµµ·¶´µ·µ¶··¸¸¸¸¸¸¸···¸¸¸¸¸¸¹·¹¸¹¸·¸·¸··¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸··¸·½½½¿³¸ÿÿ¶µ¿»½½·¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸·¸¹¹¸¸·¶¸¶·¶µµµµ¶¶´µ¶¶··¸¸¸·¸·¸·····¸¸¸¸¸¹·¹¸¹¸·¸·¸··¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸··¸·½½½¿³¸ÿÿ¸³¿¼½½··¶¶¸¶¶µ´´¶¶´µ¶¶¶¶·¸¸¸¸¸¸····¸¸¸···¶µ´µ¶µ´µ¶¶¶¶·¸··¸¸¸····¹º¹¸¸¸¸·¸¸··¶¶¸··¶¶¸¶¶µ´´¶¶´µ¶¶¶¶·¸¸¸¶¶¸½½½¿±¸ÿÿ¸³¿½½½¸¸··¶¶µµ´¶·¶¸·¸¸¸¸·¸·¸·¶¶µµµ¶¶··¶··¸¸·¶¶···¶¶¶µµ¶¶····¶¶·¸¸¸¸··¸¹¹¸···¶¸¸¸··¶¶¶µµ¶¸¸¹·¶¸·¸¸¸¸··¶·¸½½½¿°¹ÿÿ·³¿¼½¼¸¹¸¶·¶µ´µµ¶¶···¸······µ¶·¶¶¶µ·¸¸·······¶¶¶µ¶¶¶¶¶¶µµ··¶¶¶¶···¸·¸¸¸¸···¸¶·¸¸¸¸¶¶¶·¶¶··¸¸·····¸¸·¶···¼½½¿°ºÿÿ·³¿¼½½¹¹¹¸··¸¶µ¶¶¶··¶µ··¸···¶¶¶µ¶¶µ·¶·¸·¶··¶¶µµµ¶·¶¶¶¶¶¶¶¶¶µµµ¶········¸¸·····¶¸·¸·µ··¶·µ¶¶¸·¶¶··¸¸··¸¸·½½½¿°ºÿÿ¶³¿»½½···¸¹···¶¶·¸¸·¶··¸¸¸¸····¶¶··¶¶¶¶¶¶¶¶·µµµµ¶¶µ¶¶´µ´µµµ¶¶¶····¶¶¶¶¶¶·········¸¶µ¶¶·µµ··¸····¸···¸·¸¹¼½¼¿±ºÿÿ·³¿¼½½·¶¶·¸····¶¶¶·······¸···¶·¶¶µ····¶·¶·¶¶¶¶¶¶¶¶·¶µ¶´´´´¶·¶¶·¶···¶¶¶¶¶¶··¸¸·¶·¸¸·¶·¸··¶¶···¸··¸¸¸¸·¸·¸½½½¿±¸ÿÿº´¿½½½··¶·¸¸¸¸¶······¶·¸····¶¶·¶µ¶µ····¶¶·¶¶··¶····¶¶¶¶¶µ¶µµ¶¶¶¶¶¶µµµ¶¶¶¶·····¶····¸········¸···¸···¸···½½½¿°¹ÿÿ¸µ¿¼½¼¸¸··¶¸·¸¸¶··¸···¸¸·¶¶¶¶¶¶¶¶¶µ¶¶·¶¶¶···¶··¸····¶µ¶·¶¶·¶¶¶¶µ¶µ¶µµµµ¶µµ·¸¸¶¶·¸¸···¸¸·¶·¸···¸¸··¶·¸··µ½½½¿°ºÿÿ¸³¿½½½¸¹¸¶¶¸¸¸···¸·¸¸¶·¶·¶¶¶¶¶·¶¶¶¶··¶¶¶µµ¶¶··¶·····µ¶¶¶¶¶¶¶·¶¶¶¶¶¶¶·¶¶¶µµ¶·¸···¸¸¸¸···¶·····¸·¸··¶¶¶¶¶·¼¼½¿°ºÿÿ¸³¿½½½¹¹¹·¶····¸¸¸¸¸¸·¶¶¶µ´µ¶··¶·¸·¸¶¶¶µ´µ¶····¸¸·¶µµ¶¶¶¶¶¶¶¶¶¶¸··¶¶¶··¶µµ¶¶·¶··¸¸·¸·¶·µ··¸¹¸¸¶·¶¶¶µµ¶¶¶¼¼½¿°ºÿÿ¸³¿½½½¶···¸·¶··¸¸¸·¶······¸·¶¶¶¶¶·¶··¸¸¸¶··¸¸¸··¶¶¶¶·¶···¶····¸¸¶····¸¸·¸¸¸¸¸··¶¶¶¶¶¶¶¶¶¶¶¶¶¶µ·¶µ³³´µ¶¶¸¼¼½¿²ºÿÿ¸³¿½½½¶····¸¶····¸¸·¸¹¸¹¸··¶¶¶¶¶¶¶¶····¸¶····¸¸·¶¶¶¶·¶···¶····¸¸¶····¸¸·¸¸¸¸¸··¶¶¶¶¶¶¶¶¶¶¶¶¶¶µµµ³³´´µ¶¶¸¼¼½¿°ºÿÿº²¿»½½¶¶¶¶¶¶··¹·¹¸¸·¸¹¹¹¹¹¸¹¸¸·¶¶¶¶¶¶¶¶¶··¹·¹¸¸·¶¶µµµµµµ¶·¶¹¶··µ··¹·¹¸¸·¸¹¹¹¹¹¸¹¸¸·¶¶¶¶¶¶¶¶¶µµµ³´´µµµ¶¶¶¼¼½¿°ºÿÿº±¾¼½½ºº»»¹¸¹»¹ºº¹¹¹¹º¹º¹º¹º¹¸¹¹¹º¹»¹¸»¹¸¹¹¹»¹¹¸··¸·¹··¹·º¸¸¸¸¹¸¹·¸¸¸¸¸¹¸¹¸··¶··¸¸¸¹¹»¹¸¸¹¹¹»¹¹»¹¸¹¹¹¹¹¹½¼½¿³»ÿÿº´¾»¼½½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½¿´µÿÿ¹²¾½½¼½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½¿²¶ÿÿ¸°¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿°¸ÿÿ¸²°°±³´³°°°±±°°°°°°°°°°°²°°°°²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²°°°°°°°°±²²²±°°°°°°°°°°°°°³´³±°°²¸ÿÿ·¸¸ºººº¸¹ººººººººººººººººººº¹¸···¸¸···¸¸¸¹ºº¹¸····¸¸···¸¸¸¹ºº¹¸¸¸¹ºº¹¸···¸¸¸¹ºº¹¸··¸¸ºººº¸¸ººººººººººº¸ºººº¸¸·ÿÿ·¸¸ºººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº¸¸·ÿÿ¸²°³´³³´³°°°°°°°°°°°°±²²²±°°°°°°°°²²²²²²²²²²²²²²²²²²²²²²²°°°°²°°°°°°°°°°°±±°°°³³´³°°°°°°°°°°°°±²²²±°°°°³´³±°²¸ÿÿ¸°¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾°¸ÿÿº°¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾°ºÿÿº±¾¾¹º»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»º¹±ºÿÿº³¾¾»ºº»»º»»»»»»ºººº»»»ºº»»»»ºº»»»»»ººº»»»»»»»ººº»»»»»»»º»»º»»»»»»º»»»ºººº»»ººº»»»º»»»»»»ºººº»»»ºº»»»»ºº»ºº¼³ºÿÿ·´¾¾»¼»¹¸¸¸¸····µµ··¸¸¸¸¸¸¸¸¸¹ººººº¹ººº¹¹ºººº¹ººº¸ºººº¹º¹¹¸¸¸¸¸¸¸¹¹¹º¹¹ºººººº¹º¹¹¸¸¸¸····µµ··¸¸¸¸¸¸¸¸¸¹º¹»¼½´ºÿÿ¶µ¾¾¼½½¹¹¹¹¸¸·¸¸···¸¸¸¸¹º¸¸¸¹ººººº»ººº¹¹¹¹¸º¹¹¸¸¹º¹ººººººº¹¹¸¹¹º¹ºººººººººººº¹¹º¹¹¹¹¸¸·¸¸···¸¸¸¸¹º¸¸¸¹¹¹º¼½¼³¸ÿÿ¶µ¾¾»½½¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹ººººººººº¸¸¸¸¸¸¹¸·¸¹¸¸¹¹ººººººº¹¹¹ººººººº¹ºººº¹º¹º¹¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹¹º¹½½½³¸ÿÿ¸³¾¾»½½¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹ººººº¹¸º¸¹¸¸¸¸¸¸¸·¸¸¸¹¹ººº¹º¹º¹¹¹¹¹ºººººº¹ºººº¹º¹º¹¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹¹º¹½½½±¸ÿÿ¸³¾¾¼½½¹¹¸¸º¸¸¸··¸¸·¸¸¸¸¸¹ºººººº¹¹¹¹ººº¹¹¹¸¸·¸¸¸·¸¸¸¸¸¹º¹¹ººº¹¹¹¹º»ººººº¹ºº¹¹¸¸º¹¹¸¸º¸¸¸··¸¸·¸¸¸¸¸¹ººº¸¸º½½½°¹ÿÿ·³¾¾½½½ºº¹¹¸¸¸¸·¸¹¸º¹ºººº¹º¹º¹¸¸¸¸¸¸¸¹¹¸¹¹ºº¹¸¸¹¹¹¸¸¸¸¸¸¸¹¹¹¹¸¸¹ºººº¹¹ºººº¹¹¹¸ººº¹¹¸¸¸¸¸¸ººº¹¸º¹ºººº¹¹¸¹º½½½°ºÿÿ·³¾¾¼½¼ººº¸¹¸¸·¸¸¸¸¹¹¹º¹¹¹¹¹¹¸¸¹¸¸¸¸¹ºº¹¹¹¹¹¹¹¸¸¸¸¸¸¸¸¸¸¸¸¹¹¸¸¸¸¹¹¹º¹ºººº¹¹¹º¸¹ºººº¸¸¸¹¸¸¹¹ºº¹¹¹¹¹ºº¹¸¹¹¹¼½½°ºÿÿ¶³¾¾¼½½ºººº¹¹º¸¸¸¸¸¹¹¸¸¹¹º¹¹¹¸¸¸¸¸¸¸¹¸¹º¹¸¹¹¸¸¸¸¸¸¹¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹¹¹¹¹¹ºº¹¹¹¹¹¸º¹º¹¸¹¹¸¹¸¸¸º¹¸¸¹¹ºº¹¹ºº¹½½½±ºÿÿ·³¾¾»½½¹¹¹ºº¹¹¹¸¸¹ºº¹¸¹¹ºººº¹¹¹¹¸¸¹¹¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸¸¸¸·¸·¸¸¸¸¸¸¹¹¹¹¸¸¸¸¸¸¹¹¹¹¹¹¹¹¹º¸¸¸¸¹¸¸¹¹º¹¹¹¹º¹¹¹º¹ºº¼½¼±¸ÿÿº´¾¾¼½½¹¸¸¹º¹¹¹¹¸¸¸¹¹¹¹¹¹¹º¹¹¹¸¹¸¸¸¹¹¹¹¸¹¸¹¸¸¸¸¸¸¸¸¹¸¸¸····¸¹¸¸¹¸¹¹¹¸¸¸¸¸¸¹¹ºº¹¸¹ºº¹¸¹º¹¹¸¸¹¹¹º¹¹ºººº¹º¹º½½½°¹ÿÿ¸µ¾¾½½½¹¹¸¹ºººº¸¹¹¹¹¹¹¸¹º¹¹¹¹¸¸¹¸¸¸¸¹¹¹¹¸¸¹¸¸¹¹¸¹¹¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹¹¹¸¹¹¹¹º¹¹¹¹¹¹¹¹º¹¹¹º¹¹¹º¹¹¹½½½°ºÿÿ¸³¾¾¼½¼ºº¹¹¸º¹ºº¸¹¹º¹¹¹ºº¹¸¸¸¸¸¸¸¸¸¸¸¸¹¸¸¸¹¹¹¸¹¹º¹¹¹¹¸¸¸¹¸¸¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹ºº¸¸¹ºº¹¹¹ºº¹¸¹º¹¹¹ºº¹¹¸¹º¹¹¸½½½°ºÿÿ¸³¾¾½½½ººº¸¸ººº¹¹¹º¹ºº¸¹¸¹¸¸¸¸¸¹¸¸¸¸¹¹¸¸¸¸¸¸¸¹¹¸¹¹¹¹¹¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸¸¹¸¸¸¸¸¸¹º¹¹¹ºººº¹¹¹¸¹¹¹¹¹º¹º¹¹¸¸¸¸¸¹¼¼½°ºÿÿ¸³¾¾½½½ººº¹¸¹¹¹¹ºººººº¹¸¸¸¸·¸¸¹¹¸¹º¹º¸¸¸¸·¸¸¹¹¹¹ºº¹¸¸¸¸¸¸¸¸¸¸¸¸¸º¹¹¸¸¸¹¹¸¸¸¸¸¹¸¹¹ºº¹º¹¸¹¸¹¹ºººº¸¹¸¸¸¸¸¸¸¸¼¼½²ºÿÿ¸³¾¾½½½¸¹¹¹º¹¸¹¹ººº¹¸¹¹¹¹¹¹º¹¸¸¸¸¸¹¸¹¹ººº¸¹¹ººº¹¹¸¸¸¸¹¸¹¹¹¸¹¹¹¹ºº¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¸¸···¸¸¸º¼¼½°ºÿÿº²¾¾½½½¸¹¹¹¹º¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¹¹¹¹º¸¹¹¹¹ºº¹¸¸¸¸¹¸¹¹¹¸¹¹¹¹ºº¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸····¸¸¸º¼¼½°ºÿÿº±¾¾»½½¸¸¸¸¸¸¹¹º¹ººº¹ºººººººººº¹¸¸¸¸¸¸¸¸¸¹¹º¹ººº¹¸¸¸¸¸¸¸¸¸¹¸º¸¹¹¸¹¹º¹ººº¹ºººººººººº¹¸¸¸¸¸¸¸¸¸¸¸¸···¸¸¸¸¸¸¼¼½³»ÿÿº´¾¾¼½½»»»»ººº»º»»ºººº»º»º»º»ººººº»º»ºº»ººººº»ººº¹¹º¹º¹¹º¹»ººººººº¹ººººººººº¹¹¸¹¹ººººº»ºººººº»ºº»ºººººººº½¼½´µÿÿ¹²¾¾»¼½½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½²¶ÿÿ¸°¾¾½½¼½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½°¸ÿÿ¸²°°±³´³°°°±±°°°°°°°°°°°²°°°°²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²°°°°°°°°±²²²±°°°°°°°°°°°°°³´³±°°²¸ÿÿ·¸¸ºººº¸¹ººººººººººººººººººº¹¸···¸¸···¸¸¸¹ºº¹¸····¸¸···¸¸¸¹ºº¹¸¸¸¹ºº¹¸···¸¸¸¹ºº¹¸··¸¸ºººº¸¸ººººººººººº¸ºººº¸¸·ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿ€€¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿€€ÿÿ€€¿·¹ºººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº¹·¿€€ÿÿ€€¿»¸¸ºº¹ºººººº¹¹¹¹ººº¹¹ºººº¹¹ººººº¹¹¹ººººººº¹¹¹ººººººº¹ºº¹ºººººº¹ººº¹¹¹¹ºº¹¹¹ººº¹ºººººº¹¹¹¹ººº¹¹ºººº¹¹º¸¸¼¿€€ÿÿ€€¿»¼º·¶¶µµ´´´´±±³³µ¶¶¶¶¶¶µ¶·¸¸¸¸¸·¸¹¸··¸¸¸¹·¸¹¸¶¸¸¸¹·¹··¶¶µµ¶¶¶···¸··¸¹¸¹¸¸·¸··¶¶µµ´´´´±±³³µ¶¶¶¶¶¶µ¶·¸·º¼½¿€€ÿÿ€€¿¼½½····¶µ´¶µ³´´µµµ¶·¸¶¶¶·¸¸¹¸¸º¸¸¸····¶¸··¶¶·¸·¸¸¸¸¸¹¹··¶··¸·¸¸¸¸¹¹¸¹¹¸¸¸··¸····¶µ´¶µ³´´µµµ¶·¸¶¶¶···¸¼½¼¿€€ÿÿ€€¿»½½·¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸·¸¹¹¸¸¸¸¸¸¶¶µµµµ·¶´µ·µ¶··¸¸¸¸¸¸¸···¸¸¸¸¸¸¹·¹¸¹¸·¸·¸··¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸··¸·½½½¿€€ÿÿ€€¿»½½·¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸·¸¹¹¸¸·¶¸¶·¶µµµµ¶¶´µ¶¶··¸¸¸·¸·¸·····¸¸¸¸¸¹·¹¸¹¸·¸·¸··¶¶¶¶µµµ´´µµµµ¶··¸¸¸¸··¸·½½½¿€€ÿÿ€€¿¼½½··¶¶¸¶¶µ´´¶¶´µ¶¶¶¶·¸¸¸¸¸¸····¸¸¸···¶µ´µ¶µ´µ¶¶¶¶·¸··¸¸¸····¹º¹¸¸¸¸·¸¸··¶¶¸··¶¶¸¶¶µ´´¶¶´µ¶¶¶¶·¸¸¸¶¶¸½½½¿€€ÿÿ€€¿½½½¸¸··¶¶µµ´¶·¶¸·¸¸¸¸·¸·¸·¶¶µµµ¶¶··¶··¸¸·¶¶···¶¶¶µµ¶¶····¶¶·¸¸¸¸··¸¹¹¸···¶¸¸¸··¶¶¶µµ¶¸¸¹·¶¸·¸¸¸¸··¶·¸½½½¿€€ÿÿ€€¿¼½¼¸¹¸¶·¶µ´µµ¶¶···¸······µ¶·¶¶¶µ·¸¸·······¶¶¶µ¶¶¶¶¶¶µµ··¶¶¶¶···¸·¸¸¸¸···¸¶·¸¸¸¸¶¶¶·¶¶··¸¸·····¸¸·¶···¼½½¿€€ÿÿ€€¿¼½½¹¹¹¸··¸¶µ¶¶¶··¶µ··¸···¶¶¶µ¶¶µ·¶·¸·¶··¶¶µµµ¶·¶¶¶¶¶¶¶¶¶µµµ¶········¸¸·····¶¸·¸·µ··¶·µ¶¶¸·¶¶··¸¸··¸¸·½½½¿€€ÿÿ€€¿»½½···¸¹···¶¶·¸¸·¶··¸¸¸¸····¶¶··¶¶¶¶¶¶¶¶·µµµµ¶¶µ¶¶´µ´µµµ¶¶¶····¶¶¶¶¶¶·········¸¶µ¶¶·µµ··¸····¸···¸·¸¹¼½¼¿€€ÿÿ€€¿¼½½·¶¶·¸····¶¶¶·······¸···¶·¶¶µ····¶·¶·¶¶¶¶¶¶¶¶·¶µ¶´´´´¶·¶¶·¶···¶¶¶¶¶¶··¸¸·¶·¸¸·¶·¸··¶¶···¸··¸¸¸¸·¸·¸½½½¿€€ÿÿ€€¿½½½··¶·¸¸¸¸¶······¶·¸····¶¶·¶µ¶µ····¶¶·¶¶··¶····¶¶¶¶¶µ¶µµ¶¶¶¶¶¶µµµ¶¶¶¶·····¶····¸········¸···¸···¸···½½½¿€€ÿÿ€€¿¼½¼¸¸··¶¸·¸¸¶··¸···¸¸·¶¶¶¶¶¶¶¶¶µ¶¶·¶¶¶···¶··¸····¶µ¶·¶¶·¶¶¶¶µ¶µ¶µµµµ¶µµ·¸¸¶¶·¸¸···¸¸·¶·¸···¸¸··¶·¸··µ½½½¿€€öÿ€€¿½½½¸¹¸¶¶¸¸¸···¸·¸¸¶·¶·¶¶¶¶¶·¶¶¶¶··¶¶¶µµ¶¶··¶·····µ¶¶¶¶¶¶¶·¶¶¶¶¶¶¶·¶¶¶µµ¶·¸···¸¸¸¸···¶·····¸·¸··¶¶¶¶¶·¼¼½¿€€öÿ€€¿½½½¹¹¹·¶····¸¸¸¸¸¸·¶¶¶µ´µ¶··¶·¸·¸¶¶¶µ´µ¶····¸¸·¶µµ¶¶¶¶¶¶¶¶¶¶¸··¶¶¶··¶µµ¶¶·¶··¸¸·¸·¶·µ··¸¹¸¸¶·¶¶¶µµ¶¶¶¼¼½¿€€öÿ€€¿½½½¶···¸·¶··¸¸¸·¶······¸·¶¶¶¶¶·¶··¸¸¸¶··¸¸¸··¶¶¶¶·¶···¶····¸¸¶····¸¸·¸¸¸¸¸··¶¶¶¶¶¶¶¶¶¶¶¶¶¶µ·¶µ³³´µ¶¶¸¼¼½¿€€öÿ€€¿½½½¶····¸¶····¸¸·¸¹¸¹¸··¶¶¶¶¶¶¶¶····¸¶····¸¸·¶¶¶¶·¶···¶····¸¸¶····¸¸·¸¸¸¸¸··¶¶¶¶¶¶¶¶¶¶¶¶¶¶µµµ³³´´µ¶¶¸¼¼½¿€€öÿ€€¿»½½¶¶¶¶¶¶··¹·¹¸¸·¸¹¹¹¹¹¸¹¸¸·¶¶¶¶¶¶¶¶¶··¹·¹¸¸·¶¶µµµµµµ¶·¶¹¶··µ··¹·¹¸¸·¸¹¹¹¹¹¸¹¸¸·¶¶¶¶¶¶¶¶¶µµµ³´´µµµ¶¶¶¼¼½¿€€öÿ€€¾¼½½ºº»»¹¸¹»¹ºº¹¹¹¹º¹º¹º¹º¹¸¹¹¹º¹»¹¸»¹¸¹¹¹»¹¹¸··¸·¹··¹·º¸¸¸¸¹¸¹·¸¸¸¸¸¹¸¹¸··¶··¸¸¸¹¹»¹¸¸¹¹¹»¹¹»¹¸¹¹¹¹¹¹½¼½¿€€öÿ€€¾»¼½½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½¿€€öÿ€€¾½½¼½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½¿€€öÿ€€¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿ€€¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾€€öÿ€€¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾€€öÿ€€¾¾¹º»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»º¹€€öÿ€€¾¾»ºº»»º»»»»»»ºººº»»»ºº»»»»ºº»»»»»ººº»»»»»»»ººº»»»»»»»º»»º»»»»»»º»»»ºººº»»ººº»»»º»»»»»»ºººº»»»ºº»»»»ºº»ºº¼€€öÿ€€¾¾»¼»¹¸¸¸¸····µµ··¸¸¸¸¸¸¸¸¸¹ººººº¹ººº¹¹ºººº¹ººº¸ºººº¹º¹¹¸¸¸¸¸¸¸¹¹¹º¹¹ºººººº¹º¹¹¸¸¸¸····µµ··¸¸¸¸¸¸¸¸¸¹º¹»¼½€€öÿ€€¾¾¼½½¹¹¹¹¸¸·¸¸···¸¸¸¸¹º¸¸¸¹ººººº»ººº¹¹¹¹¸º¹¹¸¸¹º¹ººººººº¹¹¸¹¹º¹ºººººººººººº¹¹º¹¹¹¹¸¸·¸¸···¸¸¸¸¹º¸¸¸¹¹¹º¼½¼€€öÿ€€¾¾»½½¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹ººººººººº¸¸¸¸¸¸¹¸·¸¹¸¸¹¹ººººººº¹¹¹ººººººº¹ºººº¹º¹º¹¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹¹º¹½½½€€öÿ€€¾¾»½½¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹ººººº¹¸º¸¹¸¸¸¸¸¸¸·¸¸¸¹¹ººº¹º¹º¹¹¹¹¹ºººººº¹ºººº¹º¹º¹¹¸¸¸¸¸¸¸··¸¸¸¸¸¹¹ºººº¹¹º¹½½½€€öÿ€€¾¾¼½½¹¹¸¸º¸¸¸··¸¸·¸¸¸¸¸¹ºººººº¹¹¹¹ººº¹¹¹¸¸·¸¸¸·¸¸¸¸¸¹º¹¹ººº¹¹¹¹º»ººººº¹ºº¹¹¸¸º¹¹¸¸º¸¸¸··¸¸·¸¸¸¸¸¹ººº¸¸º½½½€€öÿ€€¾¾½½½ºº¹¹¸¸¸¸·¸¹¸º¹ºººº¹º¹º¹¸¸¸¸¸¸¸¹¹¸¹¹ºº¹¸¸¹¹¹¸¸¸¸¸¸¸¹¹¹¹¸¸¹ºººº¹¹ºººº¹¹¹¸ººº¹¹¸¸¸¸¸¸ººº¹¸º¹ºººº¹¹¸¹º½½½€€öÿ€€¾¾¼½¼ººº¸¹¸¸·¸¸¸¸¹¹¹º¹¹¹¹¹¹¸¸¹¸¸¸¸¹ºº¹¹¹¹¹¹¹¸¸¸¸¸¸¸¸¸¸¸¸¹¹¸¸¸¸¹¹¹º¹ºººº¹¹¹º¸¹ºººº¸¸¸¹¸¸¹¹ºº¹¹¹¹¹ºº¹¸¹¹¹¼½½€€öÿ€€¾¾¼½½ºººº¹¹º¸¸¸¸¸¹¹¸¸¹¹º¹¹¹¸¸¸¸¸¸¸¹¸¹º¹¸¹¹¸¸¸¸¸¸¹¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹¹¹¹¹¹ºº¹¹¹¹¹¸º¹º¹¸¹¹¸¹¸¸¸º¹¸¸¹¹ºº¹¹ºº¹½½½€€öÿ€€¾¾»½½¹¹¹ºº¹¹¹¸¸¹ºº¹¸¹¹ºººº¹¹¹¹¸¸¹¹¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸¸¸¸·¸·¸¸¸¸¸¸¹¹¹¹¸¸¸¸¸¸¹¹¹¹¹¹¹¹¹º¸¸¸¸¹¸¸¹¹º¹¹¹¹º¹¹¹º¹ºº¼½¼€€öÿ€€¾¾¼½½¹¸¸¹º¹¹¹¹¸¸¸¹¹¹¹¹¹¹º¹¹¹¸¹¸¸¸¹¹¹¹¸¹¸¹¸¸¸¸¸¸¸¸¹¸¸¸····¸¹¸¸¹¸¹¹¹¸¸¸¸¸¸¹¹ºº¹¸¹ºº¹¸¹º¹¹¸¸¹¹¹º¹¹ºººº¹º¹º½½½€€öÿ€€¾¾½½½¹¹¸¹ºººº¸¹¹¹¹¹¹¸¹º¹¹¹¹¸¸¹¸¸¸¸¹¹¹¹¸¸¹¸¸¹¹¸¹¹¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¹¹¹¹¸¹¹¹¹º¹¹¹¹¹¹¹¹º¹¹¹º¹¹¹º¹¹¹½½½€€öÿ€€¾¾¼½¼ºº¹¹¸º¹ºº¸¹¹º¹¹¹ºº¹¸¸¸¸¸¸¸¸¸¸¸¸¹¸¸¸¹¹¹¸¹¹º¹¹¹¹¸¸¸¹¸¸¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹ºº¸¸¹ºº¹¹¹ºº¹¸¹º¹¹¹ºº¹¹¸¹º¹¹¸½½½€€öÿ€€¾¾½½½ººº¸¸ººº¹¹¹º¹ºº¸¹¸¹¸¸¸¸¸¹¸¸¸¸¹¹¸¸¸¸¸¸¸¹¹¸¹¹¹¹¹¸¸¸¸¸¸¸¸¹¸¸¸¸¸¸¸¹¸¸¸¸¸¸¹º¹¹¹ºººº¹¹¹¸¹¹¹¹¹º¹º¹¹¸¸¸¸¸¹¼¼½€€öÿ€€¾¾½½½ººº¹¸¹¹¹¹ºººººº¹¸¸¸¸·¸¸¹¹¸¹º¹º¸¸¸¸·¸¸¹¹¹¹ºº¹¸¸¸¸¸¸¸¸¸¸¸¸¸º¹¹¸¸¸¹¹¸¸¸¸¸¹¸¹¹ºº¹º¹¸¹¸¹¹ºººº¸¹¸¸¸¸¸¸¸¸¼¼½€€öÿ€€¾¾½½½¸¹¹¹º¹¸¹¹ººº¹¸¹¹¹¹¹¹º¹¸¸¸¸¸¹¸¹¹ººº¸¹¹ººº¹¹¸¸¸¸¹¸¹¹¹¸¹¹¹¹ºº¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¹¸¸···¸¸¸º¼¼½€€öÿ€€¾¾½½½¸¹¹¹¹º¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¹¹¹¹º¸¹¹¹¹ºº¹¸¸¸¸¹¸¹¹¹¸¹¹¹¹ºº¸¹¹¹¹ºº¹ººººº¹¹¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸····¸¸¸º¼¼½€€öÿ€€¾¾»½½¸¸¸¸¸¸¹¹º¹ººº¹ºººººººººº¹¸¸¸¸¸¸¸¸¸¹¹º¹ººº¹¸¸¸¸¸¸¸¸¸¹¸º¸¹¹¸¹¹º¹ººº¹ºººººººººº¹¸¸¸¸¸¸¸¸¸¸¸¸···¸¸¸¸¸¸¼¼½€€öÿ€€¾¾¼½½»»»»ººº»º»»ºººº»º»º»º»ººººº»º»ºº»ººººº»ººº¹¹º¹º¹¹º¹»ººººººº¹ººººººººº¹¹¸¹¹ººººº»ºººººº»ºº»ºººººººº½¼½€€öÿ€€¾¾»¼½½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½€€öÿ€€¾¾½½¼½½¼¼¼½½½¼½½½½½½½½¼½½½½½½½¼½¼½½½½½½½½½¼½¼½½¼½¼½½½½½½½½½¼½¼½½½½¼½¼½½½½½½½¼½¼½½½½½¼½¼½½¼¼¼½½½½¼¼¼½¼½½¼½½€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€öÿæççééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééççæöÿçáöââââööööööööööööàáááàööööööööáááááááááááááááááááááááööööáöööööööööööààöööâââööööööööööööàáááàööööââàöáçöÿçöîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîöçöÿéöîæèééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééèæîöéöÿéàîêççééèééééééèèèèéééèèééééèèéééééèèèéééééééèèèéééééééèééèééééééèéééèèèèééèèèéééèééééééèèèèéééèèééééèèéççëîàéöÿéâîêëéæååääààââäååååååäåæçççççæçèçææçççèæçèçåçççèæèææååääåååæææçææçèçèççæçææååääààââäååååååäåæçæéëìîâéöÿæîëììææææåäåäâäääåæçåååæççèççéçççææææåçææååæçæçççççèèææåææçæççççèèçèèçççææçææææåäåäâäääåæçåååæææçëìëîéöÿåäîêììæååååäääääääåææççççæçèèççççççååääääæåäæäåææçççççççæææççççççèæèçèçæçæçææååååäääääääåææççççææçæìììîâçöÿåäîêììæååååäääääääåææççççæçèèççæåçåæåääääååäååææçççæçæçæææææçççççèæèçèçæçæçææååååäääääääåææççççææçæìììîâçöÿçâîëììææååçååäååäååååæççççççææææçççæææåääåääååååæçææçççææææèéèççççæççææååçææååçååäååäååååæçççååçìììîàçöÿçâîìììççææååääåæåçæççççæçæçæååäääååææåææççæååæææåååääååææææååæççççææçèèçæææåçççææåååääåççèæåçæççççææåæçìììîöèöÿæâîëìëçèçåæåäääååæææçææææææäåæåååäæççæææææææåååäååååååääææååååæææçæççççæææçåæççççåååæååææççæææææççæåæææëììîöéöÿæâîëììèèèçææçåäåååææåäææçæææåååäååäæåæçæåææååäääåæåååååååååäääåææææææææççæææææåçæçæäææåæäååçæååææççææççæìììîöéöÿåâîêììæææçèæææååæççæåææççççææææååææååååååååæääääååäååääääåååææææååååååæææææææææçåäååæääææçææææçæææçæçèëìëîàéöÿæâîëììæååæçææææåååæææææææçæææåæååäææææåæåæååååååååæåäååæååæåæææååååååææççæåæççæåæçææååæææçææççççæçæçìììîàçöÿéîìììææåæççççåææææææåæçææææååæåäåäææææååæååææåææææåååååäåääååååååäääååååæææææåææææçææææææææçæææçæææçæææìììîöèöÿçäîëìëççææåçæççåææçæææççæåååååååååäååæåååæææåææçææææåäåæååæååååäåäåääääåääæççååæççæææççæåæçæææççææåæçææäìììîöéöÿçâîìììçèçååçççæææçæççåæåæåååååæååååææåååääååææåæææææäåååååååæåååååååæåååääåæçæææççççæææåæææææçæçææåååååæëëìîöéöÿçâîìììèèèæåææææççççççæåååääåææåæçæçåååääåææææççæåääååååååååååçææåååææåääååæåææççæçæåæäææçèççåæåååääåååëëìîöéöÿçâîìììåæææçæåææçççæåææææææçæåååååæåææçççåææçççææååååæåæææåææææççåææææççæçççççææååååååååååååååäæåäââäååçëëìîáéöÿçâîìììåææææçåææææççæçèçèçææååååååååææææçåææææççæååååæåæææåææææççåææææççæçççççææååååååååååååååäääââäååçëëìîöéöÿéáîêììååååååææèæèççæçèèèèèçèççæåååååååååææèæèççæååääääääåæåèåææäææèæèççæçèèèèèçèççæåååååååååäääâäääåååëëìîöéöÿéàíëììééêêèçèêèééèèèèéèéèéèéèçèèèéèêèçêèçèèèêèèçææçæèææèæéççççèçèæçççççèçèçææåææçççèèêèççèèèêèèêèçèèèèèèìëìîâêöÿéíêëìììëëëìììëììììììììëìììììììëìëìììììììììëìëììëìëìììììììììëìëììììëìëìììììììëìëìììììëìëììëëëììììëëëìëììëììîäöÿèáíììëììëëëìììëììììììììëìììììììëìëìììììììììëìëììëìëìììììììììëìëììììëìëìììììììëìëìììììëìëììëëëììììëëëìëììëììîáåöÿçöîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîöçöÿçáööàââöööààöööööööööööáööööáááááááááááááááááááááááááááááááááááááááááááááááööööööööàáááàöööööööööööööââàööáçöÿæççééééçèéééééééééééééééééééèçæææççæææçççèééèçææææççæææçççèééèçççèééèçæææçççèééèçææççééééççéééééééééééçééééççæöÿ \ No newline at end of file diff --git a/Uisrc/UI/CHATHELP.TXT b/Uisrc/UI/CHATHELP.TXT new file mode 100644 index 0000000..d9546be --- /dev/null +++ b/Uisrc/UI/CHATHELP.TXT @@ -0,0 +1,10 @@ +Press CREATE to create a new game. + +Press JOIN to join a game currently in progress. + +Press HELP to display this help screen. + +Press QUIT to leave the chatroom without joining a game. + + +For additional help, get Bill Roper or someone to write something. diff --git a/Uisrc/UI/CLAW.BMP b/Uisrc/UI/CLAW.BMP new file mode 100644 index 0000000..0395034 Binary files /dev/null and b/Uisrc/UI/CLAW.BMP differ diff --git a/Uisrc/UI/CONNECT.CPP b/Uisrc/UI/CONNECT.CPP new file mode 100644 index 0000000..b805e1b --- /dev/null +++ b/Uisrc/UI/CONNECT.CPP @@ -0,0 +1,1096 @@ +//**************************************************************************** +// +// connect.CPP +// Diablo UI +// +// By Michael Morhaime +// +//**************************************************************************** + +#include "pch.h" +#include "stdio.h" +#include "..\battle\bnetart.h" +#include "uisnd.h" +#include + + +#define MAX_SHORT_STRING_LEN 128 +#define MAX_STRING_LEN 256 + +#define DIABLO_RETAIL_ID 'DRET' +#define DIABLO_SHARE_ID 'DSHR' + +#define PROGRAMID 'HRTL' + +#define MIN_SPACING 2 +#define NUM_PORTS (3*4) +#define PORTRAIT_HEIGHT 14 + +#define HERO_PORT_X 0 + + +#define HERO_LEVEL_X1 14 +#define HERO_LEVEL_X2 20 +#define HERO_LEVEL_Y 5 + +#define COLOR_BG_HILITE (RGB(0x80,0x80,0x80)) + + +BOOL Txt2HeroInfo(char *szDesc, TUIHEROINFO *pHeroInfo); +void HeroInfo2Txt(TUIHEROINFO *pHeroInfo, char *szDesc); +DWORD GetPlayerCategory(const char *szDesc); //### MM Diablo Patch #2 3/21/97 + +extern int UiOkCancelDialog(HWND parent, LPCSTR okcanceltext, BOOL bErrFlag); +extern int UiBigOkCancelDialog(HWND parent, LPCSTR okcanceltext, LPCSTR title, BOOL bErrFlag); +extern int UiBigOkDialog(HWND parent, LPCSTR oktext, LPCSTR title, BOOL errorflag); +extern int UiOkDialog(HWND parent, LPCSTR okcanceltext, BOOL bErrFlag); + +static LPBYTE gBmpHeroPort = NULL; +static LPBYTE gBmpSpawnedPort = NULL; +static LPBYTE gBmpSpecial = NULL; +static LPBYTE gBmpScratchPort = NULL; +static HTRANS sgTransNum[10] = { 0 }; + +static SIZE gSizeHeroPort; +static SIZE gSizeHeroNum; +static SIZE gSizeSpecial; + +static int gHeroNumHgt; // Height of individual numbers/portraits +static int gHeroPortHgt; +static int gSpecialHgt; +static int gnPortBytesSize; // Precalulated bytes per Portrait and Digit image (for easy calculations) +static int gnDigitBytesSize; + +static DWORD sgMyProgramId = 0; // This is saved during call to CreatePlayerDesc() + +enum _special_icons { + eSPECIAL_BLIZZARD, + eSPECIAL_SYSOP_BATTLENET, + eSPECIAL_MODERATOR, + eSPECIAL_SPEAKER, + eSPECIAL_SYSOP, + eSPECIAL_SQUELCHED, +NUM_SPECIAL_ICONS + +}; + + +// Game Description Fields +// "%d\r%s\r%s", bDiff, szPlayerName, szPlayerDesc +// +// Player Description Fields +// "%c%c%c%c %d %d %d %d %d %d %d %d", PROGRAMID, wLevel, bHeroClass, bStrength, bMagic, bDexterity, bVitality, dwGold, bSpawned +enum _description_fields { + eGAMEDESC_DIFFICULTY, + eGAMEDESC_CREATOR_NAME, + + // These are from the Player Description + eGAMEDESC_PROGRAMID, + eGAMEDESC_CREATOR_LEVEL, + eGAMEDESC_CREATOR_CLASS, + eGAMEDESC_CREATOR_STRENGTH, + eGAMEDESC_CREATOR_MAGIC, + eGAMEDESC_CREATOR_DEXTERITY, + eGAMEDESC_CREATOR_VITALITY, + eGAMEDESC_CREATOR_GOLD, + eGAMEDESC_CREATOR_SPAWNED +}; + + + +//=========================================================================== +//=========================================================================== +// DATA Used in GetDataCallback + +// speed to play diablo logo +#define SML_LOGO_DELAY 54 + +SNET_DATA_SYSCOLORTABLE sgSysColorTbl[] = { + { COLOR_HIGHLIGHT, RGB(0x80, 0x80, 0x80) }, + { COLOR_HIGHLIGHTTEXT, RGB(0xff, 0xff, 0xff) }, +}; + + +//=========================================================================== + +//=========================================================================== +void FreeGlobalHeroArt(void) { + if (gBmpHeroPort) { + FREE(gBmpHeroPort); + gBmpHeroPort = NULL; + } + + if (gBmpSpawnedPort) { + FREE(gBmpSpawnedPort); + gBmpSpawnedPort = NULL; + } + + for (int i=0; i<10; i++) { + if (sgTransNum[i]) { + STransDelete(sgTransNum[i]); + sgTransNum[i] = NULL; + } + } + + if (gBmpSpecial) { + FREE(gBmpSpecial); + gBmpSpecial = NULL; + } + + if (gBmpScratchPort) { + FREE(gBmpScratchPort); + gBmpScratchPort = NULL; + } +} + +//=========================================================================== +BOOL LoadGlobalHeroArt(void) { + LPBYTE bmpHeroNum = NULL; + RECT rect; + + // Make sure this doesn't get loaded twice + if (gBmpHeroPort || sgTransNum[0]) { + return 1; + } + + UiLoadBmpFile( + TEXT("ui_art\\heroport.pcx"), + &gBmpHeroPort, + &gSizeHeroPort + ); + + UiLoadBmpFile( + TEXT("ui_art\\spwnport.pcx"), + &gBmpSpawnedPort, + NULL + ); + + UiLoadBmpFile( + TEXT("ui_art\\heronum.pcx"), + &bmpHeroNum, + &gSizeHeroNum + ); + + UiLoadBmpFile( + TEXT("ui_art\\special.pcx"), + &gBmpSpecial, + &gSizeSpecial // Special 'chat' icons + ); + + gHeroNumHgt = gSizeHeroNum.cy/10; + gHeroPortHgt = PORTRAIT_HEIGHT; + gSpecialHgt = gSizeSpecial.cy/NUM_SPECIAL_ICONS; + + gnDigitBytesSize = gSizeHeroNum.cx * gHeroNumHgt; + gnPortBytesSize = gSizeHeroPort.cx * gHeroPortHgt; + + + // Allocate space offscreen to build portraits + gBmpScratchPort = (LPBYTE)ALLOC(gHeroPortHgt * gSizeHeroPort.cx); + if (!gBmpScratchPort) { + return 0; + } + + + // Build Transparencies for numbers + memset(sgTransNum, 0, sizeof(sgTransNum)); + if (bmpHeroNum) { + // create an HTRANS for each number + for (int index = 0; index < 10; index++) { + + rect.left = 0; + rect.right = gSizeHeroNum.cx - 1; + rect.top = index * gHeroNumHgt; + rect.bottom = rect.top + gHeroNumHgt - 1; + + STransCreate( + bmpHeroNum, + gSizeHeroNum.cx, + gHeroNumHgt, + 8, + &rect, + PALETTEINDEX(239), + &sgTransNum[index] + ); + } + FREE(bmpHeroNum); + } + + return 1; +} + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiArtCallback (DWORD providerid, + DWORD artid, + LPPALETTEENTRY pe, + LPBYTE buffer, + DWORD buffersize, + int *width, + int *height, + int *bitdepth) { + + char filename[MAX_PATH] = ""; + + if (providerid == 'BNET') { + // Check for battlenet specific art + switch (artid) { + case SNET_ART_BACKGROUND: strcpy(filename,"ui_art\\bn_bkg.pcx"); break; + + case SNET_ART_JOINBACKGROUND: strcpy(filename, "ui_art\\bnjoinbg.pcx"); break; + case SNET_ART_HELPBACKGROUND: strcpy(filename, "ui_art\\hpopup.pcx"); break; + + case SNET_ART_BATTLE_LOGIN_BKG: strcpy(filename, "ui_art\\epopup.pcx"); break; + case SNET_ART_BATTLE_CONNECT_BKG: strcpy(filename, "ui_art\\bnconnbg.pcx"); break; + + case SNET_ART_BATTLE_CHAT_BKG: strcpy(filename, "ui_art\\chat_bkg.pcx"); break; + case SNET_ART_BATTLE_BTNS: strcpy(filename, "ui_art\\bnbuttns.pcx"); break; + case SNET_ART_BATTLE_SELECT_CHNL_BKG: strcpy(filename, "ui_art\\bnselchn.pcx"); break; + case SNET_ART_BATTLE_REDLAG: strcpy(filename, "ui_art\\redlag.pcx"); break; + case SNET_ART_BATTLE_YELLOWLAG: strcpy(filename, "ui_art\\yellolag.pcx"); break; + case SNET_ART_BATTLE_GREENLAG: strcpy(filename, "ui_art\\greenlag.pcx"); break; + + case SNET_ART_BUTTON_XSML: strcpy(filename,"ui_art\\but_xsm.pcx"); break; + case SNET_ART_BUTTON_SML: strcpy(filename,"ui_art\\but_sml.pcx"); break; + case SNET_ART_BUTTON_MED: strcpy(filename,"ui_art\\but_med.pcx"); break; + case SNET_ART_BUTTON_LRG: strcpy(filename,"ui_art\\but_lrg.pcx"); break; + + case SNET_ART_BATTLE_BADCONNECTION: strcpy(filename,"ui_art\\badconn.pcx"); break; + case SNET_ART_BATTLE_WELCOME_AD: strcpy(filename,"ui_art\\welcome.pcx"); break; + + case SNET_ART_BATTLE_LRG_EDIT_POPUP_BKG: strcpy(filename,"ui_art\\lepopup.pcx"); break; + } + + } + else if (providerid == 'IPXN') { + switch (artid) { + case SNET_ART_BACKGROUND: strcpy(filename, "ui_art\\ipx_bkg.pcx"); break; + } + } + else if (providerid == 0) { + switch (artid) { + case SNET_ART_BACKGROUND: strcpy(filename, "ui_art\\connect.pcx"); break; + } + } + + if (!filename[0]) { + // Check for generic artwork + switch (artid) { + case SNET_ART_JOINBACKGROUND: // fall through + case SNET_ART_BACKGROUND: strcpy(filename,"ui_art\\menu.pcx"); break; + case SNET_ART_BUTTONTEXTURE: strcpy(filename,"ui_art\\but_lrg.pcx"); break; + + case SNET_ART_POPUPBACKGROUND: strcpy(filename,"ui_art\\lpopup.pcx"); break; + case SNET_ART_HELPBACKGROUND: strcpy(filename,"ui_art\\lpopup.pcx"); break; + + case SNET_ART_APP_LOGO_SML: strcpy(filename, "ui_art\\xsmlogo.pcx"); break; + + case SNET_ART_BUTTON_XSML: strcpy(filename,"ui_art\\but_xsm.pcx"); break; + case SNET_ART_BUTTON_SML: strcpy(filename,"ui_art\\but_sml.pcx"); break; + case SNET_ART_BUTTON_MED: strcpy(filename,"ui_art\\but_med.pcx"); break; + case SNET_ART_BUTTON_LRG: strcpy(filename,"ui_art\\but_lrg.pcx"); break; + + case SNET_ART_PROGRESS_BACKGROUND: strcpy(filename, "ui_art\\prog_bg.pcx"); break; + case SNET_ART_PROGRESS_FILLER: strcpy(filename, "ui_art\\prog_fil.pcx"); break; + case SNET_ART_POPUPBACKGROUND_SML: strcpy(filename,"ui_art\\spopup.pcx"); break; + + case SNET_ART_SCROLLBARARROWS: strcpy(filename, "ui_art\\scrlarrw.pcx"); break; + case SNET_ART_SCROLLTHUMB: strcpy(filename, "ui_art\\scrlthmb.pcx"); break; + case SNET_ART_SCROLLBAR: strcpy(filename, "ui_art\\scrlbar.pcx"); break; + + } + } + + if (filename[0]) + return SBmpLoadImage(filename,pe,buffer,buffersize,width,height,bitdepth); + + return 0; +} + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiGetDataCallback(DWORD providerid, DWORD dataid, LPVOID buffer, DWORD buffersize, DWORD *bytesused) { + DWORD dwSize = 0; + + if (providerid == 'BNET') { + switch (dataid) { + case SNET_DATA_BATTLE_LOGODELAY: + dwSize = sizeof(DWORD); + if (buffer) { + DWORD *pdword; + + if (buffersize >= dwSize) { + pdword = (DWORD *)buffer; + *pdword = SML_LOGO_DELAY; + } + else return 0; + } + break; + } + } + + + if (!dwSize) { // Have we filled the data in yet? + switch (dataid) { // No... so move on to snp nonspecific constants + case SNET_DATA_SYSCOLORS: + dwSize = sizeof(sgSysColorTbl); + if (buffer) { + if (buffersize >= dwSize) + memcpy((LPBYTE)buffer, (LPBYTE)sgSysColorTbl, dwSize); + else return 0; + } + break; + + case SNET_DATA_CURSORARROW: + dwSize = sizeof(HCURSOR); + + if (buffer) { + if (buffersize >= dwSize) { + HCURSOR *phCursor; + + phCursor = (HCURSOR *)buffer; + *phCursor = LoadCursor(global_hinstance, "DIABLO_ARROWCURSOR"); + + if (*phCursor == NULL) + return 0; + } + else return 0; + } + break; + + case SNET_DATA_CURSORIBEAM: + dwSize = sizeof(HCURSOR); + + if (buffer) { + if (buffersize >= dwSize) { + HCURSOR *phCursor; + + phCursor = (HCURSOR *)buffer; + *phCursor = LoadCursor(global_hinstance, "DIABLOIBEAM"); + + if (*phCursor == NULL) + return 0; + } + else return 0; + } + break; + + case SNET_DATA_CURSORLINK: + dwSize = sizeof(HCURSOR); + + if (buffer) { + if (buffersize >= dwSize) { + HCURSOR *phCursor; + + phCursor = (HCURSOR *)buffer; + *phCursor = LoadCursor(global_hinstance, "DIABLO_LINKCURSOR"); + + if (*phCursor == NULL) + return 0; + } + else return 0; + } + break; + + } + } + + + if (bytesused) + *bytesused = dwSize; + + if (dwSize) + return 1; + + return 0; +} + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiSoundCallback(DWORD providerid, DWORD soundid, DWORD flags) { + switch (soundid) { + case SNET_SND_SELECTITEM: + UiSndPlayEnter(); + break; + + case SNET_SND_CHANGEFOCUS: + UiSndPlayClick(); + break; + } + + return 0; +} + +typedef BOOL (CALLBACK *SNETCHECKAUTHPROC )(DWORD,LPCSTR,LPCSTR,DWORD,LPCSTR,LPSTR,DWORD); + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiAuthCallback(DWORD dwItemType, LPCSTR szName, LPCSTR szDesc, DWORD dwUserFlags, LPCSTR szItem, LPSTR szErrorBuf, DWORD dwErrorBufSize) { + TUIHEROINFO heroInfo; + char szString[256]; + char szFmt[256]; + BOOL bAuth = FALSE; // we are not authorized unless we find a reason to be + char *p; + char szDescCopy[SNETSPI_MAXSTRINGLENGTH*2]; // trashable copy of description string + char szItemCopy[SNETSPI_MAXSTRINGLENGTH*2]; // trashable copy of item string + int nDescLen; + int nItemLen; + + + // Default to NULL error string + if (dwErrorBufSize) + szErrorBuf[0] = 0; + + // First make trashable copies of description and item strings + nDescLen = strlen(szDesc) + 1; + nItemLen = strlen(szItem) + 1; + if (nDescLen > sizeof(szDescCopy) || nItemLen > sizeof(szItemCopy)) { + if (szErrorBuf) + LoadString(global_hinstance, IDS_AUTH_STRTOOLONG, szErrorBuf, dwErrorBufSize); + return 0; + } + memcpy(szDescCopy, szDesc, nDescLen); + memcpy(szItemCopy, szItem, nItemLen); + + // Put data into our heroinfo struct so we can understand it. + if (!Txt2HeroInfo(szDescCopy, &heroInfo)) { + if (szErrorBuf) + LoadString(global_hinstance, IDS_AUTH_BADHERODESC, szErrorBuf, dwErrorBufSize); + return 0; + } + + if (dwItemType == SNET_AUTHTYPE_CHANNEL) { + // Blizzard employees and Sysop can go anywhere + if ((dwUserFlags & SNET_DDPF_BLIZZARD) || (dwUserFlags & SNET_DDPF_SYSOP)) + return 1; + + for (int i=0; i= nMinLevel) + return TRUE; + } + + // ok, bAuth contains our answer at this point + if (bAuth) + return TRUE; + // fall through to Unauthorized + +CHANNEL_UNAUTHORIZED: + if (szErrorBuf) { + int nLen; + + // Generate error string + LoadString(global_hinstance, IDS_AUTH_CHANNELRESTRICTED, szFmt, sizeof(szFmt)); + nLen = 1+sprintf(szString, szFmt, szItemCopy); + if ((int)dwErrorBufSize < nLen) { + memcpy(szErrorBuf, szString, dwErrorBufSize); + szErrorBuf[dwErrorBufSize-1] = 0; + } + else + memcpy(szErrorBuf, szString, nLen); + } + + return 0; + } + else { // SNET_AUTHTYPE_GAME + TGAMEDATA GameData; + + // Sysop can join any game + if (dwUserFlags & SNET_DDPF_SYSOP) + return 1; + + Txt2GameData((char *)szItemCopy, &GameData, NULL, NULL); + if (GameData.bDiff == DIFF_NIGHTMARE && heroInfo.level < 20) { + if (szErrorBuf) + LoadString(global_hinstance, IDS_NIGHTMARE_MINREQ, szErrorBuf, dwErrorBufSize); + return 0; + } + + if (GameData.bDiff == DIFF_HELL && heroInfo.level < 30) { + if (szErrorBuf) + LoadString(global_hinstance, IDS_HELL_MINREQ, szErrorBuf, dwErrorBufSize); + return 0; + } + + return 1; + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiDrawDescCallback (DWORD providerid, + DWORD itemtype, + LPCSTR itemname, + LPCSTR itemdescription, + DWORD itemflags, + DWORD drawflags, + DWORD time, + LPDRAWITEMSTRUCT lpdis) { + + char szItemDescCopy[SNETSPI_MAXSTRINGLENGTH*2]; + char szDiff[MAX_SHORT_STRING_LEN] = ""; + BOOL bSelected = lpdis->itemState & ODS_SELECTED; + COLORREF oldTextColor, oldBkColor; + static BOOL sbDrawingGameDesc = FALSE; + int nDescLen; + + // Make a trashable copy of the item description + nDescLen = strlen(itemdescription)+1; + if (nDescLen > sizeof(szItemDescCopy)) + return 0; + memcpy(szItemDescCopy, itemdescription, nDescLen); + + // First check if this is a game or player description + if (itemtype == SNET_DRAWTYPE_GAME) { + char szString[128]; + char szFmt[32]; + TGAMEDATA gameData; + LPSTR pszPlayerName = NULL; // Used to describe player who created the games + LPSTR pszPlayerDesc = NULL; + + // Put data into our gamedata struct so we can understand it. + if (!Txt2GameData(szItemDescCopy, &gameData, &pszPlayerName, &pszPlayerDesc)) + return 0; + + // Now display whatever we need to display + oldTextColor = SetTextColor(lpdis->hDC, RGB(0xff, 0xff, 0xff)); // white text + oldBkColor = SetBkColor(lpdis->hDC, (bSelected) ? COLOR_BG_HILITE : RGB(0, 0, 0)); + + // get format string and create text description + if (drawflags & SNET_DDF_INCLUDENAME) { + // Just print game name only + ExtTextOut( + lpdis->hDC, + lpdis->rcItem.left, + lpdis->rcItem.top, + ETO_CLIPPED | ETO_OPAQUE, + &lpdis->rcItem, + itemname, + strlen(itemname), + NULL); + } + else { + BOOL bHaveCreatorInfo; + + bHaveCreatorInfo = ((pszPlayerName != NULL) && (pszPlayerDesc != NULL)); + + // Build string for display + if ((unsigned char)gameData.bDiff < NUM_DIFFICULTIES) + LoadString(global_hinstance, IDS_DIFF_NORMAL+gameData.bDiff, szDiff, sizeof(szDiff)); + + + if ((drawflags & SNET_DDF_MULTILINE) && bHaveCreatorInfo) { + DRAWITEMSTRUCT disCopy; + POINT oldPos; + int nSaveAlignMode; + int nLineHgt; + TEXTMETRIC tm; + + // Get font height information + GetTextMetrics(lpdis->hDC, &tm); + nLineHgt = tm.tmHeight + tm.tmExternalLeading; + + // Print game description on first line + MoveToEx(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, &oldPos); + nSaveAlignMode = SetTextAlign(lpdis->hDC, TA_UPDATECP); + + TextOut(lpdis->hDC, 0, 0, szDiff, strlen(szDiff)); + + LoadString(global_hinstance, IDS_CREATOR, szString, sizeof(szString)); + MoveToEx(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top+nLineHgt, NULL); + TextOut(lpdis->hDC, 0, 0, szString, strlen(szString)); + + + // make a copy of the draw item struct so we can modify the draw rect location + disCopy = *lpdis; + + // Use Current Position as top-left of draw rect for player desc. + GetCurrentPositionEx(lpdis->hDC, (POINT *)&disCopy.rcItem.left); + SetTextAlign(lpdis->hDC, TA_NOUPDATECP); + + // Draw creator description on first second line + sbDrawingGameDesc = TRUE; + UiDrawDescCallback( + providerid, + SNET_DRAWTYPE_PLAYER, + pszPlayerName, + pszPlayerDesc, + 0, // No player flags + SNET_DDF_INCLUDENAME, + 0, // No time stamp + &disCopy); + sbDrawingGameDesc = FALSE; + + if (time) { + struct tm *newtime; + char szTime[32]; + char szAmPm[10]; + BOOL bAfternoon; + + SetTextAlign(lpdis->hDC, TA_UPDATECP); + + // Display Creation Time info + LoadString(global_hinstance, IDS_CREATIONTIME_FMT, szFmt, sizeof(szFmt)); + LoadString(global_hinstance, IDS_TIME, szTime, sizeof(szTime)); + + newtime = localtime((time_t *)&time ); /* Convert to local time. */ + + if (newtime) { //### BUG FIX MM 1/13/97 Protect against time out of range + bAfternoon = (newtime->tm_hour > 12); + LoadString(global_hinstance, IDS_AM + bAfternoon, szAmPm, sizeof(szAmPm)); + if( newtime->tm_hour > 12 ) /* Convert from 24-hour */ + newtime->tm_hour -= 12; /* to 12-hour clock. */ + if( newtime->tm_hour == 0 ) /* Set hour to 12 if midnight. */ + newtime->tm_hour = 12; + sprintf(szString, szFmt, szTime, newtime->tm_hour, newtime->tm_min, szAmPm); + + MoveToEx(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top+2*nLineHgt, NULL); + TextOut(lpdis->hDC, 0, 0, szString, strlen(szString)); + } + } + + MoveToEx(lpdis->hDC, oldPos.x, oldPos.y, NULL); + SetTextAlign(lpdis->hDC, nSaveAlignMode); + } + else { + // For single line, don't worry about creator info + TextOut(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, szDiff, strlen(szDiff)); + } + } + + // Restore colors to hdc + SetTextColor(lpdis->hDC, oldTextColor); + SetBkColor(lpdis->hDC, oldBkColor); + return 1; + } + else { // if (itemtype == SNET_DRAWTYPE_PLAYER) { + TUIHEROINFO heroInfo; + RECT srcRect; + int digit; + int nLineHgt; + int nPortOffset; + TEXTMETRIC tm; + + // Get font height information for centering of portrait on line + GetTextMetrics(lpdis->hDC, &tm); + nLineHgt = tm.tmHeight; // don't include tm.tmExternalLeading for centering purposes + nPortOffset = (nLineHgt - gHeroPortHgt)/2 + 1; + + + if (!sbDrawingGameDesc) { + oldTextColor = SetTextColor(lpdis->hDC, RGB(0xff, 0xff, 0)); // yellow text + oldBkColor = SetBkColor(lpdis->hDC, (bSelected) ? COLOR_BG_HILITE : RGB(0, 0, 0)); + } + + if (drawflags & SNET_DDF_INCLUDENAME) { + // Draw username + ExtTextOut( + lpdis->hDC, + lpdis->rcItem.left + HERO_PORT_X + gSizeHeroPort.cx + MIN_SPACING, + lpdis->rcItem.top, + ETO_CLIPPED | ETO_OPAQUE, + &lpdis->rcItem, + itemname, + strlen(itemname), + NULL); + } + + // Handle special user types, if necessary + int nIcon = -1; + if (itemflags) { + + // User is special, so display a special icon instead of a character class + if (itemflags & SNET_DDPF_SQUELCHED) { + nIcon = eSPECIAL_SQUELCHED; + } + else if (itemflags & SNET_DDPF_BLIZZARD) { + nIcon = eSPECIAL_BLIZZARD; + } + else if (itemflags & SNET_DDPF_MODERATOR) { + nIcon = eSPECIAL_MODERATOR; + } + else if (itemflags & SNET_DDPF_SPEAKER) { + nIcon = eSPECIAL_SPEAKER; + } + else if (itemflags & SNET_DDPF_SYSOP) { + if (providerid == 'BNET') + nIcon = eSPECIAL_SYSOP_BATTLENET; + else + nIcon = eSPECIAL_SYSOP; + } + } + + if (nIcon >= 0 && gBmpSpecial) { + SetRect(&srcRect, 0, 0, gSizeSpecial.cx - 1, gSpecialHgt - 1); + OffsetRect(&srcRect, 0, gSpecialHgt * nIcon); + + // Now draw icon in place of the hero icon + SDlgBltToWindow( + lpdis->hwndItem, + NULL, + lpdis->rcItem.left + HERO_PORT_X, + lpdis->rcItem.top + nPortOffset, + gBmpSpecial, + &srcRect, + &gSizeSpecial); + } + else { + // Player is not a special player type. + // Make sure that he/she is playing diablo before drawing + // hero information. + if (Txt2HeroInfo(szItemDescCopy, &heroInfo)) { + // compose portrait in offscreen portrait buffer. + // That way we don't have to clip on each blit. + + // Check for spawned here... + if (heroInfo.spawned) { + if (gBmpScratchPort && gBmpSpawnedPort) + SBltROP3( + gBmpScratchPort, + gBmpSpawnedPort, // Only one class in spawned version + gSizeHeroPort.cx, + gHeroPortHgt, + gSizeHeroPort.cx, + gSizeHeroPort.cx, + NULL, + SRCCOPY); + } + else { + if (gBmpScratchPort && gBmpHeroPort) + SBltROP3( + gBmpScratchPort, + gBmpHeroPort + (gnPortBytesSize*(heroInfo.heroclass + (heroInfo.herorank*UI_NUM_CLASSES))), + gSizeHeroPort.cx, + gHeroPortHgt, + gSizeHeroPort.cx, + gSizeHeroPort.cx, + NULL, + SRCCOPY); + } + + // Draw level number + + // Draw 10's digit + digit = heroInfo.level/10; + if (digit && gBmpScratchPort) { + STransBlt( + gBmpScratchPort + (gSizeHeroPort.cx*HERO_LEVEL_Y) + HERO_LEVEL_X1, + 0, 0, + gSizeHeroPort.cx, + sgTransNum[digit]); + } + + // Draw 1's digit + digit = heroInfo.level % 10; + + if (gBmpScratchPort) + STransBlt( + gBmpScratchPort + (gSizeHeroPort.cx*HERO_LEVEL_Y) + HERO_LEVEL_X2, + 0, 0, + gSizeHeroPort.cx, + sgTransNum[digit]); + + // Now copy portrait to the screen + // init source rect + SetRect(&srcRect, 0, 0, gSizeHeroPort.cx - 1, gHeroPortHgt -1); + + if (gBmpScratchPort) + SDlgBltToWindow( + lpdis->hwndItem, + NULL, + lpdis->rcItem.left + HERO_PORT_X, + lpdis->rcItem.top + nPortOffset, + gBmpScratchPort, + &srcRect, + &gSizeHeroPort); + } + } + + // Restore colors to hdc + if (!sbDrawingGameDesc) { + SetTextColor(lpdis->hDC, oldTextColor); + SetBkColor(lpdis->hDC, oldBkColor); + } + return 1; + } +} + + +//### MM Diablo Patch #2 3/21/97 BEGIN +#define DIABLO_CATEGORY_MASK 0xffff // Directs Battle.net to match on all category bits. +//=========================================================================== +// UiSelectCategory() +// +//=========================================================================== +BOOL CALLBACK UiCategoryCallback ( + BOOL userinitiated, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD * categorybits, + DWORD * categorymask) { + + *categorymask = DIABLO_CATEGORY_MASK; + *categorybits = GetPlayerCategory(playerdata->playerdescription); + return TRUE; +} + + + +//=========================================================================== +// +//=========================================================================== +DWORD GetPlayerCategory(const char *szDesc) { + TUIHEROINFO HeroInfo; + TCHAR szDescCopy[512]; + DWORD dwCategory = 0; + int nLevel; + + + // First make a trashable copy of the player description string + strcpy(szDescCopy, szDesc); + + if (!Txt2HeroInfo(szDescCopy, &HeroInfo)) + return 0; + + nLevel = HeroInfo.level; + if (nLevel == 1) // Level 1 + return dwCategory; + + dwCategory++; + if (nLevel < 4) // Level 2-3 + return dwCategory; + + dwCategory++; + if (nLevel < 6) // Level 4-5 + return dwCategory; + + dwCategory++; + if (nLevel < 8) // Level 6-7 + return dwCategory; + + dwCategory++; + if (nLevel < 10) // Level 8-9 + return dwCategory; + + dwCategory++; + if (nLevel < 13) // Level 10-12 + return dwCategory; + + dwCategory++; + if (nLevel < 17) // Level 13-16 + return dwCategory; + + dwCategory++; + if (nLevel < 20) // Level 17-19 + return dwCategory; + + dwCategory++; + if (nLevel < 25) // Level 20-24 + return dwCategory; + + dwCategory++; + if (nLevel < 30) // Level 25-29 + return dwCategory; + + dwCategory++; + if (nLevel < 35) // Level 30-34 + return dwCategory; + + dwCategory++; + if (nLevel < 40) // Level 35-39 + return dwCategory; + + dwCategory++; + if (nLevel < 48) // Level 40-47 + return dwCategory; + + dwCategory++; // Level 48+ + return dwCategory; +} +//### MM Diablo Patch #2 3/21/97 END + + +//=========================================================================== +// These routines will translate to and from the game description string that storm uses. +// +// The game description format is as follows: +// "%d\r%s\r%s", bDiff, szPlayerName, szPlayerDesc +// +// NOTE: if this format changes, update CreateGameCriteria(), and enum _description_fields +//=========================================================================== +BOOL Txt2GameData(char *szDesc, TGAMEDATA *pGameData, LPSTR *ppszPlayerName, LPSTR *ppszPlayerDesc) { + LPSTR p; + + if (szDesc[0] == 0) + return 0; + + pGameData->bDiff = atoi(szDesc); + if ((unsigned int)pGameData->bDiff >= NUM_DIFFICULTIES) + return 0; + + // Find player name + p = strchr(szDesc, '\r'); + if (p == NULL) + return 1; + *p++ = 0; + if (ppszPlayerName) + *ppszPlayerName = p; + + // Find player description + p = strchr(p, '\r'); + if (p == NULL) + return 1; + *p++ = 0; + if (ppszPlayerDesc) + *ppszPlayerDesc = p; + + return 1; + +} + +//=========================================================================== +void GameData2Txt(TGAMEDATA *pGameData, LPCSTR szPlayerName, LPCSTR szPlayerDesc, LPSTR szDesc, int nMaxLength) { + + // fill string with game info text, including creator's player info if it will fit. + if (nMaxLength > (int)(strlen(szPlayerName)+strlen(szPlayerDesc)+5)) + sprintf(szDesc, "%d\r%s\r%s", pGameData->bDiff, szPlayerName, szPlayerDesc); + else + itoa(pGameData->bDiff, szDesc, 10); +} + +//=========================================================================== +// These routines will translate to and from the hero description string that storm uses. +// +// The game description format is as follows: +// "%d %d %d %d %d %d %d", wLevel, bHeroClass, bStrength, bMagic, bDexterity, bVitality, dwGold +// +// NOTE: if this format changes, update CreatGameCriteria(), and enum _description_fields +//=========================================================================== + +BOOL Txt2HeroInfo(char *szDesc, TUIHEROINFO *pHeroInfo) { + int nLevel, nHeroClass, nHeroRank, nStrength, nMagic, nDexterity, nVitality, nGold, nSpawned; + DWORD *pdwProgramId = (DWORD *)szDesc; + + // Reset everything, in case this routine fails + ZeroMemory(pHeroInfo, sizeof(TUIHEROINFO)); + + // Only parse the hero info string if it was built by a user game with a programid we recognize. + if (szDesc[0] == 0 || *pdwProgramId != PROGRAMID) + return 0; + + + // If item count changes, change if constant + if (9 != sscanf(&szDesc[4], "%d %d %d %d %d %d %d %d %d", + &nLevel, + &nHeroClass, + &nHeroRank, + &nStrength, + &nMagic, + &nDexterity, + &nVitality, + &nGold, + &nSpawned)) { + return 0; + } + + + // Validate some of the data + if (*pdwProgramId == PROGRAMID && nSpawned) + return 0; + + //if ((*pdwProgramId == 'DSHR') && !nSpawned) + // return 0; + + + //### BUG FIX MM 2/3/97 Character Level 0 is invalid also. + if (nLevel == 0) + return 0; + //### END + + if ((unsigned long)nLevel > 99) + return 0; + + if ((unsigned long)nHeroClass >= UI_NUM_CLASSES) + return 0; + + if ((unsigned long)nHeroRank > NUM_DIFFICULTIES) + return 0; + + if (nStrength < 0 || nMagic < 0 || nDexterity < 0 || nVitality < 0) + return 0; + + // Now write values into hero info struct + pHeroInfo->level = (WORD) nLevel; + pHeroInfo->heroclass = (BYTE) nHeroClass; + pHeroInfo->herorank = (BYTE) nHeroRank; + pHeroInfo->strength = (BYTE) nStrength; + pHeroInfo->magic = (BYTE) nMagic; + pHeroInfo->dexterity = (BYTE) nDexterity; + pHeroInfo->vitality = (BYTE) nVitality; + pHeroInfo->gold = (DWORD) nGold; + pHeroInfo->spawned = (BOOL) nSpawned; + + return 1; +} + +//=========================================================================== +void HeroInfo2Txt(TUIHEROINFO *pHeroInfo, char *szDesc) { + DWORD *pdword; + + // fill string with hero info text + pdword = (DWORD *)szDesc; + *pdword = sgMyProgramId; + + sprintf(&szDesc[4], " %d %d %d %d %d %d %d %d %d", + pHeroInfo->level, + pHeroInfo->heroclass, + pHeroInfo->herorank, + pHeroInfo->strength, + pHeroInfo->magic, + pHeroInfo->dexterity, + pHeroInfo->vitality, + pHeroInfo->gold, + pHeroInfo->spawned); +} + + +//=========================================================================== +// UiCreateGameCriteria() +// +// This routine directs the Battle.net server how to prioritize games in the join game list. +// If the game description string changes, this must change as well. +//=========================================================================== +int APIENTRY UiCreateGameCriteria(TPUIHEROINFO pHeroInfo, char *szCriteria) { + return sprintf(szCriteria, "#%d?%d", eGAMEDESC_CREATOR_LEVEL, pHeroInfo->level); +} + +//*************************************************************************** +//*************************************************************************** +BOOL APIENTRY UiCreatePlayerDescription(TPUIHEROINFO pHeroInfo, DWORD dwProgramId, LPSTR pPlayerDesc) { + sgMyProgramId = dwProgramId; + HeroInfo2Txt(pHeroInfo, pPlayerDesc); + return 1; +} + + diff --git a/Uisrc/UI/COPYPROT.CPP b/Uisrc/UI/COPYPROT.CPP new file mode 100644 index 0000000..62c39db --- /dev/null +++ b/Uisrc/UI/COPYPROT.CPP @@ -0,0 +1,185 @@ +//**************************************************************************** +// CopyProt.cpp +// Diablo UI copy protection dialog +// +// By Frank Pearce +// created 11.18.96 +//**************************************************************************** + +#include "pch.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + static HGLOBAL sghBgRes; + static HGLOBAL sghBtnRes; + static HGLOBAL sghPalRes; + + +//**************************************************************************** +//**************************************************************************** +static void CopyProtDestroy(HWND window) { + + // free the art resources + if (sghPalRes) { + FreeResource(sghPalRes); + sghPalRes = NULL; + } + if (sghBtnRes) { + FreeResource(sghBtnRes); + sghBtnRes = NULL; + } + if (sghBgRes) { + FreeResource(sghBgRes); + sghBgRes = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CopyProtInit(HWND window, LPCSTR copyprottext) { + LPBYTE BgBmp; + LPBYTE BtnBmp; + PALETTEENTRY * BgPal; + PALETTEENTRY LoadedPal[PALETTE_REGISTERS]; + SIZE BgSize = { 284, 148 }; + SIZE BtnSize = { 112, 140 }; + + int BtnIDs[] = { IDC_OK, IDCANCEL, 0 }; + LPCTSTR srpopup = TEXT("ui_art\\srpopup.pcx"); + HWND child; + + // load the art resources + sghBgRes = LoadResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_POPUPART"), TEXT("ART_FILES")) + ); + sghBtnRes = LoadResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_BTNART"), TEXT("ART_FILES")) + ); + sghPalRes = LoadResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_ARTPAL"), TEXT("ART_FILES")) + ); + + // lock the loaded resources + BgBmp = (LPBYTE) LockResource(sghBgRes); + BtnBmp = (LPBYTE) LockResource(sghBtnRes); + BgPal = (PALETTEENTRY *) LockResource(sghPalRes); + + // register the images + if (BgBmp) { + SDlgSetBitmap( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + BgBmp, + NULL, + BgSize.cx, + BgSize.cy + ); + } + + ShowCursor(TRUE); + UiAltFadeInit(window); + + if (BtnBmp) + UiSetButtonBitmaps(window, BtnIDs, BtnBmp, &BtnSize); + + // load the palette + if (BgPal) { + memcpy(LoadedPal, BgPal, sizeof(PALETTEENTRY) * PALETTE_REGISTERS); + SDrawUpdatePalette(0, PALETTE_REGISTERS, LoadedPal, TRUE); + } + + child = GetDlgItem(window, IDC_OKCANCEL_TEXT); + SetWindowText(child, copyprottext); + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void CopyProtAbort(HWND window, int retval) { + ShowCursor(FALSE); + SDlgEndDialog(window, retval); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK CopyProtDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + CopyProtDestroy(window); + UiVidFadeOut(DEFAULT_STEPS*2); + break; + + case WM_INITDIALOG: + CopyProtInit(window, (LPCSTR)lparam); + return 1; + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: + switch (GetWindowLong(GetFocus(), GWL_ID)) { + case IDC_OK: + CopyProtAbort(window, IDOK); + break; + default: + CopyProtAbort(window, IDCANCEL); + break; + } + break; + case IDC_OK: + CopyProtAbort(window, IDOK); + break; + case IDCANCEL: + CopyProtAbort(window, IDCANCEL); + break; + } + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiCopyProtError(DWORD *result) { + TCHAR copyproterror[128]; + DWORD dwResult; + + if (! UiIsSpawned()) + LoadString(global_hinstance, IDS_COPYPROT_ERR, copyproterror, 127); + else + LoadString(global_hinstance, IDS_SPAWNDATA_ERR, copyproterror, 127); + + dwResult = SDlgDialogBoxParam( + global_hinstance, + TEXT("OKCANCEL_DIALOG"), + SDrawGetFrameWindow(), + CopyProtDialogProc, + (LPARAM)copyproterror + ); + + if (result) + *result = dwResult; + + return 1; +} \ No newline at end of file diff --git a/Uisrc/UI/CR8GAME.CPP b/Uisrc/UI/CR8GAME.CPP new file mode 100644 index 0000000..20b178f --- /dev/null +++ b/Uisrc/UI/CR8GAME.CPP @@ -0,0 +1,522 @@ +/**************************************************************************** +* +* cr8game.CPP +* BattleNet Chat Room +* +* By Michael Morhaime +* +***/ + +#include "pch.h" +#include "stdio.h" +#include "uisnd.h" + +#define MAX_STRING_LEN 256 +#define NUM_DIFF_SETTINGS 3 +#define NUM_DIFF_BTN_POSITIONS 2 + + +//**************************************************************************** +// Private Data +//**************************************************************************** +static LPBYTE sgBackgroundBmp = NULL; +static LPBYTE sgButtonBmp = NULL; +static LPBYTE sgDiffBtnBmp = NULL; + +static SIZE sgDiffBtnSize; // Holds size of individual button in pixels + +static TGAMEDATA sgGameData; // Holds game initialization data +static TGAMEINFO sgGameInfo; // Holds game name and password + +static LONG sglPrivate; +static LONG sglDifficulty; +static LONG sglRestricted; + +extern int UiOkDialog(HWND parent, LPCSTR oktext, BOOL bErrFlag); + +extern BOOL IsNastyName(LPCTSTR name); +extern BOOL InvalidChars(LPCTSTR name, LPCTSTR additionalbad); +extern DWORD GetPlayerCategory(const char *szDesc); //### MM Diablo Patch #2 3/21/97 + +typedef struct _create_params { + SNETCREATEDATAPTR createdata; + SNETPROGRAMDATAPTR programdata; + SNETPLAYERDATAPTR playerdata; + SNETUIDATAPTR interfacedata; + SNETVERSIONDATAPTR versiondata; + DWORD *playerid; +} TCREATEPARAMS, PTCREATEPARAMS; + +static TCREATEPARAMS sgCreateParams; + +//=========================================================================== +static void DestroyArtwork (HWND window) { + if (sgBackgroundBmp) { + FREE(sgBackgroundBmp); + sgBackgroundBmp = NULL; + } + + if (sgButtonBmp) { + FREE(sgButtonBmp); + sgButtonBmp = NULL; + } + + if (sgDiffBtnBmp) { + FREE(sgDiffBtnBmp); + sgDiffBtnBmp = NULL; + } +} + +//=========================================================================== +static BOOL LoadArtwork (HWND window) { + int btn_ids[] = { + IDOK, + IDCANCEL, + 0 + }; + + int diff_btn_ids[] = { + IDC_RADIO_NORMAL, + IDC_RADIO_NIGHTMARE, + IDC_RADIO_HELL, + 0 + }; + + + SIZE btnbmpsize; + SIZE bgSize; + + // For the background bitmap, "Dialog" is specified as the controltype to prevent + // LoadArtFile() from loading a palette, which would be done if we simply specified "". + LoadArtFile( + window, + NULL, + TEXT("Dialog"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\creat_bg.pcx"), + &sgBackgroundBmp, + &bgSize); + + + UiLoadBmpFile( + TEXT("ui_art\\but_xsm.pcx"), + &sgButtonBmp, + &btnbmpsize + ); + SDlgSetControlBitmaps (window, btn_ids, NULL, sgButtonBmp, &btnbmpsize, SDLG_ADJUST_VERTICAL); + + UiLoadBmpFile( + TEXT("ui_art\\diffbtns.pcx"), + &sgDiffBtnBmp, + &sgDiffBtnSize + ); + UiSetStaticBmp(window, IDC_STATIC_DIFF_DESC, sgBackgroundBmp, &bgSize); + return 1; +} + +//=========================================================================== +static void DrawDiffBtn(HWND hWndBtn, int nDiff, BOOL bPressed) { + TPBMP tpbmp; + int nBtnBytes; + + tpbmp = (TPBMP) GetWindowLong(hWndBtn, GWL_USERDATA); + if (tpbmp == NULL || sgDiffBtnBmp == NULL) + return; + + // Calculate byte offset of each button in source bitmap + nBtnBytes = sgDiffBtnSize.cx * tpbmp->datasize.cy; + + // now draw the appropriate button into + SBltROP3 ( + tpbmp->data, + sgDiffBtnBmp + ((nDiff*NUM_DIFF_BTN_POSITIONS)+bPressed)*nBtnBytes, + tpbmp->datasize.cx, + tpbmp->datasize.cy, + tpbmp->datasize.cx, + sgDiffBtnSize.cx, + NULL, + SRCCOPY + ); + + // Make sure storm redraws this button + InvalidateRect(hWndBtn, NULL, FALSE); +} + +//=========================================================================== +static void DestroyDiffBtns(HWND window) { + HWND hWndBtn; + RECT r; + TPBMP tpbmp; + + for (int i=0; idata) { + FREE(tpbmp->data); + tpbmp->data = 0; + } + + FREE(tpbmp); + } + } +} + +//=========================================================================== +static void InitDiffBtns(HWND window) { + HWND hWndBtn; + RECT r; + TPBMP tpbmp; + + for (int i=0; idata = (LPBYTE) ALLOC(r.right*r.bottom); + tpbmp->datasize.cx = r.right; + tpbmp->datasize.cy = r.bottom; + tpbmp->userdata = 0; + + SetWindowLong(hWndBtn, GWL_USERDATA, (LONG) tpbmp); + + // set it so the button uses the bmp just created + SDlgSetBitmap( + hWndBtn, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND | SDLG_USAGE_SELECTED | SDLG_USAGE_NORMAL, + tpbmp->data, + NULL, + tpbmp->datasize.cx, + tpbmp->datasize.cy + ); + + // Init the button image + DrawDiffBtn(hWndBtn, i, FALSE); + } +} + +//=========================================================================== +static void InitDefaultOptions(HWND hWnd) { + // Init unused game flags to 0 + sglPrivate = 0; + sglRestricted = 0; + + // Set to impossible values, so that help text is updated. + sglDifficulty = -1; + + // Simulate button clicks, so that description text gets updated. + SendDlgItemMessage(hWnd, IDC_RADIO_NORMAL, BM_CLICK, 0, 0); +} + +//=========================================================================== +static void SetBtns(HWND window, int nSelected) { + if (sglDifficulty != -1) + DrawDiffBtn(GetDlgItem(window, IDC_RADIO_NORMAL+sglDifficulty), sglDifficulty, FALSE); + + DrawDiffBtn(GetDlgItem(window, IDC_RADIO_NORMAL+nSelected), nSelected, TRUE); +} + +//=========================================================================== +static void SetDesc(HWND hWndDesc, LONG lFirstString, LONG lValue) { + char szText[MAX_STRING_LEN]; + + LoadString(global_hinstance, lFirstString + lValue, szText, sizeof(szText)); + SetWindowText(hWndDesc, szText); +} + +//=========================================================================== +static int ProcessName(LPSTR szName) { + char szTemp[MAX_GAME_LEN]; + int nStart, nEnd; + + // Take the name and remove leading and trailing spaces + strcpy(szTemp, szName); + + // Proceed until we find a non-space or null termination + for (nStart=0; ;nStart++) { + if (szTemp[nStart] != ' ') + break; + if (szTemp[nStart] == 0) + return 0; + } + + + // Now start at the end and look for a non-space character. Proceed until + // we reach the beginning + for (nEnd=strlen(szTemp)-1; ;nEnd--) { + + if (szTemp[nEnd] != ' ') + break; + + if (nEnd <= nStart) + return 0; + } + szTemp[++nEnd] = 0; // NULL terminate string before trailing spaces + + strcpy(szName, &szTemp[nStart]); + return(nEnd - nStart); // Length of string not including NULL termination +} + + + + +//=========================================================================== +BOOL TryCreateGame(HWND window) { + char szString[256]; + char szGameDesc[SNETSPI_MAXSTRINGLENGTH]; + BOOL bReturn; + + + // Create Game description for Storm (and for display of game later) + GameData2Txt( + &sgGameData, + sgCreateParams.playerdata->playername, + sgCreateParams.playerdata->playerdescription, + szGameDesc, + sizeof(szGameDesc)); + + if (!UiAuthCallback( + SNET_AUTHTYPE_GAME, + sgCreateParams.playerdata->playername, + sgCreateParams.playerdata->playerdescription, + 0, + szGameDesc, + szString, + sizeof(szString))) { + UiMessageBoxCallback(window, szString, NULL, MB_ICONWARNING | MB_OK); + return 0; + } + + // Make sure the application has allocated enough data for the structure + // (could be version differences with the .exe) + if (sgCreateParams.programdata->initdatabytes >= sizeof(sgGameData)) { + TGAMEDATA *pInitData = (TGAMEDATA *)sgCreateParams.programdata->initdata; + pInitData->bDiff = sgGameData.bDiff; + } + + bReturn = SNetCreateGame(sgGameInfo.szName, + sgGameInfo.szPassword, + szGameDesc, + GetPlayerCategory(sgCreateParams.playerdata->playerdescription), //### MM Diablo Patch #2 3/21/97 + sgCreateParams.programdata->initdata, // Diablo is responsible for making this point to an sgGameData structure + sgCreateParams.programdata->initdatabytes, + sgCreateParams.createdata->maxplayers, + sgCreateParams.playerdata->playername, + NULL, + sgCreateParams.playerid); + + if (bReturn == FALSE) { + char szFmt[128]; + if (GetLastError() == SNET_ERROR_ALREADY_EXISTS) { + LoadString(global_hinstance, IDS_GAMEALREADYEXISTS, szFmt, sizeof(szFmt)); + sprintf(szString, szFmt, sgGameInfo.szName); + } + else + LoadString(global_hinstance, IDS_CREATEGAMEERROR, szString, sizeof(szString)); + + UiMessageBoxCallback(window, szString, NULL, MB_ICONWARNING | MB_OK); + } + + return bReturn; +} + + +//=========================================================================== +static HFONT SetFonts (HWND window) { + HFONT hFont = NULL; + LOGFONT lFont; + + if ((hFont = (HFONT) SendMessage(window, WM_GETFONT, 0, 0L))) { + // Start with dialog font and modify size and weight + if (GetObject(hFont, sizeof(LOGFONT), (LPSTR) &lFont)) { + lFont.lfHeight = -MulDiv(12, 96, 72); // height of 12 pixels + lFont.lfWidth = 0; // let Windows autosize width + + if (hFont = CreateFontIndirect((LPLOGFONT) &lFont)) { + SendDlgItemMessage(window, IDC_RADIO_NORMAL, WM_SETFONT, (WPARAM)hFont, 0); + SendDlgItemMessage(window, IDC_RADIO_NIGHTMARE, WM_SETFONT, (WPARAM)hFont, 0); + SendDlgItemMessage(window, IDC_RADIO_HELL, WM_SETFONT, (WPARAM)hFont, 0); + } + } + } + return hFont; +} + +//=========================================================================== +static BOOL CALLBACK ChatCreateGameDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + + static HWND hWndName, hWndPassword; + static HFONT shFont; + + switch (message) { + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: { + char szText[MAX_STRING_LEN]; + + // First, verify user entered required information + if (!SendMessage(hWndName, WM_GETTEXTLENGTH, 0, 0L)) { + LoadString(global_hinstance,IDS_NAME_REQUIRED,szText,MAX_STRING_LEN); + UiOkDialog(window, szText, TRUE); + return 0; + } + + // Fill create game structure + SendMessage(hWndName, WM_GETTEXT, sizeof(sgGameInfo.szName), (LPARAM)((LPSTR)sgGameInfo.szName)); + if (IsNastyName(sgGameInfo.szName) || InvalidChars(sgGameInfo.szName, "") || !ProcessName(sgGameInfo.szName)) { + LoadString(global_hinstance,IDS_GAME_NAME_INVALID,szText,MAX_STRING_LEN); + UiOkDialog(window, szText, TRUE); + sgGameInfo.szName[0] = 0; + return 0; + } + + + // Check if password was entered + sgGameInfo.szPassword[0] = 0; + if (SendMessage(hWndPassword, WM_GETTEXTLENGTH, 0, 0)) { + SendMessage(hWndPassword, WM_GETTEXT, sizeof(sgGameInfo.szPassword), (LPARAM)(LPSTR)(sgGameInfo.szPassword)); + } + + // Now that we have verified that the create game is successful, we can start + // modifying the global create game data. + + // Set difficulty + sgGameData.bDiff = (BYTE) sglDifficulty; + + UiSndPlayEnter(); + + if (TryCreateGame(window)) + SDlgEndDialog(window, TRUE); + return 0; + + } + case IDCANCEL: + UiSndPlayEnter(); + SDlgEndDialog(window, FALSE); + return 0; + + + case IDC_RADIO_NORMAL: + case IDC_RADIO_NIGHTMARE: + case IDC_RADIO_HELL: { + int nDiff = LOWORD(wparam) - IDC_RADIO_NORMAL; + int nNotify = HIWORD(wparam); + + // Don't allow these buttons to get the keyboard focus + if (nNotify == BN_SETFOCUS) + SetFocus(hWndName); + + if (sglDifficulty != nDiff) { + if (sglDifficulty != -1) { + // Unhilite previous button + SendMessage((HWND)GetDlgItem(window, sglDifficulty + IDC_RADIO_NORMAL), BM_SETSTATE, FALSE, 0); + UiSndPlayClick(); + } + + SetBtns(window, nDiff); + SetDesc(GetDlgItem(window, IDC_STATIC_DIFF_DESC), + IDS_NORMAL_DESC_XLONG, + nDiff); + + sglDifficulty = nDiff; + } + + // Make sure current selection is hilited (windows will want to unhilite it) + SendMessage((HWND)lparam, BM_SETSTATE, TRUE, 0); + break; + } + } + break; + + + case WM_CTLCOLORSTATIC: + if (GetWindowLong((HWND)lparam, GWL_ID) == IDC_TITLE) { + UiSetTextYellow((HDC)wparam); + return (BOOL) GetStockObject(NULL_BRUSH); + } + + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + + case WM_DESTROY: + DestroyArtwork(window); + DestroyDiffBtns(window); + if (shFont) + DeleteObject(shFont); + + hWndName = hWndPassword = NULL; + break; + + case WM_INITDIALOG: + hWndName = GetDlgItem(window, IDC_EDIT_NAME); + hWndPassword = GetDlgItem(window, IDC_EDIT_PASSWORD); + + LoadArtwork(window); + InitDiffBtns(window); + InitDefaultOptions(window); + shFont = SetFonts(window); + + SendMessage(hWndName, EM_LIMITTEXT, sizeof(sgGameInfo.szName)-1, 0); + SendMessage(hWndPassword, EM_LIMITTEXT, sizeof(sgGameInfo.szPassword)-1, 0); + + return 1; + + } + + return SDlgDefDialogProc(window,message,wparam,lparam); + +} + + +/**************************************************************************** +* +* EXPORTED FUNCTIONS +* +***/ + + +//=========================================================================== +BOOL CALLBACK UiCreateGameCallback (SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid) { + + BOOL bResult; + + + // Init global params data + sgCreateParams.createdata = createdata; + sgCreateParams.programdata = programdata; + sgCreateParams.playerdata = playerdata; + sgCreateParams.interfacedata = interfacedata; + sgCreateParams.versiondata = versiondata; + sgCreateParams.playerid = playerid; + + + + // DISPLAY THE DIALOG BOX + bResult = SDlgDialogBox(global_hinstance,TEXT("DIALOG_CREATE_GAME"),interfacedata->parentwindow,ChatCreateGameDialogProc); + if (bResult == -1) + return 0; + return bResult; +} diff --git a/Uisrc/UI/CREADUNG.CPP b/Uisrc/UI/CREADUNG.CPP new file mode 100644 index 0000000..df6b02b --- /dev/null +++ b/Uisrc/UI/CREADUNG.CPP @@ -0,0 +1,385 @@ +//**************************************************************************** +// CreaDung.cpp +// Diablo UI create multi player dungeon "Doom style" popup dialog +// +// By Frank Pearce +// created 11.7.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern int SelHeroGetMode(void); + void SelHeroSetDiff(int difficulty); + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + extern BOOL Txt2HeroInfo(char *szDesc, TUIHEROINFO *pHeroInfo); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + IDC_DLGTITLE2, + 0 + }; + static int sgDiffID[] = { + IDC_DLGTITLE3, + 0 + }; + static int sgDiffDescID[] = { + IDC_DIFFDESC, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_DIFFBTN1, + IDC_DIFFBTN2, + IDC_DIFFBTN3, + 0 + }; + + static SNETCREATEDATAPTR sgCreateData; + static SNETPROGRAMDATAPTR sgCre8ProgramData; + static SNETPLAYERDATAPTR sgCre8PlayerData; + static DWORD *sgpCre8PlayerID; + static int sgPlayersMode; // single or multi player + static BOOL sgDiffLoadFocus; + static LPCSTR sgGameName; + static int sgLastError; + + +//**************************************************************************** +//**************************************************************************** +void SelDiffLoadFocus(BOOL loadfocus) { + sgDiffLoadFocus = loadfocus; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffSetInfo(HWND window, int childid) { + TCHAR desc[256]; + HWND child; + + LoadString( + global_hinstance, + IDS_NORMAL + (childid - IDC_DIFFBTN1), + desc, + 255 + ); + child = GetDlgItem(window, IDC_DLGTITLE3); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), desc); + UiDoomStaticReset(window, sgDiffID, AF_BIGGRAY); + + LoadString( + global_hinstance, + IDS_NORMAL_DESC_XLONG + (childid - IDC_DIFFBTN1), + desc, + 255 + ); + child = GetDlgItem(window, IDC_DIFFDESC); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), desc); + UiDoomStaticReset(window, sgDiffDescID, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffDestroy(HWND window) { + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgDiffDescID); + UiDoomCtrlsDestroy(window, sgDiffID); + UiDoomCtrlsDestroy(window, sgTextIDs); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + if (sgDiffLoadFocus) { + FocusAnimateDestroy(); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffInit(HWND window) { + TPBMP tpBmp; + + if (sgDiffLoadFocus) { + FocusAnimateInit("ui_art\\focus16.pcx"); + } + else { + FocusReInit(); + } + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT("popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\seldiff.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + } + + UiOnPaintBtns(window, sgListIDs); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomStaticInit(window, sgDiffID, AF_BIGGRAY); + UiDoomStaticInit(window, sgDiffDescID, AF_SMALLGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffAttemptCreate(HWND window) { + char szGameDesc[256]; + TGAMEDATA GameData; + TGAMEDATA *pInitData; + HWND child = GetFocus(); + + if (window != GetParent(child)) return; + + // create a string describing the game + GameData.bDiff = GetWindowLong(child, GWL_ID) - IDC_DIFFBTN1; + GameData2Txt( + &GameData, + sgCre8PlayerData->playername, + sgCre8PlayerData->playerdescription, + szGameDesc, + sizeof(szGameDesc) + ); + + // get the diff setting and stuff it into initdata + if (sgCre8ProgramData->initdatabytes >= sizeof(TGAMEDATA)) { + pInitData = (TGAMEDATA *)sgCre8ProgramData->initdata; + pInitData->bDiff = GetWindowLong(child, GWL_ID) - IDC_DIFFBTN1; + } + + // try to create the game + if (SNetCreateGame( + sgGameName, // game name + NULL, // game password + szGameDesc, + 0, //### MM Diablo Patch #2 3/21/97 + sgCre8ProgramData->initdata, + sgCre8ProgramData->initdatabytes, + sgCreateData->maxplayers, + sgCre8PlayerData->playername, // player name + NULL, + sgpCre8PlayerID + ) + ) { + SelDiffAbort(window, IDOK); + } + else { + // display a creation error + TCHAR errfmt[128], errstr[192]; + sgLastError = GetLastError(); + switch (sgLastError) { + case SNET_ERROR_ALREADY_EXISTS: + LoadString(global_hinstance, IDS_DUPGAMENAME_FMT, errfmt, 127); + wsprintf(errstr, errfmt, sgGameName); + break; + default: + LoadString(global_hinstance, IDS_CREATEGAME_ERR, errstr, 191); + break; + } + SelOkDialog(window, errstr, NULL, FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffMultiCreate(HWND window) { + char szGameDesc[SNETSPI_MAXSTRINGLENGTH]; + char err[256]; + TGAMEDATA GameData; + + // Create Game description for Storm (and for display of game later) + GameData.bDiff = GetWindowLong(GetFocus(), GWL_ID) - IDC_DIFFBTN1; + GameData2Txt( + &GameData, + sgCre8PlayerData->playername, + sgCre8PlayerData->playerdescription, + szGameDesc, + sizeof(szGameDesc) + ); + + if (! + UiAuthCallback( + SNET_AUTHTYPE_GAME, + sgCre8PlayerData->playername, + sgCre8PlayerData->playerdescription, + 0, + szGameDesc, + err, + sizeof(err) + ) + ) { + SelOkDialog(window, err, NULL, FALSE); + } + else { + SelDiffAttemptCreate(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffModeCreate(HWND window) { + if (sgPlayersMode == MULTIPLAYER) { + SelDiffMultiCreate(window); + } + else { + // let the select hero screen handle the create restrictions + SelHeroSetDiff(GetWindowLong(GetFocus(), GWL_ID) - IDC_DIFFBTN1); + SelDiffAbort(window, IDOK); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDiffInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelDiffModeCreate(window); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelDiffAbort(window, IDCANCEL); + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelDiffDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + SelDiffSetInfo(window, LOWORD(wparam)); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelDiffModeCreate(window); + } + else if (LOWORD(wparam) == IDOK) { + SelDiffModeCreate(window); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelDiffAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDOWN: + SelDiffInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_DESTROY: + SelDiffDestroy(window); + break; + + case WM_INITDIALOG: + sgPlayersMode = lparam; + SelDiffInit(window); + return 0; + + case WM_TIMER: + if (wparam == FOCUS_TIMER_ID) { + FocusAnimate(window, GetFocus()); + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiDoomCreateGame (SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid, + BOOL loadfocus, + LPCSTR gamename) { + int result; + + sgCreateData = createdata; + sgCre8ProgramData = programdata; + sgCre8PlayerData = playerdata; + sgpCre8PlayerID = playerid; + + sgDiffLoadFocus = loadfocus; + + sgGameName = gamename; + + // DISPLAY THE DIALOG BOX + result = SDlgDialogBoxParam( + global_hinstance, + TEXT("SELDIFF_DIALOG"), + interfacedata->parentwindow, + SelDiffDialogProc, + SelHeroGetMode() + ); + + if (result == IDOK) + return TRUE; + SetLastError(sgLastError); + return FALSE; +} diff --git a/Uisrc/UI/CREAHERO.CPP b/Uisrc/UI/CREAHERO.CPP new file mode 100644 index 0000000..fca070d --- /dev/null +++ b/Uisrc/UI/CREAHERO.CPP @@ -0,0 +1,47 @@ +//**************************************************************************** +// CreaHero.cpp +// Diablo UI create new character popup dialog +// +// By Frank Pearce +// created 9.20.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + // default starting values when this dll was created + static TUIDEFSTATS sgStats[UI_NUM_CLASSES] = { + { 30, 10, 20, 25}, // starting stats for a warrior + { 25, 20, 30, 20}, // starting stats for a rogue + { 15, 35, 25, 20}, // starting stats for a sorcerer + { 25, 15, 25, 20}, // starting stats for a monk + { 20, 20, 25, 20}, // starting stats for a bard + { 40, 0, 20, 25}, // starting stats for a barbarian + }; + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiGetDefaultStats(int heroclass, TPUIDEFSTATS defaultstats) { + if (defaultstats) { + defaultstats->strength = sgStats[heroclass].strength; + defaultstats->magic = sgStats[heroclass].magic; + defaultstats->dexterity = sgStats[heroclass].dexterity; + defaultstats->vitality = sgStats[heroclass].vitality; + return 1; + } + + return 0; +} + + diff --git a/Uisrc/UI/CREDITS.CPP b/Uisrc/UI/CREDITS.CPP new file mode 100644 index 0000000..c27c04c --- /dev/null +++ b/Uisrc/UI/CREDITS.CPP @@ -0,0 +1,380 @@ +//**************************************************************************** +// +// Credits.CPP +// Diablo UI credits screen +// +// By Michael Morhaime (9/16/96) +// Modified 10.3.96 by Frank Pearce +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define PIXELS_PER_SCROLL 1 + #define ID_CREDITS_TIMER 1 + #define MILLISEC_PER_SEC 1000 + #define PIXELS_PER_SEC 20 + #define DEFAULT_TIMER (MILLISEC_PER_SEC / (PIXELS_PER_SEC / PIXELS_PER_SCROLL)) + #define USER_TIMER (MILLISEC_PER_SEC / (pixelspersec / PIXELS_PER_SCROLL)) + + #define VERTICAL_PAD 30 // Padding above and below viewable part of offscreen rect + #define TAB_PIXEL_SIZE 40 + #define LINE_HEIGHT 22 + + static LPBYTE sgTextBits = NULL; // bitmap for scrolling text ctrl + static SIZE sgTextBitsSize; + static HSGDIFONT sgTextFont = NULL; + static int sgiTextLoc; + + static HGLOBAL sghCredits; // handle for the credits string resource + static int sgCreditsSize; // length of resource in bytes + + static void ScrollCredits(HWND window); + + +//**************************************************************************** +//**************************************************************************** +static void CreditsDestroy (HWND window) { + if (sgTextFont) { + SGdiDeleteObject(sgTextFont); + sgTextFont = NULL; + } + if (sgTextBits) { + FREE(sgTextBits); + sgTextBits = NULL; + } + + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + if (sghCredits) { + // free the credits text + FreeResource(sghCredits); + sghCredits = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void CreditsAbort(HWND window) { + UiFadeAbort(window); + SDlgKillTimer(window,ID_CREDITS_TIMER); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, 1); +} + + +//**************************************************************************** +//**************************************************************************** +static void CreditsInit (HWND window, LPARAM pixelspersec) { + TPBMP tpBmp; + HWND child; + HFONT winfont; + RECT rect; + int nWidth, nHeight; + + // set up the timer based on the specified pixel rate + SDlgSetTimer( + window, + ID_CREDITS_TIMER, + (pixelspersec ? USER_TIMER : DEFAULT_TIMER), + NULL + ); + + // load the credits into memory + sghCredits = LoadResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_CREDITS"), TEXT("TEXT_FILES")) + ); + sgCreditsSize = SizeofResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_CREDITS"), TEXT("TEXT_FILES")) + ); + + // init a bmp for the window + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\credits.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window, FALSE); + } + + // alloc/create a bitmap for the scrolling text ctrl + child = GetDlgItem(window, ID_SCROLL_WINDOW); + GetWindowRect(child, &rect); + + nWidth = rect.right - rect.left; + nHeight = rect.bottom - rect.top + (VERTICAL_PAD*2); + + sgTextBits = (LPBYTE) ALLOC(nWidth * nHeight); + if (!sgTextBits) { + CreditsAbort(window); + return; + } + sgTextBitsSize.cx = nWidth; + sgTextBitsSize.cy = nHeight; + + UiCalcNewRect(&rect, 0, VERTICAL_PAD); + + SDlgSetBitmap( + child, + NULL, + NULL, + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + sgTextBits, + &rect, + nWidth, + nHeight + ); + + // init the starting text coordinate and begin drawing the credits + sgiTextLoc = nHeight - VERTICAL_PAD; + ScrollCredits(window); + + // create the font for SGdiTextOut + winfont = CreateFont( + -17,0,0,0,FW_BOLD,0,0,0,ANSI_CHARSET, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + VARIABLE_PITCH | FF_ROMAN,TEXT("Times New Roman") + ); + if (winfont) { + BOOL result = SGdiImportFont(winfont,&sgTextFont); + DeleteObject(winfont); + if (! result) { + CreditsAbort(window); + } + } + else { + CreditsAbort(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static int sgCreditsLen; + +static int credit_length(LPTSTR credit) { + int len = 0; + + // find the length (in characters) of a single line + while ((*credit != '\r') && (*credit != '\n')) { + len++; + credit++; + if (len > sgCreditsLen) { + len = -1; + break; + } + } + return len; +} + + +//**************************************************************************** +//**************************************************************************** +static LPTSTR credit_next(LPTSTR lastcredit, int lastlen) { + // skip over last credit and cr/lf + lastcredit += (lastlen + 2); + sgCreditsLen -= (lastlen + 2); + + return lastcredit; +} + + +//**************************************************************************** +//**************************************************************************** +static void CreditsDraw(HWND window) { + int x, y, stringlen; + LPTSTR credits; + + // lock the resource and get it's size + credits = (LPTSTR)LockResource(sghCredits); + sgCreditsLen = sgCreditsSize; + + SGdiSelectObject(sgTextFont); + SGdiSetPitch(sgTextBitsSize.cx); + + for ( + y = sgiTextLoc; + sgCreditsLen > 0; + y += LINE_HEIGHT, credits = credit_next(credits, stringlen) + ) { + // init left coord + x = 0; + // handle tabs at the begining of a line + while (*credits == '\t') { + x += TAB_PIXEL_SIZE; + credits++; + sgCreditsLen--; + } + stringlen = credit_length(credits); + + // make sure the dest coords are in the buffer + if (stringlen == -1) break; + if (y < 0) continue; + if (y > (sgTextBitsSize.cy - VERTICAL_PAD)) break; + + if (stringlen) { +#if 1 + // draw a drop shadow + SGdiTextOut( + sgTextBits, + x + 2, + y + 2, + PALETTEINDEX(0), + credits, + stringlen + ); +#endif + + // draw the text + SGdiTextOut( + sgTextBits, + x, + y, + PALETTEINDEX(224), + credits, + stringlen + ); + } + } + + // has the bottom of the credits scrolled past the top? + if (y < 0) { + CreditsAbort(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ScrollCredits (HWND window) { + RECT rect; + HWND child = GetDlgItem(window, ID_SCROLL_WINDOW); + TPBMP tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + + GetWindowRect(child, &rect); + ScreenToClient(window, (LPPOINT)&rect.left); + ScreenToClient(window, (LPPOINT)&rect.right); + + // Copy from Background bitmap to buffer for scrolling text ctrl + SBltROP3 ( + sgTextBits + (sgTextBitsSize.cx * VERTICAL_PAD), + tpBmp->data + (rect.top * tpBmp->datasize.cx) + rect.left, + sgTextBitsSize.cx, + rect.bottom - rect.top, + sgTextBitsSize.cx, + tpBmp->datasize.cx, + NULL, + SRCCOPY + ); + + sgiTextLoc -= PIXELS_PER_SCROLL; + CreditsDraw(window); + + InvalidateRect(child, NULL, FALSE); + UpdateWindow(child); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK CreditsDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + + switch (message) { + + case WM_DESTROY: + CreditsDestroy(window); + break; + + case WM_INITDIALOG: + CreditsInit(window, lparam); + PostMessage(window, WM_USER+1000, 0, 0); + return 1; + + case WM_TIMER: + ScrollCredits(window); + break; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_PARENTNOTIFY: + if (LOWORD(wparam) == WM_LBUTTONDOWN || LOWORD(wparam) == WM_RBUTTONDOWN) { + CreditsAbort(window); + } + break; + + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + CreditsAbort(window); + return 0; + + case WM_KEYDOWN: + if (wparam == VK_SPACE) { + CreditsAbort(window); + } + return 0; + + case WM_COMMAND: + CreditsAbort(window); + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +/**************************************************************************** +* +* EXPORTED FUNCTIONS +* +***/ + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiCreditsDialog (UINT pixelspersec) { + // fuck allowing customizable speed + pixelspersec = 25; + + // start the dialog + SDlgDialogBoxParam( + global_hinstance, + TEXT("CREDITS_DIALOG"), + SDrawGetFrameWindow(), + CreditsDialogProc, + pixelspersec + ); + + return 1; +} diff --git a/Uisrc/UI/CREDITS.TXT b/Uisrc/UI/CREDITS.TXT new file mode 100644 index 0000000..23865d9 --- /dev/null +++ b/Uisrc/UI/CREDITS.TXT @@ -0,0 +1,90 @@ + Synergistic Software + +General Manager + Bob Clardy + +Lead Programmer + Donald Tsang + +Software Engineering + Jim Edwards, Gary Powell, D'Andre Pritchett + +Art Director + Kirt Lemons + +Artists + Darren Lamb, Mike McMillen, + Jason Robertson, Peter Watje + +Design + Kirt Lemons, Donald Tsang, Peter Watje + Jim Edwards, Mike McMillen + +Additional Design + Michael Ormsby + +Sound Design, SFX & Audio Engineering + Craig Utterback + +Quality Assurance Lead + Mona Branham + +Testers + Chris Barker, Steve Chin, Derek Clardy, Conor Durdy, + Amy Edwards, Greg Hightower, Tim Jensen, Jeremy Jones, + John Lang, Daudi Pritchett, Doug Van Horne, Gordon Wilcox + +Manual + Suzanne David, Linda Westerfield, + Ann Dickens Clardy, Kirt Lemons + +Voices + Jim Edwards, Paul Eiding, Eve Forward, + Mackenzie Powell, Rodney Sherwood, Craig Utterback + + + Additional Work + +Quest Text Writing + Eve Forward + +Thanks to + Trisha Durdy, Dustin Freeman, D'Andre Pritchett + + + + Special Thanks to Blizzard Entertainment + + + + + Sierra On-Line Inc. Northwest + +Quality Assurance Manager + Gary Stevens + +Quality Assurance Lead Tester + Bernadette Pryor + +Main Testers + Erik Johnson, David Lee, Kristofer Hall + +Additional Testers + Cade Myers, Jeff Ingham, Phil Kuhlmey, + Eric Gelfand, Mark Wyman, Torsten Reinl, + Erinn Hamilton + +Product Marketing Manager + Eddie Ranchigoda + +Public Relations Manager + Eric Twelker + +Associate Product Manager + Joe Roth + +Thanks to + Cindy Vanous, Joshua Bentley, Robert Zimmerman, Robert Jerauld, + Dennis Ham, Andrea Stone, Beth Quintana, Jennifer Keenan, Gary Brown, + Ken Eaton, Matt Eslick, Kate Powell, Bryon Mcpherson, David Beetlestone + diff --git a/Uisrc/UI/DCREDITS.TXT b/Uisrc/UI/DCREDITS.TXT new file mode 100644 index 0000000..37927c6 --- /dev/null +++ b/Uisrc/UI/DCREDITS.TXT @@ -0,0 +1,455 @@ +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, + Sébastien 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 Dosé, 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 Idrén, + 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-Heikkilä, 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 + Sørensen, 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. + + + + + diff --git a/Uisrc/UI/DEBUG/ARTFONT.OBJ b/Uisrc/UI/DEBUG/ARTFONT.OBJ new file mode 100644 index 0000000..d1d7f45 Binary files /dev/null and b/Uisrc/UI/DEBUG/ARTFONT.OBJ differ diff --git a/Uisrc/UI/DEBUG/ARTFONT.SBR b/Uisrc/UI/DEBUG/ARTFONT.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/CONNECT.OBJ b/Uisrc/UI/DEBUG/CONNECT.OBJ new file mode 100644 index 0000000..bc63516 Binary files /dev/null and b/Uisrc/UI/DEBUG/CONNECT.OBJ differ diff --git a/Uisrc/UI/DEBUG/CONNECT.SBR b/Uisrc/UI/DEBUG/CONNECT.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/COPYPROT.OBJ b/Uisrc/UI/DEBUG/COPYPROT.OBJ new file mode 100644 index 0000000..ac7bfcc Binary files /dev/null and b/Uisrc/UI/DEBUG/COPYPROT.OBJ differ diff --git a/Uisrc/UI/DEBUG/COPYPROT.SBR b/Uisrc/UI/DEBUG/COPYPROT.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/CR8GAME.OBJ b/Uisrc/UI/DEBUG/CR8GAME.OBJ new file mode 100644 index 0000000..ddb86fd Binary files /dev/null and b/Uisrc/UI/DEBUG/CR8GAME.OBJ differ diff --git a/Uisrc/UI/DEBUG/CR8GAME.SBR b/Uisrc/UI/DEBUG/CR8GAME.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/CREADUNG.OBJ b/Uisrc/UI/DEBUG/CREADUNG.OBJ new file mode 100644 index 0000000..8c3ccc0 Binary files /dev/null and b/Uisrc/UI/DEBUG/CREADUNG.OBJ differ diff --git a/Uisrc/UI/DEBUG/CREADUNG.SBR b/Uisrc/UI/DEBUG/CREADUNG.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/CREAHERO.OBJ b/Uisrc/UI/DEBUG/CREAHERO.OBJ new file mode 100644 index 0000000..5b91dba Binary files /dev/null and b/Uisrc/UI/DEBUG/CREAHERO.OBJ differ diff --git a/Uisrc/UI/DEBUG/CREAHERO.SBR b/Uisrc/UI/DEBUG/CREAHERO.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/CREDITS.OBJ b/Uisrc/UI/DEBUG/CREDITS.OBJ new file mode 100644 index 0000000..debd7c8 Binary files /dev/null and b/Uisrc/UI/DEBUG/CREDITS.OBJ differ diff --git a/Uisrc/UI/DEBUG/CREDITS.SBR b/Uisrc/UI/DEBUG/CREDITS.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/DEBUG/VC50.IDB b/Uisrc/UI/DEBUG/DEBUG/VC50.IDB new file mode 100644 index 0000000..08e29b2 Binary files /dev/null and b/Uisrc/UI/DEBUG/DEBUG/VC50.IDB differ diff --git a/Uisrc/UI/DEBUG/DEBUG/VC50.PDB b/Uisrc/UI/DEBUG/DEBUG/VC50.PDB new file mode 100644 index 0000000..40a937d Binary files /dev/null and b/Uisrc/UI/DEBUG/DEBUG/VC50.PDB differ diff --git a/Uisrc/UI/DEBUG/DEBUG/vc145.idb b/Uisrc/UI/DEBUG/DEBUG/vc145.idb new file mode 100644 index 0000000..55af9c7 Binary files /dev/null and b/Uisrc/UI/DEBUG/DEBUG/vc145.idb differ diff --git a/Uisrc/UI/DEBUG/DEBUG/vc145.pdb b/Uisrc/UI/DEBUG/DEBUG/vc145.pdb new file mode 100644 index 0000000..dfb6840 Binary files /dev/null and b/Uisrc/UI/DEBUG/DEBUG/vc145.pdb differ diff --git a/Uisrc/UI/DEBUG/DIABEDIT.OBJ b/Uisrc/UI/DEBUG/DIABEDIT.OBJ new file mode 100644 index 0000000..9c0d7f0 Binary files /dev/null and b/Uisrc/UI/DEBUG/DIABEDIT.OBJ differ diff --git a/Uisrc/UI/DEBUG/DIABEDIT.SBR b/Uisrc/UI/DEBUG/DIABEDIT.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/DIABLOUI.EXP b/Uisrc/UI/DEBUG/DIABLOUI.EXP new file mode 100644 index 0000000..6e42d71 Binary files /dev/null and b/Uisrc/UI/DEBUG/DIABLOUI.EXP differ diff --git a/Uisrc/UI/DEBUG/DIABLOUI.MAP b/Uisrc/UI/DEBUG/DIABLOUI.MAP new file mode 100644 index 0000000..4053a27 --- /dev/null +++ b/Uisrc/UI/DEBUG/DIABLOUI.MAP @@ -0,0 +1,1843 @@ + diabloui + + Timestamp is 343cccab (Thu Oct 09 12:23:07 1997) + + Preferred load address is 20000000 + + Start Length Name Class + 0001:00000000 00028300H .text CODE + 0002:00000000 00001773H .rdata DATA + 0002:00001780 0000033eH .edata DATA + 0003:00000000 00000004H .CRT$XCA DATA + 0003:00000004 00000004H .CRT$XCZ DATA + 0003:00000008 00000004H .CRT$XIA DATA + 0003:0000000c 00000004H .CRT$XIC DATA + 0003:00000010 00000004H .CRT$XIZ DATA + 0003:00000014 00000004H .CRT$XPA DATA + 0003:00000018 00000004H .CRT$XPX DATA + 0003:0000001c 00000004H .CRT$XPZ DATA + 0003:00000020 00000004H .CRT$XTA DATA + 0003:00000024 00000004H .CRT$XTZ DATA + 0003:00000030 000050ccH .data DATA + 0003:00005100 00004eb0H .bss DATA + 0004:00000000 00000050H .idata$2 DATA + 0004:00000050 00000014H .idata$3 DATA + 0004:00000064 00000308H .idata$4 DATA + 0004:0000036c 00000308H .idata$5 DATA + 0004:00000674 0000099cH .idata$6 DATA + 0005:00000000 00000f78H .rsrc$01 DATA + 0005:00000f80 00014c50H .rsrc$02 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0001:00000000 ?ArtFontSetHuge@@YAXXZ 20001000 f artfont.obj + 0001:0000000f ?ArtFontSetHugeGray@@YAXXZ 2000100f f artfont.obj + 0001:0000001e ?ArtFontSetBig@@YAXXZ 2000101e f artfont.obj + 0001:0000002d ?ArtFontSetBigGray@@YAXXZ 2000102d f artfont.obj + 0001:0000003c ?ArtFontSetMed@@YAXXZ 2000103c f artfont.obj + 0001:0000004b ?ArtFontSetMedGray@@YAXXZ 2000104b f artfont.obj + 0001:0000005a ?ArtFontSetSmall@@YAXXZ 2000105a f artfont.obj + 0001:00000069 ?ArtFontSetSmallGray@@YAXXZ 20001069 f artfont.obj + 0001:00000078 ?ArtFontSet@@YAXH@Z 20001078 f artfont.obj + 0001:000000ec ?ArtFontInit@@YAXXZ 200010ec f artfont.obj + 0001:0000014b ?ArtFontDestroy@@YAXXZ 2000114b f artfont.obj + 0001:00000236 ?ArtFontLoad@@YAHXZ 20001236 f artfont.obj + 0001:0000044d ?ArtFontHeight@@YAHXZ 2000144d f artfont.obj + 0001:0000047c ?ArtFontGridWidth@@YAHXZ 2000147c f artfont.obj + 0001:000004aa ?ArtFontPixelWidth@@YAHPBD@Z 200014aa f artfont.obj + 0001:00000546 ?ArtFontWordLen@@YAHPBD@Z 20001546 f artfont.obj + 0001:000005ed ?ArtFontDraw@@YAXPBDPAU_bmp@@HH@Z 200015ed f artfont.obj + 0001:000007f0 ?FreeGlobalHeroArt@@YAXXZ 200017f0 f connect.obj + 0001:000008e2 ?LoadGlobalHeroArt@@YAHXZ 200018e2 f connect.obj + 0001:00000a87 _UiArtCallback@32 20001a87 f connect.obj + 0001:00000fe7 _UiGetDataCallback@20 20001fe7 f connect.obj + 0001:000011ab _UiSoundCallback@12 200021ab f connect.obj + 0001:000011d7 _UiAuthCallback@28 200021d7 f connect.obj + 0001:00001577 _UiDrawDescCallback@32 20002577 f connect.obj + 0001:00001e6d _UiCategoryCallback@28 20002e6d f connect.obj + 0001:00001e96 ?GetPlayerCategory@@YAKPBD@Z 20002e96 f connect.obj + 0001:0000208a ?Txt2GameData@@YAHPADPAU_gamedata@@PAPAD2@Z 2000308a f connect.obj + 0001:00002141 ?GameData2Txt@@YAXPAU_gamedata@@PBD1PADH@Z 20003141 f connect.obj + 0001:000021a6 ?Txt2HeroInfo@@YAHPADPAU_uiheroinfo@@@Z 200031a6 f connect.obj + 0001:00002315 ?HeroInfo2Txt@@YAXPAU_uiheroinfo@@PAD@Z 20003315 f connect.obj + 0001:00002394 _UiCreateGameCriteria@8 20003394 f connect.obj + 0001:000023b8 _UiCreatePlayerDescription@12 200033b8 f connect.obj + 0001:000023e0 _UiCopyProtError@4 200033e0 f CopyProt.obj + 0001:000027e0 ?TryCreateGame@@YAHPAUHWND__@@@Z 200037e0 f cr8game.obj + 0001:0000296e _UiCreateGameCallback@24 2000396e f cr8game.obj + 0001:000033b0 ?SelDiffLoadFocus@@YAXH@Z 200043b0 f CreaDung.obj + 0001:000033bd ?SelDiffDialogProc@@YGHPAUHWND__@@IIJ@Z 200043bd f CreaDung.obj + 0001:00003c03 ?UiDoomCreateGame@@YAHPAU_SNETCREATEDATA@@PAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAKHPBD@Z 20004c03 f CreaDung.obj + 0001:00003c80 _UiGetDefaultStats@8 20004c80 f CreaHero.obj + 0001:00003ce0 _UiCreditsDialog@4 20004ce0 f credits.obj + 0001:00004410 ?DiabEditPaint@@YAXPAUHWND__@@@Z 20005410 f DiabEdit.obj + 0001:0000444e ?DiabEditRegisterClass@@YAXXZ 2000544e f DiabEdit.obj + 0001:00004b10 ?UiIsSpawned@@YAHXZ 20005b10 f Diabloui.obj + 0001:00004b1a _UiOnPaint@4 20005b1a f Diabloui.obj + 0001:00004b21 _UiSetBackgroundBitmap@20 20005b21 f Diabloui.obj + 0001:00004b57 _UiSetSpawned@4 20005b57 f Diabloui.obj + 0001:00004b66 _UiInitialize@0 20005b66 f Diabloui.obj + 0001:00004b89 _UiDestroy@0 20005b89 f Diabloui.obj + 0001:00004ba2 _UiAppActivate@4 20005ba2 f Diabloui.obj + 0001:00004ba9 _DllMain@12 20005ba9 f Diabloui.obj + 0001:00004bf0 ?UiDirectLinkGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20005bf0 f DirLink.obj + 0001:00005500 _UiBetaDisclaimer@4 20006500 f disclaim.obj + 0001:00005780 ?UiDoomButtonsInit@@YAXPAUHWND__@@PAHHH@Z 20006780 f Doom.obj + 0001:00005b32 ?UiDoomButtonsReset@@YAXPAUHWND__@@PAHHH@Z 20006b32 f Doom.obj + 0001:00005c09 ?UiDoomStaticInit@@YAXPAUHWND__@@PAHH@Z 20006c09 f Doom.obj + 0001:00005e28 ?UiDoomStaticReset@@YAXPAUHWND__@@PAHH@Z 20006e28 f Doom.obj + 0001:00005f04 ?UiDoomEditInit@@YAXPAUHWND__@@PAHH@Z 20006f04 f Doom.obj + 0001:000060f0 ?UiDoomEditReset@@YAXPAUHWND__@@PAHH@Z 200070f0 f Doom.obj + 0001:00006160 ?UiDoomCtrlsDestroy@@YAXPAUHWND__@@PAH@Z 20007160 f Doom.obj + 0001:000061c0 ?EnterDialDialogProc@@YGHPAUHWND__@@IIJ@Z 200071c0 f EntrDial.obj + 0001:000066b0 ?EnterNameDialogProc@@YGHPAUHWND__@@IIJ@Z 200076b0 f EntrName.obj + 0001:00006b80 ?UiVidFade@@YAXHH@Z 20007b80 f Fade.obj + 0001:00006c6b ?UiVidFadeOut@@YAXH@Z 20007c6b f Fade.obj + 0001:00006de8 ?UiIsFading@@YAHXZ 20007de8 f Fade.obj + 0001:00006e15 ?UiFadeAbort@@YAXPAUHWND__@@@Z 20007e15 f Fade.obj + 0001:00006e2f ?UiFadeInit@@YAXPAUHWND__@@H@Z 20007e2f f Fade.obj + 0001:00006e66 ?UiAltFadeInit@@YAXPAUHWND__@@@Z 20007e66 f Fade.obj + 0001:00006e7e ?UiFadeStart@@YAXPAUHWND__@@@Z 20007e7e f Fade.obj + 0001:00006ef0 ?FocusSnd@@YAXPAUHWND__@@@Z 20007ef0 f Focus.obj + 0001:00006f19 ?FocusWidth@@YAHXZ 20007f19 f Focus.obj + 0001:00006f23 ?FocusErase@@YAXPAUHWND__@@0@Z 20007f23 f Focus.obj + 0001:000070b5 ?FocusLost@@YAXPAUHWND__@@0@Z 200080b5 f Focus.obj + 0001:000070e6 ?FocusAnimate@@YAHPAUHWND__@@0@Z 200080e6 f Focus.obj + 0001:0000723a ?FocusAnimateDestroy@@YAXXZ 2000823a f Focus.obj + 0001:00007287 ?FocusReInit@@YAXXZ 20008287 f Focus.obj + 0001:000072a0 ?FocusAnimateInit@@YAXPBD@Z 200082a0 f Focus.obj + 0001:000073b0 ?UiCreateIdentityPal@@YAXXZ 200083b0 f local.obj + 0001:00007457 ?UiFreeIdentityPal@@YAXXZ 20008457 f local.obj + 0001:0000747b ?UiGetIdentityPal@@YAPAUHPALETTE__@@XZ 2000847b f local.obj + 0001:00007485 ?UiPaletteEntry@@YAPAUtagPALETTEENTRY@@H@Z 20008485 f local.obj + 0001:00007494 ?UiClearPalette@@YAXPAUtagPALETTEENTRY@@@Z 20008494 f local.obj + 0001:000074d9 ?UiLoadBmpFile@@YAHPBDPAPAEPAUtagSIZE@@@Z 200084d9 f local.obj + 0001:00007562 ?LoadArtFile@@YAHPAUHWND__@@0PBDKJ1PAPAEPAUtagSIZE@@H@Z 20008562 f local.obj + 0001:000076e5 ?UiCalcNewRect@@YAXPAUtagRECT@@HH@Z 200086e5 f local.obj + 0001:00007744 ?UiSetStaticBmp@@YAHPAUHWND__@@HPAEPAUtagSIZE@@@Z 20008744 f local.obj + 0001:000077b9 ?UiSetBtnBmp@@YAXPAUHWND__@@KPAUtagRECT@@PAEPAUtagSIZE@@@Z 200087b9 f local.obj + 0001:000077eb ?UiSetButtonBitmaps@@YAXPAUHWND__@@PAHPAEPAUtagSIZE@@@Z 200087eb f local.obj + 0001:0000799b ?UiSetTextYellow@@YAXPAUHDC__@@@Z 2000899b f local.obj + 0001:000079af ?UiIsPtInWindow@@YAHPAUHWND__@@0HH@Z 200089af f local.obj + 0001:00007a2c ?UiPaintBtn@@YAXPAUHWND__@@@Z 20008a2c f local.obj + 0001:00007a53 ?UiOnPaintBtns@@YAXPAUHWND__@@PAH@Z 20008a53 f local.obj + 0001:00007b6a ?UiActiveDownBtns@@YAXPAUHWND__@@PAH@Z 20008b6a f local.obj + 0001:00007d08 ?UiFlushIOMessages@@YAXPAUHWND__@@@Z 20008d08 f local.obj + 0001:00007d50 ?UiAllocBmp@@YAPAU_bmp@@XZ 20008d50 f local.obj + 0001:00007da8 ?UiFreeBmp@@YAXPAU_bmp@@@Z 20008da8 f local.obj + 0001:00007de7 ?UiSetBmpText@@YAXPAU_bmp@@PBD@Z 20008de7 f local.obj + 0001:00007e25 ?UiLoadCursor@@YAXXZ 20008e25 f local.obj + 0001:00007f4c ?UiDestroyCursor@@YAXXZ 20008f4c f local.obj + 0001:00007fa6 ?UiSetCursor@@YAXXZ 20008fa6 f local.obj + 0001:00007fd5 ?UiClearCursor@@YAXXZ 20008fd5 f local.obj + 0001:00007fea ?UiSetWindowsCursors@@YAXPAUHWND__@@@Z 20008fea f local.obj + 0001:00008030 _UiLogonDialog@24 20009030 f Logon.obj + 0001:00008360 ?GetRegStr@@YAPBDXZ 20009360 f MainMenu.obj + 0001:0000836a _UiMainMenuDialog@16 2000936a f MainMenu.obj + 0001:00008a40 ?ModemConnected@@YAHXZ 20009a40 f Modem.obj + 0001:00008a4a ?ModemSetInfo@@YAXPAUHWND__@@PBD1@Z 20009a4a f Modem.obj + 0001:00008aff ?ModemGameEnum@@YGHKPBD0@Z 20009aff f Modem.obj + 0001:00008b35 ?ModemEnum@@YAHXZ 20009b35 f Modem.obj + 0001:00008b7c ?ModemGameName@@YAPBDXZ 20009b7c f Modem.obj + 0001:00008b86 ?ModemJoinDone@@YAHXZ 20009b86 f Modem.obj + 0001:00008b90 ?ModemLastJoinedNumber@@YAHXZ 20009b90 f Modem.obj + 0001:00008b9a ?ModemGameNumber@@YAHPBD@Z 20009b9a f Modem.obj + 0001:00008bf1 ?UiModemGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20009bf1 f Modem.obj + 0001:00009540 ?ModmStatStatusCallback@@YGHPBDKKKP6GHXZ@Z 2000a540 f ModmStat.obj + 0001:00009570 ?ModmStatDialog@@YAHPAUHWND__@@@Z 2000a570 f ModmStat.obj + 0001:00009920 ?IsTextTooLarge@@YAHPAUHWND__@@PBD@Z 2000a920 f OkCancel.obj + 0001:00009a19 ?UiOkCancelDialog@@YAHPAUHWND__@@PBDH@Z 2000aa19 f OkCancel.obj + 0001:00009e73 ?UiOkDialog@@YAHPAUHWND__@@PBDH@Z 2000ae73 f OkCancel.obj + 0001:00009ebb ?UiBigOkCancelDialog@@YAHPAUHWND__@@PBD1H@Z 2000aebb f OkCancel.obj + 0001:00009f03 ?UiBigOkDialog@@YAHPAUHWND__@@PBD1H@Z 2000af03 f OkCancel.obj + 0001:00009f4b _UiMessageBoxCallback@16 2000af4b f OkCancel.obj + 0001:0000a030 _UiProgressDialog@20 2000b030 f Progress.obj + 0001:0000a6c0 ?SbarUpClick@@YAHPAUHWND__@@@Z 2000b6c0 f Sbar.obj + 0001:0000a6fb ?SbarInterpretClick@@YAHPAUHWND__@@HH@Z 2000b6fb f Sbar.obj + 0001:0000a819 ?SbarDraw@@YAXPAUHWND__@@HHH@Z 2000b819 f Sbar.obj + 0001:0000aa5b ?SbarInit@@YAXPAUHWND__@@H@Z 2000ba5b f Sbar.obj + 0001:0000ab83 ?SbarDestroy@@YAXPAUHWND__@@H@Z 2000bb83 f Sbar.obj + 0001:0000ac70 ?SelClassDialogProc@@YGHPAUHWND__@@IIJ@Z 2000bc70 f SelClass.obj + 0001:0000b260 ?SelConnAllocNode@@YAPAU_provider@@XZ 2000c260 f SelConn.obj + 0001:0000b278 ?SelConnAddNode@@YAPAU_provider@@PAU1@0@Z 2000c278 f SelConn.obj + 0001:0000b288 ?SelConnDialogProc@@YGHPAUHWND__@@IIJ@Z 2000c288 f SelConn.obj + 0001:0000c75d _UiSelectProvider@24 2000d75d f SelConn.obj + 0001:0000c820 ?SelDialSaveBookEntries@@YAXPBD@Z 2000d820 f SelDial.obj + 0001:0000c91b ?SelDialDialogProc@@YGHPAUHWND__@@IIJ@Z 2000d91b f SelDial.obj + 0001:0000d2a0 ?UiSetBasicInterface@@YAXH@Z 2000e2a0 f SelGame.obj + 0001:0000d2ad ?UiIsBasicInterface@@YAHXZ 2000e2ad f SelGame.obj + 0001:0000d2b7 ?UiSetProviderID@@YAXK@Z 2000e2b7 f SelGame.obj + 0001:0000d2c4 ?UiGetProviderID@@YAKXZ 2000e2c4 f SelGame.obj + 0001:0000d2ce _UiSelectGame@24 2000e2ce f SelGame.obj + 0001:0000d3c0 ?GetHeroList@@YAPAU_uiheroinfo@@XZ 2000e3c0 f SelHero.obj + 0001:0000d3ca ?GetNumHeros@@YAHXZ 2000e3ca f SelHero.obj + 0001:0000d3d4 ?SelHeroSetDiff@@YAXH@Z 2000e3d4 f SelHero.obj + 0001:0000d3e1 ?SelectedName@@YAPBDXZ 2000e3e1 f SelHero.obj + 0001:0000d3eb ?SelHeroAllocNode@@YAPAU_uiheroinfo@@XZ 2000e3eb f SelHero.obj + 0001:0000d403 ?SelHeroAddNode@@YAPAU_uiheroinfo@@PAU1@0@Z 2000e403 f SelHero.obj + 0001:0000d413 ?SelHeroGetMode@@YAHXZ 2000e413 f SelHero.obj + 0001:0000d41d ?SelHeroGetDefStats@@YAXHPAU_uidefaultstats@@@Z 2000e41d f SelHero.obj + 0001:0000d430 ?SelHeroClearStats@@YAXPAUHWND__@@@Z 2000e430 f SelHero.obj + 0001:0000d5c5 ?SelHeroSetStats@@YAXPAUHWND__@@PAU_uiheroinfo@@@Z 2000e5c5 f SelHero.obj + 0001:0000d7a0 ?SelHeroSetTitle@@YAXPAUHWND__@@PBD@Z 2000e7a0 f SelHero.obj + 0001:0000d7ee ?IsNastyName@@YAHPBD@Z 2000e7ee f SelHero.obj + 0001:0000d8ba ?InvalidChars@@YAHPBD0@Z 2000e8ba f SelHero.obj + 0001:0000d95b _UiSelHeroMultDialog@24 2000e95b f SelHero.obj + 0001:0000e7d0 _UiSelHeroSingDialog@28 2000f7d0 f SelHero.obj + 0001:0000e890 ?SelIPXAllocNode@@YAPAU_ipxgame@@XZ 2000f890 f SelIPX.obj + 0001:0000e8a8 ?UiSelectIPXGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 2000f8a8 f SelIPX.obj + 0001:00010450 ?SelListDialogProc@@YGHPAUHWND__@@IIJ@Z 20011450 f SelList.obj + 0001:00011600 ?SelLoadDialogProc@@YGHPAUHWND__@@IIJ@Z 20012600 f SelLoad.obj + 0001:00011a80 ?UiSelectDevice@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@@Z 20012a80 f SelModem.obj + 0001:00012d80 ?SelYesNoDialog@@YAHPAUHWND__@@PBD1H@Z 20013d80 f SelYesNo.obj + 0001:000131a4 ?SelOkDialog@@YAHPAUHWND__@@PBD1H@Z 200141a4 f SelYesNo.obj + 0001:000131f3 ?SpawnErrDialog@@YAHPAUHWND__@@HH@Z 200141f3 f SelYesNo.obj + 0001:00013270 _UiSupportDialog@4 20014270 f Support.obj + 0001:000139a0 ?TitleLogoAnimate@@YAXPAUHWND__@@@Z 200149a0 f Title.obj + 0001:00013adf ?TitleLogoDestroy@@YAXXZ 20014adf f Title.obj + 0001:00013b54 ?TitleLogoInit@@YAXPAUHWND__@@@Z 20014b54 f Title.obj + 0001:00013bd7 ?TitleFramesInit@@YAXPAUHWND__@@PBD@Z 20014bd7 f Title.obj + 0001:00013cc9 _UiTitleDialog@4 20014cc9 f Title.obj + 0001:00014010 ?UiSndPlay@@YAXPBD@Z 20015010 f UiSnd.obj + 0001:0001402a ?UiSndSetFcn@@YAXP6GXPBD@Z@Z 2001502a f UiSnd.obj + 0001:00014037 ?UiSndInit@@YAXXZ 20015037 f UiSnd.obj + 0001:00014046 ?UiSndPlayClick@@YAXXZ 20015046 f UiSnd.obj + 0001:00014058 ?UiSndPlayEnter@@YAXXZ 20015058 f UiSnd.obj + 0001:0001406a _FreeResource@4 2001506a f kernel32:KERNEL32.dll + 0001:00014070 _LockResource@4 20015070 f kernel32:KERNEL32.dll + 0001:00014076 _LoadResource@8 20015076 f kernel32:KERNEL32.dll + 0001:0001407c _FindResourceA@12 2001507c f kernel32:KERNEL32.dll + 0001:00014082 _GetLastError@0 20015082 f kernel32:KERNEL32.dll + 0001:00014088 _MulDiv@12 20015088 f kernel32:KERNEL32.dll + 0001:0001408e _SetLastError@4 2001508e f kernel32:KERNEL32.dll + 0001:00014094 _SizeofResource@8 20015094 f kernel32:KERNEL32.dll + 0001:0001409a _GetModuleHandleA@4 2001509a f kernel32:KERNEL32.dll + 0001:000140a0 _GlobalMemoryStatus@4 200150a0 f kernel32:KERNEL32.dll + 0001:000140a6 _LoadCursorA@8 200150a6 f user32:USER32.dll + 0001:000140ac _LoadStringA@16 200150ac f user32:USER32.dll + 0001:000140b2 _OffsetRect@12 200150b2 f user32:USER32.dll + 0001:000140b8 _SetRect@20 200150b8 f user32:USER32.dll + 0001:000140be _SendMessageA@16 200150be f user32:USER32.dll + 0001:000140c4 _GetWindowLongA@8 200150c4 f user32:USER32.dll + 0001:000140ca _GetFocus@0 200150ca f user32:USER32.dll + 0001:000140d0 _SetWindowTextA@8 200150d0 f user32:USER32.dll + 0001:000140d6 _GetDlgItem@8 200150d6 f user32:USER32.dll + 0001:000140dc _ShowCursor@4 200150dc f user32:USER32.dll + 0001:000140e2 _SetFocus@4 200150e2 f user32:USER32.dll + 0001:000140e8 _GetClientRect@8 200150e8 f user32:USER32.dll + 0001:000140ee _SetWindowLongA@12 200150ee f user32:USER32.dll + 0001:000140f4 _InvalidateRect@12 200150f4 f user32:USER32.dll + 0001:000140fa _SendDlgItemMessageA@20 200150fa f user32:USER32.dll + 0001:00014100 _wsprintfA 20015100 f user32:USER32.dll + 0001:00014106 _GetParent@4 20015106 f user32:USER32.dll + 0001:0001410c _PostMessageA@16 2001510c f user32:USER32.dll + 0001:00014112 _GetWindowRect@8 20015112 f user32:USER32.dll + 0001:00014118 _UpdateWindow@4 20015118 f user32:USER32.dll + 0001:0001411e _ScreenToClient@8 2001511e f user32:USER32.dll + 0001:00014124 _EndPaint@8 20015124 f user32:USER32.dll + 0001:0001412a _BeginPaint@8 2001512a f user32:USER32.dll + 0001:00014130 _RegisterClassA@4 20015130 f user32:USER32.dll + 0001:00014136 _DefWindowProcA@16 20015136 f user32:USER32.dll + 0001:0001413c _GetPropA@8 2001513c f user32:USER32.dll + 0001:00014142 _SetPropA@12 20015142 f user32:USER32.dll + 0001:00014148 _GetWindowTextA@12 20015148 f user32:USER32.dll + 0001:0001414e _RemovePropA@8 2001514e f user32:USER32.dll + 0001:00014154 _CallWindowProcA@20 20015154 f user32:USER32.dll + 0001:0001415a _PeekMessageA@20 2001515a f user32:USER32.dll + 0001:00014160 _ShowWindow@8 20015160 f user32:USER32.dll + 0001:00014166 _ReleaseDC@8 20015166 f user32:USER32.dll + 0001:0001416c _DrawTextA@20 2001516c f user32:USER32.dll + 0001:00014172 _GetDC@4 20015172 f user32:USER32.dll + 0001:00014178 _MessageBoxA@16 20015178 f user32:USER32.dll + 0001:0001417e _EnableWindow@8 2001517e f user32:USER32.dll + 0001:00014184 _DestroyWindow@4 20015184 f user32:USER32.dll + 0001:0001418a _DispatchMessageA@4 2001518a f user32:USER32.dll + 0001:00014190 _TranslateMessage@4 20015190 f user32:USER32.dll + 0001:00014196 _IsDialogMessageA@8 20015196 f user32:USER32.dll + 0001:0001419c _PostQuitMessage@4 2001519c f user32:USER32.dll + 0001:000141a2 _IsWindow@4 200151a2 f user32:USER32.dll + 0001:000141a8 _IsWindowVisible@4 200151a8 f user32:USER32.dll + 0001:000141ae _GetKeyState@4 200151ae f user32:USER32.dll + 0001:000141b4 _IsWindowEnabled@4 200151b4 f user32:USER32.dll + 0001:000141ba _GetCurrentPositionEx@8 200151ba f gdi32:GDI32.dll + 0001:000141c0 _TextOutA@20 200151c0 f gdi32:GDI32.dll + 0001:000141c6 _SetTextAlign@8 200151c6 f gdi32:GDI32.dll + 0001:000141cc _MoveToEx@16 200151cc f gdi32:GDI32.dll + 0001:000141d2 _GetTextMetricsA@8 200151d2 f gdi32:GDI32.dll + 0001:000141d8 _ExtTextOutA@32 200151d8 f gdi32:GDI32.dll + 0001:000141de _SetBkColor@8 200151de f gdi32:GDI32.dll + 0001:000141e4 _SetTextColor@8 200151e4 f gdi32:GDI32.dll + 0001:000141ea _DeleteObject@4 200151ea f gdi32:GDI32.dll + 0001:000141f0 _GetStockObject@4 200151f0 f gdi32:GDI32.dll + 0001:000141f6 _CreateFontIndirectA@4 200151f6 f gdi32:GDI32.dll + 0001:000141fc _GetObjectA@12 200151fc f gdi32:GDI32.dll + 0001:00014202 _CreateFontA@56 20015202 f gdi32:GDI32.dll + 0001:00014208 _GetPaletteEntries@16 20015208 f gdi32:GDI32.dll + 0001:0001420e _CreatePalette@4 2001520e f gdi32:GDI32.dll + 0001:00014214 _SelectObject@8 20015214 f gdi32:GDI32.dll + 0001:0001421a _STransDelete@4 2001521a f storm:storm.dll + 0001:00014220 _SMemFree@16 20015220 f storm:storm.dll + 0001:00014226 _STransCreate@28 20015226 f storm:storm.dll + 0001:0001422c _SFileCloseFile@4 2001522c f storm:storm.dll + 0001:00014232 _SFileReadFile@20 20015232 f storm:storm.dll + 0001:00014238 _SFileGetFileSize@8 20015238 f storm:storm.dll + 0001:0001423e _SFileOpenFile@8 2001523e f storm:storm.dll + 0001:00014244 _STransBlt@20 20015244 f storm:storm.dll + 0001:0001424a _SMemAlloc@16 2001524a f storm:storm.dll + 0001:00014250 _SBmpLoadImage@28 20015250 f storm:storm.dll + 0001:00014256 _SBltROP3@32 20015256 f storm:storm.dll + 0001:0001425c _SDlgBltToWindow@40 2001525c f storm:storm.dll + 0001:00014262 _SDlgDialogBoxParam@20 20015262 f storm:storm.dll + 0001:00014268 _SDrawGetFrameWindow@4 20015268 f storm:storm.dll + 0001:0001426e _SDlgDefDialogProc@16 2001526e f storm:storm.dll + 0001:00014274 _SDrawUpdatePalette@16 20015274 f storm:storm.dll + 0001:0001427a _SDlgSetBitmap@40 2001527a f storm:storm.dll + 0001:00014280 _SDlgEndDialog@8 20015280 f storm:storm.dll + 0001:00014286 _SNetCreateGame@40 20015286 f storm:storm.dll + 0001:0001428c _SDlgSetControlBitmaps@28 2001528c f storm:storm.dll + 0001:00014292 _SDlgSetTimer@16 20015292 f storm:storm.dll + 0001:00014298 _SDlgKillTimer@8 20015298 f storm:storm.dll + 0001:0001429e _SGdiDeleteObject@4 2001529e f storm:storm.dll + 0001:000142a4 _SGdiImportFont@8 200152a4 f storm:storm.dll + 0001:000142aa _SGdiTextOut@24 200152aa f storm:storm.dll + 0001:000142b0 _SGdiSetPitch@4 200152b0 f storm:storm.dll + 0001:000142b6 _SGdiSelectObject@4 200152b6 f storm:storm.dll + 0001:000142bc _SDlgDrawBitmap@28 200152bc f storm:storm.dll + 0001:000142c2 _SNetJoinGame@24 200152c2 f storm:storm.dll + 0001:000142c8 _SNetEnumGames@16 200152c8 f storm:storm.dll + 0001:000142ce _SDrawClearSurface@4 200152ce f storm:storm.dll + 0001:000142d4 _SDlgEndPaint@8 200152d4 f storm:storm.dll + 0001:000142da _SDlgBeginPaint@8 200152da f storm:storm.dll + 0001:000142e0 _SDlgSetSystemCursor@16 200152e0 f storm:storm.dll + 0001:000142e6 _SDlgSetCursor@16 200152e6 f storm:storm.dll + 0001:000142ec _SDlgCreateDialogParam@20 200152ec f storm:storm.dll + 0001:000142f2 _SDlgUpdateCursor@0 200152f2 f storm:storm.dll + 0001:000142f8 _SDlgCheckTimers@0 200152f8 f storm:storm.dll + 0001:000142fe _SBltROP3Tiled@40 200152fe f storm:storm.dll + 0001:00014304 _SNetEnumProviders@8 20015304 f storm:storm.dll + 0001:0001430a _SNetInitializeProvider@20 2001530a f storm:storm.dll + 0001:00014310 _SRegSaveString@16 20015310 f storm:storm.dll + 0001:00014316 _SRegLoadString@20 20015316 f storm:storm.dll + 0001:0001431c _SNetSelectGame@24 2001531c f storm:storm.dll + 0001:00014322 _SNetEnumDevices@4 20015322 f storm:storm.dll + 0001:00014328 _SNetInitializeDevice@20 20015328 f storm:storm.dll + 0001:00014330 _memset 20015330 f LIBCMTD:memset.obj + 0001:00014390 _strcpy 20015390 f LIBCMTD:strcat.obj + 0001:000143a0 _strcat 200153a0 f LIBCMTD:strcat.obj + 0001:00014480 _memcpy 20015480 f LIBCMTD:memcpy.obj + 0001:000147c0 _sprintf 200157c0 f LIBCMTD:sprintf.obj + 0001:000148c0 _atol 200158c0 f LIBCMTD:atox.obj + 0001:000149c0 _atoi 200159c0 f LIBCMTD:atox.obj + 0001:000149e0 __atoi64 200159e0 f LIBCMTD:atox.obj + 0001:00014b10 _strstr 20015b10 f LIBCMTD:strstr.obj + 0001:00014b90 _strlen 20015b90 f LIBCMTD:strlen.obj + 0001:00014c10 _localtime 20015c10 f LIBCMTD:localtim.obj + 0001:00014e80 _strchr 20015e80 f LIBCMTD:strchr.obj + 0001:00014e86 ___from_strstr_to_strchr 20015e86 LIBCMTD:strchr.obj + 0001:00014f40 _sscanf 20015f40 f LIBCMTD:sscanf.obj + 0001:00015000 _strncpy 20016000 f LIBCMTD:strncpy.obj + 0001:00015100 __beginthread 20016100 f LIBCMTD:thread.obj + 0001:00015290 __endthread 20016290 f LIBCMTD:thread.obj + 0001:000152f0 _strcmp 200162f0 f LIBCMTD:strcmp.obj + 0001:00015380 __strlwr 20016380 f LIBCMTD:strlwr.obj + 0001:00015540 _strpbrk 20016540 f LIBCMTD:strpbrk.obj + 0001:00015580 __strcmpi 20016580 f LIBCMTD:stricmp.obj + 0001:00015580 _stricmp 20016580 f LIBCMTD:stricmp.obj + 0001:00015580 __stricmp 20016580 f LIBCMTD:stricmp.obj + 0001:00015650 __CRT_INIT@12 20016650 f LIBCMTD:dllcrt0.obj + 0001:00015820 __DllMainCRTStartup@12 20016820 f LIBCMTD:dllcrt0.obj + 0001:00015920 __amsg_exit 20016920 f LIBCMTD:dllcrt0.obj + 0001:00015960 __flsbuf 20016960 f LIBCMTD:_flsbuf.obj + 0001:00015be0 __output 20016be0 f LIBCMTD:output.obj + 0001:00016a80 __CrtDbgBreak 20017a80 f LIBCMTD:dbgrpt.obj + 0001:00016a90 __CrtSetReportMode 20017a90 f LIBCMTD:dbgrpt.obj + 0001:00016af0 __CrtSetReportFile 20017af0 f LIBCMTD:dbgrpt.obj + 0001:00016b70 __CrtSetReportHook 20017b70 f LIBCMTD:dbgrpt.obj + 0001:00016b90 __CrtDbgReport 20017b90 f LIBCMTD:dbgrpt.obj + 0001:00017230 __isctype 20018230 f LIBCMTD:isctype.obj + 0001:000172f0 __allmul 200182f0 f LIBCMTD:llmul.obj + 0001:00017330 ___tzset 20018330 f LIBCMTD:tzset.obj + 0001:00017370 __tzset 20018370 f LIBCMTD:tzset.obj + 0001:000176f0 __isindst 200186f0 f LIBCMTD:tzset.obj + 0001:00017c20 _gmtime 20018c20 f LIBCMTD:gmtime.obj + 0001:00017e20 __input 20018e20 f LIBCMTD:input.obj + 0001:00019330 __dosmaperr 2001a330 f LIBCMTD:dosmap.obj + 0001:000193d0 __errno 2001a3d0 f LIBCMTD:dosmap.obj + 0001:000193e0 ___doserrno 2001a3e0 f LIBCMTD:dosmap.obj + 0001:000193f0 _malloc 2001a3f0 f LIBCMTD:dbgheap.obj + 0001:00019410 __malloc_dbg 2001a410 f LIBCMTD:dbgheap.obj + 0001:00019440 __nh_malloc 2001a440 f LIBCMTD:dbgheap.obj + 0001:00019460 __nh_malloc_dbg 2001a460 f LIBCMTD:dbgheap.obj + 0001:000194c0 __heap_alloc 2001a4c0 f LIBCMTD:dbgheap.obj + 0001:000194e0 __heap_alloc_dbg 2001a4e0 f LIBCMTD:dbgheap.obj + 0001:00019800 _calloc 2001a800 f LIBCMTD:dbgheap.obj + 0001:00019820 __calloc_dbg 2001a820 f LIBCMTD:dbgheap.obj + 0001:00019880 _realloc 2001a880 f LIBCMTD:dbgheap.obj + 0001:000198a0 __realloc_dbg 2001a8a0 f LIBCMTD:dbgheap.obj + 0001:00019e00 __expand 2001ae00 f LIBCMTD:dbgheap.obj + 0001:00019e20 __expand_dbg 2001ae20 f LIBCMTD:dbgheap.obj + 0001:00019e60 _free 2001ae60 f LIBCMTD:dbgheap.obj + 0001:00019e80 __free_lk 2001ae80 f LIBCMTD:dbgheap.obj + 0001:00019ea0 __free_dbg 2001aea0 f LIBCMTD:dbgheap.obj + 0001:00019ed0 __free_dbg_lk 2001aed0 f LIBCMTD:dbgheap.obj + 0001:0001a2c0 __msize 2001b2c0 f LIBCMTD:dbgheap.obj + 0001:0001a2e0 __msize_dbg 2001b2e0 f LIBCMTD:dbgheap.obj + 0001:0001a440 __CrtSetBreakAlloc 2001b440 f LIBCMTD:dbgheap.obj + 0001:0001a460 __CrtSetDbgBlockType 2001b460 f LIBCMTD:dbgheap.obj + 0001:0001a500 __CrtSetAllocHook 2001b500 f LIBCMTD:dbgheap.obj + 0001:0001a5b0 __CrtCheckMemory 2001b5b0 f LIBCMTD:dbgheap.obj + 0001:0001a920 __CrtSetDbgFlag 2001b920 f LIBCMTD:dbgheap.obj + 0001:0001a950 __CrtDoForAllClientObjects 2001b950 f LIBCMTD:dbgheap.obj + 0001:0001a9c0 __CrtIsValidPointer 2001b9c0 f LIBCMTD:dbgheap.obj + 0001:0001aa10 __CrtIsValidHeapPointer 2001ba10 f LIBCMTD:dbgheap.obj + 0001:0001aaa0 __CrtIsMemoryBlock 2001baa0 f LIBCMTD:dbgheap.obj + 0001:0001ab90 __CrtSetDumpClient 2001bb90 f LIBCMTD:dbgheap.obj + 0001:0001abb0 __CrtMemCheckpoint 2001bbb0 f LIBCMTD:dbgheap.obj + 0001:0001ad20 __CrtMemDifference 2001bd20 f LIBCMTD:dbgheap.obj + 0001:0001ae50 __CrtMemDumpAllObjectsSince 2001be50 f LIBCMTD:dbgheap.obj + 0001:0001b230 __CrtDumpMemoryLeaks 2001c230 f LIBCMTD:dbgheap.obj + 0001:0001b2b0 __CrtMemDumpStatistics 2001c2b0 f LIBCMTD:dbgheap.obj + 0001:0001b380 __mtinit 2001c380 f LIBCMTD:tidtable.obj + 0001:0001b410 __mtterm 2001c410 f LIBCMTD:tidtable.obj + 0001:0001b440 __initptd 2001c440 f LIBCMTD:tidtable.obj + 0001:0001b460 __getptd 2001c460 f LIBCMTD:tidtable.obj + 0001:0001b500 __freeptd 2001c500 f LIBCMTD:tidtable.obj + 0001:0001b5f0 ___threadid 2001c5f0 f LIBCMTD:tidtable.obj + 0001:0001b600 ___threadhandle 2001c600 f LIBCMTD:tidtable.obj + 0001:0001b610 __cinit 2001c610 f LIBCMTD:crt0dat.obj + 0001:0001b650 _exit 2001c650 f LIBCMTD:crt0dat.obj + 0001:0001b670 __exit 2001c670 f LIBCMTD:crt0dat.obj + 0001:0001b690 __cexit 2001c690 f LIBCMTD:crt0dat.obj + 0001:0001b6b0 __c_exit 2001c6b0 f LIBCMTD:crt0dat.obj + 0001:0001b7c0 __lockexit 2001c7c0 f LIBCMTD:crt0dat.obj + 0001:0001b7d0 __unlockexit 2001c7d0 f LIBCMTD:crt0dat.obj + 0001:0001b810 __XcptFilter 2001c810 f LIBCMTD:winxfltr.obj + 0001:0001ba2c __global_unwind2 2001ca2c f LIBCMTD:exsup.obj + 0001:0001ba6e __local_unwind2 2001ca6e f LIBCMTD:exsup.obj + 0001:0001bac6 __NLG_Return2 2001cac6 LIBCMTD:exsup.obj + 0001:0001bad6 __abnormal_termination 2001cad6 f LIBCMTD:exsup.obj + 0001:0001baf9 __NLG_Notify1 2001caf9 f LIBCMTD:exsup.obj + 0001:0001bb02 __NLG_Notify 2001cb02 f LIBCMTD:exsup.obj + 0001:0001bb15 __NLG_Dispatch 2001cb15 LIBCMTD:exsup.obj + 0001:0001bb24 __except_handler3 2001cb24 f LIBCMTD:exsup3.obj + 0001:0001bbe1 __seh_longjmp_unwind@4 2001cbe1 f LIBCMTD:exsup3.obj + 0001:0001bc00 ___crtLCMapStringW 2001cc00 f LIBCMTD:aw_map.obj + 0001:0001bf10 ___crtLCMapStringA 2001cf10 f LIBCMTD:aw_map.obj + 0001:0001c220 __mtinitlocks 2001d220 f LIBCMTD:mlock.obj + 0001:0001c260 __mtdeletelocks 2001d260 f LIBCMTD:mlock.obj + 0001:0001c300 __lock 2001d300 f LIBCMTD:mlock.obj + 0001:0001c3a0 __unlock 2001d3a0 f LIBCMTD:mlock.obj + 0001:0001c3c0 __lock_file 2001d3c0 f LIBCMTD:mlock.obj + 0001:0001c400 __lock_file2 2001d400 f LIBCMTD:mlock.obj + 0001:0001c430 __unlock_file 2001d430 f LIBCMTD:mlock.obj + 0001:0001c470 __unlock_file2 2001d470 f LIBCMTD:mlock.obj + 0001:0001c4a0 __lockerr_exit 2001d4a0 f LIBCMTD:mlock.obj + 0001:0001c4c0 _setlocale 2001d4c0 f LIBCMTD:setlocal.obj + 0001:0001cb40 __expandlocale 2001db40 f LIBCMTD:setlocal.obj + 0001:0001ccd0 ___init_dummy 2001dcd0 f LIBCMTD:setlocal.obj + 0001:0001cce0 __strcats 2001dce0 f LIBCMTD:setlocal.obj + 0001:0001cd30 ___lc_strtolc 2001dd30 f LIBCMTD:setlocal.obj + 0001:0001ce90 ___lc_lctostr 2001de90 f LIBCMTD:setlocal.obj + 0001:0001cf00 __tolower 2001df00 f LIBCMTD:tolower.obj + 0001:0001cf10 _tolower 2001df10 f LIBCMTD:tolower.obj + 0001:0001cfb0 __tolower_lk 2001dfb0 f LIBCMTD:tolower.obj + 0001:0001d0e0 __ioinit 2001e0e0 f LIBCMTD:ioinit.obj + 0001:0001d410 __ioterm 2001e410 f LIBCMTD:ioinit.obj + 0001:0001d4b0 __setenvp 2001e4b0 f LIBCMTD:stdenvp.obj + 0001:0001d5f0 __setargv 2001e5f0 f LIBCMTD:stdargv.obj + 0001:0001daf0 __setmbcp 2001eaf0 f LIBCMTD:mbctype.obj + 0001:0001df60 __getmbcp 2001ef60 f LIBCMTD:mbctype.obj + 0001:0001df70 ___initmbctable 2001ef70 f LIBCMTD:mbctype.obj + 0001:0001df80 ___crtGetEnvironmentStringsW 2001ef80 f LIBCMTD:aw_env.obj + 0001:0001e200 ___crtGetEnvironmentStringsA 2001f200 f LIBCMTD:aw_env.obj + 0001:0001e420 __heap_init 2001f420 f LIBCMTD:heapinit.obj + 0001:0001e470 __heap_term 2001f470 f LIBCMTD:heapinit.obj + 0001:0001e4c0 __set_error_mode 2001f4c0 f LIBCMTD:errmode.obj + 0001:0001e510 ___set_app_type 2001f510 f LIBCMTD:errmode.obj + 0001:0001e520 __FF_MSGBANNER 2001f520 f LIBCMTD:crt0msg.obj + 0001:0001e570 __NMSG_WRITE 2001f570 f LIBCMTD:crt0msg.obj + 0001:0001e770 __GET_RTERRMSG 2001f770 f LIBCMTD:crt0msg.obj + 0001:0001e7c0 __lseek 2001f7c0 f LIBCMTD:lseek.obj + 0001:0001e850 __lseek_lk 2001f850 f LIBCMTD:lseek.obj + 0001:0001e910 __write 2001f910 f LIBCMTD:write.obj + 0001:0001e9a0 __write_lk 2001f9a0 f LIBCMTD:write.obj + 0001:0001ec20 __getbuf 2001fc20 f LIBCMTD:_getbuf.obj + 0001:0001ecf0 __isatty 2001fcf0 f LIBCMTD:isatty.obj + 0001:0001ed30 ___initstdio 2001fd30 f LIBCMTD:_file.obj + 0001:0001ee60 ___endstdio 2001fe60 f LIBCMTD:_file.obj + 0001:0001ee80 _wctomb 2001fe80 f LIBCMTD:wctomb.obj + 0001:0001ef00 __wctomb_lk 2001ff00 f LIBCMTD:wctomb.obj + 0001:0001efa0 __aulldiv 2001ffa0 f LIBCMTD:ulldiv.obj + 0001:0001f010 __aullrem 20020010 f LIBCMTD:ullrem.obj + 0001:0001f090 __itoa 20020090 f LIBCMTD:xtoa.obj + 0001:0001f090 _itoa 20020090 f LIBCMTD:xtoa.obj + 0001:0001f1b0 __ltoa 200201b0 f LIBCMTD:xtoa.obj + 0001:0001f1f0 __ultoa 200201f0 f LIBCMTD:xtoa.obj + 0001:0001f210 __i64toa 20020210 f LIBCMTD:xtoa.obj + 0001:0001f340 __ui64toa 20020340 f LIBCMTD:xtoa.obj + 0001:0001f360 __snprintf 20020360 f LIBCMTD:snprintf.obj + 0001:0001f460 __vsnprintf 20020460 f LIBCMTD:vsnprint.obj + 0001:0001f560 __chkstk 20020560 LIBCMTD:chkstk.obj + 0001:0001f560 __alloca_probe 20020560 LIBCMTD:chkstk.obj + 0001:0001f590 _signal 20020590 f LIBCMTD:winsig.obj + 0001:0001f860 _raise 20020860 f LIBCMTD:winsig.obj + 0001:0001fb10 ___fpecode 20020b10 f LIBCMTD:winsig.obj + 0001:0001fb20 ___pxcptinfoptrs 20020b20 f LIBCMTD:winsig.obj + 0001:0001fb30 ___crtMessageBoxA 20020b30 f LIBCMTD:crtmbox.obj + 0001:0001fbf0 ___crtGetStringTypeW 20020bf0 f LIBCMTD:aw_str.obj + 0001:0001fe00 ___crtGetStringTypeA 20020e00 f LIBCMTD:aw_str.obj + 0001:0001ff60 _wcstombs 20020f60 f LIBCMTD:wcstombs.obj + 0001:0001ffe0 __wcstombs_lk 20020fe0 f LIBCMTD:wcstombs.obj + 0001:00020340 _getenv 20021340 f LIBCMTD:getenv.obj + 0001:00020370 __getenv_lk 20021370 f LIBCMTD:getenv.obj + 0001:00020430 _mbtowc 20021430 f LIBCMTD:mbtowc.obj + 0001:000204b0 __mbtowc_lk 200214b0 f LIBCMTD:mbtowc.obj + 0001:00020610 _isalpha 20021610 f LIBCMTD:_ctype.obj + 0001:00020660 _isupper 20021660 f LIBCMTD:_ctype.obj + 0001:000206a0 _islower 200216a0 f LIBCMTD:_ctype.obj + 0001:000206e0 _isdigit 200216e0 f LIBCMTD:_ctype.obj + 0001:00020720 _isxdigit 20021720 f LIBCMTD:_ctype.obj + 0001:00020770 _isspace 20021770 f LIBCMTD:_ctype.obj + 0001:000207b0 _ispunct 200217b0 f LIBCMTD:_ctype.obj + 0001:000207f0 _isalnum 200217f0 f LIBCMTD:_ctype.obj + 0001:00020840 _isprint 20021840 f LIBCMTD:_ctype.obj + 0001:00020890 _isgraph 20021890 f LIBCMTD:_ctype.obj + 0001:000208e0 _iscntrl 200218e0 f LIBCMTD:_ctype.obj + 0001:00020920 ___isascii 20021920 f LIBCMTD:_ctype.obj + 0001:00020930 ___toascii 20021930 f LIBCMTD:_ctype.obj + 0001:00020940 ___iscsymf 20021940 f LIBCMTD:_ctype.obj + 0001:000209a0 ___iscsym 200219a0 f LIBCMTD:_ctype.obj + 0001:00020a00 __allshl 20021a00 f LIBCMTD:llshl.obj + 0001:00020a20 __filbuf 20021a20 f LIBCMTD:_filbuf.obj + 0001:00020c10 _ungetc 20021c10 f LIBCMTD:ungetc.obj + 0001:00020c80 __ungetc_lk 20021c80 f LIBCMTD:ungetc.obj + 0001:00020dc0 ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z 20021dc0 f LIBCMTD:handler.obj + 0001:00020df0 ?_query_new_handler@@YAP6AHI@ZXZ 20021df0 f LIBCMTD:handler.obj + 0001:00020e00 __callnewh 20021e00 f LIBCMTD:handler.obj + 0001:00020e30 __malloc_base 20021e30 f LIBCMTD:malloc.obj + 0001:00020e50 __nh_malloc_base 20021e50 f LIBCMTD:malloc.obj + 0001:00020ed0 __heap_alloc_base 20021ed0 f LIBCMTD:malloc.obj + 0001:00020f40 __CrtDefaultAllocHook 20021f40 f LIBCMTD:dbghook.obj + 0001:00020f50 __expand_base 20021f50 f LIBCMTD:expand.obj + 0001:00021010 __realloc_base 20022010 f LIBCMTD:realloc.obj + 0001:00021210 __free_base 20022210 f LIBCMTD:free.obj + 0001:00021290 __heapchk 20022290 f LIBCMTD:heapchk.obj + 0001:00021310 __heapset 20022310 f LIBCMTD:heapchk.obj + 0001:00021320 __get_sbh_threshold 20022320 f LIBCMTD:sbheap.obj + 0001:00021330 __set_sbh_threshold 20022330 f LIBCMTD:sbheap.obj + 0001:00021360 ___sbh_new_region 20022360 f LIBCMTD:sbheap.obj + 0001:00021540 ___sbh_release_region 20022540 f LIBCMTD:sbheap.obj + 0001:000215c0 ___sbh_decommit_pages 200225c0 f LIBCMTD:sbheap.obj + 0001:00021720 ___sbh_find_block 20022720 f LIBCMTD:sbheap.obj + 0001:000217b0 ___sbh_free_block 200227b0 f LIBCMTD:sbheap.obj + 0001:00021820 ___sbh_alloc_block 20022820 f LIBCMTD:sbheap.obj + 0001:00021be0 ___sbh_alloc_block_from_page 20022be0 f LIBCMTD:sbheap.obj + 0001:00021e90 ___sbh_resize_block 20022e90 f LIBCMTD:sbheap.obj + 0001:00022000 ___sbh_heap_check 20023000 f LIBCMTD:sbheap.obj + 0001:00022240 ___init_time 20023240 f LIBCMTD:inittime.obj + 0001:00022d80 ___init_numeric 20023d80 f LIBCMTD:initnum.obj + 0001:000230b0 ___init_monetary 200240b0 f LIBCMTD:initmon.obj + 0001:00023510 ___init_ctype 20024510 f LIBCMTD:initctyp.obj + 0001:000238b0 ___init_collate 200248b0 f LIBCMTD:initcoll.obj + 0001:000238c0 _strcspn 200248c0 f LIBCMTD:strcspn.obj + 0001:00023900 _strncmp 20024900 f LIBCMTD:strncmp.obj + 0001:00023940 ___get_qualified_locale 20024940 f LIBCMTD:getqloc.obj + 0001:00023fe0 _wcslen 20024fe0 f LIBCMTD:wcslen.obj + 0001:00024010 __alloc_osfhnd 20025010 f LIBCMTD:osfinfo.obj + 0001:00024200 __set_osfhnd 20025200 f LIBCMTD:osfinfo.obj + 0001:000242c0 __free_osfhnd 200252c0 f LIBCMTD:osfinfo.obj + 0001:000243a0 __get_osfhandle 200253a0 f LIBCMTD:osfinfo.obj + 0001:00024410 __open_osfhandle 20025410 f LIBCMTD:osfinfo.obj + 0001:00024500 __lock_fhandle 20025500 f LIBCMTD:osfinfo.obj + 0001:00024590 __unlock_fhandle 20025590 f LIBCMTD:osfinfo.obj + 0001:000245c0 __fcloseall 200255c0 f LIBCMTD:closeall.obj + 0001:000246a0 _fflush 200256a0 f LIBCMTD:fflush.obj + 0001:000246f0 __fflush_lk 200256f0 f LIBCMTD:fflush.obj + 0001:00024740 __flush 20025740 f LIBCMTD:fflush.obj + 0001:00024800 __flushall 20025800 f LIBCMTD:fflush.obj + 0001:00024950 __fptrap 20025950 f LIBCMTD:crt0fp.obj + 0001:00024960 _memmove 20025960 f LIBCMTD:memmove.obj + 0001:00024ca0 __mbsnbicoll 20025ca0 f LIBCMTD:mbsnbico.obj + 0001:00024cf0 ___wtomb_environ 20025cf0 f LIBCMTD:wtombenv.obj + 0001:00024da0 __read 20025da0 f LIBCMTD:read.obj + 0001:00024e30 __read_lk 20025e30 f LIBCMTD:read.obj + 0001:00025280 __Getdays 20026280 f LIBCMTD:strftime.obj + 0001:000253b0 __Getmonths 200263b0 f LIBCMTD:strftime.obj + 0001:000254e0 __Gettnames 200264e0 f LIBCMTD:strftime.obj + 0001:00025850 _strftime 20026850 f LIBCMTD:strftime.obj + 0001:00025870 __Strftime 20026870 f LIBCMTD:strftime.obj + 0001:00026620 ___getlocaleinfo 20027620 f LIBCMTD:inithelp.obj + 0001:000268b0 _localeconv 200278b0 f LIBCMTD:lconv.obj + 0001:000268c0 ___crtGetLocaleInfoW 200278c0 f LIBCMTD:aw_loc.obj + 0001:00026a40 ___crtGetLocaleInfoA 20027a40 f LIBCMTD:aw_loc.obj + 0001:00026bd0 _wcstol 20027bd0 f LIBCMTD:wcstol.obj + 0001:00026ed0 _wcstoul 20027ed0 f LIBCMTD:wcstol.obj + 0001:00026ef0 _fclose 20027ef0 f LIBCMTD:fclose.obj + 0001:00026f80 __fclose_lk 20027f80 f LIBCMTD:fclose.obj + 0001:00027040 __commit 20028040 f LIBCMTD:commit.obj + 0001:00027120 ___crtCompareStringW 20028120 f LIBCMTD:aw_cmp.obj + 0001:00027420 ___crtCompareStringA 20028420 f LIBCMTD:aw_cmp.obj + 0001:00027830 ___crtsetenv 20028830 f LIBCMTD:setenv.obj + 0001:00027c80 _towupper 20028c80 f LIBCMTD:towupper.obj + 0001:00027d30 __towupper_lk 20028d30 f LIBCMTD:towupper.obj + 0001:00027df0 _iswctype 20028df0 f LIBCMTD:iswctype.obj + 0001:00027e70 _is_wctype 20028e70 f LIBCMTD:iswctype.obj + 0001:00027e90 __close 20028e90 f LIBCMTD:close.obj + 0001:00027f10 __close_lk 20028f10 f LIBCMTD:close.obj + 0001:00027fc0 __freebuf 20028fc0 f LIBCMTD:_freebuf.obj + 0001:00028060 __mbschr 20029060 f LIBCMTD:mbschr.obj + 0001:00028150 _ResumeThread@4 20029150 f kernel32:KERNEL32.dll + 0001:00028156 _CreateThread@24 20029156 f kernel32:KERNEL32.dll + 0001:0002815c _TlsSetValue@8 2002915c f kernel32:KERNEL32.dll + 0001:00028162 _ExitThread@4 20029162 f kernel32:KERNEL32.dll + 0001:00028168 _CloseHandle@4 20029168 f kernel32:KERNEL32.dll + 0001:0002816e _InterlockedDecrement@4 2002916e f kernel32:KERNEL32.dll + 0001:00028174 _InterlockedIncrement@4 20029174 f kernel32:KERNEL32.dll + 0001:0002817a _GetCommandLineA@0 2002917a f kernel32:KERNEL32.dll + 0001:00028180 _GetProcAddress@8 20029180 f kernel32:KERNEL32.dll + 0001:00028186 _GetVersion@0 20029186 f kernel32:KERNEL32.dll + 0001:0002818c _DebugBreak@0 2002918c f kernel32:KERNEL32.dll + 0001:00028192 _GetStdHandle@4 20029192 f kernel32:KERNEL32.dll + 0001:00028198 _WriteFile@20 20029198 f kernel32:KERNEL32.dll + 0001:0002819e _OutputDebugStringA@4 2002919e f kernel32:KERNEL32.dll + 0001:000281a4 _LoadLibraryA@4 200291a4 f kernel32:KERNEL32.dll + 0001:000281aa _GetModuleFileNameA@12 200291aa f kernel32:KERNEL32.dll + 0001:000281b0 _GetTimeZoneInformation@4 200291b0 f kernel32:KERNEL32.dll + 0001:000281b6 _IsBadWritePtr@8 200291b6 f kernel32:KERNEL32.dll + 0001:000281bc _IsBadReadPtr@8 200291bc f kernel32:KERNEL32.dll + 0001:000281c2 _HeapValidate@12 200291c2 f kernel32:KERNEL32.dll + 0001:000281c8 _GetCurrentThreadId@0 200291c8 f kernel32:KERNEL32.dll + 0001:000281ce _TlsAlloc@0 200291ce f kernel32:KERNEL32.dll + 0001:000281d4 _TlsFree@4 200291d4 f kernel32:KERNEL32.dll + 0001:000281da _TlsGetValue@4 200291da f kernel32:KERNEL32.dll + 0001:000281e0 _GetCurrentThread@0 200291e0 f kernel32:KERNEL32.dll + 0001:000281e6 _ExitProcess@4 200291e6 f kernel32:KERNEL32.dll + 0001:000281ec _TerminateProcess@8 200291ec f kernel32:KERNEL32.dll + 0001:000281f2 _GetCurrentProcess@0 200291f2 f kernel32:KERNEL32.dll + 0001:000281f8 _UnhandledExceptionFilter@4 200291f8 f kernel32:KERNEL32.dll + 0001:000281fe _RtlUnwind@16 200291fe f kernel32:KERNEL32.dll + 0001:00028204 _MultiByteToWideChar@24 20029204 f kernel32:KERNEL32.dll + 0001:0002820a _WideCharToMultiByte@32 2002920a f kernel32:KERNEL32.dll + 0001:00028210 _LCMapStringA@24 20029210 f kernel32:KERNEL32.dll + 0001:00028216 _LCMapStringW@24 20029216 f kernel32:KERNEL32.dll + 0001:0002821c _InitializeCriticalSection@4 2002921c f kernel32:KERNEL32.dll + 0001:00028222 _DeleteCriticalSection@4 20029222 f kernel32:KERNEL32.dll + 0001:00028228 _EnterCriticalSection@4 20029228 f kernel32:KERNEL32.dll + 0001:0002822e _LeaveCriticalSection@4 2002922e f kernel32:KERNEL32.dll + 0001:00028234 _FatalAppExitA@8 20029234 f kernel32:KERNEL32.dll + 0001:0002823a _Sleep@4 2002923a f kernel32:KERNEL32.dll + 0001:00028240 _SetHandleCount@4 20029240 f kernel32:KERNEL32.dll + 0001:00028246 _GetFileType@4 20029246 f kernel32:KERNEL32.dll + 0001:0002824c _GetStartupInfoA@4 2002924c f kernel32:KERNEL32.dll + 0001:00028252 _GetCPInfo@8 20029252 f kernel32:KERNEL32.dll + 0001:00028258 _GetACP@0 20029258 f kernel32:KERNEL32.dll + 0001:0002825e _GetOEMCP@0 2002925e f kernel32:KERNEL32.dll + 0001:00028264 _FreeEnvironmentStringsA@4 20029264 f kernel32:KERNEL32.dll + 0001:0002826a _FreeEnvironmentStringsW@4 2002926a f kernel32:KERNEL32.dll + 0001:00028270 _GetEnvironmentStrings@0 20029270 f kernel32:KERNEL32.dll + 0001:00028276 _GetEnvironmentStringsW@0 20029276 f kernel32:KERNEL32.dll + 0001:0002827c _HeapDestroy@4 2002927c f kernel32:KERNEL32.dll + 0001:00028282 _HeapCreate@12 20029282 f kernel32:KERNEL32.dll + 0001:00028288 _VirtualFree@12 20029288 f kernel32:KERNEL32.dll + 0001:0002828e _SetFilePointer@16 2002928e f kernel32:KERNEL32.dll + 0001:00028294 _SetConsoleCtrlHandler@8 20029294 f kernel32:KERNEL32.dll + 0001:0002829a _GetStringTypeA@20 2002929a f kernel32:KERNEL32.dll + 0001:000282a0 _GetStringTypeW@16 200292a0 f kernel32:KERNEL32.dll + 0001:000282a6 _HeapAlloc@12 200292a6 f kernel32:KERNEL32.dll + 0001:000282ac _HeapReAlloc@16 200292ac f kernel32:KERNEL32.dll + 0001:000282b2 _HeapFree@12 200292b2 f kernel32:KERNEL32.dll + 0001:000282b8 _VirtualAlloc@16 200292b8 f kernel32:KERNEL32.dll + 0001:000282be _IsValidLocale@8 200292be f kernel32:KERNEL32.dll + 0001:000282c4 _IsValidCodePage@4 200292c4 f kernel32:KERNEL32.dll + 0001:000282ca _GetUserDefaultLCID@0 200292ca f kernel32:KERNEL32.dll + 0001:000282d0 _SetStdHandle@8 200292d0 f kernel32:KERNEL32.dll + 0001:000282d6 _ReadFile@20 200292d6 f kernel32:KERNEL32.dll + 0001:000282dc _GetLocaleInfoA@16 200292dc f kernel32:KERNEL32.dll + 0001:000282e2 _GetLocaleInfoW@16 200292e2 f kernel32:KERNEL32.dll + 0001:000282e8 _FlushFileBuffers@4 200292e8 f kernel32:KERNEL32.dll + 0001:000282ee _CompareStringA@24 200292ee f kernel32:KERNEL32.dll + 0001:000282f4 _CompareStringW@24 200292f4 f kernel32:KERNEL32.dll + 0001:000282fa _SetEnvironmentVariableA@8 200292fa f kernel32:KERNEL32.dll + 0002:00000054 ??_C@_0P@LNLA@format?5?$CB?$DN?5NULL?$AA@ 2002a054 LIBCMTD:sprintf.obj + 0002:00000064 ??_C@_09NEAG@sprintf?4c?$AA@ 2002a064 LIBCMTD:sprintf.obj + 0002:00000070 ??_C@_0P@OOIN@string?5?$CB?$DN?5NULL?$AA@ 2002a070 LIBCMTD:sprintf.obj + 0002:00000080 ??_C@_08EJDA@sscanf?4c?$AA@ 2002a080 LIBCMTD:sscanf.obj + 0002:0000008c ??_C@_08GEIE@thread?4c?$AA@ 2002a08c LIBCMTD:thread.obj + 0002:000000a4 ??_C@_08FNDD@strlwr?4c?$AA@ 2002a0a4 LIBCMTD:strlwr.obj + 0002:000000b0 ??_C@_05EODD@IsTNT?$AA@ 2002a0b0 LIBCMTD:dllcrt0.obj + 0002:000000b8 ??_C@_0N@IDOE@kernel32?4dll?$AA@ 2002a0b8 LIBCMTD:dllcrt0.obj + 0002:000000c8 ??_C@_0DP@IHIN@?$CI?$CCinconsistent?5IOB?5fields?$CC?0?5stre@ 2002a0c8 LIBCMTD:_flsbuf.obj + 0002:00000108 ??_C@_09LGEI@_flsbuf?4c?$AA@ 2002a108 LIBCMTD:_flsbuf.obj + 0002:00000114 ??_C@_0M@KJPK@str?5?$CB?$DN?5NULL?$AA@ 2002a114 LIBCMTD:_flsbuf.obj + 0002:00000120 ___lookuptable 2002a120 LIBCMTD:output.obj + 0002:0000017c ??_C@_1O@POHA@?$AA?$CI?$AAn?$AAu?$AAl?$AAl?$AA?$CJ?$AA?$AA@ 2002a17c LIBCMTD:output.obj + 0002:0000018c ??_C@_06ONKE@?$CInull?$CJ?$AA@ 2002a18c LIBCMTD:output.obj + 0002:00000194 ??_C@_08MIHI@output?4c?$AA@ 2002a194 LIBCMTD:output.obj + 0002:000001a0 ??_C@_0P@PIHB@ch?5?$CB?$DN?5_T?$CI?8?20?8?$CJ?$AA@ 2002a1a0 LIBCMTD:output.obj + 0002:000001b0 ??_C@_0BB@BLL@Assertion?5Failed?$AA@ 2002a1b0 LIBCMTD:dbgrpt.obj + 0002:000001c4 ??_C@_05CKBG@Error?$AA@ 2002a1c4 LIBCMTD:dbgrpt.obj + 0002:000001cc ??_C@_07JCGI@Warning?$AA@ 2002a1cc LIBCMTD:dbgrpt.obj + 0002:000001d4 ??_C@_0M@ODEP@?$CFs?$CI?$CFd?$CJ?5?3?5?$CFs?$AA@ 2002a1d4 LIBCMTD:dbgrpt.obj + 0002:000001e0 ??_C@_01BJG@?6?$AA@ 2002a1e0 LIBCMTD:dbgrpt.obj + 0002:000001e4 ??_C@_01FEHD@?$AN?$AA@ 2002a1e4 LIBCMTD:dbgrpt.obj + 0002:000001e8 ??_C@_0BC@OIMC@Assertion?5failed?$CB?$AA@ 2002a1e8 LIBCMTD:dbgrpt.obj + 0002:000001fc ??_C@_0BD@BEAK@Assertion?5failed?3?5?$AA@ 2002a1fc LIBCMTD:dbgrpt.obj + 0002:00000210 ??_C@_0CL@LCCP@_CrtDbgReport?3?5String?5too?5long?5o@ 2002a210 LIBCMTD:dbgrpt.obj + 0002:0000023c ??_C@_0DC@EMDK@Second?5Chance?5Assertion?5Failed?3?5@ 2002a23c LIBCMTD:dbgrpt.obj + 0002:00000270 ??_C@_09NJAK@wsprintfA?$AA@ 2002a270 LIBCMTD:dbgrpt.obj + 0002:0000027c ??_C@_0L@HKL@user32?4dll?$AA@ 2002a27c LIBCMTD:dbgrpt.obj + 0002:00000288 ??_C@_0CD@GCMD@Microsoft?5Visual?5C?$CL?$CL?5Debug?5Libra@ 2002a288 LIBCMTD:dbgrpt.obj + 0002:000002ac ??_C@_0FD@EBDD@Debug?5?$CFs?$CB?6?6Program?3?5?$CFs?$CFs?$CFs?$CFs?$CFs?$CFs@ 2002a2ac LIBCMTD:dbgrpt.obj + 0002:00000300 ??_C@_09DCKN@?6Module?3?5?$AA@ 2002a300 LIBCMTD:dbgrpt.obj + 0002:0000030c ??_C@_07HJII@?6File?3?5?$AA@ 2002a30c LIBCMTD:dbgrpt.obj + 0002:00000314 ??_C@_07LFGN@?6Line?3?5?$AA@ 2002a314 LIBCMTD:dbgrpt.obj + 0002:0000031c ??_C@_02JJJH@?6?6?$AA@ 2002a31c LIBCMTD:dbgrpt.obj + 0002:00000320 ??_C@_0N@NOAB@Expression?3?5?$AA@ 2002a320 LIBCMTD:dbgrpt.obj + 0002:00000330 ??_C@_00A@?$AA@ 2002a330 LIBCMTD:dbgrpt.obj + 0002:00000334 ??_C@_0HD@BHFH@?6?6For?5information?5on?5how?5your?5pr@ 2002a334 LIBCMTD:dbgrpt.obj + 0002:000003a8 ??_C@_03NAME@?4?4?4?$AA@ 2002a3a8 LIBCMTD:dbgrpt.obj + 0002:000003ac ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 2002a3ac LIBCMTD:dbgrpt.obj + 0002:000003c4 ??_C@_08GFHP@dbgrpt?4c?$AA@ 2002a3c4 LIBCMTD:dbgrpt.obj + 0002:000003d0 ??_C@_0BG@FBEA@szUserMessage?5?$CB?$DN?5NULL?$AA@ 2002a3d0 LIBCMTD:dbgrpt.obj + 0002:000003e8 ___dnames 2002a3e8 LIBCMTD:timeset.obj + 0002:00000400 ___mnames 2002a400 LIBCMTD:timeset.obj + 0002:00000428 ??_C@_07DEKI@tzset?4c?$AA@ 2002a428 LIBCMTD:tzset.obj + 0002:00000430 ??_C@_02JHIA@TZ?$AA@ 2002a430 LIBCMTD:tzset.obj + 0002:00000434 ??_C@_08LLGM@gmtime?4c?$AA@ 2002a434 LIBCMTD:gmtime.obj + 0002:00000440 ??_C@_0P@FHEA@stream?5?$CB?$DN?5NULL?$AA@ 2002a440 LIBCMTD:input.obj + 0002:00000450 ??_C@_07IEFA@input?4c?$AA@ 2002a450 LIBCMTD:input.obj + 0002:00000458 ??_C@_06DPMO@Client?$AA@ 2002a458 LIBCMTD:dbgheap.obj + 0002:00000460 ??_C@_06BAFM@Ignore?$AA@ 2002a460 LIBCMTD:dbgheap.obj + 0002:00000468 ??_C@_03DICE@CRT?$AA@ 2002a468 LIBCMTD:dbgheap.obj + 0002:0000046c ??_C@_06BILL@Normal?$AA@ 2002a46c LIBCMTD:dbgheap.obj + 0002:00000474 ??_C@_04NEN@Free?$AA@ 2002a474 LIBCMTD:dbgheap.obj + 0002:0000047c ??_C@_0DC@CGID@Error?3?5memory?5allocation?3?5bad?5me@ 2002a47c LIBCMTD:dbgheap.obj + 0002:000004b0 ??_C@_0CE@FMIA@Invalid?5allocation?5size?3?5?$CFu?5byte@ 2002a4b0 LIBCMTD:dbgheap.obj + 0002:000004d4 ??_C@_02DILL@?$CFs?$AA@ 2002a4d4 LIBCMTD:dbgheap.obj + 0002:000004d8 ??_C@_0CB@CPBI@Client?5hook?5allocation?5failure?4?6@ 2002a4d8 LIBCMTD:dbgheap.obj + 0002:000004fc ??_C@_0DF@DKHF@Client?5hook?5allocation?5failure?5a@ 2002a4fc LIBCMTD:dbgheap.obj + 0002:00000534 ??_C@_09IMJC@dbgheap?4c?$AA@ 2002a534 LIBCMTD:dbgheap.obj + 0002:00000540 ??_C@_0BC@EPKL@_CrtCheckMemory?$CI?$CJ?$AA@ 2002a540 LIBCMTD:dbgheap.obj + 0002:00000554 ??_C@_0BK@JDHA@_pFirstBlock?5?$DN?$DN?5pOldBlock?$AA@ 2002a554 LIBCMTD:dbgheap.obj + 0002:00000570 ??_C@_0BJ@NMEF@_pLastBlock?5?$DN?$DN?5pOldBlock?$AA@ 2002a570 LIBCMTD:dbgheap.obj + 0002:0000058c ??_C@_0DC@BOCN@fRealloc?5?$HM?$HM?5?$CI?$CBfRealloc?5?$CG?$CG?5pNewBl@ 2002a58c LIBCMTD:dbgheap.obj + 0002:000005c0 ??_C@_0DK@DKOM@_BLOCK_TYPE?$CIpOldBlock?9?$DOnBlockUse@ 2002a5c0 LIBCMTD:dbgheap.obj + 0002:000005fc ??_C@_0EF@EDKM@pOldBlock?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5@ 2002a5fc LIBCMTD:dbgheap.obj + 0002:00000644 ??_C@_0CC@GPMO@_CrtIsValidHeapPointer?$CIpUserData@ 2002a644 LIBCMTD:dbgheap.obj + 0002:00000668 ??_C@_0CN@FHGE@Allocation?5too?5large?5or?5negative@ 2002a668 LIBCMTD:dbgheap.obj + 0002:00000698 ??_C@_0CE@EAMN@Client?5hook?5re?9allocation?5failur@ 2002a698 LIBCMTD:dbgheap.obj + 0002:000006bc ??_C@_0DI@KKMM@Client?5hook?5re?9allocation?5failur@ 2002a6bc LIBCMTD:dbgheap.obj + 0002:000006f4 ??_C@_0BG@JCEC@_pFirstBlock?5?$DN?$DN?5pHead?$AA@ 2002a6f4 LIBCMTD:dbgheap.obj + 0002:0000070c ??_C@_0BF@NLNN@_pLastBlock?5?$DN?$DN?5pHead?$AA@ 2002a70c LIBCMTD:dbgheap.obj + 0002:00000724 ??_C@_0BO@PLHH@pHead?9?$DOnBlockUse?5?$DN?$DN?5nBlockUse?$AA@ 2002a724 LIBCMTD:dbgheap.obj + 0002:00000744 ??_C@_0DN@KKIO@pHead?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5?$CG?$CG?5p@ 2002a744 LIBCMTD:dbgheap.obj + 0002:00000784 ??_C@_0CK@OJNB@DAMAGE?3?5after?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5at@ 2002a784 LIBCMTD:dbgheap.obj + 0002:000007b0 ??_C@_0CL@IJIL@DAMAGE?3?5before?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5a@ 2002a7b0 LIBCMTD:dbgheap.obj + 0002:000007dc ??_C@_0CH@PHOC@_BLOCK_TYPE_IS_VALID?$CIpHead?9?$DOnBlo@ 2002a7dc LIBCMTD:dbgheap.obj + 0002:00000804 ??_C@_0BL@MBNA@Client?5hook?5free?5failure?4?6?$AA@ 2002a804 LIBCMTD:dbgheap.obj + 0002:00000820 ??_C@_0DK@EKKL@memory?5check?5error?5at?50x?$CF08X?5?$DN?50@ 2002a820 LIBCMTD:dbgheap.obj + 0002:0000085c ??_C@_0CJ@GCII@?$CFhs?5located?5at?50x?$CF08X?5is?5?$CFu?5byte@ 2002a85c LIBCMTD:dbgheap.obj + 0002:00000888 ??_C@_0CA@EJPI@?$CFhs?5allocated?5at?5file?5?$CFhs?$CI?$CFd?$CJ?4?6?$AA@ 2002a888 LIBCMTD:dbgheap.obj + 0002:000008a8 ??_C@_0CJ@LHHG@DAMAGE?3?5on?5top?5of?5Free?5block?5at?5@ 2002a8a8 LIBCMTD:dbgheap.obj + 0002:000008d4 ??_C@_07GJHM@DAMAGED?$AA@ 2002a8d4 LIBCMTD:dbgheap.obj + 0002:000008dc ??_C@_0CL@ODIE@_heapchk?5fails?5with?5unknown?5retu@ 2002a8dc LIBCMTD:dbgheap.obj + 0002:00000908 ??_C@_0CC@EHNC@_heapchk?5fails?5with?5_HEAPBADPTR?4@ 2002a908 LIBCMTD:dbgheap.obj + 0002:0000092c ??_C@_0CC@JNDP@_heapchk?5fails?5with?5_HEAPBADEND?4@ 2002a92c LIBCMTD:dbgheap.obj + 0002:00000950 ??_C@_0CD@DNMG@_heapchk?5fails?5with?5_HEAPBADNODE@ 2002a950 LIBCMTD:dbgheap.obj + 0002:00000974 ??_C@_0CE@JMCB@_heapchk?5fails?5with?5_HEAPBADBEGI@ 2002a974 LIBCMTD:dbgheap.obj + 0002:00000998 ??_C@_0CD@MEMI@Bad?5memory?5block?5found?5at?50x?$CF08X@ 2002a998 LIBCMTD:dbgheap.obj + 0002:000009bc ??_C@_0CI@GMAO@_CrtMemCheckPoint?3?5NULL?5state?5po@ 2002a9bc LIBCMTD:dbgheap.obj + 0002:000009e4 ??_C@_0CI@MNAE@_CrtMemDifference?3?5NULL?5state?5po@ 2002a9e4 LIBCMTD:dbgheap.obj + 0002:00000a0c ??_C@_0BH@PKIJ@Object?5dump?5complete?4?6?$AA@ 2002aa0c LIBCMTD:dbgheap.obj + 0002:00000a24 ??_C@_0DB@DBPF@crt?5block?5at?50x?$CF08X?0?5subtype?5?$CFx?0@ 2002aa24 LIBCMTD:dbgheap.obj + 0002:00000a58 ??_C@_0CI@JLM@normal?5block?5at?50x?$CF08X?0?5?$CFu?5bytes@ 2002aa58 LIBCMTD:dbgheap.obj + 0002:00000a80 ??_C@_0DE@PFEA@client?5block?5at?50x?$CF08X?0?5subtype?5@ 2002aa80 LIBCMTD:dbgheap.obj + 0002:00000ab4 ??_C@_06MBCE@?$HL?$CFld?$HN?5?$AA@ 2002aab4 LIBCMTD:dbgheap.obj + 0002:00000abc ??_C@_0L@BLDJ@?$CFhs?$CI?$CFd?$CJ?5?3?5?$AA@ 2002aabc LIBCMTD:dbgheap.obj + 0002:00000ac8 ??_C@_0BE@FEMA@?$CDFile?5Error?$CD?$CI?$CFd?$CJ?5?3?5?$AA@ 2002aac8 LIBCMTD:dbgheap.obj + 0002:00000adc ??_C@_0BE@FPPM@Dumping?5objects?5?9?$DO?6?$AA@ 2002aadc LIBCMTD:dbgheap.obj + 0002:00000af0 ??_C@_0BA@POLM@?5Data?3?5?$DM?$CFs?$DO?5?$CFs?6?$AA@ 2002aaf0 LIBCMTD:dbgheap.obj + 0002:00000b00 ??_C@_05JLAO@?$CF?42X?5?$AA@ 2002ab00 LIBCMTD:dbgheap.obj + 0002:00000b08 ??_C@_0BI@KONA@Detected?5memory?5leaks?$CB?6?$AA@ 2002ab08 LIBCMTD:dbgheap.obj + 0002:00000b20 ??_C@_0BP@LCCN@Total?5allocations?3?5?$CFld?5bytes?4?6?$AA@ 2002ab20 LIBCMTD:dbgheap.obj + 0002:00000b40 ??_C@_0CB@COID@Largest?5number?5used?3?5?$CFld?5bytes?4?6@ 2002ab40 LIBCMTD:dbgheap.obj + 0002:00000b64 ??_C@_0BO@MEJD@?$CFld?5bytes?5in?5?$CFld?5?$CFhs?5Blocks?4?6?$AA@ 2002ab64 LIBCMTD:dbgheap.obj + 0002:00000b84 ??_C@_0L@ENLJ@tidtable?4c?$AA@ 2002ab84 LIBCMTD:tidtable.obj + 0002:00000b90 ??_C@_08GINJ@aw_map?4c?$AA@ 2002ab90 LIBCMTD:aw_map.obj + 0002:00000b9c ??_C@_01A@?$AA?$AA@ 2002ab9c LIBCMTD:aw_map.obj + 0002:00000ba0 ??_C@_13A@?$AA?$AA?$AA?$AA@ 2002aba0 LIBCMTD:aw_map.obj + 0002:00000ba4 ??_C@_07PDLA@mlock?4c?$AA@ 2002aba4 LIBCMTD:mlock.obj + 0002:00000bac ??_C@_07PCLE@LC_TIME?$AA@ 2002abac LIBCMTD:setlocal.obj + 0002:00000bb4 ??_C@_0L@NKG@LC_NUMERIC?$AA@ 2002abb4 LIBCMTD:setlocal.obj + 0002:00000bc0 ??_C@_0M@CBIH@LC_MONETARY?$AA@ 2002abc0 LIBCMTD:setlocal.obj + 0002:00000bcc ??_C@_08LFGE@LC_CTYPE?$AA@ 2002abcc LIBCMTD:setlocal.obj + 0002:00000bd8 ??_C@_0L@CFLC@LC_COLLATE?$AA@ 2002abd8 LIBCMTD:setlocal.obj + 0002:00000be4 ??_C@_06GCPK@LC_ALL?$AA@ 2002abe4 LIBCMTD:setlocal.obj + 0002:00000bec ??_C@_01FAJB@?$DL?$AA@ 2002abec LIBCMTD:setlocal.obj + 0002:00000bf0 ??_C@_02BGDO@?$DN?$DL?$AA@ 2002abf0 LIBCMTD:setlocal.obj + 0002:00000bf4 ??_C@_0L@MOEE@setlocal?4c?$AA@ 2002abf4 LIBCMTD:setlocal.obj + 0002:00000c00 ??_C@_01KPOD@?$DN?$AA@ 2002ac00 LIBCMTD:setlocal.obj + 0002:00000c04 ??_C@_03DBOJ@_?4?0?$AA@ 2002ac04 LIBCMTD:setlocal.obj + 0002:00000c08 ??_C@_01PJCK@?4?$AA@ 2002ac08 LIBCMTD:setlocal.obj + 0002:00000c0c ??_C@_01NON@_?$AA@ 2002ac0c LIBCMTD:setlocal.obj + 0002:00000c10 ??_C@_08KFDJ@ioinit?4c?$AA@ 2002ac10 LIBCMTD:ioinit.obj + 0002:00000c1c ??_C@_09IGKD@stdenvp?4c?$AA@ 2002ac1c LIBCMTD:stdenvp.obj + 0002:00000c28 ??_C@_09MPMN@stdargv?4c?$AA@ 2002ac28 LIBCMTD:stdargv.obj + 0002:00000c34 ??_C@_08FFKK@aw_env?4c?$AA@ 2002ac34 LIBCMTD:aw_env.obj + 0002:00000c40 ??_C@_0P@GGKG@runtime?5error?5?$AA@ 2002ac40 LIBCMTD:crt0msg.obj + 0002:00000c50 ??_C@_02PIMC@?$AN?6?$AA@ 2002ac50 LIBCMTD:crt0msg.obj + 0002:00000c54 ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 2002ac54 LIBCMTD:crt0msg.obj + 0002:00000c64 ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 2002ac64 LIBCMTD:crt0msg.obj + 0002:00000c74 ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 2002ac74 LIBCMTD:crt0msg.obj + 0002:00000c84 ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 2002ac84 LIBCMTD:crt0msg.obj + 0002:00000cac ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 2002acac LIBCMTD:crt0msg.obj + 0002:00000ce4 ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 2002ace4 LIBCMTD:crt0msg.obj + 0002:00000d1c ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 2002ad1c LIBCMTD:crt0msg.obj + 0002:00000d44 ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 2002ad44 LIBCMTD:crt0msg.obj + 0002:00000d7c ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 2002ad7c LIBCMTD:crt0msg.obj + 0002:00000da8 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 2002ada8 LIBCMTD:crt0msg.obj + 0002:00000dcc ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 2002adcc LIBCMTD:crt0msg.obj + 0002:00000dfc ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 2002adfc LIBCMTD:crt0msg.obj + 0002:00000e28 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 2002ae28 LIBCMTD:crt0msg.obj + 0002:00000e4c ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 2002ae4c LIBCMTD:crt0msg.obj + 0002:00000e78 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 2002ae78 LIBCMTD:crt0msg.obj + 0002:00000ea4 ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 2002aea4 LIBCMTD:crt0msg.obj + 0002:00000ecc ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 2002aecc LIBCMTD:crt0msg.obj + 0002:00000ef4 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 2002aef4 LIBCMTD:crt0msg.obj + 0002:00000f10 ??_C@_09EMDO@_getbuf?4c?$AA@ 2002af10 LIBCMTD:_getbuf.obj + 0002:00000f1c ??_C@_07HPAH@_file?4c?$AA@ 2002af1c LIBCMTD:_file.obj + 0002:00000f24 ??_C@_0L@HE@vsprintf?4c?$AA@ 2002af24 LIBCMTD:vsnprint.obj + 0002:00000f30 ??_C@_08CNMA@winsig?4c?$AA@ 2002af30 LIBCMTD:winsig.obj + 0002:00000f3c ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 2002af3c LIBCMTD:crtmbox.obj + 0002:00000f50 ??_C@_0BA@GILI@GetActiveWindow?$AA@ 2002af50 LIBCMTD:crtmbox.obj + 0002:00000f60 ??_C@_0M@PKCK@MessageBoxA?$AA@ 2002af60 LIBCMTD:crtmbox.obj + 0002:00000f6c ??_C@_08OKGP@aw_str?4c?$AA@ 2002af6c LIBCMTD:aw_str.obj + 0002:00000f78 ??_C@_0L@LIHO@wcstombs?4c?$AA@ 2002af78 LIBCMTD:wcstombs.obj + 0002:00000f84 ??_C@_0N@ILLM@pwcs?5?$CB?$DN?5NULL?$AA@ 2002af84 LIBCMTD:wcstombs.obj + 0002:00000f94 ??_C@_08MOLN@mbtowc?4c?$AA@ 2002af94 LIBCMTD:mbtowc.obj + 0002:00000fa0 ??_C@_0CD@NPPL@MB_CUR_MAX?5?$DN?$DN?51?5?$HM?$HM?5MB_CUR_MAX?5?$DN?$DN@ 2002afa0 LIBCMTD:mbtowc.obj + 0002:00000fc4 ??_C@_09DNOI@_filbuf?4c?$AA@ 2002afc4 LIBCMTD:_filbuf.obj + 0002:00000fd0 ??_C@_08JKP@ungetc?4c?$AA@ 2002afd0 LIBCMTD:ungetc.obj + 0002:00000fdc ??_C@_0L@EEGJ@inittime?4c?$AA@ 2002afdc LIBCMTD:inittime.obj + 0002:00000fe8 ??_C@_09IMJJ@initnum?4c?$AA@ 2002afe8 LIBCMTD:initnum.obj + 0002:00000ff4 ??_C@_09KPNI@initmon?4c?$AA@ 2002aff4 LIBCMTD:initmon.obj + 0002:00001000 ??_C@_0L@COIL@initctyp?4c?$AA@ 2002b000 LIBCMTD:initctyp.obj + 0002:0000100c ??_C@_0O@GLHB@united?9states?$AA@ 2002b00c LIBCMTD:getqloc.obj + 0002:0000101c ??_C@_0P@IIKK@united?9kingdom?$AA@ 2002b01c LIBCMTD:getqloc.obj + 0002:0000102c ??_C@_0O@ILBP@united?5states?$AA@ 2002b02c LIBCMTD:getqloc.obj + 0002:0000103c ??_C@_0P@KBEK@united?5kingdom?$AA@ 2002b03c LIBCMTD:getqloc.obj + 0002:0000104c ??_C@_03IGKO@twn?$AA@ 2002b04c LIBCMTD:getqloc.obj + 0002:00001050 ??_C@_06CMKP@turkey?$AA@ 2002b050 LIBCMTD:getqloc.obj + 0002:00001058 ??_C@_03PMGP@tur?$AA@ 2002b058 LIBCMTD:getqloc.obj + 0002:0000105c ??_C@_06OBJC@taiwan?$AA@ 2002b05c LIBCMTD:getqloc.obj + 0002:00001064 ??_C@_0M@EKGN@switzerland?$AA@ 2002b064 LIBCMTD:getqloc.obj + 0002:00001070 ??_C@_06PJFL@sweden?$AA@ 2002b070 LIBCMTD:getqloc.obj + 0002:00001078 ??_C@_03JDMO@swe?$AA@ 2002b078 LIBCMTD:getqloc.obj + 0002:0000107c ??_C@_03COKO@svk?$AA@ 2002b07c LIBCMTD:getqloc.obj + 0002:00001080 ??_C@_05FBKI@spain?$AA@ 2002b080 LIBCMTD:getqloc.obj + 0002:00001088 ??_C@_0M@BDFM@south?9korea?$AA@ 2002b088 LIBCMTD:getqloc.obj + 0002:00001094 ??_C@_0M@HNHN@south?5korea?$AA@ 2002b094 LIBCMTD:getqloc.obj + 0002:000010a0 ??_C@_03FANM@sgp?$AA@ 2002b0a0 LIBCMTD:getqloc.obj + 0002:000010a4 ??_C@_09EOGO@singapore?$AA@ 2002b0a4 LIBCMTD:getqloc.obj + 0002:000010b0 ??_C@_06NHNE@russia?$AA@ 2002b0b0 LIBCMTD:getqloc.obj + 0002:000010b8 ??_C@_03CKBC@prt?$AA@ 2002b0b8 LIBCMTD:getqloc.obj + 0002:000010bc ??_C@_08EJOH@pr?9china?$AA@ 2002b0bc LIBCMTD:getqloc.obj + 0002:000010c8 ??_C@_08CHMG@pr?5china?$AA@ 2002b0c8 LIBCMTD:getqloc.obj + 0002:000010d4 ??_C@_08GGAN@portugal?$AA@ 2002b0d4 LIBCMTD:getqloc.obj + 0002:000010e0 ??_C@_06NOHH@poland?$AA@ 2002b0e0 LIBCMTD:getqloc.obj + 0002:000010e8 ??_C@_03EECH@pol?$AA@ 2002b0e8 LIBCMTD:getqloc.obj + 0002:000010ec ??_C@_03DPCG@nzl?$AA@ 2002b0ec LIBCMTD:getqloc.obj + 0002:000010f0 ??_C@_02OCJK@nz?$AA@ 2002b0f0 LIBCMTD:getqloc.obj + 0002:000010f4 ??_C@_06BAPG@norway?$AA@ 2002b0f4 LIBCMTD:getqloc.obj + 0002:000010fc ??_C@_0M@MMKA@new?9zealand?$AA@ 2002b0fc LIBCMTD:getqloc.obj + 0002:00001108 ??_C@_0M@OFEA@new?5zealand?$AA@ 2002b108 LIBCMTD:getqloc.obj + 0002:00001114 ??_C@_0M@POGE@netherlands?$AA@ 2002b114 LIBCMTD:getqloc.obj + 0002:00001120 ??_C@_06KJLN@mexico?$AA@ 2002b120 LIBCMTD:getqloc.obj + 0002:00001128 ??_C@_03HEJJ@mex?$AA@ 2002b128 LIBCMTD:getqloc.obj + 0002:0000112c ??_C@_05OOCK@korea?$AA@ 2002b12c LIBCMTD:getqloc.obj + 0002:00001134 ??_C@_05EEKJ@japan?$AA@ 2002b134 LIBCMTD:getqloc.obj + 0002:0000113c ??_C@_05DHEA@italy?$AA@ 2002b13c LIBCMTD:getqloc.obj + 0002:00001144 ??_C@_03DEBD@irl?$AA@ 2002b144 LIBCMTD:getqloc.obj + 0002:00001148 ??_C@_07JJLD@ireland?$AA@ 2002b148 LIBCMTD:getqloc.obj + 0002:00001150 ??_C@_07FGBB@iceland?$AA@ 2002b150 LIBCMTD:getqloc.obj + 0002:00001158 ??_C@_07IDDB@hungary?$AA@ 2002b158 LIBCMTD:getqloc.obj + 0002:00001160 ??_C@_09MGEH@hong?9kong?$AA@ 2002b160 LIBCMTD:getqloc.obj + 0002:0000116c ??_C@_09OHNN@hong?5kong?$AA@ 2002b16c LIBCMTD:getqloc.obj + 0002:00001178 ??_C@_07CCAK@holland?$AA@ 2002b178 LIBCMTD:getqloc.obj + 0002:00001180 ??_C@_03EFD@hkg?$AA@ 2002b180 LIBCMTD:getqloc.obj + 0002:00001184 ??_C@_06FLIB@greece?$AA@ 2002b184 LIBCMTD:getqloc.obj + 0002:0000118c ??_C@_0O@MEPL@great?5britain?$AA@ 2002b18c LIBCMTD:getqloc.obj + 0002:0000119c ??_C@_03EJIM@grc?$AA@ 2002b19c LIBCMTD:getqloc.obj + 0002:000011a0 ??_C@_07CPP@germany?$AA@ 2002b1a0 LIBCMTD:getqloc.obj + 0002:000011a8 ??_C@_03CAMC@gbr?$AA@ 2002b1a8 LIBCMTD:getqloc.obj + 0002:000011ac ??_C@_06DNOH@france?$AA@ 2002b1ac LIBCMTD:getqloc.obj + 0002:000011b4 ??_C@_07IMFA@finland?$AA@ 2002b1b4 LIBCMTD:getqloc.obj + 0002:000011bc ??_C@_07LGIB@england?$AA@ 2002b1bc LIBCMTD:getqloc.obj + 0002:000011c4 ??_C@_03GOFI@dnk?$AA@ 2002b1c4 LIBCMTD:getqloc.obj + 0002:000011c8 ??_C@_07ILKC@denmark?$AA@ 2002b1c8 LIBCMTD:getqloc.obj + 0002:000011d0 ??_C@_03ELPA@cze?$AA@ 2002b1d0 LIBCMTD:getqloc.obj + 0002:000011d4 ??_C@_03KHAN@chn?$AA@ 2002b1d4 LIBCMTD:getqloc.obj + 0002:000011d8 ??_C@_05NMPB@china?$AA@ 2002b1d8 LIBCMTD:getqloc.obj + 0002:000011e0 ??_C@_03MAM@che?$AA@ 2002b1e0 LIBCMTD:getqloc.obj + 0002:000011e4 ??_C@_06CJAO@canada?$AA@ 2002b1e4 LIBCMTD:getqloc.obj + 0002:000011ec ??_C@_03EPD@can?$AA@ 2002b1ec LIBCMTD:getqloc.obj + 0002:000011f0 ??_C@_07GN@britain?$AA@ 2002b1f0 LIBCMTD:getqloc.obj + 0002:000011f8 ??_C@_06GEHJ@brazil?$AA@ 2002b1f8 LIBCMTD:getqloc.obj + 0002:00001200 ??_C@_03GOO@bra?$AA@ 2002b200 LIBCMTD:getqloc.obj + 0002:00001204 ??_C@_07ECDD@belgium?$AA@ 2002b204 LIBCMTD:getqloc.obj + 0002:0000120c ??_C@_03FJGB@bel?$AA@ 2002b20c LIBCMTD:getqloc.obj + 0002:00001210 ??_C@_03DIDL@aut?$AA@ 2002b210 LIBCMTD:getqloc.obj + 0002:00001214 ??_C@_07OIK@austria?$AA@ 2002b214 LIBCMTD:getqloc.obj + 0002:0000121c ??_C@_09MKKB@australia?$AA@ 2002b21c LIBCMTD:getqloc.obj + 0002:00001228 ??_C@_03GNNO@aus?$AA@ 2002b228 LIBCMTD:getqloc.obj + 0002:0000122c ??_C@_07DLAK@america?$AA@ 2002b22c LIBCMTD:getqloc.obj + 0002:00001234 ??_C@_03IPEP@usa?$AA@ 2002b234 LIBCMTD:getqloc.obj + 0002:00001238 ??_C@_02PILH@us?$AA@ 2002b238 LIBCMTD:getqloc.obj + 0002:0000123c ??_C@_02FHP@uk?$AA@ 2002b23c LIBCMTD:getqloc.obj + 0002:00001240 ??_C@_07BNFK@turkish?$AA@ 2002b240 LIBCMTD:getqloc.obj + 0002:00001248 ??_C@_03MKGF@trk?$AA@ 2002b248 LIBCMTD:getqloc.obj + 0002:0000124c ??_C@_05DEAI@swiss?$AA@ 2002b24c LIBCMTD:getqloc.obj + 0002:00001254 ??_C@_07ENHD@swedish?$AA@ 2002b254 LIBCMTD:getqloc.obj + 0002:0000125c ??_C@_03IFGE@sve?$AA@ 2002b25c LIBCMTD:getqloc.obj + 0002:00001260 ??_C@_0P@NJBN@spanish?9modern?$AA@ 2002b260 LIBCMTD:getqloc.obj + 0002:00001270 ??_C@_0BA@NHDN@spanish?9mexican?$AA@ 2002b270 LIBCMTD:getqloc.obj + 0002:00001280 ??_C@_07EFLC@spanish?$AA@ 2002b280 LIBCMTD:getqloc.obj + 0002:00001288 ??_C@_06KFFJ@slovak?$AA@ 2002b288 LIBCMTD:getqloc.obj + 0002:00001290 ??_C@_03EBAN@sky?$AA@ 2002b290 LIBCMTD:getqloc.obj + 0002:00001294 ??_C@_07JNDN@russian?$AA@ 2002b294 LIBCMTD:getqloc.obj + 0002:0000129c ??_C@_03LKIP@rus?$AA@ 2002b29c LIBCMTD:getqloc.obj + 0002:000012a0 ??_C@_03LCE@ptg?$AA@ 2002b2a0 LIBCMTD:getqloc.obj + 0002:000012a4 ??_C@_03LOP@ptb?$AA@ 2002b2a4 LIBCMTD:getqloc.obj + 0002:000012a8 ??_C@_0BF@KMMM@portuguese?9brazilian?$AA@ 2002b2a8 LIBCMTD:getqloc.obj + 0002:000012c0 ??_C@_0L@HNPF@portuguese?$AA@ 2002b2c0 LIBCMTD:getqloc.obj + 0002:000012cc ??_C@_06CDNL@polish?$AA@ 2002b2cc LIBCMTD:getqloc.obj + 0002:000012d4 ??_C@_03CKDN@plk?$AA@ 2002b2d4 LIBCMTD:getqloc.obj + 0002:000012d8 ??_C@_0BC@BAAE@norwegian?9nynorsk?$AA@ 2002b2d8 LIBCMTD:getqloc.obj + 0002:000012ec ??_C@_0BB@PBHK@norwegian?9bokmal?$AA@ 2002b2ec LIBCMTD:getqloc.obj + 0002:00001300 ??_C@_09EHKL@norwegian?$AA@ 2002b300 LIBCMTD:getqloc.obj + 0002:0000130c ??_C@_03BLDF@nor?$AA@ 2002b30c LIBCMTD:getqloc.obj + 0002:00001310 ??_C@_03EMKB@non?$AA@ 2002b310 LIBCMTD:getqloc.obj + 0002:00001314 ??_C@_03HGMI@nld?$AA@ 2002b314 LIBCMTD:getqloc.obj + 0002:00001318 ??_C@_03IJLK@nlb?$AA@ 2002b318 LIBCMTD:getqloc.obj + 0002:0000131c ??_C@_06KKAE@korean?$AA@ 2002b31c LIBCMTD:getqloc.obj + 0002:00001324 ??_C@_03BHJ@kor?$AA@ 2002b324 LIBCMTD:getqloc.obj + 0002:00001328 ??_C@_03LKFD@jpn?$AA@ 2002b328 LIBCMTD:getqloc.obj + 0002:0000132c ??_C@_08KCAB@japanese?$AA@ 2002b32c LIBCMTD:getqloc.obj + 0002:00001338 ??_C@_03OLMB@its?$AA@ 2002b338 LIBCMTD:getqloc.obj + 0002:0000133c ??_C@_0O@BEAN@italian?9swiss?$AA@ 2002b33c LIBCMTD:getqloc.obj + 0002:0000134c ??_C@_07CBME@italian?$AA@ 2002b34c LIBCMTD:getqloc.obj + 0002:00001354 ??_C@_03BHJP@ita?$AA@ 2002b354 LIBCMTD:getqloc.obj + 0002:00001358 ??_C@_03CCLJ@isl?$AA@ 2002b358 LIBCMTD:getqloc.obj + 0002:0000135c ??_C@_0O@OIFK@irish?9english?$AA@ 2002b35c LIBCMTD:getqloc.obj + 0002:0000136c ??_C@_09OEEF@icelandic?$AA@ 2002b36c LIBCMTD:getqloc.obj + 0002:00001378 ??_C@_09IBNG@hungarian?$AA@ 2002b378 LIBCMTD:getqloc.obj + 0002:00001384 ??_C@_03FCHO@hun?$AA@ 2002b384 LIBCMTD:getqloc.obj + 0002:00001388 ??_C@_05DOKD@greek?$AA@ 2002b388 LIBCMTD:getqloc.obj + 0002:00001390 ??_C@_0N@NBPL@german?9swiss?$AA@ 2002b390 LIBCMTD:getqloc.obj + 0002:000013a0 ??_C@_0BA@MKDC@german?9austrian?$AA@ 2002b3a0 LIBCMTD:getqloc.obj + 0002:000013b0 ??_C@_06IAFA@german?$AA@ 2002b3b0 LIBCMTD:getqloc.obj + 0002:000013b8 ??_C@_03LCOK@frs?$AA@ 2002b3b8 LIBCMTD:getqloc.obj + 0002:000013bc ??_C@_0N@ODNB@french?9swiss?$AA@ 2002b3bc LIBCMTD:getqloc.obj + 0002:000013cc ??_C@_0BA@NABK@french?9canadian?$AA@ 2002b3cc LIBCMTD:getqloc.obj + 0002:000013dc ??_C@_0P@CJNO@french?9belgian?$AA@ 2002b3dc LIBCMTD:getqloc.obj + 0002:000013ec ??_C@_06PMNM@french?$AA@ 2002b3ec LIBCMTD:getqloc.obj + 0002:000013f4 ??_C@_03BLJK@frc?$AA@ 2002b3f4 LIBCMTD:getqloc.obj + 0002:000013f8 ??_C@_03LBAN@frb?$AA@ 2002b3f8 LIBCMTD:getqloc.obj + 0002:000013fc ??_C@_03EOLE@fra?$AA@ 2002b3fc LIBCMTD:getqloc.obj + 0002:00001400 ??_C@_07DLFI@finnish?$AA@ 2002b400 LIBCMTD:getqloc.obj + 0002:00001408 ??_C@_03KLOL@fin?$AA@ 2002b408 LIBCMTD:getqloc.obj + 0002:0000140c ??_C@_03KNMC@esp?$AA@ 2002b40c LIBCMTD:getqloc.obj + 0002:00001410 ??_C@_03KPHI@esn?$AA@ 2002b410 LIBCMTD:getqloc.obj + 0002:00001414 ??_C@_03FAMB@esm?$AA@ 2002b414 LIBCMTD:getqloc.obj + 0002:00001418 ??_C@_03DPKJ@enz?$AA@ 2002b418 LIBCMTD:getqloc.obj + 0002:0000141c ??_C@_03DOPE@enu?$AA@ 2002b41c LIBCMTD:getqloc.obj + 0002:00001420 ??_C@_03GJGA@eni?$AA@ 2002b420 LIBCMTD:getqloc.obj + 0002:00001424 ??_C@_0M@LJOL@english?9usa?$AA@ 2002b424 LIBCMTD:getqloc.obj + 0002:00001430 ??_C@_0L@FMNC@english?9us?$AA@ 2002b430 LIBCMTD:getqloc.obj + 0002:0000143c ??_C@_0L@KBBK@english?9uk?$AA@ 2002b43c LIBCMTD:getqloc.obj + 0002:00001448 ??_C@_0L@EGPP@english?9nz?$AA@ 2002b448 LIBCMTD:getqloc.obj + 0002:00001454 ??_C@_0M@PMJI@english?9ire?$AA@ 2002b454 LIBCMTD:getqloc.obj + 0002:00001460 ??_C@_0M@DCFH@english?9can?$AA@ 2002b460 LIBCMTD:getqloc.obj + 0002:0000146c ??_C@_0M@FLHK@english?9aus?$AA@ 2002b46c LIBCMTD:getqloc.obj + 0002:00001478 ??_C@_0BB@HNCK@english?9american?$AA@ 2002b478 LIBCMTD:getqloc.obj + 0002:0000148c ??_C@_07ELCN@english?$AA@ 2002b48c LIBCMTD:getqloc.obj + 0002:00001494 ??_C@_03MCKK@eng?$AA@ 2002b494 LIBCMTD:getqloc.obj + 0002:00001498 ??_C@_03GIPG@enc?$AA@ 2002b498 LIBCMTD:getqloc.obj + 0002:0000149c ??_C@_03DNNI@ena?$AA@ 2002b49c LIBCMTD:getqloc.obj + 0002:000014a0 ??_C@_03EEPO@ell?$AA@ 2002b4a0 LIBCMTD:getqloc.obj + 0002:000014a4 ??_C@_0O@PAMI@dutch?9belgian?$AA@ 2002b4a4 LIBCMTD:getqloc.obj + 0002:000014b4 ??_C@_05NPEI@dutch?$AA@ 2002b4b4 LIBCMTD:getqloc.obj + 0002:000014bc ??_C@_03OCEJ@deu?$AA@ 2002b4bc LIBCMTD:getqloc.obj + 0002:000014c0 ??_C@_03BNDL@des?$AA@ 2002b4c0 LIBCMTD:getqloc.obj + 0002:000014c4 ??_C@_03OBGF@dea?$AA@ 2002b4c4 LIBCMTD:getqloc.obj + 0002:000014c8 ??_C@_06KEAI@danish?$AA@ 2002b4c8 LIBCMTD:getqloc.obj + 0002:000014d0 ??_C@_03LKJC@dan?$AA@ 2002b4d0 LIBCMTD:getqloc.obj + 0002:000014d4 ??_C@_05BMOA@czech?$AA@ 2002b4d4 LIBCMTD:getqloc.obj + 0002:000014dc ??_C@_03LPJK@csy?$AA@ 2002b4dc LIBCMTD:getqloc.obj + 0002:000014e0 ??_C@_03POL@cht?$AA@ 2002b4e0 LIBCMTD:getqloc.obj + 0002:000014e4 ??_C@_03FKAO@chs?$AA@ 2002b4e4 LIBCMTD:getqloc.obj + 0002:000014e8 ??_C@_0BE@FPEJ@chinese?9traditional?$AA@ 2002b4e8 LIBCMTD:getqloc.obj + 0002:000014fc ??_C@_0BC@CHFL@chinese?9singapore?$AA@ 2002b4fc LIBCMTD:getqloc.obj + 0002:00001510 ??_C@_0BD@DCMH@chinese?9simplified?$AA@ 2002b510 LIBCMTD:getqloc.obj + 0002:00001524 ??_C@_0BB@JMOE@chinese?9hongkong?$AA@ 2002b524 LIBCMTD:getqloc.obj + 0002:00001538 ??_C@_07NGFN@chinese?$AA@ 2002b538 LIBCMTD:getqloc.obj + 0002:00001540 ??_C@_03PCOI@chi?$AA@ 2002b540 LIBCMTD:getqloc.obj + 0002:00001544 ??_C@_03FIHP@chh?$AA@ 2002b544 LIBCMTD:getqloc.obj + 0002:00001548 ??_C@_08HFLO@canadian?$AA@ 2002b548 LIBCMTD:getqloc.obj + 0002:00001554 ??_C@_07INIJ@belgian?$AA@ 2002b554 LIBCMTD:getqloc.obj + 0002:0000155c ??_C@_0L@LCCA@australian?$AA@ 2002b55c LIBCMTD:getqloc.obj + 0002:00001568 ??_C@_0BB@BJIO@american?9english?$AA@ 2002b568 LIBCMTD:getqloc.obj + 0002:0000157c ??_C@_0BB@DAGO@american?5english?$AA@ 2002b57c LIBCMTD:getqloc.obj + 0002:00001590 ??_C@_08HENB@american?$AA@ 2002b590 LIBCMTD:getqloc.obj + 0002:0000159c ??_C@_03DGJE@OCP?$AA@ 2002b59c LIBCMTD:getqloc.obj + 0002:000015a0 ??_C@_03EKFG@ACP?$AA@ 2002b5a0 LIBCMTD:getqloc.obj + 0002:000015a4 ??_C@_09LNLM@osfinfo?4c?$AA@ 2002b5a4 LIBCMTD:osfinfo.obj + 0002:000015b0 ??_C@_0L@EJNO@wtombenv?4c?$AA@ 2002b5b0 LIBCMTD:wtombenv.obj + 0002:000015bc ??_C@_07CJME@H?3mm?3ss?$AA@ 2002b5bc LIBCMTD:strftime.obj + 0002:000015c4 ??_C@_0BE@MHI@dddd?0?5MMMM?5dd?0?5yyyy?$AA@ 2002b5c4 LIBCMTD:strftime.obj + 0002:000015d8 ??_C@_06HCAD@M?1d?1yy?$AA@ 2002b5d8 LIBCMTD:strftime.obj + 0002:000015e0 ??_C@_02DBLP@PM?$AA@ 2002b5e0 LIBCMTD:strftime.obj + 0002:000015e4 ??_C@_02ENLM@AM?$AA@ 2002b5e4 LIBCMTD:strftime.obj + 0002:000015e8 ??_C@_08LIDF@December?$AA@ 2002b5e8 LIBCMTD:strftime.obj + 0002:000015f4 ??_C@_08NJLI@November?$AA@ 2002b5f4 LIBCMTD:strftime.obj + 0002:00001600 ??_C@_07IAMM@October?$AA@ 2002b600 LIBCMTD:strftime.obj + 0002:00001608 ??_C@_09MKGD@September?$AA@ 2002b608 LIBCMTD:strftime.obj + 0002:00001614 ??_C@_06PADP@August?$AA@ 2002b614 LIBCMTD:strftime.obj + 0002:0000161c ??_C@_04PIJO@July?$AA@ 2002b61c LIBCMTD:strftime.obj + 0002:00001624 ??_C@_04ICFP@June?$AA@ 2002b624 LIBCMTD:strftime.obj + 0002:0000162c ??_C@_05JFGC@April?$AA@ 2002b62c LIBCMTD:strftime.obj + 0002:00001634 ??_C@_05FGPD@March?$AA@ 2002b634 LIBCMTD:strftime.obj + 0002:0000163c ??_C@_08PGBA@February?$AA@ 2002b63c LIBCMTD:strftime.obj + 0002:00001648 ??_C@_07BPKJ@January?$AA@ 2002b648 LIBCMTD:strftime.obj + 0002:00001650 ??_C@_03PGJO@Dec?$AA@ 2002b650 LIBCMTD:strftime.obj + 0002:00001654 ??_C@_03PDLM@Nov?$AA@ 2002b654 LIBCMTD:strftime.obj + 0002:00001658 ??_C@_03BLHK@Oct?$AA@ 2002b658 LIBCMTD:strftime.obj + 0002:0000165c ??_C@_03DPFM@Sep?$AA@ 2002b65c LIBCMTD:strftime.obj + 0002:00001660 ??_C@_03CMCH@Aug?$AA@ 2002b660 LIBCMTD:strftime.obj + 0002:00001664 ??_C@_03OBKI@Jul?$AA@ 2002b664 LIBCMTD:strftime.obj + 0002:00001668 ??_C@_03LEIG@Jun?$AA@ 2002b668 LIBCMTD:strftime.obj + 0002:0000166c ??_C@_03MGHB@May?$AA@ 2002b66c LIBCMTD:strftime.obj + 0002:00001670 ??_C@_03MJJM@Apr?$AA@ 2002b670 LIBCMTD:strftime.obj + 0002:00001674 ??_C@_03GNHA@Mar?$AA@ 2002b674 LIBCMTD:strftime.obj + 0002:00001678 ??_C@_03PICE@Feb?$AA@ 2002b678 LIBCMTD:strftime.obj + 0002:0000167c ??_C@_03IEIF@Jan?$AA@ 2002b67c LIBCMTD:strftime.obj + 0002:00001680 ??_C@_08FAKH@Saturday?$AA@ 2002b680 LIBCMTD:strftime.obj + 0002:0000168c ??_C@_06ONCK@Friday?$AA@ 2002b68c LIBCMTD:strftime.obj + 0002:00001694 ??_C@_08CCFO@Thursday?$AA@ 2002b694 LIBCMTD:strftime.obj + 0002:000016a0 ??_C@_09PBIN@Wednesday?$AA@ 2002b6a0 LIBCMTD:strftime.obj + 0002:000016ac ??_C@_07BMBC@Tuesday?$AA@ 2002b6ac LIBCMTD:strftime.obj + 0002:000016b4 ??_C@_06CHLK@Monday?$AA@ 2002b6b4 LIBCMTD:strftime.obj + 0002:000016bc ??_C@_06OOEM@Sunday?$AA@ 2002b6bc LIBCMTD:strftime.obj + 0002:000016c4 ??_C@_03MPKK@Sat?$AA@ 2002b6c4 LIBCMTD:strftime.obj + 0002:000016c8 ??_C@_03FINJ@Fri?$AA@ 2002b6c8 LIBCMTD:strftime.obj + 0002:000016cc ??_C@_03HIKC@Thu?$AA@ 2002b6cc LIBCMTD:strftime.obj + 0002:000016d0 ??_C@_03HECK@Wed?$AA@ 2002b6d0 LIBCMTD:strftime.obj + 0002:000016d4 ??_C@_03ECCP@Tue?$AA@ 2002b6d4 LIBCMTD:strftime.obj + 0002:000016d8 ??_C@_03PIEP@Mon?$AA@ 2002b6d8 LIBCMTD:strftime.obj + 0002:000016dc ??_C@_03FHEP@Sun?$AA@ 2002b6dc LIBCMTD:strftime.obj + 0002:000016e0 ??_C@_03MKGK@a?1p?$AA@ 2002b6e0 LIBCMTD:strftime.obj + 0002:000016e4 ??_C@_05BDJK@am?1pm?$AA@ 2002b6e4 LIBCMTD:strftime.obj + 0002:000016ec ??_C@_0L@HKCB@inithelp?4c?$AA@ 2002b6ec LIBCMTD:inithelp.obj + 0002:000016f8 ??_C@_08OKNB@aw_loc?4c?$AA@ 2002b6f8 LIBCMTD:aw_loc.obj + 0002:00001704 ??_C@_08PHBD@fclose?4c?$AA@ 2002b704 LIBCMTD:fclose.obj + 0002:00001710 ??_C@_08BGPE@aw_cmp?4c?$AA@ 2002b710 LIBCMTD:aw_cmp.obj + 0002:0000171c ??_C@_0DN@PPKB@cchCount1?$DN?$DN0?5?$CG?$CG?5cchCount2?$DN?$DN1?5?$HM?$HM?5@ 2002b71c LIBCMTD:aw_cmp.obj + 0002:0000175c ??_C@_08FEIK@setenv?4c?$AA@ 2002b75c LIBCMTD:setenv.obj + 0002:00001768 ??_C@_0L@JIE@_freebuf?4c?$AA@ 2002b768 LIBCMTD:_freebuf.obj + 0003:00000000 ___xc_a 2002c000 LIBCMTD:crt0init.obj + 0003:00000004 ___xc_z 2002c004 LIBCMTD:crt0init.obj + 0003:00000008 ___xi_a 2002c008 LIBCMTD:crt0init.obj + 0003:00000010 ___xi_z 2002c010 LIBCMTD:crt0init.obj + 0003:00000014 ___xp_a 2002c014 LIBCMTD:crt0init.obj + 0003:0000001c ___xp_z 2002c01c LIBCMTD:crt0init.obj + 0003:00000020 ___xt_a 2002c020 LIBCMTD:crt0init.obj + 0003:00000024 ___xt_z 2002c024 LIBCMTD:crt0init.obj + 0003:00000198 ?sgSysColorTbl@@3PAU_SNET_DATA_SYSCOLORTABLE@@A 2002c198 connect.obj + 0003:00001bb0 __aexit_rtn 2002dbb0 LIBCMTD:dllcrt0.obj + 0003:00001bb4 ___nullstring 2002dbb4 LIBCMTD:output.obj + 0003:00001bb8 ___wnullstring 2002dbb8 LIBCMTD:output.obj + 0003:00001bc0 __crtAssertBusy 2002dbc0 LIBCMTD:dbgrpt.obj + 0003:00001bc8 __CrtDbgMode 2002dbc8 LIBCMTD:dbgrpt.obj + 0003:00001bd8 __CrtDbgFile 2002dbd8 LIBCMTD:dbgrpt.obj + 0003:00001bf8 __pctype 2002dbf8 LIBCMTD:ctype.obj + 0003:00001bfc __pwctype 2002dbfc LIBCMTD:ctype.obj + 0003:00001c00 __ctype 2002dc00 LIBCMTD:ctype.obj + 0003:00001e04 ___mb_cur_max 2002de04 LIBCMTD:nlsdata1.obj + 0003:00001e08 ___decimal_point 2002de08 LIBCMTD:nlsdata1.obj + 0003:00001e0c ___decimal_point_length 2002de0c LIBCMTD:nlsdata1.obj + 0003:00001e10 __timezone 2002de10 LIBCMTD:timeset.obj + 0003:00001e14 __daylight 2002de14 LIBCMTD:timeset.obj + 0003:00001e18 __dstbias 2002de18 LIBCMTD:timeset.obj + 0003:00001ea0 __tzname 2002dea0 LIBCMTD:timeset.obj + 0003:00002038 __crtDbgFlag 2002e038 LIBCMTD:dbgheap.obj + 0003:00002040 __crtBreakAlloc 2002e040 LIBCMTD:dbgheap.obj + 0003:00002064 ___tlsindex 2002e064 LIBCMTD:tidtable.obj + 0003:00002068 __XcptActTab 2002e068 LIBCMTD:winxfltr.obj + 0003:000020e0 __First_FPE_Indx 2002e0e0 LIBCMTD:winxfltr.obj + 0003:000020e4 __Num_FPE 2002e0e4 LIBCMTD:winxfltr.obj + 0003:000020e8 __XcptActTabSize 2002e0e8 LIBCMTD:winxfltr.obj + 0003:000020ec __XcptActTabCount 2002e0ec LIBCMTD:winxfltr.obj + 0003:000020f0 __NLG_Destination 2002e0f0 LIBCMTD:exsup.obj + 0003:00002100 __locktable 2002e100 LIBCMTD:mlock.obj + 0003:00002320 ___badioinfo 2002e320 LIBCMTD:ioinit.obj + 0003:00002440 __amblksiz 2002e440 LIBCMTD:heapinit.obj + 0003:000024d8 __iob 2002e4d8 LIBCMTD:_file.obj + 0003:00002758 __cfltcvt_tab 2002e758 LIBCMTD:cmiscdat.obj + 0003:00002770 __lpdays 2002e770 LIBCMTD:days.obj + 0003:000027a8 __days 2002e7a8 LIBCMTD:days.obj + 0003:000027e0 __pfnAllocHook 2002e7e0 LIBCMTD:dbghook.obj + 0003:000027e8 ___small_block_heap 2002e7e8 LIBCMTD:sbheap.obj + 0003:0000480c ___sbh_threshold 2003080c LIBCMTD:sbheap.obj + 0003:00004810 ___rg_lang_rec 20030810 LIBCMTD:getqloc.obj + 0003:00004b28 ___rg_ctry_rec 20030b28 LIBCMTD:getqloc.obj + 0003:00004de0 ___rgrgwlang 20030de0 LIBCMTD:getqloc.obj + 0003:00005010 ___lc_time_c 20031010 LIBCMTD:strftime.obj + 0003:000050bc ___lc_time_curr 200310bc LIBCMTD:strftime.obj + 0003:000050c0 ___lconv_static_decimal 200310c0 LIBCMTD:lconv.obj + 0003:000050c8 ___lconv_c 200310c8 LIBCMTD:lconv.obj + 0003:000050f8 ___lconv 200310f8 LIBCMTD:lconv.obj + 0003:00007ad4 ?global_hinstance@@3PAUHINSTANCE__@@A 20033ad4 Diabloui.obj + 0003:00007ad8 ?ui_background@@3PAEA 20033ad8 Diabloui.obj + 0003:00007ae0 ?ui_backgroundsize@@3UtagSIZE@@A 20033ae0 Diabloui.obj + 0003:00008994 __aenvptr 20034994 LIBCMTD:dllcrt0.obj + 0003:00008998 __wenvptr 20034998 LIBCMTD:dllcrt0.obj + 0003:0000899c ___error_mode 2003499c LIBCMTD:dllcrt0.obj + 0003:000089a0 ___app_type 200349a0 LIBCMTD:dllcrt0.obj + 0003:00008aa0 __umaskval 20034aa0 LIBCMTD:crt0dat.obj + 0003:00008aa4 __osver 20034aa4 LIBCMTD:crt0dat.obj + 0003:00008aa8 __winver 20034aa8 LIBCMTD:crt0dat.obj + 0003:00008aac __winmajor 20034aac LIBCMTD:crt0dat.obj + 0003:00008ab0 __winminor 20034ab0 LIBCMTD:crt0dat.obj + 0003:00008ab4 ___argc 20034ab4 LIBCMTD:crt0dat.obj + 0003:00008ab8 ___argv 20034ab8 LIBCMTD:crt0dat.obj + 0003:00008abc ___wargv 20034abc LIBCMTD:crt0dat.obj + 0003:00008ac0 __environ 20034ac0 LIBCMTD:crt0dat.obj + 0003:00008ac4 ___initenv 20034ac4 LIBCMTD:crt0dat.obj + 0003:00008ac8 __wenviron 20034ac8 LIBCMTD:crt0dat.obj + 0003:00008acc ___winitenv 20034acc LIBCMTD:crt0dat.obj + 0003:00008ad0 __pgmptr 20034ad0 LIBCMTD:crt0dat.obj + 0003:00008ad4 __wpgmptr 20034ad4 LIBCMTD:crt0dat.obj + 0003:00008ad8 __exitflag 20034ad8 LIBCMTD:crt0dat.obj + 0003:00008adc __C_Termination_Done 20034adc LIBCMTD:crt0dat.obj + 0003:00008ae0 __C_Exit_Done 20034ae0 LIBCMTD:crt0dat.obj + 0003:00008b60 ___lc_handle 20034b60 LIBCMTD:nlsdata2.obj + 0003:00008b78 ___lc_codepage 20034b78 LIBCMTD:nlsdata2.obj + 0003:00008c88 __mbctype 20034c88 LIBCMTD:mbctype.obj + 0003:00008d8c ___mbcodepage 20034d8c LIBCMTD:mbctype.obj + 0003:00008d90 ___mblcid 20034d90 LIBCMTD:mbctype.obj + 0003:00008d98 ___mbulinfo 20034d98 LIBCMTD:mbctype.obj + 0003:00008db0 __adbgmsg 20034db0 LIBCMTD:crt0msg.obj + 0003:00008db4 __cflush 20034db4 LIBCMTD:_file.obj + 0003:00008de0 __newmode 20034de0 LIBCMTD:_newmode.obj + 0003:00008de4 ?_pnhHeap@@3P6AHI@ZA 20034de4 LIBCMTD:handler.obj + 0003:00008dec ___lc_time_intl 20034dec LIBCMTD:inittime.obj + 0003:00008e08 ___lc_id 20034e08 LIBCMTD:nlsdata3.obj + 0003:00008e2c __alternate_form 20034e2c LIBCMTD:strftime.obj + 0003:00008e30 __no_lead_zeros 20034e30 LIBCMTD:strftime.obj + 0003:00008e40 ___lconv_static_null 20034e40 LIBCMTD:lconv.obj + 0003:00008e54 ___piob 20034e54 + 0003:00008e60 __bufin 20034e60 + 0003:00009e60 __nstream 20035e60 + 0003:00009e64 __crtheap 20035e64 + 0003:00009e80 ___pioinfo 20035e80 + 0003:00009f80 __nhandle 20035f80 + 0003:00009f84 ___setlc_active 20035f84 + 0003:00009f88 ___unguarded_readlc_active 20035f88 + 0003:00009f8c ___onexitend 20035f8c + 0003:00009f90 ___onexitbegin 20035f90 + 0003:00009f94 __FPinit 20035f94 + 0003:00009f98 __pfnDumpClient 20035f98 + 0003:00009f9c __pfnReportHook 20035f9c + 0003:00009fa0 __acmdln 20035fa0 + 0003:00009fa4 __pRawDllMain 20035fa4 + 0003:00009fa8 __FPmtinit 20035fa8 + 0003:00009fac __FPmtterm 20035fac + 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 20036000 kernel32:KERNEL32.dll + 0004:00000014 __IMPORT_DESCRIPTOR_USER32 20036014 user32:USER32.dll + 0004:00000028 __IMPORT_DESCRIPTOR_GDI32 20036028 gdi32:GDI32.dll + 0004:0000003c __IMPORT_DESCRIPTOR_storm 2003603c storm:storm.dll + 0004:00000050 __NULL_IMPORT_DESCRIPTOR 20036050 kernel32:KERNEL32.dll + 0004:0000036c __imp__CreatePalette@4 2003636c gdi32:GDI32.dll + 0004:00000370 __imp__GetPaletteEntries@16 20036370 gdi32:GDI32.dll + 0004:00000374 __imp__GetCurrentPositionEx@8 20036374 gdi32:GDI32.dll + 0004:00000378 __imp__TextOutA@20 20036378 gdi32:GDI32.dll + 0004:0000037c __imp__SetTextAlign@8 2003637c gdi32:GDI32.dll + 0004:00000380 __imp__MoveToEx@16 20036380 gdi32:GDI32.dll + 0004:00000384 __imp__GetTextMetricsA@8 20036384 gdi32:GDI32.dll + 0004:00000388 __imp__ExtTextOutA@32 20036388 gdi32:GDI32.dll + 0004:0000038c __imp__SetBkColor@8 2003638c gdi32:GDI32.dll + 0004:00000390 __imp__SetTextColor@8 20036390 gdi32:GDI32.dll + 0004:00000394 __imp__SelectObject@8 20036394 gdi32:GDI32.dll + 0004:00000398 __imp__DeleteObject@4 20036398 gdi32:GDI32.dll + 0004:0000039c __imp__CreateFontIndirectA@4 2003639c gdi32:GDI32.dll + 0004:000003a0 __imp__CreateFontA@56 200363a0 gdi32:GDI32.dll + 0004:000003a4 __imp__GetObjectA@12 200363a4 gdi32:GDI32.dll + 0004:000003a8 __imp__GetStockObject@4 200363a8 gdi32:GDI32.dll + 0004:000003ac \177GDI32_NULL_THUNK_DATA 200363ac gdi32:GDI32.dll + 0004:000003b0 __imp__GlobalMemoryStatus@4 200363b0 kernel32:KERNEL32.dll + 0004:000003b4 __imp__GetModuleHandleA@4 200363b4 kernel32:KERNEL32.dll + 0004:000003b8 __imp__SizeofResource@8 200363b8 kernel32:KERNEL32.dll + 0004:000003bc __imp__SetLastError@4 200363bc kernel32:KERNEL32.dll + 0004:000003c0 __imp__MulDiv@12 200363c0 kernel32:KERNEL32.dll + 0004:000003c4 __imp__GetLastError@0 200363c4 kernel32:KERNEL32.dll + 0004:000003c8 __imp__FindResourceA@12 200363c8 kernel32:KERNEL32.dll + 0004:000003cc __imp__LoadResource@8 200363cc kernel32:KERNEL32.dll + 0004:000003d0 __imp__LockResource@4 200363d0 kernel32:KERNEL32.dll + 0004:000003d4 __imp__SetEnvironmentVariableA@8 200363d4 kernel32:KERNEL32.dll + 0004:000003d8 __imp__CompareStringA@24 200363d8 kernel32:KERNEL32.dll + 0004:000003dc __imp__FlushFileBuffers@4 200363dc kernel32:KERNEL32.dll + 0004:000003e0 __imp__SetConsoleCtrlHandler@8 200363e0 kernel32:KERNEL32.dll + 0004:000003e4 __imp__GetCurrentThread@0 200363e4 kernel32:KERNEL32.dll + 0004:000003e8 __imp__SetFilePointer@16 200363e8 kernel32:KERNEL32.dll + 0004:000003ec __imp__TlsFree@4 200363ec kernel32:KERNEL32.dll + 0004:000003f0 __imp__TlsAlloc@0 200363f0 kernel32:KERNEL32.dll + 0004:000003f4 __imp__TlsGetValue@4 200363f4 kernel32:KERNEL32.dll + 0004:000003f8 __imp__HeapValidate@12 200363f8 kernel32:KERNEL32.dll + 0004:000003fc __imp__IsBadReadPtr@8 200363fc kernel32:KERNEL32.dll + 0004:00000400 __imp__GetCurrentThreadId@0 20036400 kernel32:KERNEL32.dll + 0004:00000404 __imp__GetTimeZoneInformation@4 20036404 kernel32:KERNEL32.dll + 0004:00000408 __imp__GetModuleFileNameA@12 20036408 kernel32:KERNEL32.dll + 0004:0000040c __imp__IsBadWritePtr@8 2003640c kernel32:KERNEL32.dll + 0004:00000410 __imp__OutputDebugStringA@4 20036410 kernel32:KERNEL32.dll + 0004:00000414 __imp__WriteFile@20 20036414 kernel32:KERNEL32.dll + 0004:00000418 __imp__LoadLibraryA@4 20036418 kernel32:KERNEL32.dll + 0004:0000041c __imp__DebugBreak@0 2003641c kernel32:KERNEL32.dll + 0004:00000420 __imp__GetVersion@0 20036420 kernel32:KERNEL32.dll + 0004:00000424 __imp__GetStdHandle@4 20036424 kernel32:KERNEL32.dll + 0004:00000428 __imp__GetCommandLineA@0 20036428 kernel32:KERNEL32.dll + 0004:0000042c __imp__InterlockedIncrement@4 2003642c kernel32:KERNEL32.dll + 0004:00000430 __imp__GetProcAddress@8 20036430 kernel32:KERNEL32.dll + 0004:00000434 __imp__CloseHandle@4 20036434 kernel32:KERNEL32.dll + 0004:00000438 __imp__ExitThread@4 20036438 kernel32:KERNEL32.dll + 0004:0000043c __imp__InterlockedDecrement@4 2003643c kernel32:KERNEL32.dll + 0004:00000440 __imp__CreateThread@24 20036440 kernel32:KERNEL32.dll + 0004:00000444 __imp__ResumeThread@4 20036444 kernel32:KERNEL32.dll + 0004:00000448 __imp__TlsSetValue@8 20036448 kernel32:KERNEL32.dll + 0004:0000044c __imp__TerminateProcess@8 2003644c kernel32:KERNEL32.dll + 0004:00000450 __imp__GetCurrentProcess@0 20036450 kernel32:KERNEL32.dll + 0004:00000454 __imp__ExitProcess@4 20036454 kernel32:KERNEL32.dll + 0004:00000458 __imp__RtlUnwind@16 20036458 kernel32:KERNEL32.dll + 0004:0000045c __imp__MultiByteToWideChar@24 2003645c kernel32:KERNEL32.dll + 0004:00000460 __imp__UnhandledExceptionFilter@4 20036460 kernel32:KERNEL32.dll + 0004:00000464 __imp__LCMapStringA@24 20036464 kernel32:KERNEL32.dll + 0004:00000468 __imp__LCMapStringW@24 20036468 kernel32:KERNEL32.dll + 0004:0000046c __imp__WideCharToMultiByte@32 2003646c kernel32:KERNEL32.dll + 0004:00000470 __imp__GetStringTypeA@20 20036470 kernel32:KERNEL32.dll + 0004:00000474 __imp__EnterCriticalSection@4 20036474 kernel32:KERNEL32.dll + 0004:00000478 __imp__DeleteCriticalSection@4 20036478 kernel32:KERNEL32.dll + 0004:0000047c __imp__FatalAppExitA@8 2003647c kernel32:KERNEL32.dll + 0004:00000480 __imp__Sleep@4 20036480 kernel32:KERNEL32.dll + 0004:00000484 __imp__LeaveCriticalSection@4 20036484 kernel32:KERNEL32.dll + 0004:00000488 __imp__GetFileType@4 20036488 kernel32:KERNEL32.dll + 0004:0000048c __imp__GetStartupInfoA@4 2003648c kernel32:KERNEL32.dll + 0004:00000490 __imp__SetHandleCount@4 20036490 kernel32:KERNEL32.dll + 0004:00000494 __imp__GetLocaleInfoW@16 20036494 kernel32:KERNEL32.dll + 0004:00000498 __imp__GetLocaleInfoA@16 20036498 kernel32:KERNEL32.dll + 0004:0000049c __imp__ReadFile@20 2003649c kernel32:KERNEL32.dll + 0004:000004a0 __imp__SetStdHandle@8 200364a0 kernel32:KERNEL32.dll + 0004:000004a4 __imp__GetUserDefaultLCID@0 200364a4 kernel32:KERNEL32.dll + 0004:000004a8 __imp__IsValidCodePage@4 200364a8 kernel32:KERNEL32.dll + 0004:000004ac __imp__IsValidLocale@8 200364ac kernel32:KERNEL32.dll + 0004:000004b0 __imp__VirtualAlloc@16 200364b0 kernel32:KERNEL32.dll + 0004:000004b4 __imp__HeapFree@12 200364b4 kernel32:KERNEL32.dll + 0004:000004b8 __imp__HeapReAlloc@16 200364b8 kernel32:KERNEL32.dll + 0004:000004bc __imp__HeapAlloc@12 200364bc kernel32:KERNEL32.dll + 0004:000004c0 __imp__GetStringTypeW@16 200364c0 kernel32:KERNEL32.dll + 0004:000004c4 __imp__GetEnvironmentStrings@0 200364c4 kernel32:KERNEL32.dll + 0004:000004c8 __imp__FreeEnvironmentStringsW@4 200364c8 kernel32:KERNEL32.dll + 0004:000004cc __imp__InitializeCriticalSection@4 200364cc kernel32:KERNEL32.dll + 0004:000004d0 __imp__VirtualFree@12 200364d0 kernel32:KERNEL32.dll + 0004:000004d4 __imp__HeapCreate@12 200364d4 kernel32:KERNEL32.dll + 0004:000004d8 __imp__HeapDestroy@4 200364d8 kernel32:KERNEL32.dll + 0004:000004dc __imp__GetEnvironmentStringsW@0 200364dc kernel32:KERNEL32.dll + 0004:000004e0 __imp__GetACP@0 200364e0 kernel32:KERNEL32.dll + 0004:000004e4 __imp__CompareStringW@24 200364e4 kernel32:KERNEL32.dll + 0004:000004e8 __imp__FreeResource@4 200364e8 kernel32:KERNEL32.dll + 0004:000004ec __imp__FreeEnvironmentStringsA@4 200364ec kernel32:KERNEL32.dll + 0004:000004f0 __imp__GetOEMCP@0 200364f0 kernel32:KERNEL32.dll + 0004:000004f4 __imp__GetCPInfo@8 200364f4 kernel32:KERNEL32.dll + 0004:000004f8 \177KERNEL32_NULL_THUNK_DATA 200364f8 kernel32:KERNEL32.dll + 0004:000004fc __imp__LoadCursorA@8 200364fc user32:USER32.dll + 0004:00000500 __imp__LoadStringA@16 20036500 user32:USER32.dll + 0004:00000504 __imp__SendMessageA@16 20036504 user32:USER32.dll + 0004:00000508 __imp__OffsetRect@12 20036508 user32:USER32.dll + 0004:0000050c __imp__SetRect@20 2003650c user32:USER32.dll + 0004:00000510 __imp__SetWindowTextA@8 20036510 user32:USER32.dll + 0004:00000514 __imp__GetWindowLongA@8 20036514 user32:USER32.dll + 0004:00000518 __imp__GetFocus@0 20036518 user32:USER32.dll + 0004:0000051c __imp__SetFocus@4 2003651c user32:USER32.dll + 0004:00000520 __imp__GetWindowRect@8 20036520 user32:USER32.dll + 0004:00000524 __imp__UpdateWindow@4 20036524 user32:USER32.dll + 0004:00000528 __imp__GetDlgItem@8 20036528 user32:USER32.dll + 0004:0000052c __imp__ShowCursor@4 2003652c user32:USER32.dll + 0004:00000530 __imp__InvalidateRect@12 20036530 user32:USER32.dll + 0004:00000534 __imp__GetClientRect@8 20036534 user32:USER32.dll + 0004:00000538 __imp__SetWindowLongA@12 20036538 user32:USER32.dll + 0004:0000053c __imp__GetParent@4 2003653c user32:USER32.dll + 0004:00000540 __imp__SendDlgItemMessageA@20 20036540 user32:USER32.dll + 0004:00000544 __imp__wsprintfA 20036544 user32:USER32.dll + 0004:00000548 __imp__GetKeyState@4 20036548 user32:USER32.dll + 0004:0000054c __imp__IsWindowEnabled@4 2003654c user32:USER32.dll + 0004:00000550 __imp__PostQuitMessage@4 20036550 user32:USER32.dll + 0004:00000554 __imp__IsWindowVisible@4 20036554 user32:USER32.dll + 0004:00000558 __imp__IsWindow@4 20036558 user32:USER32.dll + 0004:0000055c __imp__DispatchMessageA@4 2003655c user32:USER32.dll + 0004:00000560 __imp__IsDialogMessageA@8 20036560 user32:USER32.dll + 0004:00000564 __imp__TranslateMessage@4 20036564 user32:USER32.dll + 0004:00000568 __imp__MessageBoxA@16 20036568 user32:USER32.dll + 0004:0000056c __imp__DestroyWindow@4 2003656c user32:USER32.dll + 0004:00000570 __imp__EnableWindow@8 20036570 user32:USER32.dll + 0004:00000574 __imp__ReleaseDC@8 20036574 user32:USER32.dll + 0004:00000578 __imp__GetDC@4 20036578 user32:USER32.dll + 0004:0000057c __imp__DrawTextA@20 2003657c user32:USER32.dll + 0004:00000580 __imp__CallWindowProcA@20 20036580 user32:USER32.dll + 0004:00000584 __imp__ShowWindow@8 20036584 user32:USER32.dll + 0004:00000588 __imp__PeekMessageA@20 20036588 user32:USER32.dll + 0004:0000058c __imp__SetPropA@12 2003658c user32:USER32.dll + 0004:00000590 __imp__RemovePropA@8 20036590 user32:USER32.dll + 0004:00000594 __imp__GetWindowTextA@12 20036594 user32:USER32.dll + 0004:00000598 __imp__RegisterClassA@4 20036598 user32:USER32.dll + 0004:0000059c __imp__GetPropA@8 2003659c user32:USER32.dll + 0004:000005a0 __imp__DefWindowProcA@16 200365a0 user32:USER32.dll + 0004:000005a4 __imp__ScreenToClient@8 200365a4 user32:USER32.dll + 0004:000005a8 __imp__BeginPaint@8 200365a8 user32:USER32.dll + 0004:000005ac __imp__EndPaint@8 200365ac user32:USER32.dll + 0004:000005b0 __imp__PostMessageA@16 200365b0 user32:USER32.dll + 0004:000005b4 \177USER32_NULL_THUNK_DATA 200365b4 user32:USER32.dll + 0004:000005b8 __imp__SGdiImportFont@8 200365b8 storm:storm.dll + 0004:000005bc __imp__SNetInitializeDevice@20 200365bc storm:storm.dll + 0004:000005c0 __imp__SNetEnumDevices@4 200365c0 storm:storm.dll + 0004:000005c4 __imp__SNetSelectGame@24 200365c4 storm:storm.dll + 0004:000005c8 __imp__SRegLoadString@20 200365c8 storm:storm.dll + 0004:000005cc __imp__SRegSaveString@16 200365cc storm:storm.dll + 0004:000005d0 __imp__SNetInitializeProvider@20 200365d0 storm:storm.dll + 0004:000005d4 __imp__SNetEnumProviders@8 200365d4 storm:storm.dll + 0004:000005d8 __imp__SBltROP3Tiled@40 200365d8 storm:storm.dll + 0004:000005dc __imp__SDlgCheckTimers@0 200365dc storm:storm.dll + 0004:000005e0 __imp__SDlgUpdateCursor@0 200365e0 storm:storm.dll + 0004:000005e4 __imp__SDlgSetSystemCursor@16 200365e4 storm:storm.dll + 0004:000005e8 __imp__SDlgBeginPaint@8 200365e8 storm:storm.dll + 0004:000005ec __imp__SDlgEndPaint@8 200365ec storm:storm.dll + 0004:000005f0 __imp__SDrawClearSurface@4 200365f0 storm:storm.dll + 0004:000005f4 __imp__SNetEnumGames@16 200365f4 storm:storm.dll + 0004:000005f8 __imp__SNetJoinGame@24 200365f8 storm:storm.dll + 0004:000005fc __imp__SDlgDrawBitmap@28 200365fc storm:storm.dll + 0004:00000600 __imp__SGdiSelectObject@4 20036600 storm:storm.dll + 0004:00000604 __imp__SGdiSetPitch@4 20036604 storm:storm.dll + 0004:00000608 __imp__SGdiTextOut@24 20036608 storm:storm.dll + 0004:0000060c __imp__SDlgSetTimer@16 2003660c storm:storm.dll + 0004:00000610 __imp__SDlgSetControlBitmaps@28 20036610 storm:storm.dll + 0004:00000614 __imp__SNetCreateGame@40 20036614 storm:storm.dll + 0004:00000618 __imp__SDlgEndDialog@8 20036618 storm:storm.dll + 0004:0000061c __imp__SDlgSetBitmap@40 2003661c storm:storm.dll + 0004:00000620 __imp__SDrawUpdatePalette@16 20036620 storm:storm.dll + 0004:00000624 __imp__SDlgDefDialogProc@16 20036624 storm:storm.dll + 0004:00000628 __imp__SDrawGetFrameWindow@4 20036628 storm:storm.dll + 0004:0000062c __imp__SDlgDialogBoxParam@20 2003662c storm:storm.dll + 0004:00000630 __imp__SDlgBltToWindow@40 20036630 storm:storm.dll + 0004:00000634 __imp__SBltROP3@32 20036634 storm:storm.dll + 0004:00000638 __imp__SBmpLoadImage@28 20036638 storm:storm.dll + 0004:0000063c __imp__SMemAlloc@16 2003663c storm:storm.dll + 0004:00000640 __imp__STransBlt@20 20036640 storm:storm.dll + 0004:00000644 __imp__SFileOpenFile@8 20036644 storm:storm.dll + 0004:00000648 __imp__SFileGetFileSize@8 20036648 storm:storm.dll + 0004:0000064c __imp__SFileReadFile@20 2003664c storm:storm.dll + 0004:00000650 __imp__SFileCloseFile@4 20036650 storm:storm.dll + 0004:00000654 __imp__STransCreate@28 20036654 storm:storm.dll + 0004:00000658 __imp__SMemFree@16 20036658 storm:storm.dll + 0004:0000065c __imp__STransDelete@4 2003665c storm:storm.dll + 0004:00000660 __imp__SDlgSetCursor@16 20036660 storm:storm.dll + 0004:00000664 __imp__SDlgCreateDialogParam@20 20036664 storm:storm.dll + 0004:00000668 __imp__SDlgKillTimer@8 20036668 storm:storm.dll + 0004:0000066c __imp__SGdiDeleteObject@4 2003666c storm:storm.dll + 0004:00000670 \177storm_NULL_THUNK_DATA 20036670 storm:storm.dll + + entry point at 0001:00015820 + + Static symbols + + 0001:00013cfc ?TitleDialogProc@@YGHPAUHWND__@@IIJ@Z 20014cfc f Title.obj + 0001:00013ec1 ?TitleDestroy@@YAXPAUHWND__@@@Z 20014ec1 f Title.obj + 0001:00013ef1 ?TitleInit@@YAXPAUHWND__@@J@Z 20014ef1 f Title.obj + 0001:00013fca ?TitleAbort@@YAXPAUHWND__@@@Z 20014fca f Title.obj + 0001:000132a5 ?SupportDialogProc@@YGHPAUHWND__@@IIJ@Z 200142a5 f Support.obj + 0001:00013465 ?SupportDestroy@@YAXPAUHWND__@@@Z 20014465 f Support.obj + 0001:000134e4 ?SupportAbort@@YAXPAUHWND__@@@Z 200144e4 f Support.obj + 0001:00013515 ?SupportInit@@YAXPAUHWND__@@J@Z 20014515 f Support.obj + 0001:0001370d ?ScrollSupport@@YAXPAUHWND__@@@Z 2001470d f Support.obj + 0001:000137e2 ?SupportDraw@@YAXPAUHWND__@@@Z 200147e2 f Support.obj + 0001:00013918 ?credit_length@@YAHPAD@Z 20014918 f Support.obj + 0001:00013968 ?support_next@@YAPADPADH@Z 20014968 f Support.obj + 0001:00012dcf ?SelYesNoDialogProc@@YGHPAUHWND__@@IIJ@Z 20013dcf f SelYesNo.obj + 0001:00012fc1 ?SelYesNoDestroy@@YAXPAUHWND__@@@Z 20013fc1 f SelYesNo.obj + 0001:00013029 ?SelYesNoInit@@YAXPAUHWND__@@@Z 20014029 f SelYesNo.obj + 0001:00013155 ?SelYesNoAbort@@YAXPAUHWND__@@H@Z 20014155 f SelYesNo.obj + 0001:00011af9 ?SelModemEnum@@YGHKPBD0@Z 20012af9 f SelModem.obj + 0001:00011b79 ?ModemAllocNode@@YAPAU_modeminfo@@XZ 20012b79 f SelModem.obj + 0001:00011b91 ?ModemAddNode@@YAPAU_modeminfo@@PAU1@0@Z 20012b91 f SelModem.obj + 0001:00011ba1 ?SelModemNoModem@@YAHK@Z 20012ba1 f SelModem.obj + 0001:00011bee ?SelModemOneModem@@YAHXZ 20012bee f SelModem.obj + 0001:00011c72 ?ModemFreeList@@YAXPAU_modeminfo@@@Z 20012c72 f SelModem.obj + 0001:00011c9c ?ModemFreeNode@@YAXPAU_modeminfo@@@Z 20012c9c f SelModem.obj + 0001:00011cb9 ?SelModemInitDevice@@YAHPAUHWND__@@K@Z 20012cb9 f SelModem.obj + 0001:00011d0b ?SelModemListModems@@YAHXZ 20012d0b f SelModem.obj + 0001:00011dd6 ?SelModemDialogProc@@YGHPAUHWND__@@IIJ@Z 20012dd6 f SelModem.obj + 0001:000120ce ?SelModemDestroy@@YAXPAUHWND__@@@Z 200130ce f SelModem.obj + 0001:0001214e ?SelModemUpdateSbar@@YAXPAUHWND__@@@Z 2001314e f SelModem.obj + 0001:0001217a ?GetNumNode@@YAHPAUHWND__@@@Z 2001317a f SelModem.obj + 0001:000121f8 ?SelModemInit@@YAXPAUHWND__@@@Z 200131f8 f SelModem.obj + 0001:00012318 ?SelModemSetList@@YAXPAUHWND__@@PAU_modeminfo@@@Z 20013318 f SelModem.obj + 0001:000123ca ?SelModemSubclassEntries@@YAXPAUHWND__@@@Z 200133ca f SelModem.obj + 0001:0001243e ?ModemListWndProc@@YGJPAUHWND__@@IIJ@Z 2001343e f SelModem.obj + 0001:0001272b ?SelModemTab@@YAXPAUHWND__@@@Z 2001372b f SelModem.obj + 0001:000127b3 ?SelModemShiftTab@@YAXPAUHWND__@@@Z 200137b3 f SelModem.obj + 0001:0001283b ?SelModemPageDown@@YAXPAUHWND__@@@Z 2001383b f SelModem.obj + 0001:00012928 ?GetModem@@YAPAU_modeminfo@@H@Z 20013928 f SelModem.obj + 0001:0001295a ?SelModemPageUp@@YAXPAUHWND__@@@Z 2001395a f SelModem.obj + 0001:00012a40 ?SelModemScrollDown@@YAXPAUHWND__@@@Z 20013a40 f SelModem.obj + 0001:00012b1e ?SelModemScrollUp@@YAXPAUHWND__@@@Z 20013b1e f SelModem.obj + 0001:00012bd0 ?SelModemAbort@@YAXPAUHWND__@@H@Z 20013bd0 f SelModem.obj + 0001:00012c3c ?SelModemInterpretClick@@YAXPAUHWND__@@HH@Z 20013c3c f SelModem.obj + 0001:00011929 ?SelLoadDestroy@@YAXPAUHWND__@@@Z 20012929 f SelLoad.obj + 0001:0001197b ?SelLoadInit@@YAXPAUHWND__@@@Z 2001297b f SelLoad.obj + 0001:00011a3a ?SelLoadAbort@@YAXPAUHWND__@@H@Z 20012a3a f SelLoad.obj + 0001:000107bd ?SelListDestroy@@YAXPAUHWND__@@@Z 200117bd f SelList.obj + 0001:00010831 ?UpdateStats@@YAXPAUHWND__@@H@Z 20011831 f SelList.obj + 0001:000108fa ?SelListUpdateSbar@@YAXPAUHWND__@@@Z 200118fa f SelList.obj + 0001:00010926 ?GetNumNode@@YAHPAUHWND__@@@Z 20011926 f SelList.obj + 0001:000109a3 ?SelListInit@@YAXPAUHWND__@@@Z 200119a3 f SelList.obj + 0001:00010ae2 ?SelListSetList@@YAXPAUHWND__@@PAU_uiheroinfo@@@Z 20011ae2 f SelList.obj + 0001:00010b94 ?SelListSubclassEntries@@YAXPAUHWND__@@@Z 20011b94 f SelList.obj + 0001:00010c08 ?ListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 20011c08 f SelList.obj + 0001:00010f24 ?SelListTab@@YAXPAUHWND__@@@Z 20011f24 f SelList.obj + 0001:00010fac ?SelListShiftTab@@YAXPAUHWND__@@@Z 20011fac f SelList.obj + 0001:00011034 ?SelListPageDown@@YAXPAUHWND__@@@Z 20012034 f SelList.obj + 0001:00011139 ?GetHero@@YAPAU_uiheroinfo@@H@Z 20012139 f SelList.obj + 0001:0001116b ?SelListPageUp@@YAXPAUHWND__@@@Z 2001216b f SelList.obj + 0001:0001126c ?SelListScrollDown@@YAXPAUHWND__@@@Z 2001226c f SelList.obj + 0001:0001136d ?SelListScrollUp@@YAXPAUHWND__@@@Z 2001236d f SelList.obj + 0001:00011441 ?SelListAbort@@YAXPAUHWND__@@H@Z 20012441 f SelList.obj + 0001:00011463 ?SelListInterpretClick@@YAXPAUHWND__@@HH@Z 20012463 f SelList.obj + 0001:0000e91d ?SelIPXDialogProc@@YGHPAUHWND__@@IIJ@Z 2000f91d f SelIPX.obj + 0001:0000ebc8 ?SelIPXSetInfo@@YAXPAUHWND__@@H@Z 2000fbc8 f SelIPX.obj + 0001:0000ee5b ?SelIPXUpdateSbar@@YAXPAUHWND__@@@Z 2000fe5b f SelIPX.obj + 0001:0000ee7d ?SelIPXGetFocusNum@@YAHXZ 2000fe7d f SelIPX.obj + 0001:0000ef04 ?SelIPXUpdateGames@@YAXPAUHWND__@@@Z 2000ff04 f SelIPX.obj + 0001:0000efc4 ?SelIPXInvalAll@@YAXPAU_ipxgame@@@Z 2000ffc4 f SelIPX.obj + 0001:0000efe3 ?SelIPXDeleteInval@@YAPAU_ipxgame@@PAU1@@Z 2000ffe3 f SelIPX.obj + 0001:0000f087 ?SelIPXFreeNode@@YAXPAU_ipxgame@@@Z 20010087 f SelIPX.obj + 0001:0000f0a7 ?SelIPXEnum@@YGHKPBD0@Z 200100a7 f SelIPX.obj + 0001:0000f16d ?SelIPXAddEnd@@YAPAU_ipxgame@@PAU1@0@Z 2001016d f SelIPX.obj + 0001:0000f1c1 ?SelIPXFindNode@@YAPAU_ipxgame@@PAU1@K@Z 200101c1 f SelIPX.obj + 0001:0000f1e6 ?SelIPXSetGames@@YAXPAUHWND__@@PAU_ipxgame@@@Z 200101e6 f SelIPX.obj + 0001:0000f2e3 ?SelIPXDestroy@@YAXPAUHWND__@@@Z 200102e3 f SelIPX.obj + 0001:0000f38c ?SelIPXFreeList@@YAXPAU_ipxgame@@@Z 2001038c f SelIPX.obj + 0001:0000f3b6 ?SelIPXShiftTab@@YAXPAUHWND__@@@Z 200103b6 f SelIPX.obj + 0001:0000f43e ?SelIPXInit@@YAXPAUHWND__@@@Z 2001043e f SelIPX.obj + 0001:0000f690 ?SelIPXSubclassEntries@@YAXPAUHWND__@@@Z 20010690 f SelIPX.obj + 0001:0000f704 ?IPXListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 20010704 f SelIPX.obj + 0001:0000fa20 ?SelIPXTab@@YAXPAUHWND__@@@Z 20010a20 f SelIPX.obj + 0001:0000faa8 ?SelIPXPageDown@@YAXPAUHWND__@@@Z 20010aa8 f SelIPX.obj + 0001:0000fbae ?GetNumIPXNode@@YAHPAUHWND__@@@Z 20010bae f SelIPX.obj + 0001:0000fc2c ?GetGame@@YAPAU_ipxgame@@H@Z 20010c2c f SelIPX.obj + 0001:0000fc5e ?SelIPXPageUp@@YAXPAUHWND__@@@Z 20010c5e f SelIPX.obj + 0001:0000fd60 ?SelIPXScrollDown@@YAXPAUHWND__@@@Z 20010d60 f SelIPX.obj + 0001:0000fe61 ?SelIPXScrollUp@@YAXPAUHWND__@@@Z 20010e61 f SelIPX.obj + 0001:0000ff36 ?SelIPXAbort@@YAXPAUHWND__@@H@Z 20010f36 f SelIPX.obj + 0001:0000ff7f ?SelIPXAttemptJoin@@YAXPAUHWND__@@@Z 20010f7f f SelIPX.obj + 0001:0000ffef ?SelIPXCreate@@YAXPAUHWND__@@@Z 20010fef f SelIPX.obj + 0001:000100e2 ?SelIPXShowList@@YAXPAUHWND__@@H@Z 200110e2 f SelIPX.obj + 0001:00010167 ?SelIPXDetermineGameName@@YAXPAD@Z 20011167 f SelIPX.obj + 0001:000101f1 ?SelIPXFindNodeName@@YAPAU_ipxgame@@PAU1@PBD@Z 200111f1 f SelIPX.obj + 0001:00010222 ?SelIPXJoin@@YAXPAUHWND__@@PAU_ipxgame@@@Z 20011222 f SelIPX.obj + 0001:00010311 ?SelIPXInterpretClick@@YAXPAUHWND__@@HH@Z 20011311 f SelIPX.obj + 0001:0000d54a ?SelHeroSetImage@@YAXPAUHWND__@@H@Z 2000e54a f SelHero.obj + 0001:0000d894 ?convert_nasty@@YAXPAD@Z 2000e894 f SelHero.obj + 0001:0000d9f4 ?SelHeroDialogProc@@YGHPAUHWND__@@IIJ@Z 2000e9f4 f SelHero.obj + 0001:0000dc1f ?DoDeleteHero@@YAXPAUHWND__@@@Z 2000ec1f f SelHero.obj + 0001:0000dde6 ?SelHeroDeleteNode@@YAPAU_uiheroinfo@@PAU1@PBD@Z 2000ede6 f SelHero.obj + 0001:0000de6e ?SelHeroFreeNode@@YAXPAU_uiheroinfo@@@Z 2000ee6e f SelHero.obj + 0001:0000de8e ?SelHeroFindNode@@YAPAU_uiheroinfo@@PAU1@PBD@Z 2000ee8e f SelHero.obj + 0001:0000dec8 ?DoSelList@@YAXPAUHWND__@@@Z 2000eec8 f SelHero.obj + 0001:0000df9d ?DoSelClass@@YAXPAUHWND__@@@Z 2000ef9d f SelHero.obj + 0001:0000e0e1 ?DoEnterName@@YAXPAUHWND__@@@Z 2000f0e1 f SelHero.obj + 0001:0000e167 ?SelHeroCreateNew@@YAHPAUHWND__@@PBD@Z 2000f167 f SelHero.obj + 0001:0000e2c7 ?ValidName@@YAHPBD@Z 2000f2c7 f SelHero.obj + 0001:0000e325 ?DoSelLoad@@YAXPAUHWND__@@@Z 2000f325 f SelHero.obj + 0001:0000e39e ?DoSelDiff@@YAXPAUHWND__@@@Z 2000f39e f SelHero.obj + 0001:0000e4c3 ?SelHeroDestroy@@YAXPAUHWND__@@@Z 2000f4c3 f SelHero.obj + 0001:0000e54e ?SelHeroFreeList@@YAXPAU_uiheroinfo@@@Z 2000f54e f SelHero.obj + 0001:0000e578 ?SelHeroAbort@@YAXPAUHWND__@@H@Z 2000f578 f SelHero.obj + 0001:0000e5ab ?SelHeroInit@@YAXPAUHWND__@@@Z 2000f5ab f SelHero.obj + 0001:0000e6a8 ?SelHeroGetHeros@@YAXPAUHWND__@@@Z 2000f6a8 f SelHero.obj + 0001:0000e777 ?SelHeroEnumHero@@YGHPAU_uiheroinfo@@@Z 2000f777 f SelHero.obj + 0001:0000cc19 ?SelDialSetInfo@@YAXPAUHWND__@@H@Z 2000dc19 f SelDial.obj + 0001:0000cd24 ?SelDialDestroy@@YAXPAUHWND__@@@Z 2000dd24 f SelDial.obj + 0001:0000cd78 ?SelDialAbort@@YAXPAUHWND__@@H@Z 2000dd78 f SelDial.obj + 0001:0000ce39 ?SelDialEnum@@YAXPAUHWND__@@@Z 2000de39 f SelDial.obj + 0001:0000cef2 ?SelDialSetJoinBtn@@YAXPAUHWND__@@@Z 2000def2 f SelDial.obj + 0001:0000cf8b ?SelDialClearJoinBtn@@YAXPAUHWND__@@@Z 2000df8b f SelDial.obj + 0001:0000cfd9 ?SelDialInit@@YAXPAUHWND__@@@Z 2000dfd9 f SelDial.obj + 0001:0000d0a6 ?SelDialPhoneBook@@YAXPAUHWND__@@@Z 2000e0a6 f SelDial.obj + 0001:0000d1be ?SelDialGetBookEntries@@YAXXZ 2000e1be f SelDial.obj + 0001:0000d226 ?SelDialInterpretClick@@YAXPAUHWND__@@HH@Z 2000e226 f SelDial.obj + 0001:0000b51f ?SelConnSetInfo@@YAXPAUHWND__@@H@Z 2000c51f f SelConn.obj + 0001:0000b6ae ?SelConnUpdateSbar@@YAXPAUHWND__@@@Z 2000c6ae f SelConn.obj + 0001:0000b6d0 ?SelConnGetFocusNum@@YAHXZ 2000c6d0 f SelConn.obj + 0001:0000b757 ?SelConnDestroy@@YAXPAUHWND__@@@Z 2000c757 f SelConn.obj + 0001:0000b7f0 ?SelConnFreeList@@YAXPAU_provider@@@Z 2000c7f0 f SelConn.obj + 0001:0000b81a ?SelConnFreeNode@@YAXPAU_provider@@@Z 2000c81a f SelConn.obj + 0001:0000b837 ?SelConnInit@@YAXPAUHWND__@@@Z 2000c837 f SelConn.obj + 0001:0000b9bc ?SelConnEnum@@YGHKPBD0PAU_SNETCAPS@@@Z 2000c9bc f SelConn.obj + 0001:0000ba57 ?SelConnSetProviders@@YAXPAUHWND__@@PAU_provider@@@Z 2000ca57 f SelConn.obj + 0001:0000bb0b ?SelConnSubclassEntries@@YAXPAUHWND__@@@Z 2000cb0b f SelConn.obj + 0001:0000bb7f ?SelConnListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 2000cb7f f SelConn.obj + 0001:0000be6c ?SelConnTab@@YAXPAUHWND__@@@Z 2000ce6c f SelConn.obj + 0001:0000bef4 ?SelConnShiftTab@@YAXPAUHWND__@@@Z 2000cef4 f SelConn.obj + 0001:0000bf7c ?SelConnPageDown@@YAXPAUHWND__@@@Z 2000cf7c f SelConn.obj + 0001:0000c082 ?GetNumProvNode@@YAHPAUHWND__@@@Z 2000d082 f SelConn.obj + 0001:0000c100 ?GetProvider@@YAPAU_provider@@H@Z 2000d100 f SelConn.obj + 0001:0000c132 ?SelConnPageUp@@YAXPAUHWND__@@@Z 2000d132 f SelConn.obj + 0001:0000c234 ?SelConnScrollDown@@YAXPAUHWND__@@@Z 2000d234 f SelConn.obj + 0001:0000c335 ?SelConnScrollUp@@YAXPAUHWND__@@@Z 2000d335 f SelConn.obj + 0001:0000c40a ?SelConnAbort@@YAXPAUHWND__@@H@Z 2000d40a f SelConn.obj + 0001:0000c453 ?SelConnAttemptInit@@YAXPAUHWND__@@@Z 2000d453 f SelConn.obj + 0001:0000c4d3 ?SelConnInitProvider@@YAHPAUHWND__@@@Z 2000d4d3 f SelConn.obj + 0001:0000c5cd ?SelConnInitError@@YAXPAUHWND__@@@Z 2000d5cd f SelConn.obj + 0001:0000c61f ?SelConnInterpretClick@@YAXPAUHWND__@@HH@Z 2000d61f f SelConn.obj + 0001:0000afae ?SelClassDestroy@@YAXPAUHWND__@@@Z 2000bfae f SelClass.obj + 0001:0000b000 ?SelClassInit@@YAXPAUHWND__@@@Z 2000c000 f SelClass.obj + 0001:0000b0e0 ?UpdateStats@@YAXPAUHWND__@@H@Z 2000c0e0 f SelClass.obj + 0001:0000b1ec ?SelClassAbort@@YAXPAUHWND__@@H@Z 2000c1ec f SelClass.obj + 0001:0000a0ba ?ProgressDialogProc@@YGHPAUHWND__@@IIJ@Z 2000b0ba f Progress.obj + 0001:0000a1e9 ?ProgressDestroy@@YAXPAUHWND__@@@Z 2000b1e9 f Progress.obj + 0001:0000a2b4 ?ProgressInit@@YAXPAUHWND__@@PBD@Z 2000b2b4 f Progress.obj + 0001:0000a4b5 ?ProgressDraw@@YAXPAUHWND__@@H@Z 2000b4b5 f Progress.obj + 0001:0000a57e ?ProgressEndDialog@@YAXPAUHWND__@@H@Z 2000b57e f Progress.obj + 0001:0000a597 ?ProgressTimer@@YAXPAUHWND__@@@Z 2000b597 f Progress.obj + 0001:0000a5cc ?ProgressAbort@@YAXPAUHWND__@@@Z 2000b5cc f Progress.obj + 0001:0000a617 ?ProcessMessages@@YAXPAUHWND__@@@Z 2000b617 f Progress.obj + 0001:00009a61 ?OkCancelDialogProc@@YGHPAUHWND__@@IIJ@Z 2000aa61 f OkCancel.obj + 0001:00009c05 ?OkCancelDestroy@@YAXPAUHWND__@@@Z 2000ac05 f OkCancel.obj + 0001:00009c59 ?OkCancelInit@@YAHPAUHWND__@@PBD@Z 2000ac59 f OkCancel.obj + 0001:00009e5c ?OkCancelAbort@@YAXPAUHWND__@@H@Z 2000ae5c f OkCancel.obj + 0001:00009591 ?ModmStatDialogProc@@YGHPAUHWND__@@IIJ@Z 2000a591 f ModmStat.obj + 0001:00009725 ?ModmStatDestroy@@YAXPAUHWND__@@@Z 2000a725 f ModmStat.obj + 0001:00009766 ?ModmStatInit@@YAXPAUHWND__@@@Z 2000a766 f ModmStat.obj + 0001:0000984c ?ModmStatAbort@@YAXPAUHWND__@@H@Z 2000a84c f ModmStat.obj + 0001:0000988c ?ModmStatUpdateStatus@@YAXPAUHWND__@@@Z 2000a88c f ModmStat.obj + 0001:00008c66 ?ModemDialogProc@@YGHPAUHWND__@@IIJ@Z 20009c66 f Modem.obj + 0001:00008db5 ?ModemDestroy@@YAXPAUHWND__@@@Z 20009db5 f Modem.obj + 0001:00008e07 ?ModemInit@@YAXPAUHWND__@@@Z 20009e07 f Modem.obj + 0001:00008f26 ?ModemUpdateGame@@YAXPAUHWND__@@@Z 20009f26 f Modem.obj + 0001:00008f98 ?ModemSelDialAnswer@@YAXPAUHWND__@@@Z 20009f98 f Modem.obj + 0001:00009020 ?ModemAbort@@YAXPAUHWND__@@H@Z 2000a020 f Modem.obj + 0001:00009053 ?ModemCreate@@YAXPAUHWND__@@@Z 2000a053 f Modem.obj + 0001:00009181 ?ModemJoin@@YAXPAUHWND__@@PBD@Z 2000a181 f Modem.obj + 0001:000093d5 ?ModemJoinThread@@YAXPAX@Z 2000a3d5 f Modem.obj + 0001:0000944f ?ModemEnterDial@@YAXPAUHWND__@@@Z 2000a44f f Modem.obj + 0001:000094a5 ?ModemSelCre8Join@@YAXPAUHWND__@@@Z 2000a4a5 f Modem.obj + 0001:000083ed ?MainMenuDialogProc@@YGHPAUHWND__@@IIJ@Z 200093ed f MainMenu.obj + 0001:0000861b ?MainMenuDestroy@@YAXPAUHWND__@@@Z 2000961b f MainMenu.obj + 0001:00008666 ?MainMenuResetAttractTimer@@YAXPAUHWND__@@@Z 20009666 f MainMenu.obj + 0001:00008684 ?MainMenuInit@@YAXPAUHWND__@@I@Z 20009684 f MainMenu.obj + 0001:000087b5 ?MainMenuAbort@@YAXPAUHWND__@@HH@Z 200097b5 f MainMenu.obj + 0001:0000887f ?HasMultiplayerMemory@@YAHXZ 2000987f f MainMenu.obj + 0001:000088a6 ?MainMenuBtnAction@@YAXPAUHWND__@@H@Z 200098a6 f MainMenu.obj + 0001:0000808e ?LogonDialogProc@@YGHPAUHWND__@@IIJ@Z 2000908e f Logon.obj + 0001:00008189 ?LogonSaveInfo@@YAXPAUHWND__@@@Z 20009189 f Logon.obj + 0001:000081f6 ?LogonClearInfo@@YAXPAUHWND__@@@Z 200091f6 f Logon.obj + 0001:0000821e ?LogonDestroy@@YAXPAUHWND__@@@Z 2000921e f Logon.obj + 0001:00008272 ?LogonInit@@YAXPAUHWND__@@@Z 20009272 f Logon.obj + 0001:00007ac0 ?OnPaintBtnProc@@YGJPAUHWND__@@IIJ@Z 20008ac0 f local.obj + 0001:00007bd7 ?ActiveDownBtnProc@@YGJPAUHWND__@@IIJ@Z 20008bd7 f local.obj + 0001:00007ec8 ?UiGenCursorMask@@YAXXZ 20008ec8 f local.obj + 0001:0000704c ?FocusInvalidate@@YAXPAUHWND__@@@Z 2000804c f Focus.obj + 0001:00006d9c ?RestoreWindowsColors@@YAXXZ 20007d9c f Fade.obj + 0001:00006eae ?UiFadeTimerProc@@YGXPAUHWND__@@IIK@Z 20007eae f Fade.obj + 0001:00006978 ?EntrNameDestroy@@YAXPAUHWND__@@@Z 20007978 f EntrName.obj + 0001:000069ca ?EntrNameInit@@YAXPAUHWND__@@@Z 200079ca f EntrName.obj + 0001:00006adc ?EntrNameAbort@@YAXPAUHWND__@@H@Z 20007adc f EntrName.obj + 0001:00006b26 ?EntrNameDEN@@YAXPAUHWND__@@IJ@Z 20007b26 f EntrName.obj + 0001:0000641c ?EntrDialDestroy@@YAXPAUHWND__@@@Z 2000741c f EntrDial.obj + 0001:00006470 ?EntrDialInit@@YAXPAUHWND__@@@Z 20007470 f EntrDial.obj + 0001:0000653e ?EntrDialSetInfo@@YAXPAUHWND__@@@Z 2000753e f EntrDial.obj + 0001:0000659e ?EntrDialAbort@@YAXPAUHWND__@@H@Z 2000759e f EntrDial.obj + 0001:000065e8 ?EntrDialDEN@@YAXPAUHWND__@@IJ@Z 200075e8 f EntrDial.obj + 0001:00006639 ?EntrDialInterpretClick@@YAXPAUHWND__@@HH@Z 20007639 f EntrDial.obj + 0001:000057bf ?UiDoomButtonCreate@@YAXPAUHWND__@@0HH@Z 200067bf f Doom.obj + 0001:0000586c ?UiDoomTextBtnDraw@@YAXPAUHWND__@@H@Z 2000686c f Doom.obj + 0001:000059e8 ?UiDoomCreateBg@@YAXPAUHWND__@@0H@Z 200069e8 f Doom.obj + 0001:00005a76 ?UiDoomDrawBg@@YAXPAUHWND__@@0@Z 20006a76 f Doom.obj + 0001:00005b71 ?UiDoomButtonReset@@YAXPAUHWND__@@0HH@Z 20006b71 f Doom.obj + 0001:00005c44 ?UiDoomStaticCreate@@YAXPAUHWND__@@0H@Z 20006c44 f Doom.obj + 0001:00005cf7 ?UiDoomTextDraw@@YAXPAUHWND__@@J@Z 20006cf7 f Doom.obj + 0001:00005e63 ?UiDoomStaticReset@@YAXPAUHWND__@@0H@Z 20006e63 f Doom.obj + 0001:00005f3f ?UiDoomEditCreate@@YAXPAUHWND__@@0H@Z 20006f3f f Doom.obj + 0001:00005f86 ?UiDoomTextEditDraw@@YAXPAUHWND__@@@Z 20006f86 f Doom.obj + 0001:0000612b ?UiDoomEditReset@@YAXPAUHWND__@@0H@Z 2000712b f Doom.obj + 0001:0000552e ?DisclaimerDialogProc@@YGHPAUHWND__@@IIJ@Z 2000652e f disclaim.obj + 0001:00005698 ?DisclaimerDestroy@@YAXPAUHWND__@@@Z 20006698 f disclaim.obj + 0001:000056d4 ?DisclaimerInit@@YAXPAUHWND__@@J@Z 200066d4 f disclaim.obj + 0001:00005757 ?DisclaimerAbort@@YAXPAUHWND__@@@Z 20006757 f disclaim.obj + 0001:00004c65 ?DirLinkDialogProc@@YGHPAUHWND__@@IIJ@Z 20005c65 f DirLink.obj + 0001:00004ecd ?DirLinkSetInfo@@YAXPAUHWND__@@H@Z 20005ecd f DirLink.obj + 0001:00004f62 ?DirLinkDestroy@@YAXPAUHWND__@@@Z 20005f62 f DirLink.obj + 0001:00004fdb ?DirLinkInit@@YAXPAUHWND__@@@Z 20005fdb f DirLink.obj + 0001:0000512a ?DirLinkAbort@@YAXPAUHWND__@@H@Z 2000612a f DirLink.obj + 0001:00005178 ?DirLinkAutoJoin@@YAXPAUHWND__@@@Z 20006178 f DirLink.obj + 0001:000051c6 ?DirLinkAttemptJoin@@YAXPAUHWND__@@@Z 200061c6 f DirLink.obj + 0001:00005254 ?DirLinkCreate@@YAXPAUHWND__@@@Z 20006254 f DirLink.obj + 0001:000052f7 ?DirLinkJoin@@YAXPAUHWND__@@@Z 200062f7 f DirLink.obj + 0001:000053dc ?DirLinkUpdateGame@@YAXPAUHWND__@@@Z 200063dc f DirLink.obj + 0001:00005459 ?DirLinkEnum@@YGHKPBD0@Z 20006459 f DirLink.obj + 0001:0000548f ?DirLinkInterpretClick@@YAXPAUHWND__@@HH@Z 2000648f f DirLink.obj + 0001:00004492 ?DiabEditWndProc@@YGJPAUHWND__@@IIJ@Z 20005492 f DiabEdit.obj + 0001:000046a5 ?DiabEditNotify@@YAXPAUHWND__@@H@Z 200056a5 f DiabEdit.obj + 0001:000046e4 ?DiabEditFlashCursor@@YAXPAUHWND__@@@Z 200056e4 f DiabEdit.obj + 0001:000047ec ?DiabEditHandleChar@@YAXPAUHWND__@@IJ@Z 200057ec f DiabEdit.obj + 0001:00004962 ?DiabEditHandleKeydown@@YAXPAUHWND__@@IJ@Z 20005962 f DiabEdit.obj + 0001:00004a08 ?DiabEditSetRestricted@@YAXPAUHWND__@@PAD@Z 20005a08 f DiabEdit.obj + 0001:00004a47 ?DiabEditCreate@@YAXPAUHWND__@@@Z 20005a47 f DiabEdit.obj + 0001:00004aa4 ?DiabEditDestroy@@YAXPAUHWND__@@@Z 20005aa4 f DiabEdit.obj + 0001:00003d15 ?CreditsDialogProc@@YGHPAUHWND__@@IIJ@Z 20004d15 f credits.obj + 0001:00003ed5 ?CreditsDestroy@@YAXPAUHWND__@@@Z 20004ed5 f credits.obj + 0001:00003f54 ?CreditsAbort@@YAXPAUHWND__@@@Z 20004f54 f credits.obj + 0001:00003f85 ?CreditsInit@@YAXPAUHWND__@@J@Z 20004f85 f credits.obj + 0001:0000417d ?ScrollCredits@@YAXPAUHWND__@@@Z 2000517d f credits.obj + 0001:00004252 ?CreditsDraw@@YAXPAUHWND__@@@Z 20005252 f credits.obj + 0001:00004388 ?credit_length@@YAHPAD@Z 20005388 f credits.obj + 0001:000043d8 ?credit_next@@YAPADPADH@Z 200053d8 f credits.obj + 0001:00003699 ?SelDiffSetInfo@@YAXPAUHWND__@@H@Z 20004699 f CreaDung.obj + 0001:00003776 ?SelDiffDestroy@@YAXPAUHWND__@@@Z 20004776 f CreaDung.obj + 0001:000037f3 ?SelDiffInit@@YAXPAUHWND__@@@Z 200047f3 f CreaDung.obj + 0001:000038e2 ?SelDiffAbort@@YAXPAUHWND__@@H@Z 200048e2 f CreaDung.obj + 0001:00003904 ?SelDiffModeCreate@@YAXPAUHWND__@@@Z 20004904 f CreaDung.obj + 0001:0000394b ?SelDiffMultiCreate@@YAXPAUHWND__@@@Z 2000494b f CreaDung.obj + 0001:000039f9 ?SelDiffAttemptCreate@@YAXPAUHWND__@@@Z 200049f9 f CreaDung.obj + 0001:00003b92 ?SelDiffInterpretClick@@YAXPAUHWND__@@HH@Z 20004b92 f CreaDung.obj + 0001:000029db ?ChatCreateGameDialogProc@@YGHPAUHWND__@@IIJ@Z 200039db f cr8game.obj + 0001:00002e14 ?DestroyArtwork@@YAXPAUHWND__@@@Z 20003e14 f cr8game.obj + 0001:00002e90 ?LoadArtwork@@YAHPAUHWND__@@@Z 20003e90 f cr8game.obj + 0001:00002f5e ?DestroyDiffBtns@@YAXPAUHWND__@@@Z 20003f5e f cr8game.obj + 0001:00002ff0 ?InitDiffBtns@@YAXPAUHWND__@@@Z 20003ff0 f cr8game.obj + 0001:000030e4 ?DrawDiffBtn@@YAXPAUHWND__@@HH@Z 200040e4 f cr8game.obj + 0001:0000316f ?InitDefaultOptions@@YAXPAUHWND__@@@Z 2000416f f cr8game.obj + 0001:000031aa ?SetBtns@@YAXPAUHWND__@@H@Z 200041aa f cr8game.obj + 0001:00003203 ?SetDesc@@YAXPAUHWND__@@JJ@Z 20004203 f cr8game.obj + 0001:00003241 ?ProcessName@@YAHPAD@Z 20004241 f cr8game.obj + 0001:000032f3 ?SetFonts@@YAPAUHFONT__@@PAUHWND__@@@Z 200042f3 f cr8game.obj + 0001:00002464 ?CopyProtDialogProc@@YGHPAUHWND__@@IIJ@Z 20003464 f CopyProt.obj + 0001:00002592 ?CopyProtDestroy@@YAXPAUHWND__@@@Z 20003592 f CopyProt.obj + 0001:000025f6 ?CopyProtInit@@YAHPAUHWND__@@PBD@Z 200035f6 f CopyProt.obj + 0001:000027b8 ?CopyProtAbort@@YAXPAUHWND__@@H@Z 200037b8 f CopyProt.obj + 0001:000001c2 ?ArtFontDestroyFont@@YAXPAU_artfont@@@Z 200011c2 f artfont.obj + 0001:000002f8 ?ArtFontLoadFont@@YAXPAU_artfont@@PBD1@Z 200012f8 f artfont.obj + 0001:00027b10 _findenv 20028b10 f LIBCMTD:setenv.obj + 0001:00027b90 _copy_environ 20028b90 f LIBCMTD:setenv.obj + 0001:000273c0 _wcsncnt 200283c0 f LIBCMTD:aw_cmp.obj + 0001:000277e0 _strncnt 200287e0 f LIBCMTD:aw_cmp.obj + 0001:00026bf0 _wcstoxl 20027bf0 f LIBCMTD:wcstol.obj + 0001:00025a00 __expandtime 20026a00 f LIBCMTD:strftime.obj + 0001:00026030 __store_str 20027030 f LIBCMTD:strftime.obj + 0001:00026080 __store_num 20027080 f LIBCMTD:strftime.obj + 0001:00026130 __store_number 20027130 f LIBCMTD:strftime.obj + 0001:000261e0 __store_winword 200271e0 f LIBCMTD:strftime.obj + 0001:00024810 _flsall 20025810 f LIBCMTD:fflush.obj + 0001:00023d00 _trans_lang_lang 20024d00 f LIBCMTD:getqloc.obj + 0001:00023d90 _trans_ctry_ctry 20024d90 f LIBCMTD:getqloc.obj + 0001:00023e20 _trans_ctry_lang 20024e20 f LIBCMTD:getqloc.obj + 0001:00023ea0 _testSpecialCtry 20024ea0 f LIBCMTD:getqloc.obj + 0001:00023ed0 _match_ctry_lang 20024ed0 f LIBCMTD:getqloc.obj + 0001:000231e0 __get_lc_lconv 200241e0 f LIBCMTD:initmon.obj + 0001:000233f0 _fix_grouping 200243f0 f LIBCMTD:initmon.obj + 0001:00023470 __free_lc_lconv 20024470 f LIBCMTD:initmon.obj + 0001:00023030 _fix_grouping 20024030 f LIBCMTD:initnum.obj + 0001:00022320 __get_lc_time 20023320 f LIBCMTD:inittime.obj + 0001:000228b0 __free_lc_time 200238b0 f LIBCMTD:inittime.obj + 0001:00022bc0 _storeTimeFmt 20023bc0 f LIBCMTD:inittime.obj + 0001:000202d0 _wcsncnt 200212d0 f LIBCMTD:wcstombs.obj + 0001:0001f7c0 _ctrlevent_capture@4 200207c0 f LIBCMTD:winsig.obj + 0001:0001fab0 _siglookup 20020ab0 f LIBCMTD:winsig.obj + 0001:0001f560 _$$$00001 20020560 f LIBCMTD:chkstk.obj + 0001:0001f0e0 _xtoa 200200e0 f LIBCMTD:xtoa.obj + 0001:0001f260 _x64toa@20 20020260 f LIBCMTD:xtoa.obj + 0001:0001de10 _getSystemCP 2001ee10 f LIBCMTD:mbctype.obj + 0001:0001de70 _CPtoLCID 2001ee70 f LIBCMTD:mbctype.obj + 0001:0001def0 _setSBCS 2001eef0 f LIBCMTD:mbctype.obj + 0001:0001d6c0 _parse_cmdline 2001e6c0 f LIBCMTD:stdargv.obj + 0001:0001c8b0 __setlocale_set_cat 2001d8b0 f LIBCMTD:setlocal.obj + 0001:0001ca40 __setlocale_get_all 2001da40 f LIBCMTD:setlocal.obj + 0001:0001beb0 _wcsncnt 2001ceb0 f LIBCMTD:aw_map.obj + 0001:0001c1d0 _strncnt 2001d1d0 f LIBCMTD:aw_map.obj + 0001:0001ba4c __unwind_handler 2001ca4c f LIBCMTD:exsup.obj + 0001:0001b9d0 _xcptlookup 2001c9d0 f LIBCMTD:winxfltr.obj + 0001:0001b6d0 _doexit 2001c6d0 f LIBCMTD:crt0dat.obj + 0001:0001b7e0 __initterm 2001c7e0 f LIBCMTD:crt0dat.obj + 0001:000198e0 _realloc_help 2001a8e0 f LIBCMTD:dbgheap.obj + 0001:0001a520 _CheckBytes 2001b520 f LIBCMTD:dbgheap.obj + 0001:0001b110 __printMemBlockData 2001c110 f LIBCMTD:dbgheap.obj + 0001:00019210 __hextodec 2001a210 f LIBCMTD:input.obj + 0001:00019270 __inc 2001a270 f LIBCMTD:input.obj + 0001:000192d0 __un_inc 2001a2d0 f LIBCMTD:input.obj + 0001:000192f0 __whiteout 2001a2f0 f LIBCMTD:input.obj + 0001:00017390 __tzset_lk 20018390 f LIBCMTD:tzset.obj + 0001:00017720 __isindst_lk 20018720 f LIBCMTD:tzset.obj + 0001:00017a20 _cvtdate 20018a20 f LIBCMTD:tzset.obj + 0001:00016f20 _CrtMessageWindow 20017f20 f LIBCMTD:dbgrpt.obj + 0001:00016910 _write_char 20017910 f LIBCMTD:output.obj + 0001:00016990 _write_multi_char 20017990 f LIBCMTD:output.obj + 0001:000169d0 _write_string 200179d0 f LIBCMTD:output.obj + 0001:00016a20 _get_int_arg 20017a20 f LIBCMTD:output.obj + 0001:00016a40 _get_int64_arg 20017a40 f LIBCMTD:output.obj + 0001:00016a60 _get_short_arg 20017a60 f LIBCMTD:output.obj + 0001:000151d0 __threadstart@4 200161d0 f LIBCMTD:thread.obj + 0001:00014e70 _$$$00001 20015e70 f LIBCMTD:strchr.obj + +FIXUPS: 15a87 34 fffffd31 2a 45 4b bf7 20 2f 16 10 1b fffffbee 17 77 12 +FIXUPS: 1620e 2e 20 10 38 10 22 fffffc96 2a 33 1a fffffc43 2d 18 1c 1e +FIXUPS: 15cb4 fffffecb fffffd5b 85 69 33 c99 31 8 5b 9 17 1c 5 c 5 5 5 +FIXUPS: 16789 3d 7 f 5 5 5 15 7e 1e 1e 1d 68 9 fffffca9 24 a 23 fffffdbd +FIXUPS: 16428 b6b 18 21 34 30 a8 e2 142 ba 31 1e 2a 1b 116 25 122 1e 30 +FIXUPS: 1776a 32 22 26 177 55 53 ffffef7d 108 10 3e 54 4d 28 112f 18 38 +FIXUPS: 17d34 2b 14 2e 18 18 7a 63 34 47 1e d 2f 15 11 1d 21 14 26 19d +FIXUPS: 181d6 19 19 a ffffeac4 34 24 cb 67 151e 7 1b 2b 17 af 16 3e e 15 +FIXUPS: 18520 c 18 17 a 15 3b 5b 52 6c 29 c d b0 53 66 53 25 23 fffff9b3 +FIXUPS: 17b99 10b 1d78 c1 24 e5 39 76 4a 3d 76 6c 62 20 77 27 70 46 31 +FIXUPS: 1a03a 44 35 1c 157 8a 32 24 f ffffe921 29 fffff6e0 11 14 12 206e +FIXUPS: 18e46 2d 47 4a 9 19 a4 1aa 1d 118 1de 32 97 1f 58 a8 28 33 43 64 +FIXUPS: 197b7 41 12 2f 4d 23 10 70 24 5a 46 22ec 33 49 10e 1a a1 20 31 +FIXUPS: 1bf97 4f 3a 31 18 45 18 f 1a 88 69 2a 34 39 16 7c 2a 28 ffffdfda +FIXUPS: 1a366 21 1f d 21 10a2 5a 1f 93 57 8 51 2b 28 28 28 16 94 2b 32 +FIXUPS: 1b807 39 20 49 33 22 67 47 80 1f 5e 15 4d 5a 11 5c 1b fffff2b9 +FIXUPS: 1aeb6 a 24 1c 50 1d 1f 62 34 3b 2b 3b 45 2b c 41 6b 56 36 c 2b +FIXUPS: 1b2ca 2c 1c 16 c 1f 62 51 1f 45 fffff375 33 2f 51 15 1e d 35 21 +FIXUPS: 1a943 1c 6b 28 32 4f 18 1f 5b 66 25 25 b3 19 59 5f 54 85 15 1e +FIXUPS: 1ae52 18 20 194c fffffbaf 2a 2e 37 81 2a 21 62 1a 1a 1a 1a 1a e +FIXUPS: 1a404 26 28 15 18 d 1d 25 2f 1c 69 28 5f 54 21 128 1e 26a7 e 13 +FIXUPS: 1ce9a eb 9b c9 a3 e 13 e fffff9c4 d 11 2f 25 fffffe4f fffffdd7 +FIXUPS: 1c82a fffffe03 12 1d 20 1e 20 1b 77 12 13 19 b 31 1428 26 2e 1b +FIXUPS: 1dc71 19 19 11 67 27 40 2a 45 2e 33 4a 25 2b fffff3d4 60 13 a 34 +FIXUPS: 1d37b 6a 2c 44 2c fffff7f4 a0 7c 78 7a5 48 51 19 2f 2d 39 21 5a +FIXUPS: 1d7a8 47 17 31 11 1a 22 10 43 26 c 47 1b 40 3e 31 4e 4e 1a 25 2a +FIXUPS: 1dbba 19 f66 10a 45 ff 4c 15 7 e 179 fffff6d2 1b 13 22 fffffe50 +FIXUPS: 1e510 1f 29 26 17 12 1c fffffb35 13 e8 29a fffffacc 1c 13 6d a5 +FIXUPS: 1d4df 43 2339 11 4c fffffc8c 1c 77 6e 57 15 17 1d 14 13 14 1a 19 +FIXUPS: 1f445 fffffc0a 2e 88 2f 69 1a 16 12a 4a 94 2b fffff6f9 c 18 15 +FIXUPS: 2024d 4a 17 a8 fffffb52 21 13 50 5e fffffde7 35 18 a6 10 fffffdca +FIXUPS: 1fc75 fffffccd b 14 14 f 6d 1a2 b 10 3e b fffffbfb b 14 14 f ddf +FIXUPS: 20695 24 27 2a 17 58 50 44 1d 16 c4 13 28 16 1d a 99 ff 10 fffff962 +FIXUPS: 204b0 44 4b fffffe4d 2a 44 4b fffffc69 18 11b 21 127a 13 4a de +FIXUPS: 215f5 fffffd52 c d 2e 29 19 2c fffffb8c 24 13 62 3e 6b 60 64 54 +FIXUPS: 2126e 3b fffffa38 5d 98 e e 103 59 fffff679 43 19e3 fffffe51 48 +FIXUPS: 21eaf 3e f d fffffebe 1b fffffe4c 18 10 f 39 5f fffffd43 82 2a +FIXUPS: 21627 4d 40 40 43 4d 40 43 50 50 4d 65 60 fffffa9f 1457 a3 102 +FIXUPS: 22b6d fffff731 8 12 27 b 2a ffffff0d 14 1d a c fffffdb9 17 43 14 +FIXUPS: 220c6 1b 40 14 59 14 a c 39 fffffd8f 14 36 14 1a2c 11 11 11 11 +FIXUPS: 23a5f 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 14 36 +FIXUPS: 23c04 1c 2c 11b ffffe75a 236 11a ef0 1f 22 22 22 22 22 22 22 22 +FIXUPS: 23852 22 18 3c 11 11 11 11 11 10 11 11 11 11 11 11 11 11 11 11 +FIXUPS: 239e8 11 fffff8fa 11 5e 1f 1f 1f 1f 1f 1c 1f 1f 1f 1f 1f 1f 1f +FIXUPS: 23511 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f cd6 1f bd 11 +FIXUPS: 244b6 11 11 11 11 fffff8b9 1d 1d 17 16 11 11 46 13 14 5b 11 10 +FIXUPS: 23f59 30 16 3b fffff288 1f 10 e 1e 11 14fa 22 17 e 15 e e e 2b +FIXUPS: 2488a fffff845 1f 10 e 4c 11 4f 11 4d 1f 1f 1f 1f 17 17 1f 1f 1f +FIXUPS: 2433c 1f 1f 1f 1053 b 66 2f e b 18 31 3d 2f fffff43c 41 52 1d 22 +FIXUPS: 24af2 92 6a 1b 89 2c 29 54 90 6c fffff716 1f 19 19 19 106 65 161e +FIXUPS: 25d83 ffffff4b fffffc88 fffffd57 e c f 22 28 78 6e 21 68 33 40 +FIXUPS: 25927 f fffffc9a 5c 41 1f fffff995 82 2f 83 7d 11 b8 b d6 b 182b +FIXUPS: 26bdc 28 45 2d 2d 28 28 1c 29 41 84 3a 24 31 36 50 a 21 164 31c +FIXUPS: 273dd 110 ffffe8e5 b 14 14 f 137 b 23 2c5 38a 1c 1c 1b 36 3a 9 +FIXUPS: 266c2 9 48 9 2e 9 2e 9 2c 9 2c 9 2c 9 3d 54 84 8d 7e 23 23 23 3a +FIXUPS: 26b3d 24 1043 13 fffffab5 33 2c 32 20 2e 14 1b 43 6f ffffea8d 15 +FIXUPS: 262e9 50 9 2e 9 71 15 1b 51 9 2e 9 6e 15 37 15 1e 14 1f05 fc 140 +FIXUPS: 2875f 5c e fffff8a9 17 2e 2d a 16 fffffe11 31 c f 4c 27 f f 27 +FIXUPS: 27be2 3c 136 27 11 d8 7e fffffaa7 88 13 ea 11ef 14 8e 2c fffffa79 +FIXUPS: 28889 29 3a 40 3e 33 4b 59 5a c 19 42 3c a7 19 28 c 21 fffff542 +FIXUPS: 281ae e4 81 63 e 13 e f3 fffd8e80 18 e d e 11 19 9b 27 29b d4 278c2 +FIXUPS: 29085 58 28 29 fffffeaf 3a fffffeab b 14 c f 1e 1b c 10 29 2d fffffea3 +FIXUPS: 28e7e fffffe62 fffda4a3 19 1f 5f 16f 24 1f ffffdcc7 7 7 7 7 7 7 +FIXUPS: 10c4 90 d d d d d d d 5f 3b 17 17 17 17 17 17 17 10e9 7b 2b 26 +FIXUPS: 24d4 dc 2d 42 59 124 69 7f 61 bc 35 5b e2 157 18 51 5d 53 4a 61 +FIXUPS: 2e81 34 16 1d9 25 3b 46 e ffffebb2 16 16 33 30 46 19 19 19 19 19 +FIXUPS: 1e75 19 19 19 16 16 16 16 16 32 12b 139 7 30 15 5c 17 16 b0 5e +FIXUPS: 23bf 1390 1e 18 47 ffffe041 28 3f 31 2b 4b 14 16 17 74 13 80 17 +FIXUPS: 1b9c 19 19 19 19 19 19 19 19 19 19 19 19 16 16 218c 67 16 21 14 +FIXUPS: 3f4e 83 15 63 1c 60 f 85 7e 23 56 3f 53 fffff108 48 12 69 a 15 +FIXUPS: 3524 10 10 10 18 1c 192 11 e0 2f 18 6e 17 52 37 61 119 2a 16 11 +FIXUPS: 3b61 55 9 12 c b 8a 10 24 43 28 15 c 65 c c c 4f 26 28 995 19 a +FIXUPS: 481f 5 3f 11 13 13 13 15 15 f b d 17 1f e 53 33 18 e 78 7f f 93 +FIXUPS: 4bb2 10 26 12 42 1e 5bd 18 4c b 21 4f 53 20 14 fffff0ba 28 10 16 +FIXUPS: 44aa 1b 1e 2e e 17 1d 1a 1c 169 13 53 13 18 11 11 11 11 15 131e +FIXUPS: 4cf6 12 c7 15 29 d d 35 15 16 10 18 1c 1d 28 1c 30 e 7 e 34 58 +FIXUPS: 504a e 4e 23 28 15 42 1c e 9dd 25 5 5 5 a 5 39 5 7 fffff861 25 +FIXUPS: 5568 11 23 19 24 11 13 24 4d d6 48 38 105 8d 55 51 36 27 27 2f +FIXUPS: 610d 15 c 9 e b b 7 10 3c f 44 17 31 1e 1d 56 12 3d 18 35 f 4c +FIXUPS: 6409 37 e 20 11 30 10 26 12 fffff96e e e c 1a 1c 81 13 18 11 11 +FIXUPS: 5fa2 11 15 8 5 10 12 9 11 c 12 5 3f e 11 13 13 13 15 15 c 510 30 +FIXUPS: 664b d 1a 1c 17 11 15 e 3f e 13 13 13 a e fffff4b0 1f 8 b8 28 10 +FIXUPS: 5d54 25 1b 1e 2e 11 24 f d f1d 3a 39 4e 49 28 c 19 25 20 4a 21 +FIXUPS: 6f65 c c 61 e 7 1b c 5c 35 39 3c 1f c c 49 fffff36f 12 b2 15 10bb +FIXUPS: 67b4 2d 10 c 10 25 20 71 30 14 1f 17 59 39 2e 2e 43 bc 3c 28 c +FIXUPS: 6baa 25 20 4a 2a 10 c 19 25 20 e43 37 15 fffff6da 10 16 2e e 17 +FIXUPS: 72d6 1a 1c 114 e 11 11 17 41 15 13 d 12 44 60 f b 35 37 15 2b 12 +FIXUPS: 7691 7bb 29 24 2a 1f fffff854 10 16 3e 12 39 12 e 16 17 1a 1c 114 +FIXUPS: 798a 11 11 15 1d 3e 2c 15 13 d 12 2a 27 b 1530 ffffeeef d6 58 9 +FIXUPS: 80d1 56 a1 37 9 67 5f 11 9b 17 fffff7f8 21 21 d 8b 11 19 28 a9 +FIXUPS: 7d6d 16 5 7 5 4c 39 25 880 ee 39 5e 1a 2a 1a 2a 1a 2a 1d 2a 1d +FIXUPS: 8a3b 10 cd 19e b0 66 15 28 38 1f 1e 26 1c ab 2b 1d 1c 15 12 883 +FIXUPS: 990e 15 12 12 12 12 fffff703 87 e b e 1e 18 e 1f bb 28 3b 28 fffff100 +FIXUPS: 844f a5 1e 24 4d 24 2c 39 70 1c e f7e e 11 15 8 1e d 1e 39 e 34 +FIXUPS: 9739 d 12 9 11 c 12 9 11 15 5 17 1d d 11 1d b e b b 7 b30 86 28 +FIXUPS: a46f 16 3e 2e e 2f ffffee4d 8 1d 11 11 e bd 27 25 10 2c 11 11 15 +FIXUPS: 9571 d 34 e a 11 1a 1c e 820 5 3f e 13 13 13 c 78 6a 3f e 10 13 +FIXUPS: a036 7 10 1c 1d 84 1f 77 c 1e 8 a 2c b1 32 2e 2b 2a 518 4c 13 fffff1a8 +FIXUPS: 9aa0 41 13 20 11 37 86 46 1f 8 a6 11 26 10 10 c d 10 1a 1c 17 11 +FIXUPS: 9de4 15 8 f 11 c 1088 48 48 ad fffff55b 3e 7d 25 10 1e 1e 11 e +FIXUPS: a6b1 8 19 13 1a 1c 1b 8 e 11 10 3f 13 15 d 12 e 5a b e1f 5 fffff33a +FIXUPS: aa5b 69 a 17 1d 15 54 10 10 10 21 22 1c 27 28 84 31 a 15 18 2c +FIXUPS: ad6b 19 16 1b 39 3f 33 d 322 1b 18 1c 27 28 28 27 28 45 11 22 a +FIXUPS: b33f a 15 17 13 1a 17 17 3c 3b b ab 3f 73 12 16 7 17 e b4d 37 69 +FIXUPS: c21d a b 25 fffff6a6 7e 5c 6e 47 60 3e 18 1b 1b 64 21 21 21 15 +FIXUPS: b07c 16 8d 7 17 e 16 12 a 6 2649 b ffffe513 28 10 16 27 1d 1e 3e +FIXUPS: bdea 39 12 e e 17 1a 1c 114 e 11 11 15 1d 3e 2a 13 15 15 d 12 17 +FIXUPS: d43d 10 f 12 27 a 29 14 7 a 44 f 27 1d 6 8 24 6 58 2e 10 29 12 +FIXUPS: d6b6 28 31 11 11 11 5c e 12 fffff4b2 e e 37 336 e 2b 13 d 19 c +FIXUPS: d1b7 e 1f 13 d 19 c 64 56 14 20 13 29 65 14 20 13 15 9 e b fffff3a7 +FIXUPS: c7e5 5 1d 2a f d 12 9 11 c 12 5 3f e 13 13 13 15 15 23 10 11 31 +FIXUPS: ca0b 15 13 ab 22 146 e e fffff610 d1 28 10 16 c 25 1c 1d 2d 1d +FIXUPS: c455 11 11 22 d 2b e 1a 1c ac cf 13 f 15 9d f 11 11 11 11 11 1669 +FIXUPS: de5b d 38 2f 45 6 a 46 15 3a 15 3b 12 e 13 15 15 8 d 17 9 39 78 +FIXUPS: e17d 1c 1a 49 4a 12 26 12 fffff648 22 19 84 28 10 16 27 1d 1e 2e +FIXUPS: da83 17 2b e 1a 1c 158 42 76 18 11 11 8 14 1c b b 3d d 29 e 17af +FIXUPS: f5dd 12 5 3f e 17 13 13 13 c 12 3d 4d 43 12 1c 32 44 12 25 1e ffffea60 +FIXUPS: e2f6 d 3d 25 25 25 fffff4a8 15 5b 18e9 31 1a 5e 1a 40 24 20 15 +FIXUPS: f341 69 23 1d 1b 2f 34 18 23 2d 11 11 e 24 1c 8 1d 1b e 7 10 f +FIXUPS: f5c0 fffff568 17 1a 13 1e 10 c d 10 1a 1c 30 7d 30 5d 2b 3e 2c +FIXUPS: ee18 48 28 22 3a 13 6d 2e 29 36 12 fe 1a 56 fffff3ce 4e 30 1e 25 +FIXUPS: e649 49 49 49 49 15 13 3b 13 20 f 49 c 13 56 1b 7c 44 12 25 aa +FIXUPS: ea9d 26 13 13 13 13 2520 38 f 35 12 10 b1 19 4b 24 54 18 37 f 4e +FIXUPS: 11334 10 29 12 29 28 31 11 11 11 ffffcfc9 75 2b 2b 2b 2b e 2645 +FIXUPS: 10b7e 19 c 140 e 1f 13 d 19 c 64 56 14 20 13 29 65 14 20 13 13 +FIXUPS: 10f4c b b 7 10 47 16 e 19 15 fffff391 a6 d 12 9 11 c 12 5 3f e +FIXUPS: 104fa 4c 13 13 15 15 12 8a f 15 e 16d e e e e e 56 2b8 e 2b fffff2df +FIXUPS: fe50 f 15 a4 13 c 21 57 c 88 5e 16 25 39 16 12 fe 3c 3f 22 15 1b +FIXUPS: 10319 11 11 11 11 15 8 5 7 fffff578 8 d2 28 10 16 c 25 1c 1d 2d +FIXUPS: fada 10 11 11 22 d 31 e e 1a 1c a6 13 2a 22 13 35 24 1a 1e 13 24db +FIXUPS: 12261 64 56 14 20 13 29 38 2c 14 20 13 f b d 29 12 29 12 29 c 6 +FIXUPS: 12523 29 28 31 11 11 11 ffffd2ca 3d 218c 8 15 d 12 e 8 9b 31 14c +FIXUPS: 11ce3 e e e e 56 340 e e d f 13 d 19 c 10 97 1a e 1f 13 d fffff398 +FIXUPS: 115e9 2c 1a 10 e e 17 1a 1c 122 8 e 11 11 11 15 6f 17 17 17 13 +FIXUPS: 11905 9 f 33 6b 8 3d 2c 15 15 d0d 3b 12 e e 17 1a 1c 114 e 11 11 +FIXUPS: 12972 3a 2a 13 15 15 d 12 c b 25 ffffea91 28 10 16 c 27 1e 1d 13 +FIXUPS: 13a09 13 d c 64 53 14 13 29 62 14 13 12 b 52 2b 12 29 12 29 28 +FIXUPS: 13d2e 11 11 11 ffffe919 28 10 27 1e 1d 3d 9df 15 14 18 9f 8 3f +FIXUPS: 1326a 13 13 15 15 12 12 e a2 31 146 e e e e e 37 336 e 2b 13 d +FIXUPS: 1391d bf e fffff269 f 27 2a 19 37 2e 1e 12 3c e 13 92 28 10 c 25 +FIXUPS: 12ed7 1e 2c 1a 10 e e 17 1a 1c 127 11 11 11 11 eb3 11 e 11 1e 31 +FIXUPS: 14059 27 48 30 15 16 a f e f b 3a 4f 75 ffffe85e 20 a 7 d 2f 15 +FIXUPS: 12b55 36 4f 31 13 197d 3f e 4e 23 28 15 42 1c e a5 18 4c b 21 4f +FIXUPS: 148d9 20 14 fffff4bc 7f 28 10 3e 10 1e 21 11 e 1a 55 1c fab 11 +FIXUPS: 14f7f 12 1d 14 10 e b 7 e fffff286 12 c7 15 29 d d 35 15 16 10 +FIXUPS: 1443f 1c 1d 28 1c 30 e 7 e 34 b0c 12 fffffa44 24 4b 2e 52 3b 22 +FIXUPS: 14c02 9e 17 16 10 12 d1 15 49 18 c d 24 e 1a 1c e e 15 e 3f e 13 diff --git a/Uisrc/UI/DEBUG/DIABLOUI.OBJ b/Uisrc/UI/DEBUG/DIABLOUI.OBJ new file mode 100644 index 0000000..28aa222 Binary files /dev/null and b/Uisrc/UI/DEBUG/DIABLOUI.OBJ differ diff --git a/Uisrc/UI/DEBUG/DIABLOUI.PDB b/Uisrc/UI/DEBUG/DIABLOUI.PDB new file mode 100644 index 0000000..f23eb6c Binary files /dev/null and b/Uisrc/UI/DEBUG/DIABLOUI.PDB differ diff --git a/Uisrc/UI/DEBUG/DIABLOUI.RES b/Uisrc/UI/DEBUG/DIABLOUI.RES new file mode 100644 index 0000000..3682082 Binary files /dev/null and b/Uisrc/UI/DEBUG/DIABLOUI.RES differ diff --git a/Uisrc/UI/DEBUG/DIABLOUI.SBR b/Uisrc/UI/DEBUG/DIABLOUI.SBR new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/DirLink.obj b/Uisrc/UI/DEBUG/DirLink.obj new file mode 100644 index 0000000..a707ced Binary files /dev/null and b/Uisrc/UI/DEBUG/DirLink.obj differ diff --git a/Uisrc/UI/DEBUG/DirLink.sbr b/Uisrc/UI/DEBUG/DirLink.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Doom.obj b/Uisrc/UI/DEBUG/Doom.obj new file mode 100644 index 0000000..2d7b187 Binary files /dev/null and b/Uisrc/UI/DEBUG/Doom.obj differ diff --git a/Uisrc/UI/DEBUG/Doom.sbr b/Uisrc/UI/DEBUG/Doom.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/EntrDial.obj b/Uisrc/UI/DEBUG/EntrDial.obj new file mode 100644 index 0000000..2070958 Binary files /dev/null and b/Uisrc/UI/DEBUG/EntrDial.obj differ diff --git a/Uisrc/UI/DEBUG/EntrDial.sbr b/Uisrc/UI/DEBUG/EntrDial.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/EntrName.obj b/Uisrc/UI/DEBUG/EntrName.obj new file mode 100644 index 0000000..70800a1 Binary files /dev/null and b/Uisrc/UI/DEBUG/EntrName.obj differ diff --git a/Uisrc/UI/DEBUG/EntrName.sbr b/Uisrc/UI/DEBUG/EntrName.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Fade.obj b/Uisrc/UI/DEBUG/Fade.obj new file mode 100644 index 0000000..45100c1 Binary files /dev/null and b/Uisrc/UI/DEBUG/Fade.obj differ diff --git a/Uisrc/UI/DEBUG/Fade.sbr b/Uisrc/UI/DEBUG/Fade.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Focus.obj b/Uisrc/UI/DEBUG/Focus.obj new file mode 100644 index 0000000..bd6a3a6 Binary files /dev/null and b/Uisrc/UI/DEBUG/Focus.obj differ diff --git a/Uisrc/UI/DEBUG/Focus.sbr b/Uisrc/UI/DEBUG/Focus.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/HELLFRUI.EXP b/Uisrc/UI/DEBUG/HELLFRUI.EXP new file mode 100644 index 0000000..579fac1 Binary files /dev/null and b/Uisrc/UI/DEBUG/HELLFRUI.EXP differ diff --git a/Uisrc/UI/DEBUG/HELLFRUI.LIB b/Uisrc/UI/DEBUG/HELLFRUI.LIB new file mode 100644 index 0000000..e610080 Binary files /dev/null and b/Uisrc/UI/DEBUG/HELLFRUI.LIB differ diff --git a/Uisrc/UI/DEBUG/HELLFRUI.MAP b/Uisrc/UI/DEBUG/HELLFRUI.MAP new file mode 100644 index 0000000..2c8ae95 --- /dev/null +++ b/Uisrc/UI/DEBUG/HELLFRUI.MAP @@ -0,0 +1,1844 @@ + hellfrui + + Timestamp is 3455d0e1 (Tue Oct 28 11:47:45 1997) + + Preferred load address is 20000000 + + Start Length Name Class + 0001:00000000 000290f0H .text CODE + 0002:00000000 00001773H .rdata DATA + 0002:00001780 0000033eH .edata DATA + 0003:00000000 00000004H .CRT$XCA DATA + 0003:00000004 00000004H .CRT$XCZ DATA + 0003:00000008 00000004H .CRT$XIA DATA + 0003:0000000c 00000004H .CRT$XIC DATA + 0003:00000010 00000004H .CRT$XIZ DATA + 0003:00000014 00000004H .CRT$XPA DATA + 0003:00000018 00000004H .CRT$XPX DATA + 0003:0000001c 00000004H .CRT$XPZ DATA + 0003:00000020 00000004H .CRT$XTA DATA + 0003:00000024 00000004H .CRT$XTZ DATA + 0003:00000030 0000524cH .data DATA + 0003:00005280 00004ef0H .bss DATA + 0004:00000000 00000050H .idata$2 DATA + 0004:00000050 00000014H .idata$3 DATA + 0004:00000064 00000308H .idata$4 DATA + 0004:0000036c 00000308H .idata$5 DATA + 0004:00000674 0000099cH .idata$6 DATA + 0005:00000000 0000101cH .rsrc$01 DATA + 0005:00001020 00015050H .rsrc$02 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0001:00000000 ?ArtFontSetHuge@@YAXXZ 20001000 f artfont.obj + 0001:00000010 ?ArtFontSetHugeGray@@YAXXZ 20001010 f artfont.obj + 0001:00000020 ?ArtFontSetBig@@YAXXZ 20001020 f artfont.obj + 0001:00000030 ?ArtFontSetBigGray@@YAXXZ 20001030 f artfont.obj + 0001:00000040 ?ArtFontSetMed@@YAXXZ 20001040 f artfont.obj + 0001:00000050 ?ArtFontSetMedGray@@YAXXZ 20001050 f artfont.obj + 0001:00000060 ?ArtFontSetSmall@@YAXXZ 20001060 f artfont.obj + 0001:00000070 ?ArtFontSetSmallGray@@YAXXZ 20001070 f artfont.obj + 0001:00000080 ?ArtFontSet@@YAXH@Z 20001080 f artfont.obj + 0001:00000100 ?ArtFontInit@@YAXXZ 20001100 f artfont.obj + 0001:00000160 ?ArtFontDestroy@@YAXXZ 20001160 f artfont.obj + 0001:00000260 ?ArtFontLoad@@YAHXZ 20001260 f artfont.obj + 0001:00000490 ?ArtFontHeight@@YAHXZ 20001490 f artfont.obj + 0001:000004c0 ?ArtFontGridWidth@@YAHXZ 200014c0 f artfont.obj + 0001:000004f0 ?ArtFontPixelWidth@@YAHPBD@Z 200014f0 f artfont.obj + 0001:00000590 ?ArtFontWordLen@@YAHPBD@Z 20001590 f artfont.obj + 0001:00000640 ?ArtFontDraw@@YAXPBDPAU_bmp@@HH@Z 20001640 f artfont.obj + 0001:00000840 ?FreeGlobalHeroArt@@YAXXZ 20001840 f connect.obj + 0001:00000950 ?LoadGlobalHeroArt@@YAHXZ 20001950 f connect.obj + 0001:00000b10 _UiArtCallback@32 20001b10 f connect.obj + 0001:00001070 _UiGetDataCallback@20 20002070 f connect.obj + 0001:00001240 _UiSoundCallback@12 20002240 f connect.obj + 0001:00001270 _UiAuthCallback@28 20002270 f connect.obj + 0001:00001610 _UiDrawDescCallback@32 20002610 f connect.obj + 0001:00001f10 _UiCategoryCallback@28 20002f10 f connect.obj + 0001:00001f40 ?GetPlayerCategory@@YAKPBD@Z 20002f40 f connect.obj + 0001:00002140 ?Txt2GameData@@YAHPADPAU_gamedata@@PAPAD2@Z 20003140 f connect.obj + 0001:00002200 ?GameData2Txt@@YAXPAU_gamedata@@PBD1PADH@Z 20003200 f connect.obj + 0001:00002270 ?Txt2HeroInfo@@YAHPADPAU_uiheroinfo@@@Z 20003270 f connect.obj + 0001:000023c0 ?HeroInfo2Txt@@YAXPAU_uiheroinfo@@PAD@Z 200033c0 f connect.obj + 0001:00002440 _UiCreateGameCriteria@8 20003440 f connect.obj + 0001:00002470 _UiCreatePlayerDescription@12 20003470 f connect.obj + 0001:000024a0 _UiCopyProtError@4 200034a0 f CopyProt.obj + 0001:000028c0 ?TryCreateGame@@YAHPAUHWND__@@@Z 200038c0 f cr8game.obj + 0001:00002a50 _UiCreateGameCallback@24 20003a50 f cr8game.obj + 0001:00003510 ?SelDiffLoadFocus@@YAXH@Z 20004510 f CreaDung.obj + 0001:00003520 ?SelDiffDialogProc@@YGHPAUHWND__@@IIJ@Z 20004520 f CreaDung.obj + 0001:00003da0 ?UiDoomCreateGame@@YAHPAU_SNETCREATEDATA@@PAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAKHPBD@Z 20004da0 f CreaDung.obj + 0001:00003e20 _UiGetDefaultStats@8 20004e20 f CreaHero.obj + 0001:00003e80 _UiCreditsDialog@4 20004e80 f credits.obj + 0001:00004600 ?DiabEditPaint@@YAXPAUHWND__@@@Z 20005600 f DiabEdit.obj + 0001:00004640 ?DiabEditRegisterClass@@YAXXZ 20005640 f DiabEdit.obj + 0001:00004d50 ?UiIsSpawned@@YAHXZ 20005d50 f Diabloui.obj + 0001:00004d60 _UiOnPaint@4 20005d60 f Diabloui.obj + 0001:00004d70 _UiSetBackgroundBitmap@20 20005d70 f Diabloui.obj + 0001:00004db0 _UiSetSpawned@4 20005db0 f Diabloui.obj + 0001:00004dc0 _UiInitialize@0 20005dc0 f Diabloui.obj + 0001:00004df0 _UiDestroy@0 20005df0 f Diabloui.obj + 0001:00004e10 _UiAppActivate@4 20005e10 f Diabloui.obj + 0001:00004e20 _DllMain@12 20005e20 f Diabloui.obj + 0001:00004e60 ?UiDirectLinkGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20005e60 f DirLink.obj + 0001:000057d0 _UiBetaDisclaimer@4 200067d0 f disclaim.obj + 0001:00005a70 ?UiDoomButtonsInit@@YAXPAUHWND__@@PAHHH@Z 20006a70 f Doom.obj + 0001:00005e40 ?UiDoomButtonsReset@@YAXPAUHWND__@@PAHHH@Z 20006e40 f Doom.obj + 0001:00005f20 ?UiDoomStaticInit@@YAXPAUHWND__@@PAHH@Z 20006f20 f Doom.obj + 0001:00006160 ?UiDoomStaticReset@@YAXPAUHWND__@@PAHH@Z 20007160 f Doom.obj + 0001:00006250 ?UiDoomEditInit@@YAXPAUHWND__@@PAHH@Z 20007250 f Doom.obj + 0001:00006450 ?UiDoomEditReset@@YAXPAUHWND__@@PAHH@Z 20007450 f Doom.obj + 0001:000064d0 ?UiDoomCtrlsDestroy@@YAXPAUHWND__@@PAH@Z 200074d0 f Doom.obj + 0001:00006530 ?EnterDialDialogProc@@YGHPAUHWND__@@IIJ@Z 20007530 f EntrDial.obj + 0001:00006a50 ?EnterNameDialogProc@@YGHPAUHWND__@@IIJ@Z 20007a50 f EntrName.obj + 0001:00006f50 ?UiVidFade@@YAXHH@Z 20007f50 f Fade.obj + 0001:00007040 ?UiVidFadeOut@@YAXH@Z 20008040 f Fade.obj + 0001:000071d0 ?UiIsFading@@YAHXZ 200081d0 f Fade.obj + 0001:00007200 ?UiFadeAbort@@YAXPAUHWND__@@@Z 20008200 f Fade.obj + 0001:00007220 ?UiFadeInit@@YAXPAUHWND__@@H@Z 20008220 f Fade.obj + 0001:00007260 ?UiAltFadeInit@@YAXPAUHWND__@@@Z 20008260 f Fade.obj + 0001:00007280 ?UiFadeStart@@YAXPAUHWND__@@@Z 20008280 f Fade.obj + 0001:000072f0 ?FocusSnd@@YAXPAUHWND__@@@Z 200082f0 f Focus.obj + 0001:00007320 ?FocusWidth@@YAHXZ 20008320 f Focus.obj + 0001:00007330 ?FocusErase@@YAXPAUHWND__@@0@Z 20008330 f Focus.obj + 0001:000074d0 ?FocusLost@@YAXPAUHWND__@@0@Z 200084d0 f Focus.obj + 0001:00007510 ?FocusAnimate@@YAHPAUHWND__@@0@Z 20008510 f Focus.obj + 0001:00007670 ?FocusAnimateDestroy@@YAXXZ 20008670 f Focus.obj + 0001:000076c0 ?FocusReInit@@YAXXZ 200086c0 f Focus.obj + 0001:000076e0 ?FocusAnimateInit@@YAXPBD@Z 200086e0 f Focus.obj + 0001:000077f0 ?UiCreateIdentityPal@@YAXXZ 200087f0 f local.obj + 0001:000078b0 ?UiFreeIdentityPal@@YAXXZ 200088b0 f local.obj + 0001:000078e0 ?UiGetIdentityPal@@YAPAUHPALETTE__@@XZ 200088e0 f local.obj + 0001:000078f0 ?UiPaletteEntry@@YAPAUtagPALETTEENTRY@@H@Z 200088f0 f local.obj + 0001:00007900 ?UiClearPalette@@YAXPAUtagPALETTEENTRY@@@Z 20008900 f local.obj + 0001:00007950 ?UiLoadBmpFile@@YAHPBDPAPAEPAUtagSIZE@@@Z 20008950 f local.obj + 0001:000079f0 ?LoadArtFile@@YAHPAUHWND__@@0PBDKJ1PAPAEPAUtagSIZE@@H@Z 200089f0 f local.obj + 0001:00007b80 ?UiCalcNewRect@@YAXPAUtagRECT@@HH@Z 20008b80 f local.obj + 0001:00007be0 ?UiSetStaticBmp@@YAHPAUHWND__@@HPAEPAUtagSIZE@@@Z 20008be0 f local.obj + 0001:00007c60 ?UiSetBtnBmp@@YAXPAUHWND__@@KPAUtagRECT@@PAEPAUtagSIZE@@@Z 20008c60 f local.obj + 0001:00007ca0 ?UiSetButtonBitmaps@@YAXPAUHWND__@@PAHPAEPAUtagSIZE@@@Z 20008ca0 f local.obj + 0001:00007e50 ?UiSetTextYellow@@YAXPAUHDC__@@@Z 20008e50 f local.obj + 0001:00007e70 ?UiIsPtInWindow@@YAHPAUHWND__@@0HH@Z 20008e70 f local.obj + 0001:00007ef0 ?UiPaintBtn@@YAXPAUHWND__@@@Z 20008ef0 f local.obj + 0001:00007f20 ?UiOnPaintBtns@@YAXPAUHWND__@@PAH@Z 20008f20 f local.obj + 0001:00008040 ?UiActiveDownBtns@@YAXPAUHWND__@@PAH@Z 20009040 f local.obj + 0001:000081f0 ?UiFlushIOMessages@@YAXPAUHWND__@@@Z 200091f0 f local.obj + 0001:00008240 ?UiAllocBmp@@YAPAU_bmp@@XZ 20009240 f local.obj + 0001:000082a0 ?UiFreeBmp@@YAXPAU_bmp@@@Z 200092a0 f local.obj + 0001:000082f0 ?UiSetBmpText@@YAXPAU_bmp@@PBD@Z 200092f0 f local.obj + 0001:00008330 ?UiLoadCursor@@YAXXZ 20009330 f local.obj + 0001:00008480 ?UiDestroyCursor@@YAXXZ 20009480 f local.obj + 0001:000084f0 ?UiSetCursor@@YAXXZ 200094f0 f local.obj + 0001:00008520 ?UiClearCursor@@YAXXZ 20009520 f local.obj + 0001:00008540 ?UiSetWindowsCursors@@YAXPAUHWND__@@@Z 20009540 f local.obj + 0001:00008580 _UiLogonDialog@24 20009580 f Logon.obj + 0001:000088e0 ?GetRegStr@@YAPBDXZ 200098e0 f MainMenu.obj + 0001:000088f0 _UiMainMenuDialog@20 200098f0 f MainMenu.obj + 0001:00009020 ?ModemConnected@@YAHXZ 2000a020 f Modem.obj + 0001:00009030 ?ModemSetInfo@@YAXPAUHWND__@@PBD1@Z 2000a030 f Modem.obj + 0001:000090f0 ?ModemGameEnum@@YGHKPBD0@Z 2000a0f0 f Modem.obj + 0001:00009130 ?ModemEnum@@YAHXZ 2000a130 f Modem.obj + 0001:00009180 ?ModemGameName@@YAPBDXZ 2000a180 f Modem.obj + 0001:00009190 ?ModemJoinDone@@YAHXZ 2000a190 f Modem.obj + 0001:000091a0 ?ModemLastJoinedNumber@@YAHXZ 2000a1a0 f Modem.obj + 0001:000091b0 ?ModemGameNumber@@YAHPBD@Z 2000a1b0 f Modem.obj + 0001:00009210 ?UiModemGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 2000a210 f Modem.obj + 0001:00009bc0 ?ModmStatStatusCallback@@YGHPBDKKKP6GHXZ@Z 2000abc0 f ModmStat.obj + 0001:00009bf0 ?ModmStatDialog@@YAHPAUHWND__@@@Z 2000abf0 f ModmStat.obj + 0001:00009fd0 ?IsTextTooLarge@@YAHPAUHWND__@@PBD@Z 2000afd0 f OkCancel.obj + 0001:0000a0d0 ?UiOkCancelDialog@@YAHPAUHWND__@@PBDH@Z 2000b0d0 f OkCancel.obj + 0001:0000a570 ?UiOkDialog@@YAHPAUHWND__@@PBDH@Z 2000b570 f OkCancel.obj + 0001:0000a5c0 ?UiBigOkCancelDialog@@YAHPAUHWND__@@PBD1H@Z 2000b5c0 f OkCancel.obj + 0001:0000a610 ?UiBigOkDialog@@YAHPAUHWND__@@PBD1H@Z 2000b610 f OkCancel.obj + 0001:0000a660 _UiMessageBoxCallback@16 2000b660 f OkCancel.obj + 0001:0000a750 _UiProgressDialog@20 2000b750 f Progress.obj + 0001:0000ae40 ?SbarUpClick@@YAHPAUHWND__@@@Z 2000be40 f Sbar.obj + 0001:0000ae80 ?SbarInterpretClick@@YAHPAUHWND__@@HH@Z 2000be80 f Sbar.obj + 0001:0000afa0 ?SbarDraw@@YAXPAUHWND__@@HHH@Z 2000bfa0 f Sbar.obj + 0001:0000b1f0 ?SbarInit@@YAXPAUHWND__@@H@Z 2000c1f0 f Sbar.obj + 0001:0000b330 ?SbarDestroy@@YAXPAUHWND__@@H@Z 2000c330 f Sbar.obj + 0001:0000b440 ?SelClassDialogProc@@YGHPAUHWND__@@IIJ@Z 2000c440 f SelClass.obj + 0001:0000ba50 ?SelConnAllocNode@@YAPAU_provider@@XZ 2000ca50 f SelConn.obj + 0001:0000ba80 ?SelConnAddNode@@YAPAU_provider@@PAU1@0@Z 2000ca80 f SelConn.obj + 0001:0000ba90 ?SelConnDialogProc@@YGHPAUHWND__@@IIJ@Z 2000ca90 f SelConn.obj + 0001:0000d040 _UiSelectProvider@24 2000e040 f SelConn.obj + 0001:0000d100 ?SelDialSaveBookEntries@@YAXPBD@Z 2000e100 f SelDial.obj + 0001:0000d200 ?SelDialDialogProc@@YGHPAUHWND__@@IIJ@Z 2000e200 f SelDial.obj + 0001:0000dbd0 ?UiSetBasicInterface@@YAXH@Z 2000ebd0 f SelGame.obj + 0001:0000dbe0 ?UiIsBasicInterface@@YAHXZ 2000ebe0 f SelGame.obj + 0001:0000dbf0 ?UiSetProviderID@@YAXK@Z 2000ebf0 f SelGame.obj + 0001:0000dc00 ?UiGetProviderID@@YAKXZ 2000ec00 f SelGame.obj + 0001:0000dc10 _UiSelectGame@24 2000ec10 f SelGame.obj + 0001:0000dd10 ?GetHeroList@@YAPAU_uiheroinfo@@XZ 2000ed10 f SelHero.obj + 0001:0000dd20 ?GetNumHeros@@YAHXZ 2000ed20 f SelHero.obj + 0001:0000dd30 ?SelHeroSetDiff@@YAXH@Z 2000ed30 f SelHero.obj + 0001:0000dd40 ?SelectedName@@YAPBDXZ 2000ed40 f SelHero.obj + 0001:0000dd50 ?SelHeroAllocNode@@YAPAU_uiheroinfo@@XZ 2000ed50 f SelHero.obj + 0001:0000dd70 ?SelHeroAddNode@@YAPAU_uiheroinfo@@PAU1@0@Z 2000ed70 f SelHero.obj + 0001:0000dd80 ?SelHeroGetMode@@YAHXZ 2000ed80 f SelHero.obj + 0001:0000dd90 ?SelHeroGetDefStats@@YAXHPAU_uidefaultstats@@@Z 2000ed90 f SelHero.obj + 0001:0000ddb0 ?SelHeroClearStats@@YAXPAUHWND__@@@Z 2000edb0 f SelHero.obj + 0001:0000df50 ?SelHeroSetStats@@YAXPAUHWND__@@PAU_uiheroinfo@@@Z 2000ef50 f SelHero.obj + 0001:0000e130 ?SelHeroSetTitle@@YAXPAUHWND__@@PBD@Z 2000f130 f SelHero.obj + 0001:0000e180 ?IsNastyName@@YAHPBD@Z 2000f180 f SelHero.obj + 0001:0000e260 ?InvalidChars@@YAHPBD0@Z 2000f260 f SelHero.obj + 0001:0000e310 _UiSelHeroMultDialog@28 2000f310 f SelHero.obj + 0001:0000f250 _UiSelHeroSingDialog@32 20010250 f SelHero.obj + 0001:0000f310 ?SelIPXAllocNode@@YAPAU_ipxgame@@XZ 20010310 f SelIPX.obj + 0001:0000f340 ?UiSelectIPXGame@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20010340 f SelIPX.obj + 0001:00011010 ?SelListDialogProc@@YGHPAUHWND__@@IIJ@Z 20012010 f SelList.obj + 0001:00012250 ?SelLoadDialogProc@@YGHPAUHWND__@@IIJ@Z 20013250 f SelLoad.obj + 0001:000126e0 ?UiSelectDevice@@YAHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@@Z 200136e0 f SelModem.obj + 0001:00013aa0 ?SelYesNoDialog@@YAHPAUHWND__@@PBD1H@Z 20014aa0 f SelYesNo.obj + 0001:00013ee0 ?SelOkDialog@@YAHPAUHWND__@@PBD1H@Z 20014ee0 f SelYesNo.obj + 0001:00013f30 ?SpawnErrDialog@@YAHPAUHWND__@@HH@Z 20014f30 f SelYesNo.obj + 0001:00013fb0 _UiSupportDialog@4 20014fb0 f Support.obj + 0001:00014730 ?TitleLogoAnimate@@YAXPAUHWND__@@@Z 20015730 f Title.obj + 0001:00014870 ?TitleLogoDestroy@@YAXXZ 20015870 f Title.obj + 0001:000148f0 ?TitleLogoInit@@YAXPAUHWND__@@@Z 200158f0 f Title.obj + 0001:00014980 ?TitleFramesInit@@YAXPAUHWND__@@PBD@Z 20015980 f Title.obj + 0001:00014a80 _UiTitleDialog@4 20015a80 f Title.obj + 0001:00014de0 ?UiSndPlay@@YAXPBD@Z 20015de0 f UiSnd.obj + 0001:00014e00 ?UiSndSetFcn@@YAXP6GXPBD@Z@Z 20015e00 f UiSnd.obj + 0001:00014e10 ?UiSndInit@@YAXXZ 20015e10 f UiSnd.obj + 0001:00014e20 ?UiSndPlayClick@@YAXXZ 20015e20 f UiSnd.obj + 0001:00014e40 ?UiSndPlayEnter@@YAXXZ 20015e40 f UiSnd.obj + 0001:00014e52 _FreeResource@4 20015e52 f kernel32:KERNEL32.dll + 0001:00014e58 _LockResource@4 20015e58 f kernel32:KERNEL32.dll + 0001:00014e5e _LoadResource@8 20015e5e f kernel32:KERNEL32.dll + 0001:00014e64 _FindResourceA@12 20015e64 f kernel32:KERNEL32.dll + 0001:00014e6a _GetLastError@0 20015e6a f kernel32:KERNEL32.dll + 0001:00014e70 _MulDiv@12 20015e70 f kernel32:KERNEL32.dll + 0001:00014e76 _SetLastError@4 20015e76 f kernel32:KERNEL32.dll + 0001:00014e7c _SizeofResource@8 20015e7c f kernel32:KERNEL32.dll + 0001:00014e82 _GetModuleHandleA@4 20015e82 f kernel32:KERNEL32.dll + 0001:00014e88 _GlobalMemoryStatus@4 20015e88 f kernel32:KERNEL32.dll + 0001:00014e8e _LoadCursorA@8 20015e8e f user32:USER32.dll + 0001:00014e94 _LoadStringA@16 20015e94 f user32:USER32.dll + 0001:00014e9a _OffsetRect@12 20015e9a f user32:USER32.dll + 0001:00014ea0 _SetRect@20 20015ea0 f user32:USER32.dll + 0001:00014ea6 _SendMessageA@16 20015ea6 f user32:USER32.dll + 0001:00014eac _GetWindowLongA@8 20015eac f user32:USER32.dll + 0001:00014eb2 _GetFocus@0 20015eb2 f user32:USER32.dll + 0001:00014eb8 _SetWindowTextA@8 20015eb8 f user32:USER32.dll + 0001:00014ebe _GetDlgItem@8 20015ebe f user32:USER32.dll + 0001:00014ec4 _ShowCursor@4 20015ec4 f user32:USER32.dll + 0001:00014eca _SetFocus@4 20015eca f user32:USER32.dll + 0001:00014ed0 _GetClientRect@8 20015ed0 f user32:USER32.dll + 0001:00014ed6 _SetWindowLongA@12 20015ed6 f user32:USER32.dll + 0001:00014edc _InvalidateRect@12 20015edc f user32:USER32.dll + 0001:00014ee2 _SendDlgItemMessageA@20 20015ee2 f user32:USER32.dll + 0001:00014ee8 _wsprintfA 20015ee8 f user32:USER32.dll + 0001:00014eee _GetParent@4 20015eee f user32:USER32.dll + 0001:00014ef4 _PostMessageA@16 20015ef4 f user32:USER32.dll + 0001:00014efa _GetWindowRect@8 20015efa f user32:USER32.dll + 0001:00014f00 _UpdateWindow@4 20015f00 f user32:USER32.dll + 0001:00014f06 _ScreenToClient@8 20015f06 f user32:USER32.dll + 0001:00014f0c _EndPaint@8 20015f0c f user32:USER32.dll + 0001:00014f12 _BeginPaint@8 20015f12 f user32:USER32.dll + 0001:00014f18 _RegisterClassA@4 20015f18 f user32:USER32.dll + 0001:00014f1e _DefWindowProcA@16 20015f1e f user32:USER32.dll + 0001:00014f24 _GetPropA@8 20015f24 f user32:USER32.dll + 0001:00014f2a _SetPropA@12 20015f2a f user32:USER32.dll + 0001:00014f30 _GetWindowTextA@12 20015f30 f user32:USER32.dll + 0001:00014f36 _RemovePropA@8 20015f36 f user32:USER32.dll + 0001:00014f3c _CallWindowProcA@20 20015f3c f user32:USER32.dll + 0001:00014f42 _PeekMessageA@20 20015f42 f user32:USER32.dll + 0001:00014f48 _ShowWindow@8 20015f48 f user32:USER32.dll + 0001:00014f4e _ReleaseDC@8 20015f4e f user32:USER32.dll + 0001:00014f54 _DrawTextA@20 20015f54 f user32:USER32.dll + 0001:00014f5a _GetDC@4 20015f5a f user32:USER32.dll + 0001:00014f60 _MessageBoxA@16 20015f60 f user32:USER32.dll + 0001:00014f66 _EnableWindow@8 20015f66 f user32:USER32.dll + 0001:00014f6c _DestroyWindow@4 20015f6c f user32:USER32.dll + 0001:00014f72 _DispatchMessageA@4 20015f72 f user32:USER32.dll + 0001:00014f78 _TranslateMessage@4 20015f78 f user32:USER32.dll + 0001:00014f7e _IsDialogMessageA@8 20015f7e f user32:USER32.dll + 0001:00014f84 _PostQuitMessage@4 20015f84 f user32:USER32.dll + 0001:00014f8a _IsWindow@4 20015f8a f user32:USER32.dll + 0001:00014f90 _IsWindowVisible@4 20015f90 f user32:USER32.dll + 0001:00014f96 _GetKeyState@4 20015f96 f user32:USER32.dll + 0001:00014f9c _IsWindowEnabled@4 20015f9c f user32:USER32.dll + 0001:00014fa2 _GetCurrentPositionEx@8 20015fa2 f gdi32:GDI32.dll + 0001:00014fa8 _TextOutA@20 20015fa8 f gdi32:GDI32.dll + 0001:00014fae _SetTextAlign@8 20015fae f gdi32:GDI32.dll + 0001:00014fb4 _MoveToEx@16 20015fb4 f gdi32:GDI32.dll + 0001:00014fba _GetTextMetricsA@8 20015fba f gdi32:GDI32.dll + 0001:00014fc0 _ExtTextOutA@32 20015fc0 f gdi32:GDI32.dll + 0001:00014fc6 _SetBkColor@8 20015fc6 f gdi32:GDI32.dll + 0001:00014fcc _SetTextColor@8 20015fcc f gdi32:GDI32.dll + 0001:00014fd2 _DeleteObject@4 20015fd2 f gdi32:GDI32.dll + 0001:00014fd8 _GetStockObject@4 20015fd8 f gdi32:GDI32.dll + 0001:00014fde _CreateFontIndirectA@4 20015fde f gdi32:GDI32.dll + 0001:00014fe4 _GetObjectA@12 20015fe4 f gdi32:GDI32.dll + 0001:00014fea _CreateFontA@56 20015fea f gdi32:GDI32.dll + 0001:00014ff0 _GetPaletteEntries@16 20015ff0 f gdi32:GDI32.dll + 0001:00014ff6 _CreatePalette@4 20015ff6 f gdi32:GDI32.dll + 0001:00014ffc _SelectObject@8 20015ffc f gdi32:GDI32.dll + 0001:00015002 _STransDelete@4 20016002 f storm:storm.dll + 0001:00015008 _SMemFree@16 20016008 f storm:storm.dll + 0001:0001500e _STransCreate@28 2001600e f storm:storm.dll + 0001:00015014 _SFileCloseFile@4 20016014 f storm:storm.dll + 0001:0001501a _SFileReadFile@20 2001601a f storm:storm.dll + 0001:00015020 _SFileGetFileSize@8 20016020 f storm:storm.dll + 0001:00015026 _SFileOpenFile@8 20016026 f storm:storm.dll + 0001:0001502c _STransBlt@20 2001602c f storm:storm.dll + 0001:00015032 _SMemAlloc@16 20016032 f storm:storm.dll + 0001:00015038 _SBmpLoadImage@28 20016038 f storm:storm.dll + 0001:0001503e _SBltROP3@32 2001603e f storm:storm.dll + 0001:00015044 _SDlgBltToWindow@40 20016044 f storm:storm.dll + 0001:0001504a _SDlgDialogBoxParam@20 2001604a f storm:storm.dll + 0001:00015050 _SDrawGetFrameWindow@4 20016050 f storm:storm.dll + 0001:00015056 _SDlgDefDialogProc@16 20016056 f storm:storm.dll + 0001:0001505c _SDrawUpdatePalette@16 2001605c f storm:storm.dll + 0001:00015062 _SDlgSetBitmap@40 20016062 f storm:storm.dll + 0001:00015068 _SDlgEndDialog@8 20016068 f storm:storm.dll + 0001:0001506e _SNetCreateGame@40 2001606e f storm:storm.dll + 0001:00015074 _SDlgSetControlBitmaps@28 20016074 f storm:storm.dll + 0001:0001507a _SDlgSetTimer@16 2001607a f storm:storm.dll + 0001:00015080 _SDlgKillTimer@8 20016080 f storm:storm.dll + 0001:00015086 _SGdiDeleteObject@4 20016086 f storm:storm.dll + 0001:0001508c _SGdiImportFont@8 2001608c f storm:storm.dll + 0001:00015092 _SGdiTextOut@24 20016092 f storm:storm.dll + 0001:00015098 _SGdiSetPitch@4 20016098 f storm:storm.dll + 0001:0001509e _SGdiSelectObject@4 2001609e f storm:storm.dll + 0001:000150a4 _SDlgDrawBitmap@28 200160a4 f storm:storm.dll + 0001:000150aa _SNetJoinGame@24 200160aa f storm:storm.dll + 0001:000150b0 _SNetEnumGames@16 200160b0 f storm:storm.dll + 0001:000150b6 _SDrawClearSurface@4 200160b6 f storm:storm.dll + 0001:000150bc _SDlgEndPaint@8 200160bc f storm:storm.dll + 0001:000150c2 _SDlgBeginPaint@8 200160c2 f storm:storm.dll + 0001:000150c8 _SDlgSetSystemCursor@16 200160c8 f storm:storm.dll + 0001:000150ce _SDlgSetCursor@16 200160ce f storm:storm.dll + 0001:000150d4 _SDlgCreateDialogParam@20 200160d4 f storm:storm.dll + 0001:000150da _SDlgUpdateCursor@0 200160da f storm:storm.dll + 0001:000150e0 _SDlgCheckTimers@0 200160e0 f storm:storm.dll + 0001:000150e6 _SBltROP3Tiled@40 200160e6 f storm:storm.dll + 0001:000150ec _SNetEnumProviders@8 200160ec f storm:storm.dll + 0001:000150f2 _SNetInitializeProvider@20 200160f2 f storm:storm.dll + 0001:000150f8 _SRegSaveString@16 200160f8 f storm:storm.dll + 0001:000150fe _SRegLoadString@20 200160fe f storm:storm.dll + 0001:00015104 _SNetSelectGame@24 20016104 f storm:storm.dll + 0001:0001510a _SNetEnumDevices@4 2001610a f storm:storm.dll + 0001:00015110 _SNetInitializeDevice@20 20016110 f storm:storm.dll + 0001:00015120 _memset 20016120 f LIBCMTD:memset.obj + 0001:00015180 _strcpy 20016180 f LIBCMTD:strcat.obj + 0001:00015190 _strcat 20016190 f LIBCMTD:strcat.obj + 0001:00015270 _memcpy 20016270 f LIBCMTD:memcpy.obj + 0001:000155b0 _sprintf 200165b0 f LIBCMTD:sprintf.obj + 0001:000156b0 _atol 200166b0 f LIBCMTD:atox.obj + 0001:000157b0 _atoi 200167b0 f LIBCMTD:atox.obj + 0001:000157d0 __atoi64 200167d0 f LIBCMTD:atox.obj + 0001:00015900 _strstr 20016900 f LIBCMTD:strstr.obj + 0001:00015980 _strlen 20016980 f LIBCMTD:strlen.obj + 0001:00015a00 _localtime 20016a00 f LIBCMTD:localtim.obj + 0001:00015c70 _strchr 20016c70 f LIBCMTD:strchr.obj + 0001:00015c76 ___from_strstr_to_strchr 20016c76 LIBCMTD:strchr.obj + 0001:00015d30 _sscanf 20016d30 f LIBCMTD:sscanf.obj + 0001:00015df0 _strncpy 20016df0 f LIBCMTD:strncpy.obj + 0001:00015ef0 __beginthread 20016ef0 f LIBCMTD:thread.obj + 0001:00016080 __endthread 20017080 f LIBCMTD:thread.obj + 0001:000160e0 _strcmp 200170e0 f LIBCMTD:strcmp.obj + 0001:00016170 __strlwr 20017170 f LIBCMTD:strlwr.obj + 0001:00016330 _strpbrk 20017330 f LIBCMTD:strpbrk.obj + 0001:00016370 __strcmpi 20017370 f LIBCMTD:stricmp.obj + 0001:00016370 _stricmp 20017370 f LIBCMTD:stricmp.obj + 0001:00016370 __stricmp 20017370 f LIBCMTD:stricmp.obj + 0001:00016440 __CRT_INIT@12 20017440 f LIBCMTD:dllcrt0.obj + 0001:00016610 __DllMainCRTStartup@12 20017610 f LIBCMTD:dllcrt0.obj + 0001:00016710 __amsg_exit 20017710 f LIBCMTD:dllcrt0.obj + 0001:00016750 __flsbuf 20017750 f LIBCMTD:_flsbuf.obj + 0001:000169d0 __output 200179d0 f LIBCMTD:output.obj + 0001:00017870 __CrtDbgBreak 20018870 f LIBCMTD:dbgrpt.obj + 0001:00017880 __CrtSetReportMode 20018880 f LIBCMTD:dbgrpt.obj + 0001:000178e0 __CrtSetReportFile 200188e0 f LIBCMTD:dbgrpt.obj + 0001:00017960 __CrtSetReportHook 20018960 f LIBCMTD:dbgrpt.obj + 0001:00017980 __CrtDbgReport 20018980 f LIBCMTD:dbgrpt.obj + 0001:00018020 __isctype 20019020 f LIBCMTD:isctype.obj + 0001:000180e0 __allmul 200190e0 f LIBCMTD:llmul.obj + 0001:00018120 ___tzset 20019120 f LIBCMTD:tzset.obj + 0001:00018160 __tzset 20019160 f LIBCMTD:tzset.obj + 0001:000184e0 __isindst 200194e0 f LIBCMTD:tzset.obj + 0001:00018a10 _gmtime 20019a10 f LIBCMTD:gmtime.obj + 0001:00018c10 __input 20019c10 f LIBCMTD:input.obj + 0001:0001a120 __dosmaperr 2001b120 f LIBCMTD:dosmap.obj + 0001:0001a1c0 __errno 2001b1c0 f LIBCMTD:dosmap.obj + 0001:0001a1d0 ___doserrno 2001b1d0 f LIBCMTD:dosmap.obj + 0001:0001a1e0 _malloc 2001b1e0 f LIBCMTD:dbgheap.obj + 0001:0001a200 __malloc_dbg 2001b200 f LIBCMTD:dbgheap.obj + 0001:0001a230 __nh_malloc 2001b230 f LIBCMTD:dbgheap.obj + 0001:0001a250 __nh_malloc_dbg 2001b250 f LIBCMTD:dbgheap.obj + 0001:0001a2b0 __heap_alloc 2001b2b0 f LIBCMTD:dbgheap.obj + 0001:0001a2d0 __heap_alloc_dbg 2001b2d0 f LIBCMTD:dbgheap.obj + 0001:0001a5f0 _calloc 2001b5f0 f LIBCMTD:dbgheap.obj + 0001:0001a610 __calloc_dbg 2001b610 f LIBCMTD:dbgheap.obj + 0001:0001a670 _realloc 2001b670 f LIBCMTD:dbgheap.obj + 0001:0001a690 __realloc_dbg 2001b690 f LIBCMTD:dbgheap.obj + 0001:0001abf0 __expand 2001bbf0 f LIBCMTD:dbgheap.obj + 0001:0001ac10 __expand_dbg 2001bc10 f LIBCMTD:dbgheap.obj + 0001:0001ac50 _free 2001bc50 f LIBCMTD:dbgheap.obj + 0001:0001ac70 __free_lk 2001bc70 f LIBCMTD:dbgheap.obj + 0001:0001ac90 __free_dbg 2001bc90 f LIBCMTD:dbgheap.obj + 0001:0001acc0 __free_dbg_lk 2001bcc0 f LIBCMTD:dbgheap.obj + 0001:0001b0b0 __msize 2001c0b0 f LIBCMTD:dbgheap.obj + 0001:0001b0d0 __msize_dbg 2001c0d0 f LIBCMTD:dbgheap.obj + 0001:0001b230 __CrtSetBreakAlloc 2001c230 f LIBCMTD:dbgheap.obj + 0001:0001b250 __CrtSetDbgBlockType 2001c250 f LIBCMTD:dbgheap.obj + 0001:0001b2f0 __CrtSetAllocHook 2001c2f0 f LIBCMTD:dbgheap.obj + 0001:0001b3a0 __CrtCheckMemory 2001c3a0 f LIBCMTD:dbgheap.obj + 0001:0001b710 __CrtSetDbgFlag 2001c710 f LIBCMTD:dbgheap.obj + 0001:0001b740 __CrtDoForAllClientObjects 2001c740 f LIBCMTD:dbgheap.obj + 0001:0001b7b0 __CrtIsValidPointer 2001c7b0 f LIBCMTD:dbgheap.obj + 0001:0001b800 __CrtIsValidHeapPointer 2001c800 f LIBCMTD:dbgheap.obj + 0001:0001b890 __CrtIsMemoryBlock 2001c890 f LIBCMTD:dbgheap.obj + 0001:0001b980 __CrtSetDumpClient 2001c980 f LIBCMTD:dbgheap.obj + 0001:0001b9a0 __CrtMemCheckpoint 2001c9a0 f LIBCMTD:dbgheap.obj + 0001:0001bb10 __CrtMemDifference 2001cb10 f LIBCMTD:dbgheap.obj + 0001:0001bc40 __CrtMemDumpAllObjectsSince 2001cc40 f LIBCMTD:dbgheap.obj + 0001:0001c020 __CrtDumpMemoryLeaks 2001d020 f LIBCMTD:dbgheap.obj + 0001:0001c0a0 __CrtMemDumpStatistics 2001d0a0 f LIBCMTD:dbgheap.obj + 0001:0001c170 __mtinit 2001d170 f LIBCMTD:tidtable.obj + 0001:0001c200 __mtterm 2001d200 f LIBCMTD:tidtable.obj + 0001:0001c230 __initptd 2001d230 f LIBCMTD:tidtable.obj + 0001:0001c250 __getptd 2001d250 f LIBCMTD:tidtable.obj + 0001:0001c2f0 __freeptd 2001d2f0 f LIBCMTD:tidtable.obj + 0001:0001c3e0 ___threadid 2001d3e0 f LIBCMTD:tidtable.obj + 0001:0001c3f0 ___threadhandle 2001d3f0 f LIBCMTD:tidtable.obj + 0001:0001c400 __cinit 2001d400 f LIBCMTD:crt0dat.obj + 0001:0001c440 _exit 2001d440 f LIBCMTD:crt0dat.obj + 0001:0001c460 __exit 2001d460 f LIBCMTD:crt0dat.obj + 0001:0001c480 __cexit 2001d480 f LIBCMTD:crt0dat.obj + 0001:0001c4a0 __c_exit 2001d4a0 f LIBCMTD:crt0dat.obj + 0001:0001c5b0 __lockexit 2001d5b0 f LIBCMTD:crt0dat.obj + 0001:0001c5c0 __unlockexit 2001d5c0 f LIBCMTD:crt0dat.obj + 0001:0001c600 __XcptFilter 2001d600 f LIBCMTD:winxfltr.obj + 0001:0001c81c __global_unwind2 2001d81c f LIBCMTD:exsup.obj + 0001:0001c85e __local_unwind2 2001d85e f LIBCMTD:exsup.obj + 0001:0001c8b6 __NLG_Return2 2001d8b6 LIBCMTD:exsup.obj + 0001:0001c8c6 __abnormal_termination 2001d8c6 f LIBCMTD:exsup.obj + 0001:0001c8e9 __NLG_Notify1 2001d8e9 f LIBCMTD:exsup.obj + 0001:0001c8f2 __NLG_Notify 2001d8f2 f LIBCMTD:exsup.obj + 0001:0001c905 __NLG_Dispatch 2001d905 LIBCMTD:exsup.obj + 0001:0001c914 __except_handler3 2001d914 f LIBCMTD:exsup3.obj + 0001:0001c9d1 __seh_longjmp_unwind@4 2001d9d1 f LIBCMTD:exsup3.obj + 0001:0001c9f0 ___crtLCMapStringW 2001d9f0 f LIBCMTD:aw_map.obj + 0001:0001cd00 ___crtLCMapStringA 2001dd00 f LIBCMTD:aw_map.obj + 0001:0001d010 __mtinitlocks 2001e010 f LIBCMTD:mlock.obj + 0001:0001d050 __mtdeletelocks 2001e050 f LIBCMTD:mlock.obj + 0001:0001d0f0 __lock 2001e0f0 f LIBCMTD:mlock.obj + 0001:0001d190 __unlock 2001e190 f LIBCMTD:mlock.obj + 0001:0001d1b0 __lock_file 2001e1b0 f LIBCMTD:mlock.obj + 0001:0001d1f0 __lock_file2 2001e1f0 f LIBCMTD:mlock.obj + 0001:0001d220 __unlock_file 2001e220 f LIBCMTD:mlock.obj + 0001:0001d260 __unlock_file2 2001e260 f LIBCMTD:mlock.obj + 0001:0001d290 __lockerr_exit 2001e290 f LIBCMTD:mlock.obj + 0001:0001d2b0 _setlocale 2001e2b0 f LIBCMTD:setlocal.obj + 0001:0001d930 __expandlocale 2001e930 f LIBCMTD:setlocal.obj + 0001:0001dac0 ___init_dummy 2001eac0 f LIBCMTD:setlocal.obj + 0001:0001dad0 __strcats 2001ead0 f LIBCMTD:setlocal.obj + 0001:0001db20 ___lc_strtolc 2001eb20 f LIBCMTD:setlocal.obj + 0001:0001dc80 ___lc_lctostr 2001ec80 f LIBCMTD:setlocal.obj + 0001:0001dcf0 __tolower 2001ecf0 f LIBCMTD:tolower.obj + 0001:0001dd00 _tolower 2001ed00 f LIBCMTD:tolower.obj + 0001:0001dda0 __tolower_lk 2001eda0 f LIBCMTD:tolower.obj + 0001:0001ded0 __ioinit 2001eed0 f LIBCMTD:ioinit.obj + 0001:0001e200 __ioterm 2001f200 f LIBCMTD:ioinit.obj + 0001:0001e2a0 __setenvp 2001f2a0 f LIBCMTD:stdenvp.obj + 0001:0001e3e0 __setargv 2001f3e0 f LIBCMTD:stdargv.obj + 0001:0001e8e0 __setmbcp 2001f8e0 f LIBCMTD:mbctype.obj + 0001:0001ed50 __getmbcp 2001fd50 f LIBCMTD:mbctype.obj + 0001:0001ed60 ___initmbctable 2001fd60 f LIBCMTD:mbctype.obj + 0001:0001ed70 ___crtGetEnvironmentStringsW 2001fd70 f LIBCMTD:aw_env.obj + 0001:0001eff0 ___crtGetEnvironmentStringsA 2001fff0 f LIBCMTD:aw_env.obj + 0001:0001f210 __heap_init 20020210 f LIBCMTD:heapinit.obj + 0001:0001f260 __heap_term 20020260 f LIBCMTD:heapinit.obj + 0001:0001f2b0 __set_error_mode 200202b0 f LIBCMTD:errmode.obj + 0001:0001f300 ___set_app_type 20020300 f LIBCMTD:errmode.obj + 0001:0001f310 __FF_MSGBANNER 20020310 f LIBCMTD:crt0msg.obj + 0001:0001f360 __NMSG_WRITE 20020360 f LIBCMTD:crt0msg.obj + 0001:0001f560 __GET_RTERRMSG 20020560 f LIBCMTD:crt0msg.obj + 0001:0001f5b0 __lseek 200205b0 f LIBCMTD:lseek.obj + 0001:0001f640 __lseek_lk 20020640 f LIBCMTD:lseek.obj + 0001:0001f700 __write 20020700 f LIBCMTD:write.obj + 0001:0001f790 __write_lk 20020790 f LIBCMTD:write.obj + 0001:0001fa10 __getbuf 20020a10 f LIBCMTD:_getbuf.obj + 0001:0001fae0 __isatty 20020ae0 f LIBCMTD:isatty.obj + 0001:0001fb20 ___initstdio 20020b20 f LIBCMTD:_file.obj + 0001:0001fc50 ___endstdio 20020c50 f LIBCMTD:_file.obj + 0001:0001fc70 _wctomb 20020c70 f LIBCMTD:wctomb.obj + 0001:0001fcf0 __wctomb_lk 20020cf0 f LIBCMTD:wctomb.obj + 0001:0001fd90 __aulldiv 20020d90 f LIBCMTD:ulldiv.obj + 0001:0001fe00 __aullrem 20020e00 f LIBCMTD:ullrem.obj + 0001:0001fe80 __itoa 20020e80 f LIBCMTD:xtoa.obj + 0001:0001fe80 _itoa 20020e80 f LIBCMTD:xtoa.obj + 0001:0001ffa0 __ltoa 20020fa0 f LIBCMTD:xtoa.obj + 0001:0001ffe0 __ultoa 20020fe0 f LIBCMTD:xtoa.obj + 0001:00020000 __i64toa 20021000 f LIBCMTD:xtoa.obj + 0001:00020130 __ui64toa 20021130 f LIBCMTD:xtoa.obj + 0001:00020150 __snprintf 20021150 f LIBCMTD:snprintf.obj + 0001:00020250 __vsnprintf 20021250 f LIBCMTD:vsnprint.obj + 0001:00020350 __chkstk 20021350 LIBCMTD:chkstk.obj + 0001:00020350 __alloca_probe 20021350 LIBCMTD:chkstk.obj + 0001:00020380 _signal 20021380 f LIBCMTD:winsig.obj + 0001:00020650 _raise 20021650 f LIBCMTD:winsig.obj + 0001:00020900 ___fpecode 20021900 f LIBCMTD:winsig.obj + 0001:00020910 ___pxcptinfoptrs 20021910 f LIBCMTD:winsig.obj + 0001:00020920 ___crtMessageBoxA 20021920 f LIBCMTD:crtmbox.obj + 0001:000209e0 ___crtGetStringTypeW 200219e0 f LIBCMTD:aw_str.obj + 0001:00020bf0 ___crtGetStringTypeA 20021bf0 f LIBCMTD:aw_str.obj + 0001:00020d50 _wcstombs 20021d50 f LIBCMTD:wcstombs.obj + 0001:00020dd0 __wcstombs_lk 20021dd0 f LIBCMTD:wcstombs.obj + 0001:00021130 _getenv 20022130 f LIBCMTD:getenv.obj + 0001:00021160 __getenv_lk 20022160 f LIBCMTD:getenv.obj + 0001:00021220 _mbtowc 20022220 f LIBCMTD:mbtowc.obj + 0001:000212a0 __mbtowc_lk 200222a0 f LIBCMTD:mbtowc.obj + 0001:00021400 _isalpha 20022400 f LIBCMTD:_ctype.obj + 0001:00021450 _isupper 20022450 f LIBCMTD:_ctype.obj + 0001:00021490 _islower 20022490 f LIBCMTD:_ctype.obj + 0001:000214d0 _isdigit 200224d0 f LIBCMTD:_ctype.obj + 0001:00021510 _isxdigit 20022510 f LIBCMTD:_ctype.obj + 0001:00021560 _isspace 20022560 f LIBCMTD:_ctype.obj + 0001:000215a0 _ispunct 200225a0 f LIBCMTD:_ctype.obj + 0001:000215e0 _isalnum 200225e0 f LIBCMTD:_ctype.obj + 0001:00021630 _isprint 20022630 f LIBCMTD:_ctype.obj + 0001:00021680 _isgraph 20022680 f LIBCMTD:_ctype.obj + 0001:000216d0 _iscntrl 200226d0 f LIBCMTD:_ctype.obj + 0001:00021710 ___isascii 20022710 f LIBCMTD:_ctype.obj + 0001:00021720 ___toascii 20022720 f LIBCMTD:_ctype.obj + 0001:00021730 ___iscsymf 20022730 f LIBCMTD:_ctype.obj + 0001:00021790 ___iscsym 20022790 f LIBCMTD:_ctype.obj + 0001:000217f0 __allshl 200227f0 f LIBCMTD:llshl.obj + 0001:00021810 __filbuf 20022810 f LIBCMTD:_filbuf.obj + 0001:00021a00 _ungetc 20022a00 f LIBCMTD:ungetc.obj + 0001:00021a70 __ungetc_lk 20022a70 f LIBCMTD:ungetc.obj + 0001:00021bb0 ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z 20022bb0 f LIBCMTD:handler.obj + 0001:00021be0 ?_query_new_handler@@YAP6AHI@ZXZ 20022be0 f LIBCMTD:handler.obj + 0001:00021bf0 __callnewh 20022bf0 f LIBCMTD:handler.obj + 0001:00021c20 __malloc_base 20022c20 f LIBCMTD:malloc.obj + 0001:00021c40 __nh_malloc_base 20022c40 f LIBCMTD:malloc.obj + 0001:00021cc0 __heap_alloc_base 20022cc0 f LIBCMTD:malloc.obj + 0001:00021d30 __CrtDefaultAllocHook 20022d30 f LIBCMTD:dbghook.obj + 0001:00021d40 __expand_base 20022d40 f LIBCMTD:expand.obj + 0001:00021e00 __realloc_base 20022e00 f LIBCMTD:realloc.obj + 0001:00022000 __free_base 20023000 f LIBCMTD:free.obj + 0001:00022080 __heapchk 20023080 f LIBCMTD:heapchk.obj + 0001:00022100 __heapset 20023100 f LIBCMTD:heapchk.obj + 0001:00022110 __get_sbh_threshold 20023110 f LIBCMTD:sbheap.obj + 0001:00022120 __set_sbh_threshold 20023120 f LIBCMTD:sbheap.obj + 0001:00022150 ___sbh_new_region 20023150 f LIBCMTD:sbheap.obj + 0001:00022330 ___sbh_release_region 20023330 f LIBCMTD:sbheap.obj + 0001:000223b0 ___sbh_decommit_pages 200233b0 f LIBCMTD:sbheap.obj + 0001:00022510 ___sbh_find_block 20023510 f LIBCMTD:sbheap.obj + 0001:000225a0 ___sbh_free_block 200235a0 f LIBCMTD:sbheap.obj + 0001:00022610 ___sbh_alloc_block 20023610 f LIBCMTD:sbheap.obj + 0001:000229d0 ___sbh_alloc_block_from_page 200239d0 f LIBCMTD:sbheap.obj + 0001:00022c80 ___sbh_resize_block 20023c80 f LIBCMTD:sbheap.obj + 0001:00022df0 ___sbh_heap_check 20023df0 f LIBCMTD:sbheap.obj + 0001:00023030 ___init_time 20024030 f LIBCMTD:inittime.obj + 0001:00023b70 ___init_numeric 20024b70 f LIBCMTD:initnum.obj + 0001:00023ea0 ___init_monetary 20024ea0 f LIBCMTD:initmon.obj + 0001:00024300 ___init_ctype 20025300 f LIBCMTD:initctyp.obj + 0001:000246a0 ___init_collate 200256a0 f LIBCMTD:initcoll.obj + 0001:000246b0 _strcspn 200256b0 f LIBCMTD:strcspn.obj + 0001:000246f0 _strncmp 200256f0 f LIBCMTD:strncmp.obj + 0001:00024730 ___get_qualified_locale 20025730 f LIBCMTD:getqloc.obj + 0001:00024dd0 _wcslen 20025dd0 f LIBCMTD:wcslen.obj + 0001:00024e00 __alloc_osfhnd 20025e00 f LIBCMTD:osfinfo.obj + 0001:00024ff0 __set_osfhnd 20025ff0 f LIBCMTD:osfinfo.obj + 0001:000250b0 __free_osfhnd 200260b0 f LIBCMTD:osfinfo.obj + 0001:00025190 __get_osfhandle 20026190 f LIBCMTD:osfinfo.obj + 0001:00025200 __open_osfhandle 20026200 f LIBCMTD:osfinfo.obj + 0001:000252f0 __lock_fhandle 200262f0 f LIBCMTD:osfinfo.obj + 0001:00025380 __unlock_fhandle 20026380 f LIBCMTD:osfinfo.obj + 0001:000253b0 __fcloseall 200263b0 f LIBCMTD:closeall.obj + 0001:00025490 _fflush 20026490 f LIBCMTD:fflush.obj + 0001:000254e0 __fflush_lk 200264e0 f LIBCMTD:fflush.obj + 0001:00025530 __flush 20026530 f LIBCMTD:fflush.obj + 0001:000255f0 __flushall 200265f0 f LIBCMTD:fflush.obj + 0001:00025740 __fptrap 20026740 f LIBCMTD:crt0fp.obj + 0001:00025750 _memmove 20026750 f LIBCMTD:memmove.obj + 0001:00025a90 __mbsnbicoll 20026a90 f LIBCMTD:mbsnbico.obj + 0001:00025ae0 ___wtomb_environ 20026ae0 f LIBCMTD:wtombenv.obj + 0001:00025b90 __read 20026b90 f LIBCMTD:read.obj + 0001:00025c20 __read_lk 20026c20 f LIBCMTD:read.obj + 0001:00026070 __Getdays 20027070 f LIBCMTD:strftime.obj + 0001:000261a0 __Getmonths 200271a0 f LIBCMTD:strftime.obj + 0001:000262d0 __Gettnames 200272d0 f LIBCMTD:strftime.obj + 0001:00026640 _strftime 20027640 f LIBCMTD:strftime.obj + 0001:00026660 __Strftime 20027660 f LIBCMTD:strftime.obj + 0001:00027410 ___getlocaleinfo 20028410 f LIBCMTD:inithelp.obj + 0001:000276a0 _localeconv 200286a0 f LIBCMTD:lconv.obj + 0001:000276b0 ___crtGetLocaleInfoW 200286b0 f LIBCMTD:aw_loc.obj + 0001:00027830 ___crtGetLocaleInfoA 20028830 f LIBCMTD:aw_loc.obj + 0001:000279c0 _wcstol 200289c0 f LIBCMTD:wcstol.obj + 0001:00027cc0 _wcstoul 20028cc0 f LIBCMTD:wcstol.obj + 0001:00027ce0 _fclose 20028ce0 f LIBCMTD:fclose.obj + 0001:00027d70 __fclose_lk 20028d70 f LIBCMTD:fclose.obj + 0001:00027e30 __commit 20028e30 f LIBCMTD:commit.obj + 0001:00027f10 ___crtCompareStringW 20028f10 f LIBCMTD:aw_cmp.obj + 0001:00028210 ___crtCompareStringA 20029210 f LIBCMTD:aw_cmp.obj + 0001:00028620 ___crtsetenv 20029620 f LIBCMTD:setenv.obj + 0001:00028a70 _towupper 20029a70 f LIBCMTD:towupper.obj + 0001:00028b20 __towupper_lk 20029b20 f LIBCMTD:towupper.obj + 0001:00028be0 _iswctype 20029be0 f LIBCMTD:iswctype.obj + 0001:00028c60 _is_wctype 20029c60 f LIBCMTD:iswctype.obj + 0001:00028c80 __close 20029c80 f LIBCMTD:close.obj + 0001:00028d00 __close_lk 20029d00 f LIBCMTD:close.obj + 0001:00028db0 __freebuf 20029db0 f LIBCMTD:_freebuf.obj + 0001:00028e50 __mbschr 20029e50 f LIBCMTD:mbschr.obj + 0001:00028f40 _ResumeThread@4 20029f40 f kernel32:KERNEL32.dll + 0001:00028f46 _CreateThread@24 20029f46 f kernel32:KERNEL32.dll + 0001:00028f4c _TlsSetValue@8 20029f4c f kernel32:KERNEL32.dll + 0001:00028f52 _ExitThread@4 20029f52 f kernel32:KERNEL32.dll + 0001:00028f58 _CloseHandle@4 20029f58 f kernel32:KERNEL32.dll + 0001:00028f5e _InterlockedDecrement@4 20029f5e f kernel32:KERNEL32.dll + 0001:00028f64 _InterlockedIncrement@4 20029f64 f kernel32:KERNEL32.dll + 0001:00028f6a _GetCommandLineA@0 20029f6a f kernel32:KERNEL32.dll + 0001:00028f70 _GetProcAddress@8 20029f70 f kernel32:KERNEL32.dll + 0001:00028f76 _GetVersion@0 20029f76 f kernel32:KERNEL32.dll + 0001:00028f7c _DebugBreak@0 20029f7c f kernel32:KERNEL32.dll + 0001:00028f82 _GetStdHandle@4 20029f82 f kernel32:KERNEL32.dll + 0001:00028f88 _WriteFile@20 20029f88 f kernel32:KERNEL32.dll + 0001:00028f8e _OutputDebugStringA@4 20029f8e f kernel32:KERNEL32.dll + 0001:00028f94 _LoadLibraryA@4 20029f94 f kernel32:KERNEL32.dll + 0001:00028f9a _GetModuleFileNameA@12 20029f9a f kernel32:KERNEL32.dll + 0001:00028fa0 _GetTimeZoneInformation@4 20029fa0 f kernel32:KERNEL32.dll + 0001:00028fa6 _IsBadWritePtr@8 20029fa6 f kernel32:KERNEL32.dll + 0001:00028fac _IsBadReadPtr@8 20029fac f kernel32:KERNEL32.dll + 0001:00028fb2 _HeapValidate@12 20029fb2 f kernel32:KERNEL32.dll + 0001:00028fb8 _GetCurrentThreadId@0 20029fb8 f kernel32:KERNEL32.dll + 0001:00028fbe _TlsAlloc@0 20029fbe f kernel32:KERNEL32.dll + 0001:00028fc4 _TlsFree@4 20029fc4 f kernel32:KERNEL32.dll + 0001:00028fca _TlsGetValue@4 20029fca f kernel32:KERNEL32.dll + 0001:00028fd0 _GetCurrentThread@0 20029fd0 f kernel32:KERNEL32.dll + 0001:00028fd6 _ExitProcess@4 20029fd6 f kernel32:KERNEL32.dll + 0001:00028fdc _TerminateProcess@8 20029fdc f kernel32:KERNEL32.dll + 0001:00028fe2 _GetCurrentProcess@0 20029fe2 f kernel32:KERNEL32.dll + 0001:00028fe8 _UnhandledExceptionFilter@4 20029fe8 f kernel32:KERNEL32.dll + 0001:00028fee _RtlUnwind@16 20029fee f kernel32:KERNEL32.dll + 0001:00028ff4 _MultiByteToWideChar@24 20029ff4 f kernel32:KERNEL32.dll + 0001:00028ffa _WideCharToMultiByte@32 20029ffa f kernel32:KERNEL32.dll + 0001:00029000 _LCMapStringA@24 2002a000 f kernel32:KERNEL32.dll + 0001:00029006 _LCMapStringW@24 2002a006 f kernel32:KERNEL32.dll + 0001:0002900c _InitializeCriticalSection@4 2002a00c f kernel32:KERNEL32.dll + 0001:00029012 _DeleteCriticalSection@4 2002a012 f kernel32:KERNEL32.dll + 0001:00029018 _EnterCriticalSection@4 2002a018 f kernel32:KERNEL32.dll + 0001:0002901e _LeaveCriticalSection@4 2002a01e f kernel32:KERNEL32.dll + 0001:00029024 _FatalAppExitA@8 2002a024 f kernel32:KERNEL32.dll + 0001:0002902a _Sleep@4 2002a02a f kernel32:KERNEL32.dll + 0001:00029030 _SetHandleCount@4 2002a030 f kernel32:KERNEL32.dll + 0001:00029036 _GetFileType@4 2002a036 f kernel32:KERNEL32.dll + 0001:0002903c _GetStartupInfoA@4 2002a03c f kernel32:KERNEL32.dll + 0001:00029042 _GetCPInfo@8 2002a042 f kernel32:KERNEL32.dll + 0001:00029048 _GetACP@0 2002a048 f kernel32:KERNEL32.dll + 0001:0002904e _GetOEMCP@0 2002a04e f kernel32:KERNEL32.dll + 0001:00029054 _FreeEnvironmentStringsA@4 2002a054 f kernel32:KERNEL32.dll + 0001:0002905a _FreeEnvironmentStringsW@4 2002a05a f kernel32:KERNEL32.dll + 0001:00029060 _GetEnvironmentStrings@0 2002a060 f kernel32:KERNEL32.dll + 0001:00029066 _GetEnvironmentStringsW@0 2002a066 f kernel32:KERNEL32.dll + 0001:0002906c _HeapDestroy@4 2002a06c f kernel32:KERNEL32.dll + 0001:00029072 _HeapCreate@12 2002a072 f kernel32:KERNEL32.dll + 0001:00029078 _VirtualFree@12 2002a078 f kernel32:KERNEL32.dll + 0001:0002907e _SetFilePointer@16 2002a07e f kernel32:KERNEL32.dll + 0001:00029084 _SetConsoleCtrlHandler@8 2002a084 f kernel32:KERNEL32.dll + 0001:0002908a _GetStringTypeA@20 2002a08a f kernel32:KERNEL32.dll + 0001:00029090 _GetStringTypeW@16 2002a090 f kernel32:KERNEL32.dll + 0001:00029096 _HeapAlloc@12 2002a096 f kernel32:KERNEL32.dll + 0001:0002909c _HeapReAlloc@16 2002a09c f kernel32:KERNEL32.dll + 0001:000290a2 _HeapFree@12 2002a0a2 f kernel32:KERNEL32.dll + 0001:000290a8 _VirtualAlloc@16 2002a0a8 f kernel32:KERNEL32.dll + 0001:000290ae _IsValidLocale@8 2002a0ae f kernel32:KERNEL32.dll + 0001:000290b4 _IsValidCodePage@4 2002a0b4 f kernel32:KERNEL32.dll + 0001:000290ba _GetUserDefaultLCID@0 2002a0ba f kernel32:KERNEL32.dll + 0001:000290c0 _SetStdHandle@8 2002a0c0 f kernel32:KERNEL32.dll + 0001:000290c6 _ReadFile@20 2002a0c6 f kernel32:KERNEL32.dll + 0001:000290cc _GetLocaleInfoA@16 2002a0cc f kernel32:KERNEL32.dll + 0001:000290d2 _GetLocaleInfoW@16 2002a0d2 f kernel32:KERNEL32.dll + 0001:000290d8 _FlushFileBuffers@4 2002a0d8 f kernel32:KERNEL32.dll + 0001:000290de _CompareStringA@24 2002a0de f kernel32:KERNEL32.dll + 0001:000290e4 _CompareStringW@24 2002a0e4 f kernel32:KERNEL32.dll + 0001:000290ea _SetEnvironmentVariableA@8 2002a0ea f kernel32:KERNEL32.dll + 0002:00000054 ??_C@_0P@LNLA@format?5?$CB?$DN?5NULL?$AA@ 2002b054 LIBCMTD:sprintf.obj + 0002:00000064 ??_C@_09NEAG@sprintf?4c?$AA@ 2002b064 LIBCMTD:sprintf.obj + 0002:00000070 ??_C@_0P@OOIN@string?5?$CB?$DN?5NULL?$AA@ 2002b070 LIBCMTD:sprintf.obj + 0002:00000080 ??_C@_08EJDA@sscanf?4c?$AA@ 2002b080 LIBCMTD:sscanf.obj + 0002:0000008c ??_C@_08GEIE@thread?4c?$AA@ 2002b08c LIBCMTD:thread.obj + 0002:000000a4 ??_C@_08FNDD@strlwr?4c?$AA@ 2002b0a4 LIBCMTD:strlwr.obj + 0002:000000b0 ??_C@_05EODD@IsTNT?$AA@ 2002b0b0 LIBCMTD:dllcrt0.obj + 0002:000000b8 ??_C@_0N@IDOE@kernel32?4dll?$AA@ 2002b0b8 LIBCMTD:dllcrt0.obj + 0002:000000c8 ??_C@_0DP@IHIN@?$CI?$CCinconsistent?5IOB?5fields?$CC?0?5stre@ 2002b0c8 LIBCMTD:_flsbuf.obj + 0002:00000108 ??_C@_09LGEI@_flsbuf?4c?$AA@ 2002b108 LIBCMTD:_flsbuf.obj + 0002:00000114 ??_C@_0M@KJPK@str?5?$CB?$DN?5NULL?$AA@ 2002b114 LIBCMTD:_flsbuf.obj + 0002:00000120 ___lookuptable 2002b120 LIBCMTD:output.obj + 0002:0000017c ??_C@_1O@POHA@?$AA?$CI?$AAn?$AAu?$AAl?$AAl?$AA?$CJ?$AA?$AA@ 2002b17c LIBCMTD:output.obj + 0002:0000018c ??_C@_06ONKE@?$CInull?$CJ?$AA@ 2002b18c LIBCMTD:output.obj + 0002:00000194 ??_C@_08MIHI@output?4c?$AA@ 2002b194 LIBCMTD:output.obj + 0002:000001a0 ??_C@_0P@PIHB@ch?5?$CB?$DN?5_T?$CI?8?20?8?$CJ?$AA@ 2002b1a0 LIBCMTD:output.obj + 0002:000001b0 ??_C@_0BB@BLL@Assertion?5Failed?$AA@ 2002b1b0 LIBCMTD:dbgrpt.obj + 0002:000001c4 ??_C@_05CKBG@Error?$AA@ 2002b1c4 LIBCMTD:dbgrpt.obj + 0002:000001cc ??_C@_07JCGI@Warning?$AA@ 2002b1cc LIBCMTD:dbgrpt.obj + 0002:000001d4 ??_C@_0M@ODEP@?$CFs?$CI?$CFd?$CJ?5?3?5?$CFs?$AA@ 2002b1d4 LIBCMTD:dbgrpt.obj + 0002:000001e0 ??_C@_01BJG@?6?$AA@ 2002b1e0 LIBCMTD:dbgrpt.obj + 0002:000001e4 ??_C@_01FEHD@?$AN?$AA@ 2002b1e4 LIBCMTD:dbgrpt.obj + 0002:000001e8 ??_C@_0BC@OIMC@Assertion?5failed?$CB?$AA@ 2002b1e8 LIBCMTD:dbgrpt.obj + 0002:000001fc ??_C@_0BD@BEAK@Assertion?5failed?3?5?$AA@ 2002b1fc LIBCMTD:dbgrpt.obj + 0002:00000210 ??_C@_0CL@LCCP@_CrtDbgReport?3?5String?5too?5long?5o@ 2002b210 LIBCMTD:dbgrpt.obj + 0002:0000023c ??_C@_0DC@EMDK@Second?5Chance?5Assertion?5Failed?3?5@ 2002b23c LIBCMTD:dbgrpt.obj + 0002:00000270 ??_C@_09NJAK@wsprintfA?$AA@ 2002b270 LIBCMTD:dbgrpt.obj + 0002:0000027c ??_C@_0L@HKL@user32?4dll?$AA@ 2002b27c LIBCMTD:dbgrpt.obj + 0002:00000288 ??_C@_0CD@GCMD@Microsoft?5Visual?5C?$CL?$CL?5Debug?5Libra@ 2002b288 LIBCMTD:dbgrpt.obj + 0002:000002ac ??_C@_0FD@EBDD@Debug?5?$CFs?$CB?6?6Program?3?5?$CFs?$CFs?$CFs?$CFs?$CFs?$CFs@ 2002b2ac LIBCMTD:dbgrpt.obj + 0002:00000300 ??_C@_09DCKN@?6Module?3?5?$AA@ 2002b300 LIBCMTD:dbgrpt.obj + 0002:0000030c ??_C@_07HJII@?6File?3?5?$AA@ 2002b30c LIBCMTD:dbgrpt.obj + 0002:00000314 ??_C@_07LFGN@?6Line?3?5?$AA@ 2002b314 LIBCMTD:dbgrpt.obj + 0002:0000031c ??_C@_02JJJH@?6?6?$AA@ 2002b31c LIBCMTD:dbgrpt.obj + 0002:00000320 ??_C@_0N@NOAB@Expression?3?5?$AA@ 2002b320 LIBCMTD:dbgrpt.obj + 0002:00000330 ??_C@_00A@?$AA@ 2002b330 LIBCMTD:dbgrpt.obj + 0002:00000334 ??_C@_0HD@BHFH@?6?6For?5information?5on?5how?5your?5pr@ 2002b334 LIBCMTD:dbgrpt.obj + 0002:000003a8 ??_C@_03NAME@?4?4?4?$AA@ 2002b3a8 LIBCMTD:dbgrpt.obj + 0002:000003ac ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 2002b3ac LIBCMTD:dbgrpt.obj + 0002:000003c4 ??_C@_08GFHP@dbgrpt?4c?$AA@ 2002b3c4 LIBCMTD:dbgrpt.obj + 0002:000003d0 ??_C@_0BG@FBEA@szUserMessage?5?$CB?$DN?5NULL?$AA@ 2002b3d0 LIBCMTD:dbgrpt.obj + 0002:000003e8 ___dnames 2002b3e8 LIBCMTD:timeset.obj + 0002:00000400 ___mnames 2002b400 LIBCMTD:timeset.obj + 0002:00000428 ??_C@_07DEKI@tzset?4c?$AA@ 2002b428 LIBCMTD:tzset.obj + 0002:00000430 ??_C@_02JHIA@TZ?$AA@ 2002b430 LIBCMTD:tzset.obj + 0002:00000434 ??_C@_08LLGM@gmtime?4c?$AA@ 2002b434 LIBCMTD:gmtime.obj + 0002:00000440 ??_C@_0P@FHEA@stream?5?$CB?$DN?5NULL?$AA@ 2002b440 LIBCMTD:input.obj + 0002:00000450 ??_C@_07IEFA@input?4c?$AA@ 2002b450 LIBCMTD:input.obj + 0002:00000458 ??_C@_06DPMO@Client?$AA@ 2002b458 LIBCMTD:dbgheap.obj + 0002:00000460 ??_C@_06BAFM@Ignore?$AA@ 2002b460 LIBCMTD:dbgheap.obj + 0002:00000468 ??_C@_03DICE@CRT?$AA@ 2002b468 LIBCMTD:dbgheap.obj + 0002:0000046c ??_C@_06BILL@Normal?$AA@ 2002b46c LIBCMTD:dbgheap.obj + 0002:00000474 ??_C@_04NEN@Free?$AA@ 2002b474 LIBCMTD:dbgheap.obj + 0002:0000047c ??_C@_0DC@CGID@Error?3?5memory?5allocation?3?5bad?5me@ 2002b47c LIBCMTD:dbgheap.obj + 0002:000004b0 ??_C@_0CE@FMIA@Invalid?5allocation?5size?3?5?$CFu?5byte@ 2002b4b0 LIBCMTD:dbgheap.obj + 0002:000004d4 ??_C@_02DILL@?$CFs?$AA@ 2002b4d4 LIBCMTD:dbgheap.obj + 0002:000004d8 ??_C@_0CB@CPBI@Client?5hook?5allocation?5failure?4?6@ 2002b4d8 LIBCMTD:dbgheap.obj + 0002:000004fc ??_C@_0DF@DKHF@Client?5hook?5allocation?5failure?5a@ 2002b4fc LIBCMTD:dbgheap.obj + 0002:00000534 ??_C@_09IMJC@dbgheap?4c?$AA@ 2002b534 LIBCMTD:dbgheap.obj + 0002:00000540 ??_C@_0BC@EPKL@_CrtCheckMemory?$CI?$CJ?$AA@ 2002b540 LIBCMTD:dbgheap.obj + 0002:00000554 ??_C@_0BK@JDHA@_pFirstBlock?5?$DN?$DN?5pOldBlock?$AA@ 2002b554 LIBCMTD:dbgheap.obj + 0002:00000570 ??_C@_0BJ@NMEF@_pLastBlock?5?$DN?$DN?5pOldBlock?$AA@ 2002b570 LIBCMTD:dbgheap.obj + 0002:0000058c ??_C@_0DC@BOCN@fRealloc?5?$HM?$HM?5?$CI?$CBfRealloc?5?$CG?$CG?5pNewBl@ 2002b58c LIBCMTD:dbgheap.obj + 0002:000005c0 ??_C@_0DK@DKOM@_BLOCK_TYPE?$CIpOldBlock?9?$DOnBlockUse@ 2002b5c0 LIBCMTD:dbgheap.obj + 0002:000005fc ??_C@_0EF@EDKM@pOldBlock?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5@ 2002b5fc LIBCMTD:dbgheap.obj + 0002:00000644 ??_C@_0CC@GPMO@_CrtIsValidHeapPointer?$CIpUserData@ 2002b644 LIBCMTD:dbgheap.obj + 0002:00000668 ??_C@_0CN@FHGE@Allocation?5too?5large?5or?5negative@ 2002b668 LIBCMTD:dbgheap.obj + 0002:00000698 ??_C@_0CE@EAMN@Client?5hook?5re?9allocation?5failur@ 2002b698 LIBCMTD:dbgheap.obj + 0002:000006bc ??_C@_0DI@KKMM@Client?5hook?5re?9allocation?5failur@ 2002b6bc LIBCMTD:dbgheap.obj + 0002:000006f4 ??_C@_0BG@JCEC@_pFirstBlock?5?$DN?$DN?5pHead?$AA@ 2002b6f4 LIBCMTD:dbgheap.obj + 0002:0000070c ??_C@_0BF@NLNN@_pLastBlock?5?$DN?$DN?5pHead?$AA@ 2002b70c LIBCMTD:dbgheap.obj + 0002:00000724 ??_C@_0BO@PLHH@pHead?9?$DOnBlockUse?5?$DN?$DN?5nBlockUse?$AA@ 2002b724 LIBCMTD:dbgheap.obj + 0002:00000744 ??_C@_0DN@KKIO@pHead?9?$DOnLine?5?$DN?$DN?5IGNORE_LINE?5?$CG?$CG?5p@ 2002b744 LIBCMTD:dbgheap.obj + 0002:00000784 ??_C@_0CK@OJNB@DAMAGE?3?5after?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5at@ 2002b784 LIBCMTD:dbgheap.obj + 0002:000007b0 ??_C@_0CL@IJIL@DAMAGE?3?5before?5?$CFhs?5block?5?$CI?$CD?$CFd?$CJ?5a@ 2002b7b0 LIBCMTD:dbgheap.obj + 0002:000007dc ??_C@_0CH@PHOC@_BLOCK_TYPE_IS_VALID?$CIpHead?9?$DOnBlo@ 2002b7dc LIBCMTD:dbgheap.obj + 0002:00000804 ??_C@_0BL@MBNA@Client?5hook?5free?5failure?4?6?$AA@ 2002b804 LIBCMTD:dbgheap.obj + 0002:00000820 ??_C@_0DK@EKKL@memory?5check?5error?5at?50x?$CF08X?5?$DN?50@ 2002b820 LIBCMTD:dbgheap.obj + 0002:0000085c ??_C@_0CJ@GCII@?$CFhs?5located?5at?50x?$CF08X?5is?5?$CFu?5byte@ 2002b85c LIBCMTD:dbgheap.obj + 0002:00000888 ??_C@_0CA@EJPI@?$CFhs?5allocated?5at?5file?5?$CFhs?$CI?$CFd?$CJ?4?6?$AA@ 2002b888 LIBCMTD:dbgheap.obj + 0002:000008a8 ??_C@_0CJ@LHHG@DAMAGE?3?5on?5top?5of?5Free?5block?5at?5@ 2002b8a8 LIBCMTD:dbgheap.obj + 0002:000008d4 ??_C@_07GJHM@DAMAGED?$AA@ 2002b8d4 LIBCMTD:dbgheap.obj + 0002:000008dc ??_C@_0CL@ODIE@_heapchk?5fails?5with?5unknown?5retu@ 2002b8dc LIBCMTD:dbgheap.obj + 0002:00000908 ??_C@_0CC@EHNC@_heapchk?5fails?5with?5_HEAPBADPTR?4@ 2002b908 LIBCMTD:dbgheap.obj + 0002:0000092c ??_C@_0CC@JNDP@_heapchk?5fails?5with?5_HEAPBADEND?4@ 2002b92c LIBCMTD:dbgheap.obj + 0002:00000950 ??_C@_0CD@DNMG@_heapchk?5fails?5with?5_HEAPBADNODE@ 2002b950 LIBCMTD:dbgheap.obj + 0002:00000974 ??_C@_0CE@JMCB@_heapchk?5fails?5with?5_HEAPBADBEGI@ 2002b974 LIBCMTD:dbgheap.obj + 0002:00000998 ??_C@_0CD@MEMI@Bad?5memory?5block?5found?5at?50x?$CF08X@ 2002b998 LIBCMTD:dbgheap.obj + 0002:000009bc ??_C@_0CI@GMAO@_CrtMemCheckPoint?3?5NULL?5state?5po@ 2002b9bc LIBCMTD:dbgheap.obj + 0002:000009e4 ??_C@_0CI@MNAE@_CrtMemDifference?3?5NULL?5state?5po@ 2002b9e4 LIBCMTD:dbgheap.obj + 0002:00000a0c ??_C@_0BH@PKIJ@Object?5dump?5complete?4?6?$AA@ 2002ba0c LIBCMTD:dbgheap.obj + 0002:00000a24 ??_C@_0DB@DBPF@crt?5block?5at?50x?$CF08X?0?5subtype?5?$CFx?0@ 2002ba24 LIBCMTD:dbgheap.obj + 0002:00000a58 ??_C@_0CI@JLM@normal?5block?5at?50x?$CF08X?0?5?$CFu?5bytes@ 2002ba58 LIBCMTD:dbgheap.obj + 0002:00000a80 ??_C@_0DE@PFEA@client?5block?5at?50x?$CF08X?0?5subtype?5@ 2002ba80 LIBCMTD:dbgheap.obj + 0002:00000ab4 ??_C@_06MBCE@?$HL?$CFld?$HN?5?$AA@ 2002bab4 LIBCMTD:dbgheap.obj + 0002:00000abc ??_C@_0L@BLDJ@?$CFhs?$CI?$CFd?$CJ?5?3?5?$AA@ 2002babc LIBCMTD:dbgheap.obj + 0002:00000ac8 ??_C@_0BE@FEMA@?$CDFile?5Error?$CD?$CI?$CFd?$CJ?5?3?5?$AA@ 2002bac8 LIBCMTD:dbgheap.obj + 0002:00000adc ??_C@_0BE@FPPM@Dumping?5objects?5?9?$DO?6?$AA@ 2002badc LIBCMTD:dbgheap.obj + 0002:00000af0 ??_C@_0BA@POLM@?5Data?3?5?$DM?$CFs?$DO?5?$CFs?6?$AA@ 2002baf0 LIBCMTD:dbgheap.obj + 0002:00000b00 ??_C@_05JLAO@?$CF?42X?5?$AA@ 2002bb00 LIBCMTD:dbgheap.obj + 0002:00000b08 ??_C@_0BI@KONA@Detected?5memory?5leaks?$CB?6?$AA@ 2002bb08 LIBCMTD:dbgheap.obj + 0002:00000b20 ??_C@_0BP@LCCN@Total?5allocations?3?5?$CFld?5bytes?4?6?$AA@ 2002bb20 LIBCMTD:dbgheap.obj + 0002:00000b40 ??_C@_0CB@COID@Largest?5number?5used?3?5?$CFld?5bytes?4?6@ 2002bb40 LIBCMTD:dbgheap.obj + 0002:00000b64 ??_C@_0BO@MEJD@?$CFld?5bytes?5in?5?$CFld?5?$CFhs?5Blocks?4?6?$AA@ 2002bb64 LIBCMTD:dbgheap.obj + 0002:00000b84 ??_C@_0L@ENLJ@tidtable?4c?$AA@ 2002bb84 LIBCMTD:tidtable.obj + 0002:00000b90 ??_C@_08GINJ@aw_map?4c?$AA@ 2002bb90 LIBCMTD:aw_map.obj + 0002:00000b9c ??_C@_01A@?$AA?$AA@ 2002bb9c LIBCMTD:aw_map.obj + 0002:00000ba0 ??_C@_13A@?$AA?$AA?$AA?$AA@ 2002bba0 LIBCMTD:aw_map.obj + 0002:00000ba4 ??_C@_07PDLA@mlock?4c?$AA@ 2002bba4 LIBCMTD:mlock.obj + 0002:00000bac ??_C@_07PCLE@LC_TIME?$AA@ 2002bbac LIBCMTD:setlocal.obj + 0002:00000bb4 ??_C@_0L@NKG@LC_NUMERIC?$AA@ 2002bbb4 LIBCMTD:setlocal.obj + 0002:00000bc0 ??_C@_0M@CBIH@LC_MONETARY?$AA@ 2002bbc0 LIBCMTD:setlocal.obj + 0002:00000bcc ??_C@_08LFGE@LC_CTYPE?$AA@ 2002bbcc LIBCMTD:setlocal.obj + 0002:00000bd8 ??_C@_0L@CFLC@LC_COLLATE?$AA@ 2002bbd8 LIBCMTD:setlocal.obj + 0002:00000be4 ??_C@_06GCPK@LC_ALL?$AA@ 2002bbe4 LIBCMTD:setlocal.obj + 0002:00000bec ??_C@_01FAJB@?$DL?$AA@ 2002bbec LIBCMTD:setlocal.obj + 0002:00000bf0 ??_C@_02BGDO@?$DN?$DL?$AA@ 2002bbf0 LIBCMTD:setlocal.obj + 0002:00000bf4 ??_C@_0L@MOEE@setlocal?4c?$AA@ 2002bbf4 LIBCMTD:setlocal.obj + 0002:00000c00 ??_C@_01KPOD@?$DN?$AA@ 2002bc00 LIBCMTD:setlocal.obj + 0002:00000c04 ??_C@_03DBOJ@_?4?0?$AA@ 2002bc04 LIBCMTD:setlocal.obj + 0002:00000c08 ??_C@_01PJCK@?4?$AA@ 2002bc08 LIBCMTD:setlocal.obj + 0002:00000c0c ??_C@_01NON@_?$AA@ 2002bc0c LIBCMTD:setlocal.obj + 0002:00000c10 ??_C@_08KFDJ@ioinit?4c?$AA@ 2002bc10 LIBCMTD:ioinit.obj + 0002:00000c1c ??_C@_09IGKD@stdenvp?4c?$AA@ 2002bc1c LIBCMTD:stdenvp.obj + 0002:00000c28 ??_C@_09MPMN@stdargv?4c?$AA@ 2002bc28 LIBCMTD:stdargv.obj + 0002:00000c34 ??_C@_08FFKK@aw_env?4c?$AA@ 2002bc34 LIBCMTD:aw_env.obj + 0002:00000c40 ??_C@_0P@GGKG@runtime?5error?5?$AA@ 2002bc40 LIBCMTD:crt0msg.obj + 0002:00000c50 ??_C@_02PIMC@?$AN?6?$AA@ 2002bc50 LIBCMTD:crt0msg.obj + 0002:00000c54 ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 2002bc54 LIBCMTD:crt0msg.obj + 0002:00000c64 ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 2002bc64 LIBCMTD:crt0msg.obj + 0002:00000c74 ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 2002bc74 LIBCMTD:crt0msg.obj + 0002:00000c84 ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 2002bc84 LIBCMTD:crt0msg.obj + 0002:00000cac ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 2002bcac LIBCMTD:crt0msg.obj + 0002:00000ce4 ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 2002bce4 LIBCMTD:crt0msg.obj + 0002:00000d1c ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 2002bd1c LIBCMTD:crt0msg.obj + 0002:00000d44 ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 2002bd44 LIBCMTD:crt0msg.obj + 0002:00000d7c ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 2002bd7c LIBCMTD:crt0msg.obj + 0002:00000da8 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 2002bda8 LIBCMTD:crt0msg.obj + 0002:00000dcc ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 2002bdcc LIBCMTD:crt0msg.obj + 0002:00000dfc ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 2002bdfc LIBCMTD:crt0msg.obj + 0002:00000e28 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 2002be28 LIBCMTD:crt0msg.obj + 0002:00000e4c ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 2002be4c LIBCMTD:crt0msg.obj + 0002:00000e78 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 2002be78 LIBCMTD:crt0msg.obj + 0002:00000ea4 ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 2002bea4 LIBCMTD:crt0msg.obj + 0002:00000ecc ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 2002becc LIBCMTD:crt0msg.obj + 0002:00000ef4 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 2002bef4 LIBCMTD:crt0msg.obj + 0002:00000f10 ??_C@_09EMDO@_getbuf?4c?$AA@ 2002bf10 LIBCMTD:_getbuf.obj + 0002:00000f1c ??_C@_07HPAH@_file?4c?$AA@ 2002bf1c LIBCMTD:_file.obj + 0002:00000f24 ??_C@_0L@HE@vsprintf?4c?$AA@ 2002bf24 LIBCMTD:vsnprint.obj + 0002:00000f30 ??_C@_08CNMA@winsig?4c?$AA@ 2002bf30 LIBCMTD:winsig.obj + 0002:00000f3c ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 2002bf3c LIBCMTD:crtmbox.obj + 0002:00000f50 ??_C@_0BA@GILI@GetActiveWindow?$AA@ 2002bf50 LIBCMTD:crtmbox.obj + 0002:00000f60 ??_C@_0M@PKCK@MessageBoxA?$AA@ 2002bf60 LIBCMTD:crtmbox.obj + 0002:00000f6c ??_C@_08OKGP@aw_str?4c?$AA@ 2002bf6c LIBCMTD:aw_str.obj + 0002:00000f78 ??_C@_0L@LIHO@wcstombs?4c?$AA@ 2002bf78 LIBCMTD:wcstombs.obj + 0002:00000f84 ??_C@_0N@ILLM@pwcs?5?$CB?$DN?5NULL?$AA@ 2002bf84 LIBCMTD:wcstombs.obj + 0002:00000f94 ??_C@_08MOLN@mbtowc?4c?$AA@ 2002bf94 LIBCMTD:mbtowc.obj + 0002:00000fa0 ??_C@_0CD@NPPL@MB_CUR_MAX?5?$DN?$DN?51?5?$HM?$HM?5MB_CUR_MAX?5?$DN?$DN@ 2002bfa0 LIBCMTD:mbtowc.obj + 0002:00000fc4 ??_C@_09DNOI@_filbuf?4c?$AA@ 2002bfc4 LIBCMTD:_filbuf.obj + 0002:00000fd0 ??_C@_08JKP@ungetc?4c?$AA@ 2002bfd0 LIBCMTD:ungetc.obj + 0002:00000fdc ??_C@_0L@EEGJ@inittime?4c?$AA@ 2002bfdc LIBCMTD:inittime.obj + 0002:00000fe8 ??_C@_09IMJJ@initnum?4c?$AA@ 2002bfe8 LIBCMTD:initnum.obj + 0002:00000ff4 ??_C@_09KPNI@initmon?4c?$AA@ 2002bff4 LIBCMTD:initmon.obj + 0002:00001000 ??_C@_0L@COIL@initctyp?4c?$AA@ 2002c000 LIBCMTD:initctyp.obj + 0002:0000100c ??_C@_0O@GLHB@united?9states?$AA@ 2002c00c LIBCMTD:getqloc.obj + 0002:0000101c ??_C@_0P@IIKK@united?9kingdom?$AA@ 2002c01c LIBCMTD:getqloc.obj + 0002:0000102c ??_C@_0O@ILBP@united?5states?$AA@ 2002c02c LIBCMTD:getqloc.obj + 0002:0000103c ??_C@_0P@KBEK@united?5kingdom?$AA@ 2002c03c LIBCMTD:getqloc.obj + 0002:0000104c ??_C@_03IGKO@twn?$AA@ 2002c04c LIBCMTD:getqloc.obj + 0002:00001050 ??_C@_06CMKP@turkey?$AA@ 2002c050 LIBCMTD:getqloc.obj + 0002:00001058 ??_C@_03PMGP@tur?$AA@ 2002c058 LIBCMTD:getqloc.obj + 0002:0000105c ??_C@_06OBJC@taiwan?$AA@ 2002c05c LIBCMTD:getqloc.obj + 0002:00001064 ??_C@_0M@EKGN@switzerland?$AA@ 2002c064 LIBCMTD:getqloc.obj + 0002:00001070 ??_C@_06PJFL@sweden?$AA@ 2002c070 LIBCMTD:getqloc.obj + 0002:00001078 ??_C@_03JDMO@swe?$AA@ 2002c078 LIBCMTD:getqloc.obj + 0002:0000107c ??_C@_03COKO@svk?$AA@ 2002c07c LIBCMTD:getqloc.obj + 0002:00001080 ??_C@_05FBKI@spain?$AA@ 2002c080 LIBCMTD:getqloc.obj + 0002:00001088 ??_C@_0M@BDFM@south?9korea?$AA@ 2002c088 LIBCMTD:getqloc.obj + 0002:00001094 ??_C@_0M@HNHN@south?5korea?$AA@ 2002c094 LIBCMTD:getqloc.obj + 0002:000010a0 ??_C@_03FANM@sgp?$AA@ 2002c0a0 LIBCMTD:getqloc.obj + 0002:000010a4 ??_C@_09EOGO@singapore?$AA@ 2002c0a4 LIBCMTD:getqloc.obj + 0002:000010b0 ??_C@_06NHNE@russia?$AA@ 2002c0b0 LIBCMTD:getqloc.obj + 0002:000010b8 ??_C@_03CKBC@prt?$AA@ 2002c0b8 LIBCMTD:getqloc.obj + 0002:000010bc ??_C@_08EJOH@pr?9china?$AA@ 2002c0bc LIBCMTD:getqloc.obj + 0002:000010c8 ??_C@_08CHMG@pr?5china?$AA@ 2002c0c8 LIBCMTD:getqloc.obj + 0002:000010d4 ??_C@_08GGAN@portugal?$AA@ 2002c0d4 LIBCMTD:getqloc.obj + 0002:000010e0 ??_C@_06NOHH@poland?$AA@ 2002c0e0 LIBCMTD:getqloc.obj + 0002:000010e8 ??_C@_03EECH@pol?$AA@ 2002c0e8 LIBCMTD:getqloc.obj + 0002:000010ec ??_C@_03DPCG@nzl?$AA@ 2002c0ec LIBCMTD:getqloc.obj + 0002:000010f0 ??_C@_02OCJK@nz?$AA@ 2002c0f0 LIBCMTD:getqloc.obj + 0002:000010f4 ??_C@_06BAPG@norway?$AA@ 2002c0f4 LIBCMTD:getqloc.obj + 0002:000010fc ??_C@_0M@MMKA@new?9zealand?$AA@ 2002c0fc LIBCMTD:getqloc.obj + 0002:00001108 ??_C@_0M@OFEA@new?5zealand?$AA@ 2002c108 LIBCMTD:getqloc.obj + 0002:00001114 ??_C@_0M@POGE@netherlands?$AA@ 2002c114 LIBCMTD:getqloc.obj + 0002:00001120 ??_C@_06KJLN@mexico?$AA@ 2002c120 LIBCMTD:getqloc.obj + 0002:00001128 ??_C@_03HEJJ@mex?$AA@ 2002c128 LIBCMTD:getqloc.obj + 0002:0000112c ??_C@_05OOCK@korea?$AA@ 2002c12c LIBCMTD:getqloc.obj + 0002:00001134 ??_C@_05EEKJ@japan?$AA@ 2002c134 LIBCMTD:getqloc.obj + 0002:0000113c ??_C@_05DHEA@italy?$AA@ 2002c13c LIBCMTD:getqloc.obj + 0002:00001144 ??_C@_03DEBD@irl?$AA@ 2002c144 LIBCMTD:getqloc.obj + 0002:00001148 ??_C@_07JJLD@ireland?$AA@ 2002c148 LIBCMTD:getqloc.obj + 0002:00001150 ??_C@_07FGBB@iceland?$AA@ 2002c150 LIBCMTD:getqloc.obj + 0002:00001158 ??_C@_07IDDB@hungary?$AA@ 2002c158 LIBCMTD:getqloc.obj + 0002:00001160 ??_C@_09MGEH@hong?9kong?$AA@ 2002c160 LIBCMTD:getqloc.obj + 0002:0000116c ??_C@_09OHNN@hong?5kong?$AA@ 2002c16c LIBCMTD:getqloc.obj + 0002:00001178 ??_C@_07CCAK@holland?$AA@ 2002c178 LIBCMTD:getqloc.obj + 0002:00001180 ??_C@_03EFD@hkg?$AA@ 2002c180 LIBCMTD:getqloc.obj + 0002:00001184 ??_C@_06FLIB@greece?$AA@ 2002c184 LIBCMTD:getqloc.obj + 0002:0000118c ??_C@_0O@MEPL@great?5britain?$AA@ 2002c18c LIBCMTD:getqloc.obj + 0002:0000119c ??_C@_03EJIM@grc?$AA@ 2002c19c LIBCMTD:getqloc.obj + 0002:000011a0 ??_C@_07CPP@germany?$AA@ 2002c1a0 LIBCMTD:getqloc.obj + 0002:000011a8 ??_C@_03CAMC@gbr?$AA@ 2002c1a8 LIBCMTD:getqloc.obj + 0002:000011ac ??_C@_06DNOH@france?$AA@ 2002c1ac LIBCMTD:getqloc.obj + 0002:000011b4 ??_C@_07IMFA@finland?$AA@ 2002c1b4 LIBCMTD:getqloc.obj + 0002:000011bc ??_C@_07LGIB@england?$AA@ 2002c1bc LIBCMTD:getqloc.obj + 0002:000011c4 ??_C@_03GOFI@dnk?$AA@ 2002c1c4 LIBCMTD:getqloc.obj + 0002:000011c8 ??_C@_07ILKC@denmark?$AA@ 2002c1c8 LIBCMTD:getqloc.obj + 0002:000011d0 ??_C@_03ELPA@cze?$AA@ 2002c1d0 LIBCMTD:getqloc.obj + 0002:000011d4 ??_C@_03KHAN@chn?$AA@ 2002c1d4 LIBCMTD:getqloc.obj + 0002:000011d8 ??_C@_05NMPB@china?$AA@ 2002c1d8 LIBCMTD:getqloc.obj + 0002:000011e0 ??_C@_03MAM@che?$AA@ 2002c1e0 LIBCMTD:getqloc.obj + 0002:000011e4 ??_C@_06CJAO@canada?$AA@ 2002c1e4 LIBCMTD:getqloc.obj + 0002:000011ec ??_C@_03EPD@can?$AA@ 2002c1ec LIBCMTD:getqloc.obj + 0002:000011f0 ??_C@_07GN@britain?$AA@ 2002c1f0 LIBCMTD:getqloc.obj + 0002:000011f8 ??_C@_06GEHJ@brazil?$AA@ 2002c1f8 LIBCMTD:getqloc.obj + 0002:00001200 ??_C@_03GOO@bra?$AA@ 2002c200 LIBCMTD:getqloc.obj + 0002:00001204 ??_C@_07ECDD@belgium?$AA@ 2002c204 LIBCMTD:getqloc.obj + 0002:0000120c ??_C@_03FJGB@bel?$AA@ 2002c20c LIBCMTD:getqloc.obj + 0002:00001210 ??_C@_03DIDL@aut?$AA@ 2002c210 LIBCMTD:getqloc.obj + 0002:00001214 ??_C@_07OIK@austria?$AA@ 2002c214 LIBCMTD:getqloc.obj + 0002:0000121c ??_C@_09MKKB@australia?$AA@ 2002c21c LIBCMTD:getqloc.obj + 0002:00001228 ??_C@_03GNNO@aus?$AA@ 2002c228 LIBCMTD:getqloc.obj + 0002:0000122c ??_C@_07DLAK@america?$AA@ 2002c22c LIBCMTD:getqloc.obj + 0002:00001234 ??_C@_03IPEP@usa?$AA@ 2002c234 LIBCMTD:getqloc.obj + 0002:00001238 ??_C@_02PILH@us?$AA@ 2002c238 LIBCMTD:getqloc.obj + 0002:0000123c ??_C@_02FHP@uk?$AA@ 2002c23c LIBCMTD:getqloc.obj + 0002:00001240 ??_C@_07BNFK@turkish?$AA@ 2002c240 LIBCMTD:getqloc.obj + 0002:00001248 ??_C@_03MKGF@trk?$AA@ 2002c248 LIBCMTD:getqloc.obj + 0002:0000124c ??_C@_05DEAI@swiss?$AA@ 2002c24c LIBCMTD:getqloc.obj + 0002:00001254 ??_C@_07ENHD@swedish?$AA@ 2002c254 LIBCMTD:getqloc.obj + 0002:0000125c ??_C@_03IFGE@sve?$AA@ 2002c25c LIBCMTD:getqloc.obj + 0002:00001260 ??_C@_0P@NJBN@spanish?9modern?$AA@ 2002c260 LIBCMTD:getqloc.obj + 0002:00001270 ??_C@_0BA@NHDN@spanish?9mexican?$AA@ 2002c270 LIBCMTD:getqloc.obj + 0002:00001280 ??_C@_07EFLC@spanish?$AA@ 2002c280 LIBCMTD:getqloc.obj + 0002:00001288 ??_C@_06KFFJ@slovak?$AA@ 2002c288 LIBCMTD:getqloc.obj + 0002:00001290 ??_C@_03EBAN@sky?$AA@ 2002c290 LIBCMTD:getqloc.obj + 0002:00001294 ??_C@_07JNDN@russian?$AA@ 2002c294 LIBCMTD:getqloc.obj + 0002:0000129c ??_C@_03LKIP@rus?$AA@ 2002c29c LIBCMTD:getqloc.obj + 0002:000012a0 ??_C@_03LCE@ptg?$AA@ 2002c2a0 LIBCMTD:getqloc.obj + 0002:000012a4 ??_C@_03LOP@ptb?$AA@ 2002c2a4 LIBCMTD:getqloc.obj + 0002:000012a8 ??_C@_0BF@KMMM@portuguese?9brazilian?$AA@ 2002c2a8 LIBCMTD:getqloc.obj + 0002:000012c0 ??_C@_0L@HNPF@portuguese?$AA@ 2002c2c0 LIBCMTD:getqloc.obj + 0002:000012cc ??_C@_06CDNL@polish?$AA@ 2002c2cc LIBCMTD:getqloc.obj + 0002:000012d4 ??_C@_03CKDN@plk?$AA@ 2002c2d4 LIBCMTD:getqloc.obj + 0002:000012d8 ??_C@_0BC@BAAE@norwegian?9nynorsk?$AA@ 2002c2d8 LIBCMTD:getqloc.obj + 0002:000012ec ??_C@_0BB@PBHK@norwegian?9bokmal?$AA@ 2002c2ec LIBCMTD:getqloc.obj + 0002:00001300 ??_C@_09EHKL@norwegian?$AA@ 2002c300 LIBCMTD:getqloc.obj + 0002:0000130c ??_C@_03BLDF@nor?$AA@ 2002c30c LIBCMTD:getqloc.obj + 0002:00001310 ??_C@_03EMKB@non?$AA@ 2002c310 LIBCMTD:getqloc.obj + 0002:00001314 ??_C@_03HGMI@nld?$AA@ 2002c314 LIBCMTD:getqloc.obj + 0002:00001318 ??_C@_03IJLK@nlb?$AA@ 2002c318 LIBCMTD:getqloc.obj + 0002:0000131c ??_C@_06KKAE@korean?$AA@ 2002c31c LIBCMTD:getqloc.obj + 0002:00001324 ??_C@_03BHJ@kor?$AA@ 2002c324 LIBCMTD:getqloc.obj + 0002:00001328 ??_C@_03LKFD@jpn?$AA@ 2002c328 LIBCMTD:getqloc.obj + 0002:0000132c ??_C@_08KCAB@japanese?$AA@ 2002c32c LIBCMTD:getqloc.obj + 0002:00001338 ??_C@_03OLMB@its?$AA@ 2002c338 LIBCMTD:getqloc.obj + 0002:0000133c ??_C@_0O@BEAN@italian?9swiss?$AA@ 2002c33c LIBCMTD:getqloc.obj + 0002:0000134c ??_C@_07CBME@italian?$AA@ 2002c34c LIBCMTD:getqloc.obj + 0002:00001354 ??_C@_03BHJP@ita?$AA@ 2002c354 LIBCMTD:getqloc.obj + 0002:00001358 ??_C@_03CCLJ@isl?$AA@ 2002c358 LIBCMTD:getqloc.obj + 0002:0000135c ??_C@_0O@OIFK@irish?9english?$AA@ 2002c35c LIBCMTD:getqloc.obj + 0002:0000136c ??_C@_09OEEF@icelandic?$AA@ 2002c36c LIBCMTD:getqloc.obj + 0002:00001378 ??_C@_09IBNG@hungarian?$AA@ 2002c378 LIBCMTD:getqloc.obj + 0002:00001384 ??_C@_03FCHO@hun?$AA@ 2002c384 LIBCMTD:getqloc.obj + 0002:00001388 ??_C@_05DOKD@greek?$AA@ 2002c388 LIBCMTD:getqloc.obj + 0002:00001390 ??_C@_0N@NBPL@german?9swiss?$AA@ 2002c390 LIBCMTD:getqloc.obj + 0002:000013a0 ??_C@_0BA@MKDC@german?9austrian?$AA@ 2002c3a0 LIBCMTD:getqloc.obj + 0002:000013b0 ??_C@_06IAFA@german?$AA@ 2002c3b0 LIBCMTD:getqloc.obj + 0002:000013b8 ??_C@_03LCOK@frs?$AA@ 2002c3b8 LIBCMTD:getqloc.obj + 0002:000013bc ??_C@_0N@ODNB@french?9swiss?$AA@ 2002c3bc LIBCMTD:getqloc.obj + 0002:000013cc ??_C@_0BA@NABK@french?9canadian?$AA@ 2002c3cc LIBCMTD:getqloc.obj + 0002:000013dc ??_C@_0P@CJNO@french?9belgian?$AA@ 2002c3dc LIBCMTD:getqloc.obj + 0002:000013ec ??_C@_06PMNM@french?$AA@ 2002c3ec LIBCMTD:getqloc.obj + 0002:000013f4 ??_C@_03BLJK@frc?$AA@ 2002c3f4 LIBCMTD:getqloc.obj + 0002:000013f8 ??_C@_03LBAN@frb?$AA@ 2002c3f8 LIBCMTD:getqloc.obj + 0002:000013fc ??_C@_03EOLE@fra?$AA@ 2002c3fc LIBCMTD:getqloc.obj + 0002:00001400 ??_C@_07DLFI@finnish?$AA@ 2002c400 LIBCMTD:getqloc.obj + 0002:00001408 ??_C@_03KLOL@fin?$AA@ 2002c408 LIBCMTD:getqloc.obj + 0002:0000140c ??_C@_03KNMC@esp?$AA@ 2002c40c LIBCMTD:getqloc.obj + 0002:00001410 ??_C@_03KPHI@esn?$AA@ 2002c410 LIBCMTD:getqloc.obj + 0002:00001414 ??_C@_03FAMB@esm?$AA@ 2002c414 LIBCMTD:getqloc.obj + 0002:00001418 ??_C@_03DPKJ@enz?$AA@ 2002c418 LIBCMTD:getqloc.obj + 0002:0000141c ??_C@_03DOPE@enu?$AA@ 2002c41c LIBCMTD:getqloc.obj + 0002:00001420 ??_C@_03GJGA@eni?$AA@ 2002c420 LIBCMTD:getqloc.obj + 0002:00001424 ??_C@_0M@LJOL@english?9usa?$AA@ 2002c424 LIBCMTD:getqloc.obj + 0002:00001430 ??_C@_0L@FMNC@english?9us?$AA@ 2002c430 LIBCMTD:getqloc.obj + 0002:0000143c ??_C@_0L@KBBK@english?9uk?$AA@ 2002c43c LIBCMTD:getqloc.obj + 0002:00001448 ??_C@_0L@EGPP@english?9nz?$AA@ 2002c448 LIBCMTD:getqloc.obj + 0002:00001454 ??_C@_0M@PMJI@english?9ire?$AA@ 2002c454 LIBCMTD:getqloc.obj + 0002:00001460 ??_C@_0M@DCFH@english?9can?$AA@ 2002c460 LIBCMTD:getqloc.obj + 0002:0000146c ??_C@_0M@FLHK@english?9aus?$AA@ 2002c46c LIBCMTD:getqloc.obj + 0002:00001478 ??_C@_0BB@HNCK@english?9american?$AA@ 2002c478 LIBCMTD:getqloc.obj + 0002:0000148c ??_C@_07ELCN@english?$AA@ 2002c48c LIBCMTD:getqloc.obj + 0002:00001494 ??_C@_03MCKK@eng?$AA@ 2002c494 LIBCMTD:getqloc.obj + 0002:00001498 ??_C@_03GIPG@enc?$AA@ 2002c498 LIBCMTD:getqloc.obj + 0002:0000149c ??_C@_03DNNI@ena?$AA@ 2002c49c LIBCMTD:getqloc.obj + 0002:000014a0 ??_C@_03EEPO@ell?$AA@ 2002c4a0 LIBCMTD:getqloc.obj + 0002:000014a4 ??_C@_0O@PAMI@dutch?9belgian?$AA@ 2002c4a4 LIBCMTD:getqloc.obj + 0002:000014b4 ??_C@_05NPEI@dutch?$AA@ 2002c4b4 LIBCMTD:getqloc.obj + 0002:000014bc ??_C@_03OCEJ@deu?$AA@ 2002c4bc LIBCMTD:getqloc.obj + 0002:000014c0 ??_C@_03BNDL@des?$AA@ 2002c4c0 LIBCMTD:getqloc.obj + 0002:000014c4 ??_C@_03OBGF@dea?$AA@ 2002c4c4 LIBCMTD:getqloc.obj + 0002:000014c8 ??_C@_06KEAI@danish?$AA@ 2002c4c8 LIBCMTD:getqloc.obj + 0002:000014d0 ??_C@_03LKJC@dan?$AA@ 2002c4d0 LIBCMTD:getqloc.obj + 0002:000014d4 ??_C@_05BMOA@czech?$AA@ 2002c4d4 LIBCMTD:getqloc.obj + 0002:000014dc ??_C@_03LPJK@csy?$AA@ 2002c4dc LIBCMTD:getqloc.obj + 0002:000014e0 ??_C@_03POL@cht?$AA@ 2002c4e0 LIBCMTD:getqloc.obj + 0002:000014e4 ??_C@_03FKAO@chs?$AA@ 2002c4e4 LIBCMTD:getqloc.obj + 0002:000014e8 ??_C@_0BE@FPEJ@chinese?9traditional?$AA@ 2002c4e8 LIBCMTD:getqloc.obj + 0002:000014fc ??_C@_0BC@CHFL@chinese?9singapore?$AA@ 2002c4fc LIBCMTD:getqloc.obj + 0002:00001510 ??_C@_0BD@DCMH@chinese?9simplified?$AA@ 2002c510 LIBCMTD:getqloc.obj + 0002:00001524 ??_C@_0BB@JMOE@chinese?9hongkong?$AA@ 2002c524 LIBCMTD:getqloc.obj + 0002:00001538 ??_C@_07NGFN@chinese?$AA@ 2002c538 LIBCMTD:getqloc.obj + 0002:00001540 ??_C@_03PCOI@chi?$AA@ 2002c540 LIBCMTD:getqloc.obj + 0002:00001544 ??_C@_03FIHP@chh?$AA@ 2002c544 LIBCMTD:getqloc.obj + 0002:00001548 ??_C@_08HFLO@canadian?$AA@ 2002c548 LIBCMTD:getqloc.obj + 0002:00001554 ??_C@_07INIJ@belgian?$AA@ 2002c554 LIBCMTD:getqloc.obj + 0002:0000155c ??_C@_0L@LCCA@australian?$AA@ 2002c55c LIBCMTD:getqloc.obj + 0002:00001568 ??_C@_0BB@BJIO@american?9english?$AA@ 2002c568 LIBCMTD:getqloc.obj + 0002:0000157c ??_C@_0BB@DAGO@american?5english?$AA@ 2002c57c LIBCMTD:getqloc.obj + 0002:00001590 ??_C@_08HENB@american?$AA@ 2002c590 LIBCMTD:getqloc.obj + 0002:0000159c ??_C@_03DGJE@OCP?$AA@ 2002c59c LIBCMTD:getqloc.obj + 0002:000015a0 ??_C@_03EKFG@ACP?$AA@ 2002c5a0 LIBCMTD:getqloc.obj + 0002:000015a4 ??_C@_09LNLM@osfinfo?4c?$AA@ 2002c5a4 LIBCMTD:osfinfo.obj + 0002:000015b0 ??_C@_0L@EJNO@wtombenv?4c?$AA@ 2002c5b0 LIBCMTD:wtombenv.obj + 0002:000015bc ??_C@_07CJME@H?3mm?3ss?$AA@ 2002c5bc LIBCMTD:strftime.obj + 0002:000015c4 ??_C@_0BE@MHI@dddd?0?5MMMM?5dd?0?5yyyy?$AA@ 2002c5c4 LIBCMTD:strftime.obj + 0002:000015d8 ??_C@_06HCAD@M?1d?1yy?$AA@ 2002c5d8 LIBCMTD:strftime.obj + 0002:000015e0 ??_C@_02DBLP@PM?$AA@ 2002c5e0 LIBCMTD:strftime.obj + 0002:000015e4 ??_C@_02ENLM@AM?$AA@ 2002c5e4 LIBCMTD:strftime.obj + 0002:000015e8 ??_C@_08LIDF@December?$AA@ 2002c5e8 LIBCMTD:strftime.obj + 0002:000015f4 ??_C@_08NJLI@November?$AA@ 2002c5f4 LIBCMTD:strftime.obj + 0002:00001600 ??_C@_07IAMM@October?$AA@ 2002c600 LIBCMTD:strftime.obj + 0002:00001608 ??_C@_09MKGD@September?$AA@ 2002c608 LIBCMTD:strftime.obj + 0002:00001614 ??_C@_06PADP@August?$AA@ 2002c614 LIBCMTD:strftime.obj + 0002:0000161c ??_C@_04PIJO@July?$AA@ 2002c61c LIBCMTD:strftime.obj + 0002:00001624 ??_C@_04ICFP@June?$AA@ 2002c624 LIBCMTD:strftime.obj + 0002:0000162c ??_C@_05JFGC@April?$AA@ 2002c62c LIBCMTD:strftime.obj + 0002:00001634 ??_C@_05FGPD@March?$AA@ 2002c634 LIBCMTD:strftime.obj + 0002:0000163c ??_C@_08PGBA@February?$AA@ 2002c63c LIBCMTD:strftime.obj + 0002:00001648 ??_C@_07BPKJ@January?$AA@ 2002c648 LIBCMTD:strftime.obj + 0002:00001650 ??_C@_03PGJO@Dec?$AA@ 2002c650 LIBCMTD:strftime.obj + 0002:00001654 ??_C@_03PDLM@Nov?$AA@ 2002c654 LIBCMTD:strftime.obj + 0002:00001658 ??_C@_03BLHK@Oct?$AA@ 2002c658 LIBCMTD:strftime.obj + 0002:0000165c ??_C@_03DPFM@Sep?$AA@ 2002c65c LIBCMTD:strftime.obj + 0002:00001660 ??_C@_03CMCH@Aug?$AA@ 2002c660 LIBCMTD:strftime.obj + 0002:00001664 ??_C@_03OBKI@Jul?$AA@ 2002c664 LIBCMTD:strftime.obj + 0002:00001668 ??_C@_03LEIG@Jun?$AA@ 2002c668 LIBCMTD:strftime.obj + 0002:0000166c ??_C@_03MGHB@May?$AA@ 2002c66c LIBCMTD:strftime.obj + 0002:00001670 ??_C@_03MJJM@Apr?$AA@ 2002c670 LIBCMTD:strftime.obj + 0002:00001674 ??_C@_03GNHA@Mar?$AA@ 2002c674 LIBCMTD:strftime.obj + 0002:00001678 ??_C@_03PICE@Feb?$AA@ 2002c678 LIBCMTD:strftime.obj + 0002:0000167c ??_C@_03IEIF@Jan?$AA@ 2002c67c LIBCMTD:strftime.obj + 0002:00001680 ??_C@_08FAKH@Saturday?$AA@ 2002c680 LIBCMTD:strftime.obj + 0002:0000168c ??_C@_06ONCK@Friday?$AA@ 2002c68c LIBCMTD:strftime.obj + 0002:00001694 ??_C@_08CCFO@Thursday?$AA@ 2002c694 LIBCMTD:strftime.obj + 0002:000016a0 ??_C@_09PBIN@Wednesday?$AA@ 2002c6a0 LIBCMTD:strftime.obj + 0002:000016ac ??_C@_07BMBC@Tuesday?$AA@ 2002c6ac LIBCMTD:strftime.obj + 0002:000016b4 ??_C@_06CHLK@Monday?$AA@ 2002c6b4 LIBCMTD:strftime.obj + 0002:000016bc ??_C@_06OOEM@Sunday?$AA@ 2002c6bc LIBCMTD:strftime.obj + 0002:000016c4 ??_C@_03MPKK@Sat?$AA@ 2002c6c4 LIBCMTD:strftime.obj + 0002:000016c8 ??_C@_03FINJ@Fri?$AA@ 2002c6c8 LIBCMTD:strftime.obj + 0002:000016cc ??_C@_03HIKC@Thu?$AA@ 2002c6cc LIBCMTD:strftime.obj + 0002:000016d0 ??_C@_03HECK@Wed?$AA@ 2002c6d0 LIBCMTD:strftime.obj + 0002:000016d4 ??_C@_03ECCP@Tue?$AA@ 2002c6d4 LIBCMTD:strftime.obj + 0002:000016d8 ??_C@_03PIEP@Mon?$AA@ 2002c6d8 LIBCMTD:strftime.obj + 0002:000016dc ??_C@_03FHEP@Sun?$AA@ 2002c6dc LIBCMTD:strftime.obj + 0002:000016e0 ??_C@_03MKGK@a?1p?$AA@ 2002c6e0 LIBCMTD:strftime.obj + 0002:000016e4 ??_C@_05BDJK@am?1pm?$AA@ 2002c6e4 LIBCMTD:strftime.obj + 0002:000016ec ??_C@_0L@HKCB@inithelp?4c?$AA@ 2002c6ec LIBCMTD:inithelp.obj + 0002:000016f8 ??_C@_08OKNB@aw_loc?4c?$AA@ 2002c6f8 LIBCMTD:aw_loc.obj + 0002:00001704 ??_C@_08PHBD@fclose?4c?$AA@ 2002c704 LIBCMTD:fclose.obj + 0002:00001710 ??_C@_08BGPE@aw_cmp?4c?$AA@ 2002c710 LIBCMTD:aw_cmp.obj + 0002:0000171c ??_C@_0DN@PPKB@cchCount1?$DN?$DN0?5?$CG?$CG?5cchCount2?$DN?$DN1?5?$HM?$HM?5@ 2002c71c LIBCMTD:aw_cmp.obj + 0002:0000175c ??_C@_08FEIK@setenv?4c?$AA@ 2002c75c LIBCMTD:setenv.obj + 0002:00001768 ??_C@_0L@JIE@_freebuf?4c?$AA@ 2002c768 LIBCMTD:_freebuf.obj + 0003:00000000 ___xc_a 2002d000 LIBCMTD:crt0init.obj + 0003:00000004 ___xc_z 2002d004 LIBCMTD:crt0init.obj + 0003:00000008 ___xi_a 2002d008 LIBCMTD:crt0init.obj + 0003:00000010 ___xi_z 2002d010 LIBCMTD:crt0init.obj + 0003:00000014 ___xp_a 2002d014 LIBCMTD:crt0init.obj + 0003:0000001c ___xp_z 2002d01c LIBCMTD:crt0init.obj + 0003:00000020 ___xt_a 2002d020 LIBCMTD:crt0init.obj + 0003:00000024 ___xt_z 2002d024 LIBCMTD:crt0init.obj + 0003:00000198 ?sgSysColorTbl@@3PAU_SNET_DATA_SYSCOLORTABLE@@A 2002d198 connect.obj + 0003:00001d30 __aexit_rtn 2002ed30 LIBCMTD:dllcrt0.obj + 0003:00001d34 ___nullstring 2002ed34 LIBCMTD:output.obj + 0003:00001d38 ___wnullstring 2002ed38 LIBCMTD:output.obj + 0003:00001d40 __crtAssertBusy 2002ed40 LIBCMTD:dbgrpt.obj + 0003:00001d48 __CrtDbgMode 2002ed48 LIBCMTD:dbgrpt.obj + 0003:00001d58 __CrtDbgFile 2002ed58 LIBCMTD:dbgrpt.obj + 0003:00001d78 __pctype 2002ed78 LIBCMTD:ctype.obj + 0003:00001d7c __pwctype 2002ed7c LIBCMTD:ctype.obj + 0003:00001d80 __ctype 2002ed80 LIBCMTD:ctype.obj + 0003:00001f84 ___mb_cur_max 2002ef84 LIBCMTD:nlsdata1.obj + 0003:00001f88 ___decimal_point 2002ef88 LIBCMTD:nlsdata1.obj + 0003:00001f8c ___decimal_point_length 2002ef8c LIBCMTD:nlsdata1.obj + 0003:00001f90 __timezone 2002ef90 LIBCMTD:timeset.obj + 0003:00001f94 __daylight 2002ef94 LIBCMTD:timeset.obj + 0003:00001f98 __dstbias 2002ef98 LIBCMTD:timeset.obj + 0003:00002020 __tzname 2002f020 LIBCMTD:timeset.obj + 0003:000021b8 __crtDbgFlag 2002f1b8 LIBCMTD:dbgheap.obj + 0003:000021c0 __crtBreakAlloc 2002f1c0 LIBCMTD:dbgheap.obj + 0003:000021e4 ___tlsindex 2002f1e4 LIBCMTD:tidtable.obj + 0003:000021e8 __XcptActTab 2002f1e8 LIBCMTD:winxfltr.obj + 0003:00002260 __First_FPE_Indx 2002f260 LIBCMTD:winxfltr.obj + 0003:00002264 __Num_FPE 2002f264 LIBCMTD:winxfltr.obj + 0003:00002268 __XcptActTabSize 2002f268 LIBCMTD:winxfltr.obj + 0003:0000226c __XcptActTabCount 2002f26c LIBCMTD:winxfltr.obj + 0003:00002270 __NLG_Destination 2002f270 LIBCMTD:exsup.obj + 0003:00002280 __locktable 2002f280 LIBCMTD:mlock.obj + 0003:000024a0 ___badioinfo 2002f4a0 LIBCMTD:ioinit.obj + 0003:000025c0 __amblksiz 2002f5c0 LIBCMTD:heapinit.obj + 0003:00002658 __iob 2002f658 LIBCMTD:_file.obj + 0003:000028d8 __cfltcvt_tab 2002f8d8 LIBCMTD:cmiscdat.obj + 0003:000028f0 __lpdays 2002f8f0 LIBCMTD:days.obj + 0003:00002928 __days 2002f928 LIBCMTD:days.obj + 0003:00002960 __pfnAllocHook 2002f960 LIBCMTD:dbghook.obj + 0003:00002968 ___small_block_heap 2002f968 LIBCMTD:sbheap.obj + 0003:0000498c ___sbh_threshold 2003198c LIBCMTD:sbheap.obj + 0003:00004990 ___rg_lang_rec 20031990 LIBCMTD:getqloc.obj + 0003:00004ca8 ___rg_ctry_rec 20031ca8 LIBCMTD:getqloc.obj + 0003:00004f60 ___rgrgwlang 20031f60 LIBCMTD:getqloc.obj + 0003:00005190 ___lc_time_c 20032190 LIBCMTD:strftime.obj + 0003:0000523c ___lc_time_curr 2003223c LIBCMTD:strftime.obj + 0003:00005240 ___lconv_static_decimal 20032240 LIBCMTD:lconv.obj + 0003:00005248 ___lconv_c 20032248 LIBCMTD:lconv.obj + 0003:00005278 ___lconv 20032278 LIBCMTD:lconv.obj + 0003:00007c64 ?global_hinstance@@3PAUHINSTANCE__@@A 20034c64 Diabloui.obj + 0003:00007c68 ?ui_background@@3PAEA 20034c68 Diabloui.obj + 0003:00007c70 ?ui_backgroundsize@@3UtagSIZE@@A 20034c70 Diabloui.obj + 0003:00008b44 __aenvptr 20035b44 LIBCMTD:dllcrt0.obj + 0003:00008b48 __wenvptr 20035b48 LIBCMTD:dllcrt0.obj + 0003:00008b4c ___error_mode 20035b4c LIBCMTD:dllcrt0.obj + 0003:00008b50 ___app_type 20035b50 LIBCMTD:dllcrt0.obj + 0003:00008c50 __umaskval 20035c50 LIBCMTD:crt0dat.obj + 0003:00008c54 __osver 20035c54 LIBCMTD:crt0dat.obj + 0003:00008c58 __winver 20035c58 LIBCMTD:crt0dat.obj + 0003:00008c5c __winmajor 20035c5c LIBCMTD:crt0dat.obj + 0003:00008c60 __winminor 20035c60 LIBCMTD:crt0dat.obj + 0003:00008c64 ___argc 20035c64 LIBCMTD:crt0dat.obj + 0003:00008c68 ___argv 20035c68 LIBCMTD:crt0dat.obj + 0003:00008c6c ___wargv 20035c6c LIBCMTD:crt0dat.obj + 0003:00008c70 __environ 20035c70 LIBCMTD:crt0dat.obj + 0003:00008c74 ___initenv 20035c74 LIBCMTD:crt0dat.obj + 0003:00008c78 __wenviron 20035c78 LIBCMTD:crt0dat.obj + 0003:00008c7c ___winitenv 20035c7c LIBCMTD:crt0dat.obj + 0003:00008c80 __pgmptr 20035c80 LIBCMTD:crt0dat.obj + 0003:00008c84 __wpgmptr 20035c84 LIBCMTD:crt0dat.obj + 0003:00008c88 __exitflag 20035c88 LIBCMTD:crt0dat.obj + 0003:00008c8c __C_Termination_Done 20035c8c LIBCMTD:crt0dat.obj + 0003:00008c90 __C_Exit_Done 20035c90 LIBCMTD:crt0dat.obj + 0003:00008d10 ___lc_handle 20035d10 LIBCMTD:nlsdata2.obj + 0003:00008d28 ___lc_codepage 20035d28 LIBCMTD:nlsdata2.obj + 0003:00008e38 __mbctype 20035e38 LIBCMTD:mbctype.obj + 0003:00008f3c ___mbcodepage 20035f3c LIBCMTD:mbctype.obj + 0003:00008f40 ___mblcid 20035f40 LIBCMTD:mbctype.obj + 0003:00008f48 ___mbulinfo 20035f48 LIBCMTD:mbctype.obj + 0003:00008f60 __adbgmsg 20035f60 LIBCMTD:crt0msg.obj + 0003:00008f64 __cflush 20035f64 LIBCMTD:_file.obj + 0003:00008f90 __newmode 20035f90 LIBCMTD:_newmode.obj + 0003:00008f94 ?_pnhHeap@@3P6AHI@ZA 20035f94 LIBCMTD:handler.obj + 0003:00008f9c ___lc_time_intl 20035f9c LIBCMTD:inittime.obj + 0003:00008fb8 ___lc_id 20035fb8 LIBCMTD:nlsdata3.obj + 0003:00008fdc __alternate_form 20035fdc LIBCMTD:strftime.obj + 0003:00008fe0 __no_lead_zeros 20035fe0 LIBCMTD:strftime.obj + 0003:00008ff0 ___lconv_static_null 20035ff0 LIBCMTD:lconv.obj + 0003:00009004 ___piob 20036004 + 0003:00009020 __bufin 20036020 + 0003:0000a020 __nstream 20037020 + 0003:0000a024 __crtheap 20037024 + 0003:0000a040 ___pioinfo 20037040 + 0003:0000a140 __nhandle 20037140 + 0003:0000a144 ___setlc_active 20037144 + 0003:0000a148 ___unguarded_readlc_active 20037148 + 0003:0000a14c ___onexitend 2003714c + 0003:0000a150 ___onexitbegin 20037150 + 0003:0000a154 __FPinit 20037154 + 0003:0000a158 __pfnDumpClient 20037158 + 0003:0000a15c __pfnReportHook 2003715c + 0003:0000a160 __acmdln 20037160 + 0003:0000a164 __pRawDllMain 20037164 + 0003:0000a168 __FPmtinit 20037168 + 0003:0000a16c __FPmtterm 2003716c + 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 20038000 kernel32:KERNEL32.dll + 0004:00000014 __IMPORT_DESCRIPTOR_USER32 20038014 user32:USER32.dll + 0004:00000028 __IMPORT_DESCRIPTOR_GDI32 20038028 gdi32:GDI32.dll + 0004:0000003c __IMPORT_DESCRIPTOR_storm 2003803c storm:storm.dll + 0004:00000050 __NULL_IMPORT_DESCRIPTOR 20038050 kernel32:KERNEL32.dll + 0004:0000036c __imp__CreatePalette@4 2003836c gdi32:GDI32.dll + 0004:00000370 __imp__GetPaletteEntries@16 20038370 gdi32:GDI32.dll + 0004:00000374 __imp__GetCurrentPositionEx@8 20038374 gdi32:GDI32.dll + 0004:00000378 __imp__TextOutA@20 20038378 gdi32:GDI32.dll + 0004:0000037c __imp__SetTextAlign@8 2003837c gdi32:GDI32.dll + 0004:00000380 __imp__MoveToEx@16 20038380 gdi32:GDI32.dll + 0004:00000384 __imp__GetTextMetricsA@8 20038384 gdi32:GDI32.dll + 0004:00000388 __imp__ExtTextOutA@32 20038388 gdi32:GDI32.dll + 0004:0000038c __imp__SetBkColor@8 2003838c gdi32:GDI32.dll + 0004:00000390 __imp__SetTextColor@8 20038390 gdi32:GDI32.dll + 0004:00000394 __imp__SelectObject@8 20038394 gdi32:GDI32.dll + 0004:00000398 __imp__DeleteObject@4 20038398 gdi32:GDI32.dll + 0004:0000039c __imp__CreateFontIndirectA@4 2003839c gdi32:GDI32.dll + 0004:000003a0 __imp__CreateFontA@56 200383a0 gdi32:GDI32.dll + 0004:000003a4 __imp__GetObjectA@12 200383a4 gdi32:GDI32.dll + 0004:000003a8 __imp__GetStockObject@4 200383a8 gdi32:GDI32.dll + 0004:000003ac \177GDI32_NULL_THUNK_DATA 200383ac gdi32:GDI32.dll + 0004:000003b0 __imp__GlobalMemoryStatus@4 200383b0 kernel32:KERNEL32.dll + 0004:000003b4 __imp__GetModuleHandleA@4 200383b4 kernel32:KERNEL32.dll + 0004:000003b8 __imp__SizeofResource@8 200383b8 kernel32:KERNEL32.dll + 0004:000003bc __imp__SetLastError@4 200383bc kernel32:KERNEL32.dll + 0004:000003c0 __imp__MulDiv@12 200383c0 kernel32:KERNEL32.dll + 0004:000003c4 __imp__GetLastError@0 200383c4 kernel32:KERNEL32.dll + 0004:000003c8 __imp__FindResourceA@12 200383c8 kernel32:KERNEL32.dll + 0004:000003cc __imp__LoadResource@8 200383cc kernel32:KERNEL32.dll + 0004:000003d0 __imp__LockResource@4 200383d0 kernel32:KERNEL32.dll + 0004:000003d4 __imp__SetEnvironmentVariableA@8 200383d4 kernel32:KERNEL32.dll + 0004:000003d8 __imp__CompareStringA@24 200383d8 kernel32:KERNEL32.dll + 0004:000003dc __imp__FlushFileBuffers@4 200383dc kernel32:KERNEL32.dll + 0004:000003e0 __imp__SetConsoleCtrlHandler@8 200383e0 kernel32:KERNEL32.dll + 0004:000003e4 __imp__GetCurrentThread@0 200383e4 kernel32:KERNEL32.dll + 0004:000003e8 __imp__SetFilePointer@16 200383e8 kernel32:KERNEL32.dll + 0004:000003ec __imp__TlsFree@4 200383ec kernel32:KERNEL32.dll + 0004:000003f0 __imp__TlsAlloc@0 200383f0 kernel32:KERNEL32.dll + 0004:000003f4 __imp__TlsGetValue@4 200383f4 kernel32:KERNEL32.dll + 0004:000003f8 __imp__HeapValidate@12 200383f8 kernel32:KERNEL32.dll + 0004:000003fc __imp__IsBadReadPtr@8 200383fc kernel32:KERNEL32.dll + 0004:00000400 __imp__GetCurrentThreadId@0 20038400 kernel32:KERNEL32.dll + 0004:00000404 __imp__GetTimeZoneInformation@4 20038404 kernel32:KERNEL32.dll + 0004:00000408 __imp__GetModuleFileNameA@12 20038408 kernel32:KERNEL32.dll + 0004:0000040c __imp__IsBadWritePtr@8 2003840c kernel32:KERNEL32.dll + 0004:00000410 __imp__OutputDebugStringA@4 20038410 kernel32:KERNEL32.dll + 0004:00000414 __imp__WriteFile@20 20038414 kernel32:KERNEL32.dll + 0004:00000418 __imp__LoadLibraryA@4 20038418 kernel32:KERNEL32.dll + 0004:0000041c __imp__DebugBreak@0 2003841c kernel32:KERNEL32.dll + 0004:00000420 __imp__GetVersion@0 20038420 kernel32:KERNEL32.dll + 0004:00000424 __imp__GetStdHandle@4 20038424 kernel32:KERNEL32.dll + 0004:00000428 __imp__GetCommandLineA@0 20038428 kernel32:KERNEL32.dll + 0004:0000042c __imp__InterlockedIncrement@4 2003842c kernel32:KERNEL32.dll + 0004:00000430 __imp__GetProcAddress@8 20038430 kernel32:KERNEL32.dll + 0004:00000434 __imp__CloseHandle@4 20038434 kernel32:KERNEL32.dll + 0004:00000438 __imp__ExitThread@4 20038438 kernel32:KERNEL32.dll + 0004:0000043c __imp__InterlockedDecrement@4 2003843c kernel32:KERNEL32.dll + 0004:00000440 __imp__CreateThread@24 20038440 kernel32:KERNEL32.dll + 0004:00000444 __imp__ResumeThread@4 20038444 kernel32:KERNEL32.dll + 0004:00000448 __imp__TlsSetValue@8 20038448 kernel32:KERNEL32.dll + 0004:0000044c __imp__TerminateProcess@8 2003844c kernel32:KERNEL32.dll + 0004:00000450 __imp__GetCurrentProcess@0 20038450 kernel32:KERNEL32.dll + 0004:00000454 __imp__ExitProcess@4 20038454 kernel32:KERNEL32.dll + 0004:00000458 __imp__RtlUnwind@16 20038458 kernel32:KERNEL32.dll + 0004:0000045c __imp__MultiByteToWideChar@24 2003845c kernel32:KERNEL32.dll + 0004:00000460 __imp__UnhandledExceptionFilter@4 20038460 kernel32:KERNEL32.dll + 0004:00000464 __imp__LCMapStringA@24 20038464 kernel32:KERNEL32.dll + 0004:00000468 __imp__LCMapStringW@24 20038468 kernel32:KERNEL32.dll + 0004:0000046c __imp__WideCharToMultiByte@32 2003846c kernel32:KERNEL32.dll + 0004:00000470 __imp__GetStringTypeA@20 20038470 kernel32:KERNEL32.dll + 0004:00000474 __imp__EnterCriticalSection@4 20038474 kernel32:KERNEL32.dll + 0004:00000478 __imp__DeleteCriticalSection@4 20038478 kernel32:KERNEL32.dll + 0004:0000047c __imp__FatalAppExitA@8 2003847c kernel32:KERNEL32.dll + 0004:00000480 __imp__Sleep@4 20038480 kernel32:KERNEL32.dll + 0004:00000484 __imp__LeaveCriticalSection@4 20038484 kernel32:KERNEL32.dll + 0004:00000488 __imp__GetFileType@4 20038488 kernel32:KERNEL32.dll + 0004:0000048c __imp__GetStartupInfoA@4 2003848c kernel32:KERNEL32.dll + 0004:00000490 __imp__SetHandleCount@4 20038490 kernel32:KERNEL32.dll + 0004:00000494 __imp__GetLocaleInfoW@16 20038494 kernel32:KERNEL32.dll + 0004:00000498 __imp__GetLocaleInfoA@16 20038498 kernel32:KERNEL32.dll + 0004:0000049c __imp__ReadFile@20 2003849c kernel32:KERNEL32.dll + 0004:000004a0 __imp__SetStdHandle@8 200384a0 kernel32:KERNEL32.dll + 0004:000004a4 __imp__GetUserDefaultLCID@0 200384a4 kernel32:KERNEL32.dll + 0004:000004a8 __imp__IsValidCodePage@4 200384a8 kernel32:KERNEL32.dll + 0004:000004ac __imp__IsValidLocale@8 200384ac kernel32:KERNEL32.dll + 0004:000004b0 __imp__VirtualAlloc@16 200384b0 kernel32:KERNEL32.dll + 0004:000004b4 __imp__HeapFree@12 200384b4 kernel32:KERNEL32.dll + 0004:000004b8 __imp__HeapReAlloc@16 200384b8 kernel32:KERNEL32.dll + 0004:000004bc __imp__HeapAlloc@12 200384bc kernel32:KERNEL32.dll + 0004:000004c0 __imp__GetStringTypeW@16 200384c0 kernel32:KERNEL32.dll + 0004:000004c4 __imp__GetEnvironmentStrings@0 200384c4 kernel32:KERNEL32.dll + 0004:000004c8 __imp__FreeEnvironmentStringsW@4 200384c8 kernel32:KERNEL32.dll + 0004:000004cc __imp__InitializeCriticalSection@4 200384cc kernel32:KERNEL32.dll + 0004:000004d0 __imp__VirtualFree@12 200384d0 kernel32:KERNEL32.dll + 0004:000004d4 __imp__HeapCreate@12 200384d4 kernel32:KERNEL32.dll + 0004:000004d8 __imp__HeapDestroy@4 200384d8 kernel32:KERNEL32.dll + 0004:000004dc __imp__GetEnvironmentStringsW@0 200384dc kernel32:KERNEL32.dll + 0004:000004e0 __imp__GetACP@0 200384e0 kernel32:KERNEL32.dll + 0004:000004e4 __imp__CompareStringW@24 200384e4 kernel32:KERNEL32.dll + 0004:000004e8 __imp__FreeResource@4 200384e8 kernel32:KERNEL32.dll + 0004:000004ec __imp__FreeEnvironmentStringsA@4 200384ec kernel32:KERNEL32.dll + 0004:000004f0 __imp__GetOEMCP@0 200384f0 kernel32:KERNEL32.dll + 0004:000004f4 __imp__GetCPInfo@8 200384f4 kernel32:KERNEL32.dll + 0004:000004f8 \177KERNEL32_NULL_THUNK_DATA 200384f8 kernel32:KERNEL32.dll + 0004:000004fc __imp__LoadCursorA@8 200384fc user32:USER32.dll + 0004:00000500 __imp__LoadStringA@16 20038500 user32:USER32.dll + 0004:00000504 __imp__SendMessageA@16 20038504 user32:USER32.dll + 0004:00000508 __imp__OffsetRect@12 20038508 user32:USER32.dll + 0004:0000050c __imp__SetRect@20 2003850c user32:USER32.dll + 0004:00000510 __imp__SetWindowTextA@8 20038510 user32:USER32.dll + 0004:00000514 __imp__GetWindowLongA@8 20038514 user32:USER32.dll + 0004:00000518 __imp__GetFocus@0 20038518 user32:USER32.dll + 0004:0000051c __imp__SetFocus@4 2003851c user32:USER32.dll + 0004:00000520 __imp__GetWindowRect@8 20038520 user32:USER32.dll + 0004:00000524 __imp__UpdateWindow@4 20038524 user32:USER32.dll + 0004:00000528 __imp__GetDlgItem@8 20038528 user32:USER32.dll + 0004:0000052c __imp__ShowCursor@4 2003852c user32:USER32.dll + 0004:00000530 __imp__InvalidateRect@12 20038530 user32:USER32.dll + 0004:00000534 __imp__GetClientRect@8 20038534 user32:USER32.dll + 0004:00000538 __imp__SetWindowLongA@12 20038538 user32:USER32.dll + 0004:0000053c __imp__GetParent@4 2003853c user32:USER32.dll + 0004:00000540 __imp__SendDlgItemMessageA@20 20038540 user32:USER32.dll + 0004:00000544 __imp__wsprintfA 20038544 user32:USER32.dll + 0004:00000548 __imp__GetKeyState@4 20038548 user32:USER32.dll + 0004:0000054c __imp__IsWindowEnabled@4 2003854c user32:USER32.dll + 0004:00000550 __imp__PostQuitMessage@4 20038550 user32:USER32.dll + 0004:00000554 __imp__IsWindowVisible@4 20038554 user32:USER32.dll + 0004:00000558 __imp__IsWindow@4 20038558 user32:USER32.dll + 0004:0000055c __imp__DispatchMessageA@4 2003855c user32:USER32.dll + 0004:00000560 __imp__IsDialogMessageA@8 20038560 user32:USER32.dll + 0004:00000564 __imp__TranslateMessage@4 20038564 user32:USER32.dll + 0004:00000568 __imp__MessageBoxA@16 20038568 user32:USER32.dll + 0004:0000056c __imp__DestroyWindow@4 2003856c user32:USER32.dll + 0004:00000570 __imp__EnableWindow@8 20038570 user32:USER32.dll + 0004:00000574 __imp__ReleaseDC@8 20038574 user32:USER32.dll + 0004:00000578 __imp__GetDC@4 20038578 user32:USER32.dll + 0004:0000057c __imp__DrawTextA@20 2003857c user32:USER32.dll + 0004:00000580 __imp__CallWindowProcA@20 20038580 user32:USER32.dll + 0004:00000584 __imp__ShowWindow@8 20038584 user32:USER32.dll + 0004:00000588 __imp__PeekMessageA@20 20038588 user32:USER32.dll + 0004:0000058c __imp__SetPropA@12 2003858c user32:USER32.dll + 0004:00000590 __imp__RemovePropA@8 20038590 user32:USER32.dll + 0004:00000594 __imp__GetWindowTextA@12 20038594 user32:USER32.dll + 0004:00000598 __imp__RegisterClassA@4 20038598 user32:USER32.dll + 0004:0000059c __imp__GetPropA@8 2003859c user32:USER32.dll + 0004:000005a0 __imp__DefWindowProcA@16 200385a0 user32:USER32.dll + 0004:000005a4 __imp__ScreenToClient@8 200385a4 user32:USER32.dll + 0004:000005a8 __imp__BeginPaint@8 200385a8 user32:USER32.dll + 0004:000005ac __imp__EndPaint@8 200385ac user32:USER32.dll + 0004:000005b0 __imp__PostMessageA@16 200385b0 user32:USER32.dll + 0004:000005b4 \177USER32_NULL_THUNK_DATA 200385b4 user32:USER32.dll + 0004:000005b8 __imp__SGdiImportFont@8 200385b8 storm:storm.dll + 0004:000005bc __imp__SNetInitializeDevice@20 200385bc storm:storm.dll + 0004:000005c0 __imp__SNetEnumDevices@4 200385c0 storm:storm.dll + 0004:000005c4 __imp__SNetSelectGame@24 200385c4 storm:storm.dll + 0004:000005c8 __imp__SRegLoadString@20 200385c8 storm:storm.dll + 0004:000005cc __imp__SRegSaveString@16 200385cc storm:storm.dll + 0004:000005d0 __imp__SNetInitializeProvider@20 200385d0 storm:storm.dll + 0004:000005d4 __imp__SNetEnumProviders@8 200385d4 storm:storm.dll + 0004:000005d8 __imp__SBltROP3Tiled@40 200385d8 storm:storm.dll + 0004:000005dc __imp__SDlgCheckTimers@0 200385dc storm:storm.dll + 0004:000005e0 __imp__SDlgUpdateCursor@0 200385e0 storm:storm.dll + 0004:000005e4 __imp__SDlgSetSystemCursor@16 200385e4 storm:storm.dll + 0004:000005e8 __imp__SDlgBeginPaint@8 200385e8 storm:storm.dll + 0004:000005ec __imp__SDlgEndPaint@8 200385ec storm:storm.dll + 0004:000005f0 __imp__SDrawClearSurface@4 200385f0 storm:storm.dll + 0004:000005f4 __imp__SNetEnumGames@16 200385f4 storm:storm.dll + 0004:000005f8 __imp__SNetJoinGame@24 200385f8 storm:storm.dll + 0004:000005fc __imp__SDlgDrawBitmap@28 200385fc storm:storm.dll + 0004:00000600 __imp__SGdiSelectObject@4 20038600 storm:storm.dll + 0004:00000604 __imp__SGdiSetPitch@4 20038604 storm:storm.dll + 0004:00000608 __imp__SGdiTextOut@24 20038608 storm:storm.dll + 0004:0000060c __imp__SDlgSetTimer@16 2003860c storm:storm.dll + 0004:00000610 __imp__SDlgSetControlBitmaps@28 20038610 storm:storm.dll + 0004:00000614 __imp__SNetCreateGame@40 20038614 storm:storm.dll + 0004:00000618 __imp__SDlgEndDialog@8 20038618 storm:storm.dll + 0004:0000061c __imp__SDlgSetBitmap@40 2003861c storm:storm.dll + 0004:00000620 __imp__SDrawUpdatePalette@16 20038620 storm:storm.dll + 0004:00000624 __imp__SDlgDefDialogProc@16 20038624 storm:storm.dll + 0004:00000628 __imp__SDrawGetFrameWindow@4 20038628 storm:storm.dll + 0004:0000062c __imp__SDlgDialogBoxParam@20 2003862c storm:storm.dll + 0004:00000630 __imp__SDlgBltToWindow@40 20038630 storm:storm.dll + 0004:00000634 __imp__SBltROP3@32 20038634 storm:storm.dll + 0004:00000638 __imp__SBmpLoadImage@28 20038638 storm:storm.dll + 0004:0000063c __imp__SMemAlloc@16 2003863c storm:storm.dll + 0004:00000640 __imp__STransBlt@20 20038640 storm:storm.dll + 0004:00000644 __imp__SFileOpenFile@8 20038644 storm:storm.dll + 0004:00000648 __imp__SFileGetFileSize@8 20038648 storm:storm.dll + 0004:0000064c __imp__SFileReadFile@20 2003864c storm:storm.dll + 0004:00000650 __imp__SFileCloseFile@4 20038650 storm:storm.dll + 0004:00000654 __imp__STransCreate@28 20038654 storm:storm.dll + 0004:00000658 __imp__SMemFree@16 20038658 storm:storm.dll + 0004:0000065c __imp__STransDelete@4 2003865c storm:storm.dll + 0004:00000660 __imp__SDlgSetCursor@16 20038660 storm:storm.dll + 0004:00000664 __imp__SDlgCreateDialogParam@20 20038664 storm:storm.dll + 0004:00000668 __imp__SDlgKillTimer@8 20038668 storm:storm.dll + 0004:0000066c __imp__SGdiDeleteObject@4 2003866c storm:storm.dll + 0004:00000670 \177storm_NULL_THUNK_DATA 20038670 storm:storm.dll + + entry point at 0001:00016610 + + Static symbols + + 0001:00014ac0 ?TitleDialogProc@@YGHPAUHWND__@@IIJ@Z 20015ac0 f Title.obj + 0001:00014c90 ?TitleDestroy@@YAXPAUHWND__@@@Z 20015c90 f Title.obj + 0001:00014cc0 ?TitleInit@@YAXPAUHWND__@@J@Z 20015cc0 f Title.obj + 0001:00014da0 ?TitleAbort@@YAXPAUHWND__@@@Z 20015da0 f Title.obj + 0001:00013ff0 ?SupportDialogProc@@YGHPAUHWND__@@IIJ@Z 20014ff0 f Support.obj + 0001:000141b0 ?SupportDestroy@@YAXPAUHWND__@@@Z 200151b0 f Support.obj + 0001:00014240 ?SupportAbort@@YAXPAUHWND__@@@Z 20015240 f Support.obj + 0001:00014280 ?SupportInit@@YAXPAUHWND__@@J@Z 20015280 f Support.obj + 0001:00014490 ?ScrollSupport@@YAXPAUHWND__@@@Z 20015490 f Support.obj + 0001:00014570 ?SupportDraw@@YAXPAUHWND__@@@Z 20015570 f Support.obj + 0001:000146b0 ?credit_length@@YAHPAD@Z 200156b0 f Support.obj + 0001:00014700 ?support_next@@YAPADPADH@Z 20015700 f Support.obj + 0001:00013af0 ?SelYesNoDialogProc@@YGHPAUHWND__@@IIJ@Z 20014af0 f SelYesNo.obj + 0001:00013cf0 ?SelYesNoDestroy@@YAXPAUHWND__@@@Z 20014cf0 f SelYesNo.obj + 0001:00013d60 ?SelYesNoInit@@YAXPAUHWND__@@@Z 20014d60 f SelYesNo.obj + 0001:00013e90 ?SelYesNoAbort@@YAXPAUHWND__@@H@Z 20014e90 f SelYesNo.obj + 0001:00012760 ?SelModemEnum@@YGHKPBD0@Z 20013760 f SelModem.obj + 0001:000127e0 ?ModemAllocNode@@YAPAU_modeminfo@@XZ 200137e0 f SelModem.obj + 0001:00012810 ?ModemAddNode@@YAPAU_modeminfo@@PAU1@0@Z 20013810 f SelModem.obj + 0001:00012820 ?SelModemNoModem@@YAHK@Z 20013820 f SelModem.obj + 0001:00012870 ?SelModemOneModem@@YAHXZ 20013870 f SelModem.obj + 0001:00012900 ?ModemFreeList@@YAXPAU_modeminfo@@@Z 20013900 f SelModem.obj + 0001:00012930 ?ModemFreeNode@@YAXPAU_modeminfo@@@Z 20013930 f SelModem.obj + 0001:00012960 ?SelModemInitDevice@@YAHPAUHWND__@@K@Z 20013960 f SelModem.obj + 0001:000129c0 ?SelModemListModems@@YAHXZ 200139c0 f SelModem.obj + 0001:00012a90 ?SelModemDialogProc@@YGHPAUHWND__@@IIJ@Z 20013a90 f SelModem.obj + 0001:00012d90 ?SelModemDestroy@@YAXPAUHWND__@@@Z 20013d90 f SelModem.obj + 0001:00012e10 ?SelModemUpdateSbar@@YAXPAUHWND__@@@Z 20013e10 f SelModem.obj + 0001:00012e40 ?GetNumNode@@YAHPAUHWND__@@@Z 20013e40 f SelModem.obj + 0001:00012ec0 ?SelModemInit@@YAXPAUHWND__@@@Z 20013ec0 f SelModem.obj + 0001:00012fe0 ?SelModemSetList@@YAXPAUHWND__@@PAU_modeminfo@@@Z 20013fe0 f SelModem.obj + 0001:000130a0 ?SelModemSubclassEntries@@YAXPAUHWND__@@@Z 200140a0 f SelModem.obj + 0001:00013120 ?ModemListWndProc@@YGJPAUHWND__@@IIJ@Z 20014120 f SelModem.obj + 0001:00013410 ?SelModemTab@@YAXPAUHWND__@@@Z 20014410 f SelModem.obj + 0001:000134a0 ?SelModemShiftTab@@YAXPAUHWND__@@@Z 200144a0 f SelModem.obj + 0001:00013530 ?SelModemPageDown@@YAXPAUHWND__@@@Z 20014530 f SelModem.obj + 0001:00013620 ?GetModem@@YAPAU_modeminfo@@H@Z 20014620 f SelModem.obj + 0001:00013660 ?SelModemPageUp@@YAXPAUHWND__@@@Z 20014660 f SelModem.obj + 0001:00013750 ?SelModemScrollDown@@YAXPAUHWND__@@@Z 20014750 f SelModem.obj + 0001:00013830 ?SelModemScrollUp@@YAXPAUHWND__@@@Z 20014830 f SelModem.obj + 0001:000138f0 ?SelModemAbort@@YAXPAUHWND__@@H@Z 200148f0 f SelModem.obj + 0001:00013960 ?SelModemInterpretClick@@YAXPAUHWND__@@HH@Z 20014960 f SelModem.obj + 0001:00012580 ?SelLoadDestroy@@YAXPAUHWND__@@@Z 20013580 f SelLoad.obj + 0001:000125e0 ?SelLoadInit@@YAXPAUHWND__@@@Z 200135e0 f SelLoad.obj + 0001:000126a0 ?SelLoadAbort@@YAXPAUHWND__@@H@Z 200136a0 f SelLoad.obj + 0001:00011380 ?SelListDestroy@@YAXPAUHWND__@@@Z 20012380 f SelList.obj + 0001:00011400 ?UpdateStats@@YAXPAUHWND__@@H@Z 20012400 f SelList.obj + 0001:000114d0 ?SelListUpdateSbar@@YAXPAUHWND__@@@Z 200124d0 f SelList.obj + 0001:00011500 ?GetNumNode@@YAHPAUHWND__@@@Z 20012500 f SelList.obj + 0001:00011580 ?SelListInit@@YAXPAUHWND__@@@Z 20012580 f SelList.obj + 0001:000116c0 ?SelListSetList@@YAXPAUHWND__@@PAU_uiheroinfo@@@Z 200126c0 f SelList.obj + 0001:00011780 ?SelListSubclassEntries@@YAXPAUHWND__@@@Z 20012780 f SelList.obj + 0001:00011800 ?ListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 20012800 f SelList.obj + 0001:00011b20 ?SelListTab@@YAXPAUHWND__@@@Z 20012b20 f SelList.obj + 0001:00011bb0 ?SelListShiftTab@@YAXPAUHWND__@@@Z 20012bb0 f SelList.obj + 0001:00011c40 ?SelListPageDown@@YAXPAUHWND__@@@Z 20012c40 f SelList.obj + 0001:00011d50 ?GetHero@@YAPAU_uiheroinfo@@H@Z 20012d50 f SelList.obj + 0001:00011d90 ?SelListPageUp@@YAXPAUHWND__@@@Z 20012d90 f SelList.obj + 0001:00011ea0 ?SelListScrollDown@@YAXPAUHWND__@@@Z 20012ea0 f SelList.obj + 0001:00011fb0 ?SelListScrollUp@@YAXPAUHWND__@@@Z 20012fb0 f SelList.obj + 0001:00012090 ?SelListAbort@@YAXPAUHWND__@@H@Z 20013090 f SelList.obj + 0001:000120c0 ?SelListInterpretClick@@YAXPAUHWND__@@HH@Z 200130c0 f SelList.obj + 0001:0000f3c0 ?SelIPXDialogProc@@YGHPAUHWND__@@IIJ@Z 200103c0 f SelIPX.obj + 0001:0000f670 ?SelIPXSetInfo@@YAXPAUHWND__@@H@Z 20010670 f SelIPX.obj + 0001:0000f910 ?SelIPXUpdateSbar@@YAXPAUHWND__@@@Z 20010910 f SelIPX.obj + 0001:0000f940 ?SelIPXGetFocusNum@@YAHXZ 20010940 f SelIPX.obj + 0001:0000f9d0 ?SelIPXUpdateGames@@YAXPAUHWND__@@@Z 200109d0 f SelIPX.obj + 0001:0000fa90 ?SelIPXInvalAll@@YAXPAU_ipxgame@@@Z 20010a90 f SelIPX.obj + 0001:0000fab0 ?SelIPXDeleteInval@@YAPAU_ipxgame@@PAU1@@Z 20010ab0 f SelIPX.obj + 0001:0000fb60 ?SelIPXFreeNode@@YAXPAU_ipxgame@@@Z 20010b60 f SelIPX.obj + 0001:0000fb90 ?SelIPXEnum@@YGHKPBD0@Z 20010b90 f SelIPX.obj + 0001:0000fc60 ?SelIPXAddEnd@@YAPAU_ipxgame@@PAU1@0@Z 20010c60 f SelIPX.obj + 0001:0000fcc0 ?SelIPXFindNode@@YAPAU_ipxgame@@PAU1@K@Z 20010cc0 f SelIPX.obj + 0001:0000fcf0 ?SelIPXSetGames@@YAXPAUHWND__@@PAU_ipxgame@@@Z 20010cf0 f SelIPX.obj + 0001:0000fdf0 ?SelIPXDestroy@@YAXPAUHWND__@@@Z 20010df0 f SelIPX.obj + 0001:0000fea0 ?SelIPXFreeList@@YAXPAU_ipxgame@@@Z 20010ea0 f SelIPX.obj + 0001:0000fed0 ?SelIPXShiftTab@@YAXPAUHWND__@@@Z 20010ed0 f SelIPX.obj + 0001:0000ff60 ?SelIPXInit@@YAXPAUHWND__@@@Z 20010f60 f SelIPX.obj + 0001:000101c0 ?SelIPXSubclassEntries@@YAXPAUHWND__@@@Z 200111c0 f SelIPX.obj + 0001:00010240 ?IPXListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 20011240 f SelIPX.obj + 0001:00010560 ?SelIPXTab@@YAXPAUHWND__@@@Z 20011560 f SelIPX.obj + 0001:000105f0 ?SelIPXPageDown@@YAXPAUHWND__@@@Z 200115f0 f SelIPX.obj + 0001:00010700 ?GetNumIPXNode@@YAHPAUHWND__@@@Z 20011700 f SelIPX.obj + 0001:00010780 ?GetGame@@YAPAU_ipxgame@@H@Z 20011780 f SelIPX.obj + 0001:000107c0 ?SelIPXPageUp@@YAXPAUHWND__@@@Z 200117c0 f SelIPX.obj + 0001:000108d0 ?SelIPXScrollDown@@YAXPAUHWND__@@@Z 200118d0 f SelIPX.obj + 0001:000109e0 ?SelIPXScrollUp@@YAXPAUHWND__@@@Z 200119e0 f SelIPX.obj + 0001:00010ac0 ?SelIPXAbort@@YAXPAUHWND__@@H@Z 20011ac0 f SelIPX.obj + 0001:00010b10 ?SelIPXAttemptJoin@@YAXPAUHWND__@@@Z 20011b10 f SelIPX.obj + 0001:00010b80 ?SelIPXCreate@@YAXPAUHWND__@@@Z 20011b80 f SelIPX.obj + 0001:00010c80 ?SelIPXShowList@@YAXPAUHWND__@@H@Z 20011c80 f SelIPX.obj + 0001:00010d10 ?SelIPXDetermineGameName@@YAXPAD@Z 20011d10 f SelIPX.obj + 0001:00010da0 ?SelIPXFindNodeName@@YAPAU_ipxgame@@PAU1@PBD@Z 20011da0 f SelIPX.obj + 0001:00010de0 ?SelIPXJoin@@YAXPAUHWND__@@PAU_ipxgame@@@Z 20011de0 f SelIPX.obj + 0001:00010ed0 ?SelIPXInterpretClick@@YAXPAUHWND__@@HH@Z 20011ed0 f SelIPX.obj + 0001:0000ded0 ?SelHeroSetImage@@YAXPAUHWND__@@H@Z 2000eed0 f SelHero.obj + 0001:0000e230 ?convert_nasty@@YAXPAD@Z 2000f230 f SelHero.obj + 0001:0000e3c0 ?SelHeroDialogProc@@YGHPAUHWND__@@IIJ@Z 2000f3c0 f SelHero.obj + 0001:0000e5f0 ?DoDeleteHero@@YAXPAUHWND__@@@Z 2000f5f0 f SelHero.obj + 0001:0000e7c0 ?SelHeroDeleteNode@@YAPAU_uiheroinfo@@PAU1@PBD@Z 2000f7c0 f SelHero.obj + 0001:0000e850 ?SelHeroFreeNode@@YAXPAU_uiheroinfo@@@Z 2000f850 f SelHero.obj + 0001:0000e880 ?SelHeroFindNode@@YAPAU_uiheroinfo@@PAU1@PBD@Z 2000f880 f SelHero.obj + 0001:0000e8c0 ?DoSelList@@YAXPAUHWND__@@@Z 2000f8c0 f SelHero.obj + 0001:0000e9a0 ?DoSelClass@@YAXPAUHWND__@@@Z 2000f9a0 f SelHero.obj + 0001:0000eb00 ?DoEnterName@@YAXPAUHWND__@@@Z 2000fb00 f SelHero.obj + 0001:0000eb90 ?SelHeroCreateNew@@YAHPAUHWND__@@PBD@Z 2000fb90 f SelHero.obj + 0001:0000ecf0 ?ValidName@@YAHPBD@Z 2000fcf0 f SelHero.obj + 0001:0000ed50 ?DoSelLoad@@YAXPAUHWND__@@@Z 2000fd50 f SelHero.obj + 0001:0000edd0 ?DoSelDiff@@YAXPAUHWND__@@@Z 2000fdd0 f SelHero.obj + 0001:0000ef10 ?SelHeroDestroy@@YAXPAUHWND__@@@Z 2000ff10 f SelHero.obj + 0001:0000efb0 ?SelHeroFreeList@@YAXPAU_uiheroinfo@@@Z 2000ffb0 f SelHero.obj + 0001:0000efe0 ?SelHeroAbort@@YAXPAUHWND__@@H@Z 2000ffe0 f SelHero.obj + 0001:0000f020 ?SelHeroInit@@YAXPAUHWND__@@@Z 20010020 f SelHero.obj + 0001:0000f120 ?SelHeroGetHeros@@YAXPAUHWND__@@@Z 20010120 f SelHero.obj + 0001:0000f1f0 ?SelHeroEnumHero@@YGHPAU_uiheroinfo@@@Z 200101f0 f SelHero.obj + 0001:0000d500 ?SelDialSetInfo@@YAXPAUHWND__@@H@Z 2000e500 f SelDial.obj + 0001:0000d610 ?SelDialDestroy@@YAXPAUHWND__@@@Z 2000e610 f SelDial.obj + 0001:0000d670 ?SelDialAbort@@YAXPAUHWND__@@H@Z 2000e670 f SelDial.obj + 0001:0000d740 ?SelDialEnum@@YAXPAUHWND__@@@Z 2000e740 f SelDial.obj + 0001:0000d800 ?SelDialSetJoinBtn@@YAXPAUHWND__@@@Z 2000e800 f SelDial.obj + 0001:0000d8a0 ?SelDialClearJoinBtn@@YAXPAUHWND__@@@Z 2000e8a0 f SelDial.obj + 0001:0000d8f0 ?SelDialInit@@YAXPAUHWND__@@@Z 2000e8f0 f SelDial.obj + 0001:0000d9c0 ?SelDialPhoneBook@@YAXPAUHWND__@@@Z 2000e9c0 f SelDial.obj + 0001:0000dae0 ?SelDialGetBookEntries@@YAXXZ 2000eae0 f SelDial.obj + 0001:0000db50 ?SelDialInterpretClick@@YAXPAUHWND__@@HH@Z 2000eb50 f SelDial.obj + 0001:0000bd30 ?SelConnSetInfo@@YAXPAUHWND__@@H@Z 2000cd30 f SelConn.obj + 0001:0000bec0 ?SelConnUpdateSbar@@YAXPAUHWND__@@@Z 2000cec0 f SelConn.obj + 0001:0000bef0 ?SelConnGetFocusNum@@YAHXZ 2000cef0 f SelConn.obj + 0001:0000bf80 ?SelConnDestroy@@YAXPAUHWND__@@@Z 2000cf80 f SelConn.obj + 0001:0000c020 ?SelConnFreeList@@YAXPAU_provider@@@Z 2000d020 f SelConn.obj + 0001:0000c050 ?SelConnFreeNode@@YAXPAU_provider@@@Z 2000d050 f SelConn.obj + 0001:0000c080 ?SelConnInit@@YAXPAUHWND__@@@Z 2000d080 f SelConn.obj + 0001:0000c210 ?SelConnEnum@@YGHKPBD0PAU_SNETCAPS@@@Z 2000d210 f SelConn.obj + 0001:0000c2b0 ?SelConnSetProviders@@YAXPAUHWND__@@PAU_provider@@@Z 2000d2b0 f SelConn.obj + 0001:0000c370 ?SelConnSubclassEntries@@YAXPAUHWND__@@@Z 2000d370 f SelConn.obj + 0001:0000c3f0 ?SelConnListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 2000d3f0 f SelConn.obj + 0001:0000c6e0 ?SelConnTab@@YAXPAUHWND__@@@Z 2000d6e0 f SelConn.obj + 0001:0000c770 ?SelConnShiftTab@@YAXPAUHWND__@@@Z 2000d770 f SelConn.obj + 0001:0000c800 ?SelConnPageDown@@YAXPAUHWND__@@@Z 2000d800 f SelConn.obj + 0001:0000c910 ?GetNumProvNode@@YAHPAUHWND__@@@Z 2000d910 f SelConn.obj + 0001:0000c990 ?GetProvider@@YAPAU_provider@@H@Z 2000d990 f SelConn.obj + 0001:0000c9d0 ?SelConnPageUp@@YAXPAUHWND__@@@Z 2000d9d0 f SelConn.obj + 0001:0000cae0 ?SelConnScrollDown@@YAXPAUHWND__@@@Z 2000dae0 f SelConn.obj + 0001:0000cbf0 ?SelConnScrollUp@@YAXPAUHWND__@@@Z 2000dbf0 f SelConn.obj + 0001:0000ccd0 ?SelConnAbort@@YAXPAUHWND__@@H@Z 2000dcd0 f SelConn.obj + 0001:0000cd20 ?SelConnAttemptInit@@YAXPAUHWND__@@@Z 2000dd20 f SelConn.obj + 0001:0000cda0 ?SelConnInitProvider@@YAHPAUHWND__@@@Z 2000dda0 f SelConn.obj + 0001:0000cea0 ?SelConnInitError@@YAXPAUHWND__@@@Z 2000dea0 f SelConn.obj + 0001:0000cf00 ?SelConnInterpretClick@@YAXPAUHWND__@@HH@Z 2000df00 f SelConn.obj + 0001:0000b780 ?SelClassDestroy@@YAXPAUHWND__@@@Z 2000c780 f SelClass.obj + 0001:0000b7e0 ?SelClassInit@@YAXPAUHWND__@@@Z 2000c7e0 f SelClass.obj + 0001:0000b8c0 ?UpdateStats@@YAXPAUHWND__@@H@Z 2000c8c0 f SelClass.obj + 0001:0000b9d0 ?SelClassAbort@@YAXPAUHWND__@@H@Z 2000c9d0 f SelClass.obj + 0001:0000a7e0 ?ProgressDialogProc@@YGHPAUHWND__@@IIJ@Z 2000b7e0 f Progress.obj + 0001:0000a910 ?ProgressDestroy@@YAXPAUHWND__@@@Z 2000b910 f Progress.obj + 0001:0000aa10 ?ProgressInit@@YAXPAUHWND__@@PBD@Z 2000ba10 f Progress.obj + 0001:0000ac20 ?ProgressDraw@@YAXPAUHWND__@@H@Z 2000bc20 f Progress.obj + 0001:0000acf0 ?ProgressEndDialog@@YAXPAUHWND__@@H@Z 2000bcf0 f Progress.obj + 0001:0000ad10 ?ProgressTimer@@YAXPAUHWND__@@@Z 2000bd10 f Progress.obj + 0001:0000ad50 ?ProgressAbort@@YAXPAUHWND__@@@Z 2000bd50 f Progress.obj + 0001:0000ada0 ?ProcessMessages@@YAXPAUHWND__@@@Z 2000bda0 f Progress.obj + 0001:0000a120 ?OkCancelDialogProc@@YGHPAUHWND__@@IIJ@Z 2000b120 f OkCancel.obj + 0001:0000a2d0 ?OkCancelDestroy@@YAXPAUHWND__@@@Z 2000b2d0 f OkCancel.obj + 0001:0000a340 ?OkCancelInit@@YAHPAUHWND__@@PBD@Z 2000b340 f OkCancel.obj + 0001:0000a550 ?OkCancelAbort@@YAXPAUHWND__@@H@Z 2000b550 f OkCancel.obj + 0001:00009c20 ?ModmStatDialogProc@@YGHPAUHWND__@@IIJ@Z 2000ac20 f ModmStat.obj + 0001:00009dc0 ?ModmStatDestroy@@YAXPAUHWND__@@@Z 2000adc0 f ModmStat.obj + 0001:00009e10 ?ModmStatInit@@YAXPAUHWND__@@@Z 2000ae10 f ModmStat.obj + 0001:00009f00 ?ModmStatAbort@@YAXPAUHWND__@@H@Z 2000af00 f ModmStat.obj + 0001:00009f40 ?ModmStatUpdateStatus@@YAXPAUHWND__@@@Z 2000af40 f ModmStat.obj + 0001:00009290 ?ModemDialogProc@@YGHPAUHWND__@@IIJ@Z 2000a290 f Modem.obj + 0001:000093e0 ?ModemDestroy@@YAXPAUHWND__@@@Z 2000a3e0 f Modem.obj + 0001:00009440 ?ModemInit@@YAXPAUHWND__@@@Z 2000a440 f Modem.obj + 0001:00009560 ?ModemUpdateGame@@YAXPAUHWND__@@@Z 2000a560 f Modem.obj + 0001:000095e0 ?ModemSelDialAnswer@@YAXPAUHWND__@@@Z 2000a5e0 f Modem.obj + 0001:00009670 ?ModemAbort@@YAXPAUHWND__@@H@Z 2000a670 f Modem.obj + 0001:000096b0 ?ModemCreate@@YAXPAUHWND__@@@Z 2000a6b0 f Modem.obj + 0001:000097e0 ?ModemJoin@@YAXPAUHWND__@@PBD@Z 2000a7e0 f Modem.obj + 0001:00009a40 ?ModemJoinThread@@YAXPAX@Z 2000aa40 f Modem.obj + 0001:00009ac0 ?ModemEnterDial@@YAXPAUHWND__@@@Z 2000aac0 f Modem.obj + 0001:00009b20 ?ModemSelCre8Join@@YAXPAUHWND__@@@Z 2000ab20 f Modem.obj + 0001:000089a0 ?MainMenuDialogProc@@YGHPAUHWND__@@IIJ@Z 200099a0 f MainMenu.obj + 0001:00008bd0 ?MainMenuDestroy@@YAXPAUHWND__@@@Z 20009bd0 f MainMenu.obj + 0001:00008c20 ?MainMenuResetAttractTimer@@YAXPAUHWND__@@@Z 20009c20 f MainMenu.obj + 0001:00008c40 ?MainMenuInit@@YAXPAUHWND__@@I@Z 20009c40 f MainMenu.obj + 0001:00008d80 ?MainMenuAbort@@YAXPAUHWND__@@HH@Z 20009d80 f MainMenu.obj + 0001:00008e50 ?HasMultiplayerMemory@@YAHXZ 20009e50 f MainMenu.obj + 0001:00008e80 ?MainMenuBtnAction@@YAXPAUHWND__@@H@Z 20009e80 f MainMenu.obj + 0001:000085e0 ?LogonDialogProc@@YGHPAUHWND__@@IIJ@Z 200095e0 f Logon.obj + 0001:000086e0 ?LogonSaveInfo@@YAXPAUHWND__@@@Z 200096e0 f Logon.obj + 0001:00008750 ?LogonClearInfo@@YAXPAUHWND__@@@Z 20009750 f Logon.obj + 0001:00008780 ?LogonDestroy@@YAXPAUHWND__@@@Z 20009780 f Logon.obj + 0001:000087f0 ?LogonInit@@YAXPAUHWND__@@@Z 200097f0 f Logon.obj + 0001:00007f90 ?OnPaintBtnProc@@YGJPAUHWND__@@IIJ@Z 20008f90 f local.obj + 0001:000080b0 ?ActiveDownBtnProc@@YGJPAUHWND__@@IIJ@Z 200090b0 f local.obj + 0001:000083f0 ?UiGenCursorMask@@YAXXZ 200093f0 f local.obj + 0001:00007460 ?FocusInvalidate@@YAXPAUHWND__@@@Z 20008460 f Focus.obj + 0001:00007180 ?RestoreWindowsColors@@YAXXZ 20008180 f Fade.obj + 0001:000072b0 ?UiFadeTimerProc@@YGXPAUHWND__@@IIK@Z 200082b0 f Fade.obj + 0001:00006d20 ?EntrNameDestroy@@YAXPAUHWND__@@@Z 20007d20 f EntrName.obj + 0001:00006d80 ?EntrNameInit@@YAXPAUHWND__@@@Z 20007d80 f EntrName.obj + 0001:00006ea0 ?EntrNameAbort@@YAXPAUHWND__@@H@Z 20007ea0 f EntrName.obj + 0001:00006ef0 ?EntrNameDEN@@YAXPAUHWND__@@IJ@Z 20007ef0 f EntrName.obj + 0001:00006790 ?EntrDialDestroy@@YAXPAUHWND__@@@Z 20007790 f EntrDial.obj + 0001:000067f0 ?EntrDialInit@@YAXPAUHWND__@@@Z 200077f0 f EntrDial.obj + 0001:000068c0 ?EntrDialSetInfo@@YAXPAUHWND__@@@Z 200078c0 f EntrDial.obj + 0001:00006920 ?EntrDialAbort@@YAXPAUHWND__@@H@Z 20007920 f EntrDial.obj + 0001:00006970 ?EntrDialDEN@@YAXPAUHWND__@@IJ@Z 20007970 f EntrDial.obj + 0001:000069d0 ?EntrDialInterpretClick@@YAXPAUHWND__@@HH@Z 200079d0 f EntrDial.obj + 0001:00005ab0 ?UiDoomButtonCreate@@YAXPAUHWND__@@0HH@Z 20006ab0 f Doom.obj + 0001:00005b60 ?UiDoomTextBtnDraw@@YAXPAUHWND__@@H@Z 20006b60 f Doom.obj + 0001:00005ce0 ?UiDoomCreateBg@@YAXPAUHWND__@@0H@Z 20006ce0 f Doom.obj + 0001:00005d80 ?UiDoomDrawBg@@YAXPAUHWND__@@0@Z 20006d80 f Doom.obj + 0001:00005e80 ?UiDoomButtonReset@@YAXPAUHWND__@@0HH@Z 20006e80 f Doom.obj + 0001:00005f60 ?UiDoomStaticCreate@@YAXPAUHWND__@@0H@Z 20006f60 f Doom.obj + 0001:00006020 ?UiDoomTextDraw@@YAXPAUHWND__@@J@Z 20007020 f Doom.obj + 0001:000061a0 ?UiDoomStaticReset@@YAXPAUHWND__@@0H@Z 200071a0 f Doom.obj + 0001:00006290 ?UiDoomEditCreate@@YAXPAUHWND__@@0H@Z 20007290 f Doom.obj + 0001:000062e0 ?UiDoomTextEditDraw@@YAXPAUHWND__@@@Z 200072e0 f Doom.obj + 0001:00006490 ?UiDoomEditReset@@YAXPAUHWND__@@0H@Z 20007490 f Doom.obj + 0001:00005800 ?DisclaimerDialogProc@@YGHPAUHWND__@@IIJ@Z 20006800 f disclaim.obj + 0001:00005970 ?DisclaimerDestroy@@YAXPAUHWND__@@@Z 20006970 f disclaim.obj + 0001:000059b0 ?DisclaimerInit@@YAXPAUHWND__@@J@Z 200069b0 f disclaim.obj + 0001:00005a40 ?DisclaimerAbort@@YAXPAUHWND__@@@Z 20006a40 f disclaim.obj + 0001:00004ee0 ?DirLinkDialogProc@@YGHPAUHWND__@@IIJ@Z 20005ee0 f DirLink.obj + 0001:00005150 ?DirLinkSetInfo@@YAXPAUHWND__@@H@Z 20006150 f DirLink.obj + 0001:000051f0 ?DirLinkDestroy@@YAXPAUHWND__@@@Z 200061f0 f DirLink.obj + 0001:00005270 ?DirLinkInit@@YAXPAUHWND__@@@Z 20006270 f DirLink.obj + 0001:000053c0 ?DirLinkAbort@@YAXPAUHWND__@@H@Z 200063c0 f DirLink.obj + 0001:00005410 ?DirLinkAutoJoin@@YAXPAUHWND__@@@Z 20006410 f DirLink.obj + 0001:00005460 ?DirLinkAttemptJoin@@YAXPAUHWND__@@@Z 20006460 f DirLink.obj + 0001:000054f0 ?DirLinkCreate@@YAXPAUHWND__@@@Z 200064f0 f DirLink.obj + 0001:000055a0 ?DirLinkJoin@@YAXPAUHWND__@@@Z 200065a0 f DirLink.obj + 0001:00005690 ?DirLinkUpdateGame@@YAXPAUHWND__@@@Z 20006690 f DirLink.obj + 0001:00005710 ?DirLinkEnum@@YGHKPBD0@Z 20006710 f DirLink.obj + 0001:00005750 ?DirLinkInterpretClick@@YAXPAUHWND__@@HH@Z 20006750 f DirLink.obj + 0001:00004690 ?DiabEditWndProc@@YGJPAUHWND__@@IIJ@Z 20005690 f DiabEdit.obj + 0001:000048b0 ?DiabEditNotify@@YAXPAUHWND__@@H@Z 200058b0 f DiabEdit.obj + 0001:000048f0 ?DiabEditFlashCursor@@YAXPAUHWND__@@@Z 200058f0 f DiabEdit.obj + 0001:00004a00 ?DiabEditHandleChar@@YAXPAUHWND__@@IJ@Z 20005a00 f DiabEdit.obj + 0001:00004b80 ?DiabEditHandleKeydown@@YAXPAUHWND__@@IJ@Z 20005b80 f DiabEdit.obj + 0001:00004c30 ?DiabEditSetRestricted@@YAXPAUHWND__@@PAD@Z 20005c30 f DiabEdit.obj + 0001:00004c70 ?DiabEditCreate@@YAXPAUHWND__@@@Z 20005c70 f DiabEdit.obj + 0001:00004ce0 ?DiabEditDestroy@@YAXPAUHWND__@@@Z 20005ce0 f DiabEdit.obj + 0001:00003ec0 ?CreditsDialogProc@@YGHPAUHWND__@@IIJ@Z 20004ec0 f credits.obj + 0001:00004080 ?CreditsDestroy@@YAXPAUHWND__@@@Z 20005080 f credits.obj + 0001:00004110 ?CreditsAbort@@YAXPAUHWND__@@@Z 20005110 f credits.obj + 0001:00004150 ?CreditsInit@@YAXPAUHWND__@@J@Z 20005150 f credits.obj + 0001:00004360 ?ScrollCredits@@YAXPAUHWND__@@@Z 20005360 f credits.obj + 0001:00004440 ?CreditsDraw@@YAXPAUHWND__@@@Z 20005440 f credits.obj + 0001:00004580 ?credit_length@@YAHPAD@Z 20005580 f credits.obj + 0001:000045d0 ?credit_next@@YAPADPADH@Z 200055d0 f credits.obj + 0001:00003800 ?SelDiffSetInfo@@YAXPAUHWND__@@H@Z 20004800 f CreaDung.obj + 0001:000038e0 ?SelDiffDestroy@@YAXPAUHWND__@@@Z 200048e0 f CreaDung.obj + 0001:00003960 ?SelDiffInit@@YAXPAUHWND__@@@Z 20004960 f CreaDung.obj + 0001:00003a50 ?SelDiffAbort@@YAXPAUHWND__@@H@Z 20004a50 f CreaDung.obj + 0001:00003a80 ?SelDiffModeCreate@@YAXPAUHWND__@@@Z 20004a80 f CreaDung.obj + 0001:00003ad0 ?SelDiffMultiCreate@@YAXPAUHWND__@@@Z 20004ad0 f CreaDung.obj + 0001:00003b80 ?SelDiffAttemptCreate@@YAXPAUHWND__@@@Z 20004b80 f CreaDung.obj + 0001:00003d20 ?SelDiffInterpretClick@@YAXPAUHWND__@@HH@Z 20004d20 f CreaDung.obj + 0001:00002ac0 ?ChatCreateGameDialogProc@@YGHPAUHWND__@@IIJ@Z 20003ac0 f cr8game.obj + 0001:00002f00 ?DestroyArtwork@@YAXPAUHWND__@@@Z 20003f00 f cr8game.obj + 0001:00002fa0 ?LoadArtwork@@YAHPAUHWND__@@@Z 20003fa0 f cr8game.obj + 0001:00003070 ?DestroyDiffBtns@@YAXPAUHWND__@@@Z 20004070 f cr8game.obj + 0001:00003120 ?InitDiffBtns@@YAXPAUHWND__@@@Z 20004120 f cr8game.obj + 0001:00003220 ?DrawDiffBtn@@YAXPAUHWND__@@HH@Z 20004220 f cr8game.obj + 0001:000032b0 ?InitDefaultOptions@@YAXPAUHWND__@@@Z 200042b0 f cr8game.obj + 0001:000032f0 ?SetBtns@@YAXPAUHWND__@@H@Z 200042f0 f cr8game.obj + 0001:00003350 ?SetDesc@@YAXPAUHWND__@@JJ@Z 20004350 f cr8game.obj + 0001:00003390 ?ProcessName@@YAHPAD@Z 20004390 f cr8game.obj + 0001:00003450 ?SetFonts@@YAPAUHFONT__@@PAUHWND__@@@Z 20004450 f cr8game.obj + 0001:00002530 ?CopyProtDialogProc@@YGHPAUHWND__@@IIJ@Z 20003530 f CopyProt.obj + 0001:00002660 ?CopyProtDestroy@@YAXPAUHWND__@@@Z 20003660 f CopyProt.obj + 0001:000026d0 ?CopyProtInit@@YAHPAUHWND__@@PBD@Z 200036d0 f CopyProt.obj + 0001:000028a0 ?CopyProtAbort@@YAXPAUHWND__@@H@Z 200038a0 f CopyProt.obj + 0001:000001e0 ?ArtFontDestroyFont@@YAXPAU_artfont@@@Z 200011e0 f artfont.obj + 0001:00000330 ?ArtFontLoadFont@@YAXPAU_artfont@@PBD1@Z 20001330 f artfont.obj + 0001:00028900 _findenv 20029900 f LIBCMTD:setenv.obj + 0001:00028980 _copy_environ 20029980 f LIBCMTD:setenv.obj + 0001:000281b0 _wcsncnt 200291b0 f LIBCMTD:aw_cmp.obj + 0001:000285d0 _strncnt 200295d0 f LIBCMTD:aw_cmp.obj + 0001:000279e0 _wcstoxl 200289e0 f LIBCMTD:wcstol.obj + 0001:000267f0 __expandtime 200277f0 f LIBCMTD:strftime.obj + 0001:00026e20 __store_str 20027e20 f LIBCMTD:strftime.obj + 0001:00026e70 __store_num 20027e70 f LIBCMTD:strftime.obj + 0001:00026f20 __store_number 20027f20 f LIBCMTD:strftime.obj + 0001:00026fd0 __store_winword 20027fd0 f LIBCMTD:strftime.obj + 0001:00025600 _flsall 20026600 f LIBCMTD:fflush.obj + 0001:00024af0 _trans_lang_lang 20025af0 f LIBCMTD:getqloc.obj + 0001:00024b80 _trans_ctry_ctry 20025b80 f LIBCMTD:getqloc.obj + 0001:00024c10 _trans_ctry_lang 20025c10 f LIBCMTD:getqloc.obj + 0001:00024c90 _testSpecialCtry 20025c90 f LIBCMTD:getqloc.obj + 0001:00024cc0 _match_ctry_lang 20025cc0 f LIBCMTD:getqloc.obj + 0001:00023fd0 __get_lc_lconv 20024fd0 f LIBCMTD:initmon.obj + 0001:000241e0 _fix_grouping 200251e0 f LIBCMTD:initmon.obj + 0001:00024260 __free_lc_lconv 20025260 f LIBCMTD:initmon.obj + 0001:00023e20 _fix_grouping 20024e20 f LIBCMTD:initnum.obj + 0001:00023110 __get_lc_time 20024110 f LIBCMTD:inittime.obj + 0001:000236a0 __free_lc_time 200246a0 f LIBCMTD:inittime.obj + 0001:000239b0 _storeTimeFmt 200249b0 f LIBCMTD:inittime.obj + 0001:000210c0 _wcsncnt 200220c0 f LIBCMTD:wcstombs.obj + 0001:000205b0 _ctrlevent_capture@4 200215b0 f LIBCMTD:winsig.obj + 0001:000208a0 _siglookup 200218a0 f LIBCMTD:winsig.obj + 0001:00020350 _$$$00001 20021350 f LIBCMTD:chkstk.obj + 0001:0001fed0 _xtoa 20020ed0 f LIBCMTD:xtoa.obj + 0001:00020050 _x64toa@20 20021050 f LIBCMTD:xtoa.obj + 0001:0001ec00 _getSystemCP 2001fc00 f LIBCMTD:mbctype.obj + 0001:0001ec60 _CPtoLCID 2001fc60 f LIBCMTD:mbctype.obj + 0001:0001ece0 _setSBCS 2001fce0 f LIBCMTD:mbctype.obj + 0001:0001e4b0 _parse_cmdline 2001f4b0 f LIBCMTD:stdargv.obj + 0001:0001d6a0 __setlocale_set_cat 2001e6a0 f LIBCMTD:setlocal.obj + 0001:0001d830 __setlocale_get_all 2001e830 f LIBCMTD:setlocal.obj + 0001:0001cca0 _wcsncnt 2001dca0 f LIBCMTD:aw_map.obj + 0001:0001cfc0 _strncnt 2001dfc0 f LIBCMTD:aw_map.obj + 0001:0001c83c __unwind_handler 2001d83c f LIBCMTD:exsup.obj + 0001:0001c7c0 _xcptlookup 2001d7c0 f LIBCMTD:winxfltr.obj + 0001:0001c4c0 _doexit 2001d4c0 f LIBCMTD:crt0dat.obj + 0001:0001c5d0 __initterm 2001d5d0 f LIBCMTD:crt0dat.obj + 0001:0001a6d0 _realloc_help 2001b6d0 f LIBCMTD:dbgheap.obj + 0001:0001b310 _CheckBytes 2001c310 f LIBCMTD:dbgheap.obj + 0001:0001bf00 __printMemBlockData 2001cf00 f LIBCMTD:dbgheap.obj + 0001:0001a000 __hextodec 2001b000 f LIBCMTD:input.obj + 0001:0001a060 __inc 2001b060 f LIBCMTD:input.obj + 0001:0001a0c0 __un_inc 2001b0c0 f LIBCMTD:input.obj + 0001:0001a0e0 __whiteout 2001b0e0 f LIBCMTD:input.obj + 0001:00018180 __tzset_lk 20019180 f LIBCMTD:tzset.obj + 0001:00018510 __isindst_lk 20019510 f LIBCMTD:tzset.obj + 0001:00018810 _cvtdate 20019810 f LIBCMTD:tzset.obj + 0001:00017d10 _CrtMessageWindow 20018d10 f LIBCMTD:dbgrpt.obj + 0001:00017700 _write_char 20018700 f LIBCMTD:output.obj + 0001:00017780 _write_multi_char 20018780 f LIBCMTD:output.obj + 0001:000177c0 _write_string 200187c0 f LIBCMTD:output.obj + 0001:00017810 _get_int_arg 20018810 f LIBCMTD:output.obj + 0001:00017830 _get_int64_arg 20018830 f LIBCMTD:output.obj + 0001:00017850 _get_short_arg 20018850 f LIBCMTD:output.obj + 0001:00015fc0 __threadstart@4 20016fc0 f LIBCMTD:thread.obj + 0001:00015c60 _$$$00001 20016c60 f LIBCMTD:strchr.obj + +FIXUPS: 16877 34 fffffd31 2a 45 4b bf7 20 2f 16 10 1b fffffbee 17 77 12 +FIXUPS: 16ffe 2e 20 10 38 10 22 fffffc96 2a 33 1a fffffc43 2d 18 1c 1e +FIXUPS: 16aa4 fffffecb fffffd5b 85 69 33 c99 31 8 5b 9 17 1c 5 c 5 5 5 +FIXUPS: 17579 3d 7 f 5 5 5 15 7e 1e 1e 1d 68 9 fffffca9 24 a 23 fffffdbd +FIXUPS: 17218 b6b 18 21 34 30 a8 e2 142 ba 31 1e 2a 1b 116 25 122 1e 30 +FIXUPS: 1855a 32 22 26 177 55 53 ffffef7d 108 10 3e 54 4d 28 112f 18 38 +FIXUPS: 18b24 2b 14 2e 18 18 7a 63 34 47 1e d 2f 15 11 1d 21 14 26 19d +FIXUPS: 18fc6 19 19 a ffffeac4 34 24 cb 67 151e 7 1b 2b 17 af 16 3e e 15 +FIXUPS: 19310 c 18 17 a 15 3b 5b 52 6c 29 c d b0 53 66 53 25 23 fffff9b3 +FIXUPS: 18989 10b 1d78 c1 24 e5 39 76 4a 3d 76 6c 62 20 77 27 70 46 31 +FIXUPS: 1ae2a 44 35 1c 157 8a 32 24 f ffffe921 29 fffff6e0 11 14 12 206e +FIXUPS: 19c36 2d 47 4a 9 19 a4 1aa 1d 118 1de 32 97 1f 58 a8 28 33 43 64 +FIXUPS: 1a5a7 41 12 2f 4d 23 10 70 24 5a 46 22ec 33 49 10e 1a a1 20 31 +FIXUPS: 1cd87 4f 3a 31 18 45 18 f 1a 88 69 2a 34 39 16 7c 2a 28 ffffdfda +FIXUPS: 1b156 21 1f d 21 10a2 5a 1f 93 57 8 51 2b 28 28 28 16 94 2b 32 +FIXUPS: 1c5f7 39 20 49 33 22 67 47 80 1f 5e 15 4d 5a 11 5c 1b fffff2b9 +FIXUPS: 1bca6 a 24 1c 50 1d 1f 62 34 3b 2b 3b 45 2b c 41 6b 56 36 c 2b +FIXUPS: 1c0ba 2c 1c 16 c 1f 62 51 1f 45 fffff375 33 2f 51 15 1e d 35 21 +FIXUPS: 1b733 1c 6b 28 32 4f 18 1f 5b 66 25 25 b3 19 59 5f 54 85 15 1e +FIXUPS: 1bc42 18 20 194c fffffbaf 2a 2e 37 81 2a 21 62 1a 1a 1a 1a 1a e +FIXUPS: 1b1f4 26 28 15 18 d 1d 25 2f 1c 69 28 5f 54 21 128 1e 26a7 e 13 +FIXUPS: 1dc8a eb 9b c9 a3 e 13 e fffff9c4 d 11 2f 25 fffffe4f fffffdd7 +FIXUPS: 1d61a fffffe03 12 1d 20 1e 20 1b 77 12 13 19 b 31 1428 26 2e 1b +FIXUPS: 1ea61 19 19 11 67 27 40 2a 45 2e 33 4a 25 2b fffff3d4 60 13 a 34 +FIXUPS: 1e16b 6a 2c 44 2c fffff7f4 a0 7c 78 7a5 48 51 19 2f 2d 39 21 5a +FIXUPS: 1e598 47 17 31 11 1a 22 10 43 26 c 47 1b 40 3e 31 4e 4e 1a 25 2a +FIXUPS: 1e9aa 19 f66 10a 45 ff 4c 15 7 e 179 fffff6d2 1b 13 22 fffffe50 +FIXUPS: 1f300 1f 29 26 17 12 1c fffffb35 13 e8 29a fffffacc 1c 13 6d a5 +FIXUPS: 1e2cf 43 2339 11 4c fffffc8c 1c 77 6e 57 15 17 1d 14 13 14 1a 19 +FIXUPS: 20235 fffffc0a 2e 88 2f 69 1a 16 12a 4a 94 2b fffff6f9 c 18 15 +FIXUPS: 2103d 4a 17 a8 fffffb52 21 13 50 5e fffffde7 35 18 a6 10 fffffdca +FIXUPS: 20a65 fffffccd b 14 14 f 6d 1a2 b 10 3e b fffffbfb b 14 14 f ddf +FIXUPS: 21485 24 27 2a 17 58 50 44 1d 16 c4 13 28 16 1d a 99 ff 10 fffff962 +FIXUPS: 212a0 44 4b fffffe4d 2a 44 4b fffffc69 18 11b 21 127a 13 4a de +FIXUPS: 223e5 fffffd52 c d 2e 29 19 2c fffffb8c 24 13 62 3e 6b 60 64 54 +FIXUPS: 2205e 3b fffffa38 5d 98 e e 103 59 fffff679 43 19e3 fffffe51 48 +FIXUPS: 22c9f 3e f d fffffebe 1b fffffe4c 18 10 f 39 5f fffffd43 82 2a +FIXUPS: 22417 4d 40 40 43 4d 40 43 50 50 4d 65 60 fffffa9f 1457 a3 102 +FIXUPS: 2395d fffff731 8 12 27 b 2a ffffff0d 14 1d a c fffffdb9 17 43 14 +FIXUPS: 22eb6 1b 40 14 59 14 a c 39 fffffd8f 14 36 14 1a2c 11 11 11 11 +FIXUPS: 2484f 11 11 11 11 11 11 11 14 14 14 14 14 14 14 14 14 14 14 36 +FIXUPS: 249f4 1c 2c 11b ffffe75a 236 11a ef0 1f 22 22 22 22 22 22 22 22 +FIXUPS: 24642 22 18 3c 11 11 11 11 11 10 11 11 11 11 11 11 11 11 11 11 +FIXUPS: 247d8 11 fffff8fa 11 5e 1f 1f 1f 1f 1f 1c 1f 1f 1f 1f 1f 1f 1f +FIXUPS: 24301 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f 1f cd6 1f bd 11 +FIXUPS: 252a6 11 11 11 11 fffff8b9 1d 1d 17 16 11 11 46 13 14 5b 11 10 +FIXUPS: 24d49 30 16 3b fffff288 1f 10 e 1e 11 14fa 22 17 e 15 e e e 2b +FIXUPS: 2567a fffff845 1f 10 e 4c 11 4f 11 4d 1f 1f 1f 1f 17 17 1f 1f 1f +FIXUPS: 2512c 1f 1f 1f 1053 b 66 2f e b 18 31 3d 2f fffff43c 41 52 1d 22 +FIXUPS: 258e2 92 6a 1b 89 2c 29 54 90 6c fffff716 1f 19 19 19 106 65 161e +FIXUPS: 26b73 ffffff4b fffffc88 fffffd57 e c f 22 28 78 6e 21 68 33 40 +FIXUPS: 26717 f fffffc9a 5c 41 1f fffff995 82 2f 83 7d 11 b8 b d6 b 182b +FIXUPS: 279cc 28 45 2d 2d 28 28 1c 29 41 84 3a 24 31 36 50 a 21 164 31c +FIXUPS: 281cd 110 ffffe8e5 b 14 14 f 137 b 23 2c5 38a 1c 1c 1b 36 3a 9 +FIXUPS: 274b2 9 48 9 2e 9 2e 9 2c 9 2c 9 2c 9 3d 54 84 8d 7e 23 23 23 3a +FIXUPS: 2792d 24 1043 13 fffffab5 33 2c 32 20 2e 14 1b 43 6f ffffea8d 15 +FIXUPS: 270d9 50 9 2e 9 71 15 1b 51 9 2e 9 6e 15 37 15 1e 14 1f05 fc 140 +FIXUPS: 2954f 5c e fffff8a9 17 2e 2d a 16 fffffe11 31 c f 4c 27 f f 27 +FIXUPS: 289d2 3c 136 27 11 d8 7e fffffaa7 88 13 ea 11ef 14 8e 2c fffffa79 +FIXUPS: 29679 29 3a 40 3e 33 4b 59 5a c 19 42 3c a7 19 28 c 21 fffff542 +FIXUPS: 28f9e e4 81 63 e 13 e f3 fffd80c8 18 e d e 11 19 9b 2d 2b0 d4 2865f +FIXUPS: 29e75 58 28 29 fffffeaf 3a fffffeab b 14 c f 1e 1b c 10 29 2d fffffea3 +FIXUPS: 29c6e fffffe62 fffd9772 19 2a 54 15b 25 2b ffffdc17 7 7 7 7 7 7 +FIXUPS: 10cc 9d d d d d d d d 68 47 17 17 17 17 17 17 17 1158 7b 2b 26 +FIXUPS: 256d dc 2d 42 59 124 69 7f 61 bc 35 5b e2 157 18 51 5d 53 4a 61 +FIXUPS: 2f24 3b 16 1e5 25 3b 4f e ffffeb7c 16 16 33 30 46 19 19 19 19 19 +FIXUPS: 1efe 19 19 19 16 16 16 16 16 32 12b 145 7 34 15 5c 17 16 b0 5e +FIXUPS: 2458 13d1 1e 18 55 ffffdfb3 30 3f 37 30 4c 14 16 17 7a 13 80 1d +FIXUPS: 1c25 19 19 19 19 19 19 19 19 19 19 19 19 16 16 220a 70 16 21 14 +FIXUPS: 405e 8b 1b 7b 22 60 f 85 88 23 5f 3f 53 fffff079 48 12 75 a 15 +FIXUPS: 35f0 10 10 10 18 1c 1a0 11 e6 2f 18 6e 17 52 37 63 11c 2a 16 11 +FIXUPS: 3c46 55 9 12 c b 8a 10 24 43 28 15 c 65 c c c 4f 37 30 a01 1c a +FIXUPS: 498c 5 3f 11 13 13 13 15 15 10 b d 25 1f e 5c 33 18 e 7a 7f f 93 +FIXUPS: 4d40 10 26 12 51 1e 603 18 57 b 21 4f 53 20 14 fffff02f 28 10 16 +FIXUPS: 460d 1b 1e 2e e 17 1d 1a 1c 16d 13 53 13 1b 11 11 11 11 15 13f6 +FIXUPS: 4e96 12 d2 15 29 d d 35 15 16 10 18 1c 1d 31 1c 38 e 7 e 43 58 +FIXUPS: 5215 e 57 24 29 14 42 1c e a57 30 5 5 5 17 5 49 5 7 fffff7da 27 +FIXUPS: 5766 11 23 19 24 11 13 24 4d e4 48 38 10d 8d 5f 51 40 28 2d 3c +FIXUPS: 63a2 15 d 9 e b b 7 10 3e f 46 17 31 20 1d 56 12 4a 18 35 f 4c +FIXUPS: 66bd 37 e 23 11 3a 10 26 12 fffff928 e e c 1a 1c 89 13 23 11 11 +FIXUPS: 6230 11 15 8 5 17 12 9 11 c 12 5 3f e 11 13 13 13 15 15 c 54d 30 +FIXUPS: 691d d 1a 1c 1d 11 15 12 3f e 13 13 20 a e fffff437 1f 8 c3 28 +FIXUPS: 5fb9 16 25 1b 1e 2e 11 24 f d fcb 3a 39 4e 58 2d c 19 25 20 59 +FIXUPS: 72a6 10 c c 6a e 7 1b c 5c 35 39 42 24 c c 54 fffff2cf 12 b4 15 +FIXUPS: 7a3a fffff06a 2e 10 c 10 25 20 74 30 14 1f 17 59 39 32 34 43 c8 +FIXUPS: 6e74 29 c 10 25 20 52 2f 10 c 19 25 20 eeb 3d 15 fffff680 10 16 +FIXUPS: 760a e 17 17 1a 1c 118 e 11 11 17 4d 15 13 d 12 44 62 f b 35 3d +FIXUPS: 79b6 3a 12 26 815 32 2c 2a 1f fffff7f2 10 16 3e 12 39 12 e 16 17 +FIXUPS: 7bec 1c 11c e 11 11 15 2b 3e 2c 15 13 d 12 2a 35 b 16c2 ffffed99 +FIXUPS: 83ed 58 9 9e 65 a1 37 9 73 69 11 9b 1d fffff782 21 21 d 8b 16 19 +FIXUPS: 808a a9 f 16 5 7 5 5b 40 2b 926 f3 44 6c 1a 2a 1a 2a 1a 2a 1d 2a +FIXUPS: 8e28 d7 10 d9 1a7 cd 6e 1b 2d 3a 28 24 26 1c cc 30 27 1c 16 1d +FIXUPS: 9e44 a4 15 12 12 12 12 fffff679 89 e b e 1e 18 e 1f d5 30 45 28 +FIXUPS: 880e 96 c7 27 24 5b 2d 2c 39 70 1c e 109c e 11 15 8 23 f 1e 39 +FIXUPS: 9cac 34 15 d 12 9 11 c 12 9 11 24 5 17 1d d 11 1d b e b b 7 bc4 +FIXUPS: aa8a 28 2e 16 48 2e e 2f ffffed5a 8 1d 2d 11 e cc 27 25 10 2c 11 +FIXUPS: 9aea 15 25 d 34 e a 11 1a 1c 10 8a4 5 3f e 13 13 13 c 79 78 3f +FIXUPS: a64d 10 1b e 7 10 29 1d 84 1f 79 c 1e 8 a 2c b1 32 2e 2b 2a 56d +FIXUPS: af86 13 fffff0da 13 41 13 2b 11 41 a1 4f 1f 8 b1 11 26 10 10 c +FIXUPS: a38f 10 1a 1c 18 11 11 15 8 1d 11 c 114c 50 50 b5 fffff4c6 3e 8c +FIXUPS: acbc 10 1e 1e 11 e 19 8 19 13 1a 1c 27 8 e 11 1f 3f 13 15 d 12 +FIXUPS: aeab 64 b ef4 5 fffff261 9e 71 a 17 1d 15 54 10 10 10 21 22 1c +FIXUPS: b2f6 30 8e 31 a 15 18 2c a 19 16 1b 39 3f 40 d 354 1b 18 1c 32 +FIXUPS: b966 31 31 30 4d 11 22 a 19 a 15 17 13 1a 17 17 42 39 b b6 3f 81 +FIXUPS: bd3a 21 7 17 e ba9 37 6d 2d a b 25 fffff649 7e 5c 6e 5b 66 3e 18 +FIXUPS: c2fe 1b 76 27 27 27 1b fffff37d 16 93 7 17 e 16 12 a 6 2806 b ffffe400 +FIXUPS: c4e2 10 16 27 1d 1e 3e 12 39 12 e e 17 1a 1c 116 e 11 11 15 2b +FIXUPS: c832 2a 13 15 15 d 12 17 1434 10 16 12 27 a 29 14 7 a 44 f 27 1d +FIXUPS: de57 8 24 6 5e 3c 10 29 12 29 28 31 11 11 11 5e e 12 fffff440 e +FIXUPS: d4fd 37 349 e 2b 13 d 19 c 15a e 1f 13 d 19 c 72 56 14 20 13 38 +FIXUPS: dc73 14 20 13 20 9 e b fffff30a 8 5 24 39 19 d 12 9 11 c 12 5 3f +FIXUPS: d132 13 13 13 15 15 23 10 11 3c 4a 15 13 b0 22 15e e e fffff598 +FIXUPS: cb4b 28 10 16 c 25 1c 1d 2d 1d 10 11 11 22 d 2b e 1a 1c b5 cf 13 +FIXUPS: cec4 15 b4 f 11 11 11 11 11 1738 39 d 38 2f 4c 6 a 46 15 41 15 +FIXUPS: e920 12 e 13 15 15 8 d 17 9 3c 78 31 1c 1a 51 52 12 26 12 fffff5fe +FIXUPS: e1da 19 89 28 10 16 27 1d 1e 2e e 17 2b e 1a 1c 15a 42 76 1d 11 +FIXUPS: e63f 8 14 28 b b 3d d 29 e 192c c 12 5 3f e 17 13 13 13 c 15 3d +FIXUPS: 101b1 44 12 1c 39 4d 12 25 1f ffffe918 21 d 3d 25 25 25 fffff446 +FIXUPS: e14c 5b 1a63 1a 5e 1a 40 24 20 15 37 70 23 1d 25 2f 34 18 23 10 +FIXUPS: ff1d 11 11 e 2a 1c 8 2c 21 e 7 10 1c c fffff4bf 17 28 1e 10 c d +FIXUPS: f58a 1a 1c 3a 7d 30 5d 2b 3e 2c 59 48 36 2c 40 13 6d 2e 4d 36 12 +FIXUPS: fb20 1a 60 3f fffff2e6 54 30 23 25 49 49 49 49 49 15 13 40 13 22 +FIXUPS: f1a4 49 c 13 6a 1b 8b 4d 12 25 b8 11 26 13 13 13 13 26e5 38 f 35 +FIXUPS: 11c4e 10 c9 19 4b 2a 63 18 37 f 4e 2f 10 29 12 29 28 31 11 11 11 +FIXUPS: ed68 8a 2b 2b 2b 2b e 280d d 19 c 15a e 1f 13 d 19 c 72 56 14 20 +FIXUPS: 119c6 38 65 14 20 13 1e e b b 7 10 4e 16 e 19 15 fffff314 b4 d +FIXUPS: 10f8a 9 11 c 12 5 3f e 8 4c 13 13 15 15 12 8a f 15 e 187 e e e +FIXUPS: 11345 e 56 2c4 e 2b fffff23f 13 1c 15 bb 13 c 21 57 c 89 70 20 +FIXUPS: 10bc5 39 16 12 11f 3c 3f 22 18 1b 11 11 11 11 11 15 8 5 7 fffff503 +FIXUPS: 1039e dd 28 10 16 c 25 1c 1d 2d 1d 10 11 11 22 d 31 e e 1a 1c ab +FIXUPS: 1071f 2a 22 13 35 24 1a 1e 13 2658 c 73 56 14 20 13 38 38 2c 14 +FIXUPS: 13066 13 1b b d 37 12 29 12 29 c 6 15 29 28 31 11 11 11 ffffd0f6 +FIXUPS: 10377 22d1 8 15 d 12 e 8 9c 31 166 e e e e e 56 354 e e d f 13 +FIXUPS: 12d15 19 c 1b a5 1a e 1f 13 d fffff333 15 2c 1a 10 e e 17 1a 1c +FIXUPS: 1238d 8 e 11 11 11 15 7b 17 17 17 13 1d 9 f 37 6e 8 3d 2c 15 15 +FIXUPS: 133b3 3b 12 e e 17 1a 1c 11b e 11 11 15 48 2a 13 15 15 d 12 d b +FIXUPS: 136d4 ffffe9eb 28 10 16 c 27 1e 1d 13 2581 13 d c 6e 53 14 13 2b +FIXUPS: 148b0 14 13 20 b 52 2f 12 29 12 29 28 31 11 11 11 ffffe845 28 10 +FIXUPS: 13329 1e 1d 3d a51 15 14 18 a5 8 3f 13 13 13 15 15 12 12 e a2 31 +FIXUPS: 141e7 e e e e e 37 349 e 2b 13 d c d0 e fffff1e5 f 33 39 23 37 +FIXUPS: 139e6 1e 12 3c e 13 97 28 10 c 25 1e 1e 2c 1a 10 e e 17 1a 1c 12f +FIXUPS: 13dae 11 11 11 f20 11 e 11 1e 39 8 27 48 30 15 16 a f e 13 b 3a +FIXUPS: 14f29 76 ffffe781 20 a 7 14 2f 15 13 3f 5e 34 13 1a66 3f e 57 24 +FIXUPS: 153f7 14 42 1c e b3 18 57 b 21 4f 53 20 14 fffff44e 80 28 10 3e +FIXUPS: 14bef 1e 21 11 e 1a 55 1c 1059 11 c 12 1d 14 17 e b 7 e fffff1f0 +FIXUPS: 14fd8 d2 15 29 d d 35 15 16 10 18 1c 1d 31 1c 38 e 7 e 43 b7b 20 +FIXUPS: 15835 24 4c 36 5e 39 28 11 9e 1d 1e 10 12 de 15 49 18 c d 24 e +FIXUPS: 15c5f 1c 19 e 15 e 3f e 13 diff --git a/Uisrc/UI/DEBUG/Logon.obj b/Uisrc/UI/DEBUG/Logon.obj new file mode 100644 index 0000000..11fbeeb Binary files /dev/null and b/Uisrc/UI/DEBUG/Logon.obj differ diff --git a/Uisrc/UI/DEBUG/Logon.sbr b/Uisrc/UI/DEBUG/Logon.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/MainMenu.obj b/Uisrc/UI/DEBUG/MainMenu.obj new file mode 100644 index 0000000..a682d5b Binary files /dev/null and b/Uisrc/UI/DEBUG/MainMenu.obj differ diff --git a/Uisrc/UI/DEBUG/MainMenu.sbr b/Uisrc/UI/DEBUG/MainMenu.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Modem.obj b/Uisrc/UI/DEBUG/Modem.obj new file mode 100644 index 0000000..4658ac6 Binary files /dev/null and b/Uisrc/UI/DEBUG/Modem.obj differ diff --git a/Uisrc/UI/DEBUG/Modem.sbr b/Uisrc/UI/DEBUG/Modem.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/ModmStat.obj b/Uisrc/UI/DEBUG/ModmStat.obj new file mode 100644 index 0000000..ef2ada6 Binary files /dev/null and b/Uisrc/UI/DEBUG/ModmStat.obj differ diff --git a/Uisrc/UI/DEBUG/ModmStat.sbr b/Uisrc/UI/DEBUG/ModmStat.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/OkCancel.obj b/Uisrc/UI/DEBUG/OkCancel.obj new file mode 100644 index 0000000..dab955f Binary files /dev/null and b/Uisrc/UI/DEBUG/OkCancel.obj differ diff --git a/Uisrc/UI/DEBUG/OkCancel.sbr b/Uisrc/UI/DEBUG/OkCancel.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Progress.obj b/Uisrc/UI/DEBUG/Progress.obj new file mode 100644 index 0000000..853574e Binary files /dev/null and b/Uisrc/UI/DEBUG/Progress.obj differ diff --git a/Uisrc/UI/DEBUG/Progress.sbr b/Uisrc/UI/DEBUG/Progress.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/RCA15699 b/Uisrc/UI/DEBUG/RCA15699 new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/STANDARD.LIB b/Uisrc/UI/DEBUG/STANDARD.LIB new file mode 100644 index 0000000..7d6fc5f Binary files /dev/null and b/Uisrc/UI/DEBUG/STANDARD.LIB differ diff --git a/Uisrc/UI/DEBUG/STORM.LIB b/Uisrc/UI/DEBUG/STORM.LIB new file mode 100644 index 0000000..67499fd Binary files /dev/null and b/Uisrc/UI/DEBUG/STORM.LIB differ diff --git a/Uisrc/UI/DEBUG/Sbar.obj b/Uisrc/UI/DEBUG/Sbar.obj new file mode 100644 index 0000000..1c8c2cd Binary files /dev/null and b/Uisrc/UI/DEBUG/Sbar.obj differ diff --git a/Uisrc/UI/DEBUG/Sbar.sbr b/Uisrc/UI/DEBUG/Sbar.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelClass.obj b/Uisrc/UI/DEBUG/SelClass.obj new file mode 100644 index 0000000..50740a3 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelClass.obj differ diff --git a/Uisrc/UI/DEBUG/SelClass.sbr b/Uisrc/UI/DEBUG/SelClass.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelConn.obj b/Uisrc/UI/DEBUG/SelConn.obj new file mode 100644 index 0000000..0ae18ff Binary files /dev/null and b/Uisrc/UI/DEBUG/SelConn.obj differ diff --git a/Uisrc/UI/DEBUG/SelConn.sbr b/Uisrc/UI/DEBUG/SelConn.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelDial.obj b/Uisrc/UI/DEBUG/SelDial.obj new file mode 100644 index 0000000..639c523 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelDial.obj differ diff --git a/Uisrc/UI/DEBUG/SelDial.sbr b/Uisrc/UI/DEBUG/SelDial.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelGame.obj b/Uisrc/UI/DEBUG/SelGame.obj new file mode 100644 index 0000000..758ac76 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelGame.obj differ diff --git a/Uisrc/UI/DEBUG/SelGame.sbr b/Uisrc/UI/DEBUG/SelGame.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelHero.obj b/Uisrc/UI/DEBUG/SelHero.obj new file mode 100644 index 0000000..489abd1 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelHero.obj differ diff --git a/Uisrc/UI/DEBUG/SelHero.sbr b/Uisrc/UI/DEBUG/SelHero.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelIPX.obj b/Uisrc/UI/DEBUG/SelIPX.obj new file mode 100644 index 0000000..4b8c15c Binary files /dev/null and b/Uisrc/UI/DEBUG/SelIPX.obj differ diff --git a/Uisrc/UI/DEBUG/SelIPX.sbr b/Uisrc/UI/DEBUG/SelIPX.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelList.obj b/Uisrc/UI/DEBUG/SelList.obj new file mode 100644 index 0000000..a350c44 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelList.obj differ diff --git a/Uisrc/UI/DEBUG/SelList.sbr b/Uisrc/UI/DEBUG/SelList.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelLoad.obj b/Uisrc/UI/DEBUG/SelLoad.obj new file mode 100644 index 0000000..2b84d88 Binary files /dev/null and b/Uisrc/UI/DEBUG/SelLoad.obj differ diff --git a/Uisrc/UI/DEBUG/SelLoad.sbr b/Uisrc/UI/DEBUG/SelLoad.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelModem.obj b/Uisrc/UI/DEBUG/SelModem.obj new file mode 100644 index 0000000..834df0a Binary files /dev/null and b/Uisrc/UI/DEBUG/SelModem.obj differ diff --git a/Uisrc/UI/DEBUG/SelModem.sbr b/Uisrc/UI/DEBUG/SelModem.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/SelYesNo.obj b/Uisrc/UI/DEBUG/SelYesNo.obj new file mode 100644 index 0000000..3983dce Binary files /dev/null and b/Uisrc/UI/DEBUG/SelYesNo.obj differ diff --git a/Uisrc/UI/DEBUG/SelYesNo.sbr b/Uisrc/UI/DEBUG/SelYesNo.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Support.obj b/Uisrc/UI/DEBUG/Support.obj new file mode 100644 index 0000000..90f224f Binary files /dev/null and b/Uisrc/UI/DEBUG/Support.obj differ diff --git a/Uisrc/UI/DEBUG/Support.sbr b/Uisrc/UI/DEBUG/Support.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/Title.obj b/Uisrc/UI/DEBUG/Title.obj new file mode 100644 index 0000000..f18ad89 Binary files /dev/null and b/Uisrc/UI/DEBUG/Title.obj differ diff --git a/Uisrc/UI/DEBUG/Title.sbr b/Uisrc/UI/DEBUG/Title.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/UiSnd.obj b/Uisrc/UI/DEBUG/UiSnd.obj new file mode 100644 index 0000000..4b3840e Binary files /dev/null and b/Uisrc/UI/DEBUG/UiSnd.obj differ diff --git a/Uisrc/UI/DEBUG/UiSnd.sbr b/Uisrc/UI/DEBUG/UiSnd.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/VC50.IDB b/Uisrc/UI/DEBUG/VC50.IDB new file mode 100644 index 0000000..46ae63d Binary files /dev/null and b/Uisrc/UI/DEBUG/VC50.IDB differ diff --git a/Uisrc/UI/DEBUG/VC50.PDB b/Uisrc/UI/DEBUG/VC50.PDB new file mode 100644 index 0000000..719d62a Binary files /dev/null and b/Uisrc/UI/DEBUG/VC50.PDB differ diff --git a/Uisrc/UI/DEBUG/disclaim.obj b/Uisrc/UI/DEBUG/disclaim.obj new file mode 100644 index 0000000..18e512f Binary files /dev/null and b/Uisrc/UI/DEBUG/disclaim.obj differ diff --git a/Uisrc/UI/DEBUG/disclaim.sbr b/Uisrc/UI/DEBUG/disclaim.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/hellfrui.pdb b/Uisrc/UI/DEBUG/hellfrui.pdb new file mode 100644 index 0000000..a11e746 Binary files /dev/null and b/Uisrc/UI/DEBUG/hellfrui.pdb differ diff --git a/Uisrc/UI/DEBUG/local.obj b/Uisrc/UI/DEBUG/local.obj new file mode 100644 index 0000000..acb334a Binary files /dev/null and b/Uisrc/UI/DEBUG/local.obj differ diff --git a/Uisrc/UI/DEBUG/local.sbr b/Uisrc/UI/DEBUG/local.sbr new file mode 100644 index 0000000..e69de29 diff --git a/Uisrc/UI/DEBUG/ui.bsc b/Uisrc/UI/DEBUG/ui.bsc new file mode 100644 index 0000000..287b3ec Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.bsc differ diff --git a/Uisrc/UI/DEBUG/ui.dll.recipe b/Uisrc/UI/DEBUG/ui.dll.recipe new file mode 100644 index 0000000..ec171fb --- /dev/null +++ b/Uisrc/UI/DEBUG/ui.dll.recipe @@ -0,0 +1,11 @@ + + + + + D:\projects\Hellfire\Uisrc\UI\debug\ui.dll + + + + + + \ No newline at end of file diff --git a/Uisrc/UI/DEBUG/ui.ilk b/Uisrc/UI/DEBUG/ui.ilk new file mode 100644 index 0000000..265e99d Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.ilk differ diff --git a/Uisrc/UI/DEBUG/ui.log b/Uisrc/UI/DEBUG/ui.log new file mode 100644 index 0000000..35e7be1 --- /dev/null +++ b/Uisrc/UI/DEBUG/ui.log @@ -0,0 +1,123 @@ +cl : command line warning D9035: option 'Gm' has been deprecated and will be removed in a future release + UiSnd.cpp + Title.cpp + Support.cpp + SelYesNo.cpp + SelModem.cpp + SelLoad.cpp +D:\projects\Hellfire\Uisrc\UI\SelModem.cpp(130,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelModem.cpp(131,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + SelList.cpp + SelIPX.cpp +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp(181,9): warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _stricmp. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp(256,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp(257,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp(338,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp(869,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + SelHero.cpp +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(364,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(417,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(418,2): warning C4996: '_strlwr': This function or variable may be unsafe. Consider using _strlwr_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(423,3): warning C4996: '_strlwr': This function or variable may be unsafe. Consider using _strlwr_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(509,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(935,4): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(1021,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp(1063,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + SelGame.cpp + SelDial.cpp +D:\projects\Hellfire\Uisrc\UI\SelDial.cpp(291,6): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + SelConn.cpp +D:\projects\Hellfire\Uisrc\UI\SelConn.cpp(156,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\SelConn.cpp(157,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + SelClass.cpp + Sbar.cpp + Progress.cpp + OkCancel.cpp + ModmStat.cpp +D:\projects\Hellfire\Uisrc\UI\ModmStat.cpp(193,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + Modem.cpp +D:\projects\Hellfire\Uisrc\UI\Modem.cpp(153,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\Modem.cpp(154,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + MainMenu.cpp +D:\projects\Hellfire\Uisrc\UI\MainMenu.cpp(349,3): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + Logon.cpp + Generating Code... + Compiling... + local.cpp +D:\projects\Hellfire\Uisrc\UI\local.cpp(535,3): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + Focus.cpp + Fade.cpp + EntrName.cpp + EntrDial.cpp + Doom.cpp + disclaim.cpp + DirLink.cpp +D:\projects\Hellfire\Uisrc\UI\DirLink.cpp(111,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\DirLink.cpp(112,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + Diabloui.cpp + DiabEdit.cpp +D:\projects\Hellfire\Uisrc\UI\DiabEdit.cpp(171,3): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + credits.cpp + CreaHero.cpp + CreaDung.cpp +D:\projects\Hellfire\Uisrc\UI\CreaDung.cpp(184,48): warning C4244: '=': conversion from 'LONG' to 'BYTE', possible loss of data +D:\projects\Hellfire\Uisrc\UI\CreaDung.cpp(196,51): warning C4244: '=': conversion from 'LONG' to 'BYTE', possible loss of data +D:\projects\Hellfire\Uisrc\UI\CreaDung.cpp(241,53): warning C4244: '=': conversion from 'LONG' to 'BYTE', possible loss of data + cr8game.cpp +D:\projects\Hellfire\Uisrc\UI\cr8game.cpp(244,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\cr8game.cpp(267,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\cr8game.cpp(323,4): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + CopyProt.cpp + connect.cpp +D:\projects\Hellfire\Uisrc\UI\connect.cpp(238,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(240,34): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(241,34): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(243,36): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(244,39): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(246,35): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(247,32): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(248,43): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(249,33): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(250,36): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(251,35): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(253,32): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(254,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(255,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(256,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(258,40): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(259,37): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(261,45): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(267,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(272,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(280,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(281,33): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(283,35): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(284,34): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(286,33): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(288,32): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(289,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(290,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(291,31): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(293,39): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(294,35): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(295,39): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(297,35): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(298,32): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(299,30): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(502,13): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(655,16): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(664,7): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(871,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(977,3): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(979,3): warning C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(1004,11): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(1065,2): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +D:\projects\Hellfire\Uisrc\UI\connect.cpp(1085,9): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + artfont.cpp + Generating Code... +C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(1415,5): warning MSB8012: TargetPath(D:\projects\Hellfire\Uisrc\UI\debug\ui.dll) does not match the Linker's OutputFile property value (D:\projects\Hellfire\bin\hellfrui.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). +C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Microsoft\VC\v180\Microsoft.CppBuild.targets(1417,5): warning MSB8012: TargetName(ui) does not match the Linker's OutputFile property value (hellfrui). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). + Creating library .\debug/hellfrui.lib and object .\debug/hellfrui.exp + ui.vcxproj -> D:\projects\Hellfire\Uisrc\UI\debug\ui.dll + 'pwsh.exe' is not recognized as an internal or external command, + operable program or batch file. diff --git a/Uisrc/UI/DEBUG/ui.tlog/CL.command.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/CL.command.1.tlog new file mode 100644 index 0000000..2a6d810 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/CL.command.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/CL.read.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/CL.read.1.tlog new file mode 100644 index 0000000..dd9c297 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/CL.read.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/CL.write.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/CL.write.1.tlog new file mode 100644 index 0000000..828c93c Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/CL.write.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/Cl.items.tlog b/Uisrc/UI/DEBUG/ui.tlog/Cl.items.tlog new file mode 100644 index 0000000..8365444 --- /dev/null +++ b/Uisrc/UI/DEBUG/ui.tlog/Cl.items.tlog @@ -0,0 +1,37 @@ +D:\projects\Hellfire\Uisrc\UI\artfont.cpp;D:\projects\Hellfire\Uisrc\UI\debug\artfont.obj +D:\projects\Hellfire\Uisrc\UI\connect.cpp;D:\projects\Hellfire\Uisrc\UI\debug\connect.obj +D:\projects\Hellfire\Uisrc\UI\CopyProt.cpp;D:\projects\Hellfire\Uisrc\UI\debug\CopyProt.obj +D:\projects\Hellfire\Uisrc\UI\cr8game.cpp;D:\projects\Hellfire\Uisrc\UI\debug\cr8game.obj +D:\projects\Hellfire\Uisrc\UI\CreaDung.cpp;D:\projects\Hellfire\Uisrc\UI\debug\CreaDung.obj +D:\projects\Hellfire\Uisrc\UI\CreaHero.cpp;D:\projects\Hellfire\Uisrc\UI\debug\CreaHero.obj +D:\projects\Hellfire\Uisrc\UI\credits.cpp;D:\projects\Hellfire\Uisrc\UI\debug\credits.obj +D:\projects\Hellfire\Uisrc\UI\DiabEdit.cpp;D:\projects\Hellfire\Uisrc\UI\debug\DiabEdit.obj +D:\projects\Hellfire\Uisrc\UI\Diabloui.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Diabloui.obj +D:\projects\Hellfire\Uisrc\UI\DirLink.cpp;D:\projects\Hellfire\Uisrc\UI\debug\DirLink.obj +D:\projects\Hellfire\Uisrc\UI\disclaim.cpp;D:\projects\Hellfire\Uisrc\UI\debug\disclaim.obj +D:\projects\Hellfire\Uisrc\UI\Doom.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Doom.obj +D:\projects\Hellfire\Uisrc\UI\EntrDial.cpp;D:\projects\Hellfire\Uisrc\UI\debug\EntrDial.obj +D:\projects\Hellfire\Uisrc\UI\EntrName.cpp;D:\projects\Hellfire\Uisrc\UI\debug\EntrName.obj +D:\projects\Hellfire\Uisrc\UI\Fade.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Fade.obj +D:\projects\Hellfire\Uisrc\UI\Focus.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Focus.obj +D:\projects\Hellfire\Uisrc\UI\local.cpp;D:\projects\Hellfire\Uisrc\UI\debug\local.obj +D:\projects\Hellfire\Uisrc\UI\Logon.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Logon.obj +D:\projects\Hellfire\Uisrc\UI\MainMenu.cpp;D:\projects\Hellfire\Uisrc\UI\debug\MainMenu.obj +D:\projects\Hellfire\Uisrc\UI\Modem.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Modem.obj +D:\projects\Hellfire\Uisrc\UI\ModmStat.cpp;D:\projects\Hellfire\Uisrc\UI\debug\ModmStat.obj +D:\projects\Hellfire\Uisrc\UI\OkCancel.cpp;D:\projects\Hellfire\Uisrc\UI\debug\OkCancel.obj +D:\projects\Hellfire\Uisrc\UI\Progress.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Progress.obj +D:\projects\Hellfire\Uisrc\UI\Sbar.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Sbar.obj +D:\projects\Hellfire\Uisrc\UI\SelClass.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelClass.obj +D:\projects\Hellfire\Uisrc\UI\SelConn.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelConn.obj +D:\projects\Hellfire\Uisrc\UI\SelDial.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelDial.obj +D:\projects\Hellfire\Uisrc\UI\SelGame.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelGame.obj +D:\projects\Hellfire\Uisrc\UI\SelHero.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelHero.obj +D:\projects\Hellfire\Uisrc\UI\SelIPX.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelIPX.obj +D:\projects\Hellfire\Uisrc\UI\SelList.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelList.obj +D:\projects\Hellfire\Uisrc\UI\SelLoad.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelLoad.obj +D:\projects\Hellfire\Uisrc\UI\SelModem.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelModem.obj +D:\projects\Hellfire\Uisrc\UI\SelYesNo.cpp;D:\projects\Hellfire\Uisrc\UI\debug\SelYesNo.obj +D:\projects\Hellfire\Uisrc\UI\Support.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Support.obj +D:\projects\Hellfire\Uisrc\UI\Title.cpp;D:\projects\Hellfire\Uisrc\UI\debug\Title.obj +D:\projects\Hellfire\Uisrc\UI\UiSnd.cpp;D:\projects\Hellfire\Uisrc\UI\debug\UiSnd.obj diff --git a/Uisrc/UI/DEBUG/ui.tlog/bscmake.command.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/bscmake.command.1.tlog new file mode 100644 index 0000000..f295475 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/bscmake.command.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/bscmake.read.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/bscmake.read.1.tlog new file mode 100644 index 0000000..e6c3237 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/bscmake.read.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/bscmake.write.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/bscmake.write.1.tlog new file mode 100644 index 0000000..14a9e6d Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/bscmake.write.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/link.command.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/link.command.1.tlog new file mode 100644 index 0000000..958eca5 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/link.command.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/link.read.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/link.read.1.tlog new file mode 100644 index 0000000..5160f7f Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/link.read.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/link.secondary.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/link.secondary.1.tlog new file mode 100644 index 0000000..ceaf894 --- /dev/null +++ b/Uisrc/UI/DEBUG/ui.tlog/link.secondary.1.tlog @@ -0,0 +1,4 @@ +^D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\ARTFONT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\CONNECT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\COPYPROT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\CR8GAME.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\CREADUNG.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\CREAHERO.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\CREDITS.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DIABEDIT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DIABLOUI.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DIABLOUI.RES|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DIRLINK.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DISCLAIM.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\DOOM.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\ENTRDIAL.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\ENTRNAME.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\FADE.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\FOCUS.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\LOCAL.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\LOGON.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\MAINMENU.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\MODEM.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\MODMSTAT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\OKCANCEL.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\PROGRESS.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SBAR.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELCLASS.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELCONN.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELDIAL.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELGAME.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELHERO.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELIPX.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELLIST.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELLOAD.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELMODEM.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SELYESNO.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\SUPPORT.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\TITLE.OBJ|D:\PROJECTS\HELLFIRE\UISRC\UI\DEBUG\UISND.OBJ +D:\projects\Hellfire\Uisrc\UI\debug\hellfrui.lib +D:\projects\Hellfire\Uisrc\UI\debug\hellfrui.EXP +D:\projects\Hellfire\Uisrc\UI\debug\ui.ilk diff --git a/Uisrc/UI/DEBUG/ui.tlog/link.write.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/link.write.1.tlog new file mode 100644 index 0000000..052204a Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/link.write.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/rc.command.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/rc.command.1.tlog new file mode 100644 index 0000000..e804dbf Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/rc.command.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/rc.read.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/rc.read.1.tlog new file mode 100644 index 0000000..46f75bb Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/rc.read.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/rc.write.1.tlog b/Uisrc/UI/DEBUG/ui.tlog/rc.write.1.tlog new file mode 100644 index 0000000..f219875 Binary files /dev/null and b/Uisrc/UI/DEBUG/ui.tlog/rc.write.1.tlog differ diff --git a/Uisrc/UI/DEBUG/ui.tlog/ui.lastbuildstate b/Uisrc/UI/DEBUG/ui.tlog/ui.lastbuildstate new file mode 100644 index 0000000..de3d96e --- /dev/null +++ b/Uisrc/UI/DEBUG/ui.tlog/ui.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v145:VCToolArchitecture=Native32Bit:VCToolsVersion=14.50.35717:VCServicingVersionCompilers=14.50.35728:TargetPlatformVersion=10.0.26100.0:VcpkgTriplet=x86-windows: +Debug|Win32|D:\projects\Hellfire\| diff --git a/Uisrc/UI/DEBUG/vcpkg.applocal.log b/Uisrc/UI/DEBUG/vcpkg.applocal.log new file mode 100644 index 0000000..e02abfc --- /dev/null +++ b/Uisrc/UI/DEBUG/vcpkg.applocal.log @@ -0,0 +1 @@ + diff --git a/Uisrc/UI/DIABEDIT.CPP b/Uisrc/UI/DIABEDIT.CPP new file mode 100644 index 0000000..29c8e12 --- /dev/null +++ b/Uisrc/UI/DIABEDIT.CPP @@ -0,0 +1,290 @@ +//**************************************************************************** +// DiabEdit.cpp +// Diablo UI custom edit ctrl +// +// By Frank Pearce +// created 10.23.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define CURSOR_TIMER_ID 1 + #define CURSOR_TIMER_DELAY 500 + + #define MAX_RESTRICTED 256 + + #define LIMITPROP "LIMIT" + #define CURSORFLAGPROP "CURSOR" + #define RESTRICTEDPROP "RESTRICTED" + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditNotify(HWND window, int notifycode) { + SendMessage( + GetParent(window), + WM_COMMAND, + MAKELONG(GetWindowLong(window, GWL_ID), notifycode), + (LPARAM)window + ); +} + + +//**************************************************************************** +//**************************************************************************** +void DiabEditPaint (HWND window) { + PAINTSTRUCT ps; + HDC dc = BeginPaint(window,&ps); + + // PAINT THE BITMAP + SDlgDrawBitmap(window,SDLG_USAGE_BACKGROUND,(HRGN)0); + + EndPaint(window,&ps); +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditFlashCursor(HWND window) { + char buffer[256] = ""; + BOOL flag; + int len; + + flag = (BOOL) GetProp(window, CURSORFLAGPROP); + if (flag) { + flag = FALSE; + SetProp(window, CURSORFLAGPROP, (HANDLE) flag); + DiabEditNotify(window, DEN_UPDATE); + } + else { + flag = TRUE; + SetProp(window, CURSORFLAGPROP, (HANDLE) flag); + + GetWindowText(window, buffer, 255); + buffer[254] = 0; + len = strlen(buffer); + + buffer[len] = DIABLO_EDITCURSOR; + buffer[len+1] = 0; + SetWindowText(window, buffer); + DiabEditNotify(window, DEN_UPDATE); + + buffer[len] = 0; + SetWindowText(window, buffer); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditHandleChar(HWND window, WPARAM wparam, LPARAM lparam) { + unsigned char c; + LPSTR restricted; + char buffer[256] = ""; + + c = wparam & 0xff; + + if (c != '\b') { + // prescreen some characters that should never be allowed + if (c < ' ') return; + if ((c > '~') && (c < 192)) return; + + // screen user specified restricted chars + restricted = (LPSTR) GetProp(window, RESTRICTEDPROP); + if (restricted) { + while (*restricted) { + if (c == *restricted) return; + restricted++; + } + } + } + + // get the current string + GetWindowText(window,buffer,255); + buffer[254] = 0; + int len = strlen(buffer); + + switch (c) { + + case '\b': + if (len) { + buffer[len-1] = 0; + SetWindowText(window,buffer); + } + break; + + default: + // add the new char to the string + if (len < (int) GetProp(window, LIMITPROP)) { + buffer[len++] = c; + buffer[len] = 0; + SetWindowText(window,buffer); + } + break; + } + + DiabEditFlashCursor(window); +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditHandleKeydown(HWND window, WPARAM wparam, LPARAM lparam) { + unsigned char c; + char buffer[256] = ""; + + // get the current string + GetWindowText(window,buffer,255); + buffer[254] = 0; + int len = strlen(buffer); + + switch (wparam) { + case VK_LEFT: + c = wparam & 0xff; + if (len) { + buffer[len-1] = 0; + SetWindowText(window,buffer); + } + DiabEditFlashCursor(window); + break; + + case VK_RIGHT: + case VK_UP: + case VK_DOWN: + default: + // don't do anything with these + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditSetRestricted(HWND window, LPSTR newrestricted) { + LPSTR oldrestricted = (LPSTR) GetProp(window, RESTRICTEDPROP); + + if (oldrestricted) { + strncpy(oldrestricted, newrestricted, MAX_RESTRICTED-1); + oldrestricted[MAX_RESTRICTED-1] = 0; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditCreate(HWND window) { + LPSTR restricted; + + SDlgSetTimer(window, CURSOR_TIMER_ID, CURSOR_TIMER_DELAY, NULL); + SetProp(window, CURSORFLAGPROP, (HANDLE) FALSE); + + restricted = (LPSTR) ALLOC(MAX_RESTRICTED); + if (!restricted) + return; + restricted[0] = 0; + SetProp(window, RESTRICTEDPROP, (HANDLE) restricted); +} + + +//**************************************************************************** +//**************************************************************************** +static void DiabEditDestroy(HWND window) { + SDlgKillTimer(window, CURSOR_TIMER_ID); + + RemoveProp(window, LIMITPROP); + RemoveProp(window, CURSORFLAGPROP); + LPSTR restricted = (LPSTR) RemoveProp(window, RESTRICTEDPROP); + if (restricted) { + FREE(restricted); + } +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK DiabEditWndProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_CREATE: + DiabEditCreate(window); + break; + + case WM_DESTROY: + DiabEditDestroy(window); + break; + + case WM_GETDLGCODE: + return (DLGC_WANTCHARS | DLGC_WANTARROWS); + + case WM_CHAR: + DiabEditHandleChar(window, wparam, lparam); + break; + + case WM_KEYDOWN: + DiabEditHandleKeydown(window, wparam, lparam); + return 0; + + case WM_LBUTTONDOWN: + SetFocus(window); + break; + + case WM_SETFOCUS: + DiabEditNotify(window, DEN_SETFOCUS); + break; + + case WM_PAINT: + DiabEditPaint(window); + return 0; + + case WM_TIMER: + DiabEditFlashCursor(window); + return 0; + + case DEM_CLEAR: + SetWindowText(window, ""); + DiabEditNotify(window, DEN_UPDATE); + return 0; + + case DEM_LIMITTEXT: + SetProp(window, LIMITPROP, (HANDLE) wparam); + return 0; + + case DEM_GETLIMITTEXT: + return (LRESULT) GetProp(window, LIMITPROP); + + case DEM_CURSORON: + return (LRESULT) GetProp(window, CURSORFLAGPROP); + + case DEM_RESTRICTCHARS: + DiabEditSetRestricted(window, (LPSTR) lparam); + return 0; + } + return DefWindowProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +void DiabEditRegisterClass (void) { + WNDCLASS wndclass; + ZeroMemory(&wndclass,sizeof(WNDCLASS)); + wndclass.style = CS_CLASSDC; + wndclass.lpfnWndProc = DiabEditWndProc; + wndclass.hInstance = (HINSTANCE)GetModuleHandle(NULL); + wndclass.lpszClassName = "DIABLOEDIT"; + RegisterClass(&wndclass); +} diff --git a/Uisrc/UI/DIABEDIT.H b/Uisrc/UI/DIABEDIT.H new file mode 100644 index 0000000..384d589 --- /dev/null +++ b/Uisrc/UI/DIABEDIT.H @@ -0,0 +1,35 @@ +//**************************************************************************** +// DiabEdit.h +// Diablo UI custom edit ctrl +// +// By Frank Pearce +// created 10.23.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** + #define DIABLO_EDITCURSOR '|' + + +//**************************************************************************** +// DiabloEdit ctrl notification messages +//**************************************************************************** + #define DEN_SETFOCUS 1 + #define DEN_KILLFOCUS 2 + #define DEN_UPDATE 3 + + +//**************************************************************************** +// messages the parent can send to the Diablo edit +//**************************************************************************** + #define DEM_CLEAR WM_USER + #define DEM_LIMITTEXT (WM_USER+1) + #define DEM_GETLIMITTEXT (WM_USER+2) + #define DEM_CURSORON (WM_USER+3) + #define DEM_RESTRICTCHARS (WM_USER+4) + + +//**************************************************************************** +//**************************************************************************** + void DiabEditRegisterClass(void); diff --git a/Uisrc/UI/DIABLOUI.APS b/Uisrc/UI/DIABLOUI.APS new file mode 100644 index 0000000..f44be32 Binary files /dev/null and b/Uisrc/UI/DIABLOUI.APS differ diff --git a/Uisrc/UI/DIABLOUI.CPP b/Uisrc/UI/DIABLOUI.CPP new file mode 100644 index 0000000..fae86f7 --- /dev/null +++ b/Uisrc/UI/DIABLOUI.CPP @@ -0,0 +1,141 @@ +/**************************************************************************** +* +* DIABLOUI.CPP +* Diablo UI library common code +* +* By Michael O'Brien (9/12/96) +* +***/ + +#define OEMRESOURCE + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +HINSTANCE global_hinstance = (HINSTANCE)0; + +LPBYTE ui_background = NULL; +SIZE ui_backgroundsize = {0,0}; + + +extern BOOL LoadGlobalHeroArt(void); +extern void FreeGlobalHeroArt(void); + +//**************************************************************************** +//**************************************************************************** +static BOOL sgSpawned = FALSE; + + +/**************************************************************************** +* +* EXPORTED FUNCTIONS +* +***/ + +//=========================================================================== +BOOL UiIsSpawned() { + return sgSpawned; +} + + +//=========================================================================== +void APIENTRY UiOnPaint (LPPARAMS params) { +#if 0 + LPBYTE videobuffer; + int pitch; + if (SDrawLockSurface(SDRAW_SURFACE_FRONT,NULL,&videobuffer,&pitch)) { + int screencx, screency; + SDrawGetScreenSize(&screencx,&screency,NULL); + if (ui_background) { + RECT destrect = {0,0,screencx-1,screency-1}; + RECT sourcerect = {0,0,ui_backgroundsize.cx-1,ui_backgroundsize.cy-1}; + SBltROP3Tiled(videobuffer, + &destrect, + pitch, + ui_background, + &sourcerect, + ui_backgroundsize.cx, + 0, + 0, + 0, + SRCCOPY); + } + else + SGdiRectangle(videobuffer,0,0,screencx-1,screency-1,PALETTEINDEX(0)); + SDrawUnlockSurface(SDRAW_SURFACE_FRONT,videobuffer); + } +#endif +} + +//=========================================================================== +BOOL APIENTRY UiSetBackgroundBitmap (HWND window, + LPPALETTEENTRY palette, + LPBYTE bitmapbits, + int width, + int height) { + ui_background = bitmapbits; + ui_backgroundsize.cx = width; + ui_backgroundsize.cy = height; + return SDrawUpdatePalette(10,236,palette+10); +} + + +//=========================================================================== +//=========================================================================== +void APIENTRY UiSetSpawned(BOOL spawned) { + sgSpawned = spawned; +} + + +//=========================================================================== +//=========================================================================== +static BOOL sgInUI; +void APIENTRY UiInitialize(void) { + sgInUI = TRUE; + + UiSndInit(); + ArtFontInit(); + LoadGlobalHeroArt(); + + UiLoadCursor(); +} + + +//=========================================================================== +//=========================================================================== +void APIENTRY UiDestroy() { + + UiDestroyCursor(); + FreeGlobalHeroArt(); + + sgInUI = FALSE; +} + + +//=========================================================================== +//=========================================================================== +void APIENTRY UiAppActivate(BOOL activating) { + if (! sgInUI) return; + +} + + +//=========================================================================== +//=========================================================================== +//=========================================================================== +extern "C" BOOL APIENTRY DllMain (HINSTANCE instance, DWORD reason, LPVOID) { + switch (reason) { + case DLL_PROCESS_ATTACH: + global_hinstance = instance; + DiabEditRegisterClass(); + UiCreateIdentityPal(); + break; + case DLL_PROCESS_DETACH: + UiFreeIdentityPal(); + break; + } + return 1; +} + diff --git a/Uisrc/UI/DIABLOUI.DEF b/Uisrc/UI/DIABLOUI.DEF new file mode 100644 index 0000000..4406002 --- /dev/null +++ b/Uisrc/UI/DIABLOUI.DEF @@ -0,0 +1,31 @@ +LIBRARY hellfrui +EXPORTS +UiInitialize +UiDestroy +UiOnPaint +UiTitleDialog +UiCreditsDialog +UiSupportDialog +UiMainMenuDialog +UiSetBackgroundBitmap +UiSelHeroSingDialog +UiSelHeroMultDialog +UiGetDefaultStats +UiCreateGameCallback +UiDrawDescCallback +UiArtCallback +UiSoundCallback +UiAuthCallback +UiGetDataCallback +UiCategoryCallback +UiLogonDialog +UiProgressDialog +UiBetaDisclaimer +UiCopyProtError +UiMessageBoxCallback +UiSelectProvider +UiSelectGame +UiCreatePlayerDescription +UiCreateGameCriteria +UiSetSpawned +UiAppActivate \ No newline at end of file diff --git a/Uisrc/UI/DIABLOUI.H b/Uisrc/UI/DIABLOUI.H new file mode 100644 index 0000000..01de79b --- /dev/null +++ b/Uisrc/UI/DIABLOUI.H @@ -0,0 +1,265 @@ +//*************************************************************************** +// DiabloUI.h +// created 9.13.96 +//*************************************************************************** + + +//*************************************************************************** +extern "C" void APIENTRY UiInitialize(void); +extern "C" void APIENTRY UiSetSpawned(BOOL bSpawned); +extern "C" void APIENTRY UiDestroy(); +extern "C" void APIENTRY UiAppActivate(BOOL activating); + + +//*************************************************************************** +extern "C" BOOL CALLBACK UiCreateGameCallback (SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); + +extern "C" BOOL CALLBACK UiArtCallback (DWORD providerid, + DWORD artid, + LPPALETTEENTRY pe, + LPBYTE buffer, + DWORD buffersize, + int *width, + int *height, + int *bitdepth); + +extern "C" BOOL CALLBACK UiSoundCallback(DWORD providerid, DWORD soundid, DWORD flags); + +extern "C" BOOL CALLBACK UiDrawDescCallback (DWORD providerid, + DWORD itemtype, + LPCSTR itemname, + LPCSTR itemdescription, + DWORD itemflags, + DWORD drawflags, + DWORD time, + LPDRAWITEMSTRUCT lpdis); + +extern "C" BOOL CALLBACK UiMessageBoxCallback(HWND hWnd, + LPCTSTR lpText, + LPCTSTR lpCaption, + UINT uType); + +extern "C" BOOL CALLBACK UiAuthCallback(DWORD dwItemType, LPCSTR szName, LPCSTR szDesc, DWORD dwUserFlags, LPCSTR szItem, LPSTR szErrorBuf, DWORD dwErrorBufSize); +extern "C" BOOL CALLBACK UiGetDataCallback(DWORD providerid, DWORD dataid, LPVOID buffer, DWORD buffersize, DWORD *bytesused); + +extern "C" BOOL CALLBACK UiCategoryCallback( + BOOL userinitiated, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD * categorybits, + DWORD * categorymask); + +//*************************************************************************** +enum _ui_classes { + UI_WARRIOR = 0, + UI_ROGUE, + UI_SORCERER, + UI_MONK, + UI_BARD, + UI_BARBARIAN, + UI_NUM_CLASSES +}; + +//*************************************************************************** +extern "C" BOOL APIENTRY UiTitleDialog (UINT timeoutseconds); +extern "C" BOOL APIENTRY UiBetaDisclaimer (UINT timeoutseconds); +extern "C" BOOL APIENTRY UiCreditsDialog (UINT pixelspersec); +extern "C" BOOL APIENTRY UiSupportDialog (UINT pixelspersec); + +//*************************************************************************** +enum _copyprot_results { + COPYPROT_OK = 1, + COPYPROT_CANCEL +}; +extern "C" BOOL APIENTRY UiCopyProtError (DWORD *result); + +//*************************************************************************** +#define DEFAULT_ATTRACT_TIMEOUT 30 +typedef void (CALLBACK *PLAYSND)(LPCSTR); +enum _mainmenu_selections { + MAINMENU_SINGLE_PLAYER = 1, + MAINMENU_MULTIPLAYER, + MAINMENU_REPLAY_INTRO, + MAINMENU_SUPPORT, + MAINMENU_SHOW_CREDITS, + MAINMENU_EXIT_DIABLO, + MAINMENU_ATTRACT_MODE +}; +extern "C" BOOL APIENTRY UiMainMenuDialog(LPCTSTR registration, + DWORD * selection, + bool allowMultiplayer, + PLAYSND sndfcn = NULL, + UINT attracttimeoutseconds = DEFAULT_ATTRACT_TIMEOUT); + +//*************************************************************************** +#define MAX_GAME_LEN 32 +#define MAX_PASSWORD_LEN 32 + +enum _difficulty { + DIFF_NORMAL, + DIFF_NIGHTMARE, + DIFF_HELL, + NUM_DIFFICULTIES +}; + + +typedef struct _gamedata TGAMEDATA; +struct _gamedata { + DWORD dwSeed; + BYTE bDiff; // Use enum's from _difficulty settings +}; + + +//*************************************************************************** +//*************************************************************************** +// all the functions and structures for selecting/creating/deleting heros +//*************************************************************************** +//*************************************************************************** +#define MAX_NAME_LEN 16 // including terminting char +#define MAX_CLASS_LEN 16 // including terminting char + +typedef struct _uiheroinfo TUIHEROINFO; +typedef TUIHEROINFO *TPUIHEROINFO; + +typedef struct _uidefaultstats { + WORD strength; + WORD magic; + WORD dexterity; + WORD vitality; +} TUIDEFSTATS, *TPUIDEFSTATS; + +struct _uiheroinfo { + TPUIHEROINFO next; + char name[MAX_NAME_LEN]; // eg "Frasier" + + WORD level; + BYTE heroclass; // UI_WARRIOR, etc. + BYTE herorank; // # of times hero has killed Diablo (range = 0..NUM_DIFFICULTIES) + + WORD strength; + WORD magic; + WORD dexterity; + WORD vitality; + + DWORD gold; + BOOL hassaved; + BOOL spawned; +}; + +//*************************************************************************** + +#define UI_DESC_MAXLENGTH 128 + +// The following routines output a null terminated string to the provided preallocated +// pointers. The maximum length of the string is defined by the above constant. +extern "C" BOOL APIENTRY UiCreatePlayerDescription(TPUIHEROINFO pHeroInfo, DWORD dwProgramId, LPSTR pPlayerDesc); + +// Call this routine to generate a query string used by Battle.net to sort games in the +// JoinGame list. Returns the number of bytes written out to szQuery. +extern "C" int APIENTRY UiCreateGameCriteria(TPUIHEROINFO pHeroInfo, LPSTR pszQuery); + +//*************************************************************************** + +typedef BOOL (CALLBACK *ENUMHEROPROC)(TPUIHEROINFO); +typedef BOOL (CALLBACK *ENUMHEROS)(ENUMHEROPROC); +typedef BOOL (CALLBACK *CREATEHERO)(TPUIHEROINFO); +typedef BOOL (CALLBACK *DELETEHERO)(TPUIHEROINFO); +typedef BOOL (CALLBACK *GETDEFHERO)(int, TPUIDEFSTATS); + +enum _selhero_selections { + SELHERO_NEW_DUNGEON = 1, + SELHERO_CONTINUE, + SELHERO_CONNECT, + SELHERO_PREVIOUS +}; +extern "C" BOOL APIENTRY UiSelHeroSingDialog( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + GETDEFHERO getstatsfcn, + DWORD *selection, + LPSTR heroname, + int *difficulty, + bool allowBard, + bool allowBarbarian + ); +extern "C" BOOL APIENTRY UiSelHeroMultDialog( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + GETDEFHERO getstatsfcn, + DWORD *selection, + LPSTR heroname, + bool allowBard, + bool allowBarbarian + ); + +// if the default starting statistics for a character class change +// then Diablo.exe will have to provide this function +extern "C" BOOL CALLBACK UiGetDefaultStats(int heroclass, TPUIDEFSTATS defaultstats); + +//*************************************************************************** +extern "C" BOOL APIENTRY UiLogonDialog(HWND parent, + DWORD *selection, + LPSTR logonname, + UINT maxnamelen, + LPSTR logonpassword, + UINT maxpasswordlen); + +//*************************************************************************** +typedef int (CALLBACK *PROGRESSFCN)(void); +extern "C" BOOL APIENTRY UiProgressDialog(HWND parent, + LPCSTR progresstext, + BOOL abortable, + PROGRESSFCN progressfcn, + DWORD callspersec); + +//*************************************************************************** +extern "C" void APIENTRY UiOnPaint (LPPARAMS params); +extern "C" BOOL APIENTRY UiSetBackgroundBitmap (HWND window, + LPPALETTEENTRY palette, + LPBYTE bitmapbits, + int width, + int height); + +//*************************************************************************** +//*************************************************************************** +extern "C" BOOL APIENTRY UiSelectProvider (SNETCAPSPTR mincaps, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *providerid); +extern "C" BOOL APIENTRY UiSelectGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); + + +//*************************************************************************** +//*************************************************************************** + #define DEVNAME_LEN SNETSPI_MAXSTRINGLENGTH + #define DEVDESC_LEN SNETSPI_MAXSTRINGLENGTH + #define MAX_DIAL_LEN 32 + enum _dialmodes { + MODE_ANSWER = (IDCANCEL + 1), + MODE_DIALOLD, + MODE_DIALNEW + }; + typedef struct _modeminfo TMODEM; + typedef TMODEM *TPMODEM; + struct _modeminfo { + TPMODEM next; + DWORD deviceid; + TCHAR devicename[DEVNAME_LEN]; + TCHAR devicedesc[DEVDESC_LEN]; + }; diff --git a/Uisrc/UI/DIABLOUI.RC b/Uisrc/UI/DIABLOUI.RC new file mode 100644 index 0000000..f1740dd --- /dev/null +++ b/Uisrc/UI/DIABLOUI.RC @@ -0,0 +1,116 @@ +//Microsoft Developer Studio generated resource script. +// +#include "unused.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "mike.rc" +#include "frank.rc" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "unused.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""mike.rc""\r\n" + "#include ""frank.rc""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "frank.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""mike.rc""\r\n" + "#include ""frank.rc""\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "frank.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Uisrc/UI/DIRLINK.CPP b/Uisrc/UI/DIRLINK.CPP new file mode 100644 index 0000000..179596f --- /dev/null +++ b/Uisrc/UI/DIRLINK.CPP @@ -0,0 +1,481 @@ +//**************************************************************************** +// DirLink.cpp +// Diablo UI create/join direct link multiplayer game +// +// By Frank Pearce +// created 11.8.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +#define SERIAL_JOIN_AUTHORIZE 0 + +//**************************************************************************** +//**************************************************************************** + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + + extern BOOL UiDoomCreateGame (SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid, + BOOL loadfocus, + LPCSTR gamename); + + +//**************************************************************************** +//**************************************************************************** + #define PROVIDERID 'SCBL' + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 + + #define ENUM_TIMER_ID 3 // how often we re-enum available games + #define ENUM_TIMER_DELAY 2000 + + +//**************************************************************************** +//**************************************************************************** + static int sgTitleIDs[] = { + IDC_DLGTITLE, + IDC_DLGTITLE2, + 0 + }; + static int sgTextIDs[] = { + IDC_DLGTITLE3, + 0 + }; + static int sgGameDescID[] = { + IDC_LINKDESC, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_DIRLINKBTN1, + IDC_DIRLINKBTN2, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** + #define GAMENAME_LEN SNETSPI_MAXSTRINGLENGTH + #define DESCRIPTION_LEN SNETSPI_MAXSTRINGLENGTH + + typedef struct _serialgame TGAME; + typedef TGAME *TPGAME; + struct _serialgame { + DWORD gameid; + TCHAR gamename[GAMENAME_LEN]; + TCHAR gamedesc[DESCRIPTION_LEN]; + }; + static TGAME sgGame; + + static SNETPROGRAMDATAPTR sgDLProgramData; + static SNETPLAYERDATAPTR sgDLPlayerData; + static SNETUIDATAPTR sgDLInterfaceData; + static SNETVERSIONDATAPTR sgDLVersionData; + static DWORD *sgpDLPlayerID; + + static void DirLinkUpdateGame(HWND window); + static void DirLinkAutoJoin(HWND window); + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK DirLinkEnum(DWORD gameid, + LPCSTR gamename, + LPCSTR gamedesc) { + sgGame.gameid = gameid; + strcpy(sgGame.gamename, gamename); + strcpy(sgGame.gamedesc, gamedesc); + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkSetInfo(HWND window, int childid) { + TCHAR desc[256]; + HWND child = GetDlgItem(window, IDC_LINKDESC); + + if (childid == IDC_DIRLINKBTN1) + LoadString(global_hinstance, IDS_CREATEDESC, desc, 255); + else + LoadString(global_hinstance, IDS_RETRYCONNDESC, desc, 255); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), desc); + UiDoomStaticReset(window, sgGameDescID, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkDestroy(HWND window) { + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgGameDescID); + UiDoomCtrlsDestroy(window, sgTextIDs); + UiDoomCtrlsDestroy(window, sgTitleIDs); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + TitleLogoDestroy(); + FocusAnimateDestroy(); +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkInit(HWND window) { + TPBMP tpBmp; + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\selgame.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + UiOnPaintBtns(window, sgListIDs); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTitleIDs, AF_BIGGRAY); + UiDoomStaticInit(window, sgTextIDs, AF_MEDGRAY); + UiDoomStaticInit(window, sgGameDescID, AF_SMALLGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); + + // see if there's a game + DirLinkUpdateGame(window); + DirLinkAutoJoin(window); + + // set a timer so the game list is periodically updated + SDlgSetTimer(window, ENUM_TIMER_ID, ENUM_TIMER_DELAY, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + UiFadeAbort(window); + SDlgKillTimer(window, ENUM_TIMER_ID); + SDlgKillTimer(window, LOGO_TIMER_ID); + SDlgKillTimer(window, FOCUS_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkCreate(HWND window) { + SNETUIDATA interfacedata; + SNETCREATEDATA createdata; + + // create new interface data + CopyMemory(&interfacedata,sgDLInterfaceData,sizeof(SNETUIDATA)); + interfacedata.size = sizeof(SNETUIDATA); + interfacedata.parentwindow = window; + + ZeroMemory(&createdata,sizeof(SNETCREATEDATA)); + createdata.size = sizeof(SNETCREATEDATA); + createdata.providerid = PROVIDERID; + createdata.maxplayers = sgDLProgramData->maxplayers; + createdata.createflags = 0; + + if (UiDoomCreateGame( + &createdata, + sgDLProgramData, + sgDLPlayerData, + &interfacedata, + sgDLVersionData, + sgpDLPlayerID, + FALSE, + sgDLPlayerData->playername + ) + ) { + DirLinkAbort(window, IDOK); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkAutoJoin(HWND window) { + if (! sgGame.gameid) return; + +#if SERIAL_JOIN_AUTHORIZE + if (! + UiAuthCallback( + SNET_AUTHTYPE_GAME, + sgDLPlayerData->playername, + sgDLPlayerData->playerdescription, + 0, + sgGame.gamedesc, + NULL, + 0 + ) + ) { + return; + } +#endif + + if (SNetJoinGame( + sgGame.gameid, + sgGame.gamename, + NULL, + sgDLPlayerData->playername, + sgDLPlayerData->playerdescription, + sgpDLPlayerID + ) + ) { + DirLinkAbort(window, IDOK); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkJoin(HWND window) { + char err[256]; + if (! + UiAuthCallback( + SNET_AUTHTYPE_GAME, + sgDLPlayerData->playername, + sgDLPlayerData->playerdescription, + 0, + sgGame.gamedesc, + err, + sizeof(err) + ) + ) { + SelOkDialog(window, err, NULL, FALSE); + return; + } + + if (SNetJoinGame( + sgGame.gameid, + sgGame.gamename, + NULL, + sgDLPlayerData->playername, + sgDLPlayerData->playerdescription, + sgpDLPlayerID + ) + ) { + DirLinkAbort(window, IDOK); + } + else { + // unable to join the specified game + TCHAR format[64], errstr[128]; + LoadString(global_hinstance, IDS_JOIN_ERR, format, 63); + wsprintf(errstr, format, sgGame.gamename); + SelOkDialog(window, errstr, NULL, FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkAttemptJoin(HWND window) { + HWND child = GetFocus(); + + if (window != GetParent(child)) return; + + if (IDC_DIRLINKBTN1 == GetWindowLong(child, GWL_ID)) { + DirLinkCreate(window); + } + else if (sgGame.gameid) { + DirLinkJoin(window); + } + else { + // a game has not been detected + TCHAR errstr[128]; + LoadString(global_hinstance, IDS_NOGAME_ERR, errstr, 127); + SelOkDialog(window, errstr, NULL, FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkUpdateGame(HWND window) { + // clear old info + sgGame.gameid = 0; + sgGame.gamename[0] = 0; + sgGame.gamedesc[0] = 0; + + // enum will fill in info if a game exists + if (! SNetEnumGames(0, 0, DirLinkEnum, NULL)) { //### MM Diablo Patch #2 3/21/97 + if (GetLastError() == SNET_ERROR_VERSION_MISMATCH) { + // display a version mismatch error + TCHAR err[128]; + LoadString(global_hinstance, IDS_VERSION_ERR, err, 127); + SelOkDialog(window, err, NULL, FALSE); + DirLinkAbort(window, IDCANCEL); + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DirLinkInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + DirLinkAttemptJoin(window); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + DirLinkAbort(window, IDCANCEL); + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK DirLinkDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + DirLinkSetInfo(window, LOWORD(wparam)); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + DirLinkAttemptJoin(window); + } + else if (LOWORD(wparam) == IDOK) { + DirLinkAttemptJoin(window); + } + else if (LOWORD(wparam) == IDCANCEL) { + DirLinkAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDOWN: + DirLinkInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_DESTROY: + DirLinkDestroy(window); + break; + + case WM_INITDIALOG: + // Post this WM_USER message first so that fade gets started even if + // DirLinkInit() needs to go into a modal dialog to display an error. + PostMessage(window, WM_USER+1000, 0, 0); + DirLinkInit(window); + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + switch (wparam) { + case FOCUS_TIMER_ID: + FocusAnimate(window, GetFocus()); + break; + case LOGO_TIMER_ID: + TitleLogoAnimate(window); + break; + case ENUM_TIMER_ID: + DirLinkUpdateGame(window); + DirLinkAutoJoin(window); + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiDirectLinkGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid) { + int result = 0; + + // save parameters for use throughout this file + sgDLProgramData = programdata; + sgDLPlayerData = playerdata; + sgDLInterfaceData = interfacedata; + sgDLVersionData = versiondata; + sgpDLPlayerID = playerid; + + // make sure fonts are loaded + ArtFontLoad(); + + // DISPLAY THE DIALOG BOX + result = SDlgDialogBox(global_hinstance, + TEXT("DIRLINK_DIALOG"), + interfacedata->parentwindow, + DirLinkDialogProc); + + ArtFontDestroy(); + + if (result == IDOK) + return TRUE; + return FALSE; +} diff --git a/Uisrc/UI/DISCLAIM.CPP b/Uisrc/UI/DISCLAIM.CPP new file mode 100644 index 0000000..0f54f38 --- /dev/null +++ b/Uisrc/UI/DISCLAIM.CPP @@ -0,0 +1,169 @@ +//**************************************************************************** +//*** +//*** DISCLAIM.CPP +//*** Diablo UI disclaimer screen dialog (for the Battle.Net beta) +//*** +//*** By Frank Pearce (10/14/96) +//*** +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" + + +#define ALLOW_TIMEOUT 0 + +//**************************************************************************** +//**************************************************************************** + #define TIMER_ID 1 + #define MILLISEC_PER_SEC 1000 + #define DEFAULT_TIMEOUT 10 + + static int sgTextIDs0[] = { + IDC_TEXT1, + IDC_TEXT2, + 0 + }; + static int sgTextIDs1[] = { + IDC_TEXT3, + IDC_TEXT4, + IDC_TEXT5, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +static void DisclaimerDestroy (HWND window) { + UiDoomCtrlsDestroy(window, sgTextIDs1); + UiDoomCtrlsDestroy(window, sgTextIDs0); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); +} + + +//**************************************************************************** +//**************************************************************************** +static void DisclaimerInit(HWND window, LPARAM lparam) { + TPBMP tpBmp; + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\disclaim.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window, FALSE); + } + +#if ALLOW_TIMEOUT + if (lparam) + SDlgSetTimer(window, TIMER_ID, lparam*MILLISEC_PER_SEC, NULL); + else + SDlgSetTimer(window, TIMER_ID, DEFAULT_TIMEOUT*MILLISEC_PER_SEC, NULL); +#endif + + UiDoomStaticInit(window, sgTextIDs0, AF_BIGGRAY); + UiDoomStaticInit(window, sgTextIDs1, AF_MED); +} + + +//**************************************************************************** +//**************************************************************************** +static void DisclaimerAbort(HWND window) { + UiFadeAbort(window); +#if ALLOW_TIMEOUT + SDlgKillTimer(window, TIMER_ID); +#endif + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, 1); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK DisclaimerDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + DisclaimerDestroy(window); + break; + + case WM_INITDIALOG: + DisclaimerInit(window, lparam); + PostMessage(window, WM_USER+1000, 0, 0); + return 1; + + case WM_COMMAND: + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_KEYDOWN: + DisclaimerAbort(window); + return 0; + + case WM_PARENTNOTIFY: + if (LOWORD(wparam) == WM_LBUTTONDOWN || LOWORD(wparam) == WM_RBUTTONDOWN) { + DisclaimerAbort(window); + } + break; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + +#if ALLOW_TIMEOUT + case WM_TIMER: + switch (wparam) { + case TIMER_ID: + DisclaimerAbort(window); + break; + } + return 0; +#endif + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//*** +//*** EXPORTED FUNCTIONS +//*** +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiBetaDisclaimer (UINT timeoutseconds) { + SDlgDialogBoxParam( + global_hinstance, + "DISCLAIMER_DIALOG", + SDrawGetFrameWindow(), + DisclaimerDialogProc, + timeoutseconds + ); + + return 1; +} diff --git a/Uisrc/UI/DOOM.CPP b/Uisrc/UI/DOOM.CPP new file mode 100644 index 0000000..a95b33f --- /dev/null +++ b/Uisrc/UI/DOOM.CPP @@ -0,0 +1,398 @@ +//**************************************************************************** +// Doom.cpp +// created 10.23.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" + + +//**************************************************************************** +//**************************************************************************** + extern int FocusWidth(void); + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomTextEditDraw(HWND window) { + TPBMP tpBmp; + BOOL cursor; + RECT rect; + TCHAR buf[256]; + TCHAR * prntstr; + int x, y, width, len; + + tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + if (! tpBmp) return; + if (! tpBmp->data) return; + + GetWindowText(window, buf, 255); + len = strlen(buf); + + // calculate the width that can be allowed + x = FocusWidth() + ArtFontGridWidth(); + GetClientRect(window, &rect); + width = rect.right - (2 * FocusWidth()) - (2 * ArtFontGridWidth()); + + // don't use cursor in calc of width + if (TRUE == (cursor = SendMessage(window, DEM_CURSORON, 0, 0))) + buf[len - 1] = 0; + + prntstr = buf; + while ((*prntstr) && (ArtFontPixelWidth(prntstr) > width)) + prntstr++; + + // add the cursor back on + if (cursor) + buf[len - 1] = DIABLO_EDITCURSOR; + + y = (tpBmp->datasize.cy - ArtFontHeight()) / 2; + ArtFontDraw(prntstr, tpBmp, x, y); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomTextBtnDraw(HWND window, BOOL getsfocus) { + TPBMP tpBmp; + TCHAR textbuf[256]; + TCHAR * text; + int x, y, len, width, maxwidth; + + tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + if (! tpBmp) return; + if (! tpBmp->data) return; + + GetWindowText(window, textbuf, 255); + if (strlen(textbuf)) + text = textbuf; + else + text = tpBmp->text; + + width = ArtFontPixelWidth(text); + + if (getsfocus) { + // truncate string until it fits in the region + maxwidth = tpBmp->datasize.cx - (FocusWidth() * 2); + len = strlen(text); + for ( ; width > maxwidth; width = ArtFontPixelWidth(text)) { + text[--len] = 0; + } + } + + x = (tpBmp->datasize.cx - width - 1) / 2; + y = (tpBmp->datasize.cy - ArtFontHeight()) / 2; + ArtFontDraw(text, tpBmp, x, y); + + InvalidateRect(window, NULL, FALSE); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomTextDraw(HWND window, LONG style) { + TPBMP tpBmp; + TCHAR textbuf[256]; + TCHAR * text; + int x, width; + + tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + if (! tpBmp) return; + if (! tpBmp->data) return; + + GetWindowText(window, textbuf, 255); + if (strlen(textbuf)) + text = textbuf; + else + text = tpBmp->text; + + if (0 != (style & SS_RIGHT)) { + width = ArtFontPixelWidth(text); + x = tpBmp->datasize.cx - width - 1; + } + else if (0 != (style & SS_CENTER)) { + width = ArtFontPixelWidth(text); + x = (tpBmp->datasize.cx - width - 1) / 2; + } + else { + x = 0; + } + + ArtFontDraw(text, tpBmp, x, 0); + + InvalidateRect(window, NULL, FALSE); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomCreateBg(HWND Parent, HWND Child, int usage) { + TPBMP ChildBmp; + RECT rect; + + // create a TBMP for the child + GetClientRect(Child, &rect); + ChildBmp = UiAllocBmp(); + ChildBmp->datasize.cx = rect.right; + ChildBmp->datasize.cy = rect.bottom; + ChildBmp->data = (LPBYTE) ALLOC(rect.right * rect.bottom); + SetWindowLong(Child, GWL_USERDATA, (LONG) ChildBmp); + + // set it so the ctrl uses the bmp just created + SDlgSetBitmap( + Child, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + usage, + ChildBmp->data, + NULL, + ChildBmp->datasize.cx, + ChildBmp->datasize.cy + ); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomDrawBg(HWND Parent, HWND Child) { + TPBMP ChildBmp, ParentBmp; + RECT rect; + + ParentBmp = (TPBMP) GetWindowLong(Parent, GWL_USERDATA); + ChildBmp = (TPBMP) GetWindowLong(Child, GWL_USERDATA); + if (! ParentBmp) return; + if (! ParentBmp->data) return; + if (! ChildBmp) return; + if (! ChildBmp->data) return; + + GetWindowRect(Child,&rect); + ScreenToClient(Parent, (LPPOINT)&rect.left); + ScreenToClient(Parent, (LPPOINT)&rect.right); + + SBltROP3 ( + ChildBmp->data, + ParentBmp->data + (rect.top * ParentBmp->datasize.cx) + rect.left, + ChildBmp->datasize.cx, + ChildBmp->datasize.cy, + ChildBmp->datasize.cx, + ParentBmp->datasize.cx, + NULL, + SRCCOPY + ); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomEditCreate(HWND Parent, HWND Child, int fontnum) { + if (! Child) return; + + // create a bmp and draw parent image into it + UiDoomCreateBg(Parent, Child, SDLG_USAGE_BACKGROUND); + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextEditDraw(Child); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomEditReset(HWND Parent, HWND Child, int fontnum) { + if (! Child) return; + + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextEditDraw(Child); +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomStaticCreate(HWND Parent, HWND Child, int fontnum) { + if (! Child) return; + + // create a bmp and draw parent image into it + UiDoomCreateBg(Parent, Child, SDLG_USAGE_BACKGROUND); + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextDraw(Child, GetWindowLong(Child, GWL_STYLE)); + + // save the window text in the bmp text buffer + TCHAR textbuf[256]; + GetWindowText(Child, textbuf, 255); + if (strlen(textbuf)) { + UiSetBmpText((TPBMP) GetWindowLong(Child, GWL_USERDATA), textbuf); + SetWindowText(Child, TEXT("")); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomStaticReset(HWND Parent, HWND Child, int fontnum) { + if (! Child) return; + + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextDraw(Child, GetWindowLong(Child, GWL_STYLE)); + + // save the window text in the bmp text buffer + TCHAR textbuf[256]; + GetWindowText(Child, textbuf, 255); + if (strlen(textbuf)) { + UiSetBmpText((TPBMP) GetWindowLong(Child, GWL_USERDATA), textbuf); + SetWindowText(Child, TEXT("")); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomButtonCreate(HWND Parent, HWND Child, int fontnum, BOOL getsfocus) { + if (! Child) return; + + // create a bmp and draw parent image into it + UiDoomCreateBg( + Parent, + Child, + SDLG_USAGE_BACKGROUND | SDLG_USAGE_NORMAL | SDLG_USAGE_SELECTED | SDLG_USAGE_GRAYED + ); + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextBtnDraw(Child, getsfocus); + + // save the window text in the bmp text buffer + TCHAR textbuf[256]; + GetWindowText(Child, textbuf, 255); + if (strlen(textbuf)) { + UiSetBmpText((TPBMP) GetWindowLong(Child, GWL_USERDATA), textbuf); + SetWindowText(Child, TEXT("")); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void UiDoomButtonReset(HWND Parent, HWND Child, int fontnum, BOOL getsfocus) { + if (! Child) return; + + UiDoomDrawBg(Parent, Child); + + // draw the text into the bmp + ArtFontSet(fontnum); + UiDoomTextBtnDraw(Child, getsfocus); + + // save the window text in the bmp text buffer + TCHAR textbuf[256]; + GetWindowText(Child, textbuf, 255); + if (strlen(textbuf)) { + UiSetBmpText((TPBMP) GetWindowLong(Child, GWL_USERDATA), textbuf); + SetWindowText(Child, TEXT("")); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomButtonsInit(HWND Parent, int * BtnIDs, int fontnum, BOOL getsfocus) { + for ( ; *BtnIDs; BtnIDs++) { + UiDoomButtonCreate( + Parent, + GetDlgItem(Parent, *BtnIDs), + fontnum, + getsfocus + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomButtonsReset(HWND Parent, int * BtnIDs, int fontnum, BOOL getsfocus) { + for ( ; *BtnIDs; BtnIDs++) { + UiDoomButtonReset( + Parent, + GetDlgItem(Parent, *BtnIDs), + fontnum, + getsfocus + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomStaticInit(HWND Parent, int * TextIDs, int fontnum) { + for ( ; *TextIDs; TextIDs++) { + UiDoomStaticCreate( + Parent, + GetDlgItem(Parent, *TextIDs), + fontnum + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomStaticReset(HWND Parent, int * TextIDs, int fontnum) { + for ( ; *TextIDs; TextIDs++) { + UiDoomStaticReset( + Parent, + GetDlgItem(Parent, *TextIDs), + fontnum + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomEditInit(HWND Parent, int * EditIDs, int fontnum) { + for ( ; *EditIDs; EditIDs++) { + UiDoomEditCreate( + Parent, + GetDlgItem(Parent, *EditIDs), + fontnum + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomEditReset(HWND Parent, int * EditIDs, int fontnum) { + for ( ; *EditIDs; EditIDs++) { + UiDoomEditReset( + Parent, + GetDlgItem(Parent, *EditIDs), + fontnum + ); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiDoomCtrlsDestroy(HWND Parent, int * CtrlIDs) { + HWND child; + + for ( ; *CtrlIDs; CtrlIDs++) { + child = GetDlgItem(Parent, *CtrlIDs); + if (! child) continue; + UiFreeBmp((TPBMP) GetWindowLong(child, GWL_USERDATA)); + SetWindowLong(child, GWL_USERDATA, (LONG) NULL); + } +} diff --git a/Uisrc/UI/DOOM.H b/Uisrc/UI/DOOM.H new file mode 100644 index 0000000..f8cd6d4 --- /dev/null +++ b/Uisrc/UI/DOOM.H @@ -0,0 +1,24 @@ +//**************************************************************************** +// Doom.h +// created 9.13.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +void UiDoomButtonsInit(HWND Parent, + int * BtnIDs, + int fontnum = 0, + BOOL getsfocus = TRUE); +void UiDoomButtonsReset(HWND Parent, + int * BtnIDs, + int fontnum = 0, + BOOL getsfocus = TRUE); +void UiDoomStaticInit(HWND Parent, int * TextIDs, int fontnum = 0); +void UiDoomStaticReset(HWND Parent, int * TextIDs, int fontnum = 0); + +void UiDoomEditInit(HWND Parent, int * EditIDs, int fontnum = 0); +void UiDoomEditReset(HWND Parent, int * EditIDs, int fontnum = 0); + +void UiDoomCtrlsDestroy(HWND Parent, int * BtnIDs); + diff --git a/Uisrc/UI/ENTRDIAL.CPP b/Uisrc/UI/ENTRDIAL.CPP new file mode 100644 index 0000000..4ba9fc9 --- /dev/null +++ b/Uisrc/UI/ENTRDIAL.CPP @@ -0,0 +1,195 @@ +//**************************************************************************** +// EntrDial.cpp +// Diablo UI enter dial string for modem +// +// By Frank Pearce +// created 11.23.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void ModemSetInfo(HWND window, LPCSTR infotitle, LPCSTR text); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define RESTRICTED_CHARS TEXT("<>%&?") + + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgEditIDs[] = { + IDC_DIALEDIT, + 0 + }; + + static LPSTR sgDialString; + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialSetInfo(HWND window) { + TCHAR title[64], desc[256]; + + LoadString(global_hinstance, IDS_ENTERDIAL_TITLE, title, 63); + LoadString(global_hinstance, IDS_ENTERDIAL_INFO, desc, 255); + ModemSetInfo(GetParent(window), title, desc); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialDestroy(HWND window) { + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgEditIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + ModemSetInfo(GetParent(window), NULL, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialInit(HWND window) { + HWND child; + HWND parent = GetParent(window); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomEditInit(window, sgEditIDs, AF_MED); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + child = GetDlgItem(window, IDC_DIALEDIT); + // limit the amout of text that can be typed + SendMessage(child, DEM_LIMITTEXT, MAX_DIAL_LEN-1, 0); + + // restritc chars that can be entered + SendMessage(child, DEM_RESTRICTCHARS, 0, (LPARAM)RESTRICTED_CHARS); + + EntrDialSetInfo(window); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + // get the dial string from the edit + GetWindowText( + GetDlgItem(window, IDC_DIALEDIT), + sgDialString, + MAX_DIAL_LEN + ); + sgDialString[MAX_DIAL_LEN-1] = 0; + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialDEN(HWND window, WPARAM wparam, LPARAM lparam) { + switch (HIWORD(wparam)) { + case DEN_UPDATE: + UiDoomEditReset(window, sgEditIDs, AF_MED); + break; + case DEN_SETFOCUS: + FocusAnimate(window, GetFocus()); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrDialInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + EntrDialAbort(window, IDOK); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + EntrDialAbort(window, IDCANCEL); + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK EnterDialDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: + EntrDialAbort(window, IDOK); + break; + case IDCANCEL: + EntrDialAbort(window, IDCANCEL); + break; + case IDC_DIALEDIT: + EntrDialDEN(window, wparam, lparam); + break; + } + break; + + case WM_LBUTTONDOWN: + EntrDialInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_DESTROY: + EntrDialDestroy(window); + break; + + case WM_INITDIALOG: + sgDialString = (LPSTR) lparam; + EntrDialInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/ENTRNAME.CPP b/Uisrc/UI/ENTRNAME.CPP new file mode 100644 index 0000000..663ca9b --- /dev/null +++ b/Uisrc/UI/ENTRNAME.CPP @@ -0,0 +1,198 @@ +//**************************************************************************** +// EntrName.cpp +// Diablo UI enter name for a new hero +// +// By Frank Pearce +// created 10.20.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void SelHeroSetTitle(HWND window, LPCTSTR title); + extern int SelHeroGetMode(void); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define RESTRICTED_CHARS TEXT(" ,<>%&\\\"?*#/") + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgEditIDs[] = { + IDC_NAMEEDIT, + 0 + }; + + static LPSTR sgName; + + +//**************************************************************************** +//**************************************************************************** +static void EntrNameDestroy(HWND window) { + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgEditIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + SelHeroSetTitle(GetParent(window), NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrNameInit(HWND window) { + TCHAR buf[32]; + HWND child; + HWND parent = GetParent(window); + + // set the title for the parent + if (SelHeroGetMode() == MULTIPLAYER) + LoadString(global_hinstance, IDS_NEWMULTHERO, buf, 32-1); + else + LoadString(global_hinstance, IDS_NEWSINGHERO, buf, 32-1); + SelHeroSetTitle(parent, buf); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomEditInit(window, sgEditIDs, AF_MED); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + child = GetDlgItem(window, IDC_NAMEEDIT); + // limit the amout of text that can be typed + SendMessage(child, DEM_LIMITTEXT, MAX_NAME_LEN-1, 0); + // restritc chars that can be entered + if (SelHeroGetMode() == MULTIPLAYER) { + SendMessage(child, DEM_RESTRICTCHARS, 0, (LPARAM)RESTRICTED_CHARS); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrNameAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + // get the name text from the edit + GetWindowText( + GetDlgItem(window, IDC_NAMEEDIT), + sgName, + MAX_NAME_LEN + ); + sgName[MAX_NAME_LEN-1] = 0; + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void EntrNameDEN(HWND window, WPARAM wparam, LPARAM lparam) { + switch (HIWORD(wparam)) { + case DEN_UPDATE: + UiDoomEditReset(window, sgEditIDs, AF_MED); + break; + case DEN_SETFOCUS: + FocusAnimate(window, GetFocus()); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK EnterNameDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: + EntrNameAbort(window, IDOK); + break; + case IDCANCEL: + EntrNameAbort(window, IDCANCEL); + break; + case IDC_NAMEEDIT: + EntrNameDEN(window, wparam, lparam); + break; + } + break; + + case WM_LBUTTONDOWN: + if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKEOK), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + EntrNameAbort(window, IDOK); + } + else if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKECANCEL), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + EntrNameAbort(window, IDCANCEL); + } + break; + + case WM_DESTROY: + EntrNameDestroy(window); + break; + + case WM_INITDIALOG: + sgName = (LPSTR) lparam; + EntrNameInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/FADE.CPP b/Uisrc/UI/FADE.CPP new file mode 100644 index 0000000..663c184 --- /dev/null +++ b/Uisrc/UI/FADE.CPP @@ -0,0 +1,142 @@ +//**************************************************************************** +// fade.cpp +// created 10.28.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define FADE_TIMER_ID 16 + #define FADE_TIMER_DELAY 50 + + +//**************************************************************************** +//**************************************************************************** + static int sgFadeStep; + static BOOL sgFading; + static PALETTEENTRY sgFadePal[PALETTE_REGISTERS]; + + +//**************************************************************************** +//**************************************************************************** +static void RestoreWindowsColors(void) { + HPALETTE hPal; + + // Get Windows Default colors from the system + hPal = (HPALETTE)GetStockObject(DEFAULT_PALETTE); + + GetPaletteEntries(hPal, 0, 10, &sgFadePal[0]); + GetPaletteEntries(hPal, 10, 10, &sgFadePal[PALETTE_REGISTERS-10]); + SDrawUpdatePalette(0, PALETTE_REGISTERS, &sgFadePal[0], TRUE); +} + + +//**************************************************************************** +// an async fade function +//**************************************************************************** +void UiVidFade(int max, int curr) { + PALETTEENTRY * PalEntry = UiPaletteEntry(0); + + if (max == curr) { + memcpy(sgFadePal, PalEntry, (PALETTE_REGISTERS * sizeof(PALETTEENTRY))); + } + else if (curr == 0) { + memcpy(sgFadePal, PalEntry, (PALETTE_REGISTERS * sizeof(PALETTEENTRY))); + UiClearPalette(sgFadePal); + } + else { + for (int palreg = 0; palreg < PALETTE_REGISTERS; palreg++, PalEntry++) { + sgFadePal[palreg].peRed = (PalEntry->peRed * curr) / max; + sgFadePal[palreg].peGreen = (PalEntry->peGreen * curr) / max; + sgFadePal[palreg].peBlue = (PalEntry->peBlue * curr) / max; + } + } + SDrawUpdatePalette(0, PALETTE_REGISTERS, sgFadePal, TRUE); +} + + +//**************************************************************************** +//**************************************************************************** +void UiVidFadeOut(int steps) { + PALETTEENTRY * PalEntry = UiPaletteEntry(0); + + memcpy(sgFadePal, PalEntry, (PALETTE_REGISTERS * sizeof(PALETTEENTRY))); + for (int index = 0; index < steps; index++) { + PalEntry = UiPaletteEntry(0); + for (int palreg = 0; palreg < PALETTE_REGISTERS; palreg++, PalEntry++) { + sgFadePal[palreg].peRed -= (PalEntry->peRed / steps); + sgFadePal[palreg].peGreen -= (PalEntry->peGreen / steps); + sgFadePal[palreg].peBlue -= (PalEntry->peBlue / steps); + } + SDrawUpdatePalette(0, PALETTE_REGISTERS, sgFadePal, TRUE); + } + + UiClearPalette(sgFadePal); + SDrawUpdatePalette(0, PALETTE_REGISTERS, sgFadePal, TRUE); + UiClearCursor(); + SDrawClearSurface(SDRAW_SURFACE_FRONT); + RestoreWindowsColors(); +} + + +//**************************************************************************** +//**************************************************************************** +static void CALLBACK UiFadeTimerProc(HWND window, + UINT message, + UINT timerid, + DWORD systime) { + if (sgFadeStep <= DEFAULT_FADE_STEPS) { + UiVidFade(DEFAULT_FADE_STEPS, sgFadeStep); + sgFadeStep++; + } + else { + SDlgKillTimer(window, FADE_TIMER_ID); + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiIsFading() { + return sgFading && (sgFadeStep <= DEFAULT_FADE_STEPS); +} + + +//**************************************************************************** +//**************************************************************************** +void UiFadeAbort(HWND window) { + if (! UiIsFading()) return; + sgFading = FALSE; +} + + +//**************************************************************************** +//**************************************************************************** +void UiFadeInit(HWND window, BOOL turnoncursor) { + UiFlushIOMessages(GetParent(window)); + if (turnoncursor) + UiSetCursor(); + sgFading = FALSE; + sgFadeStep = 0; +} + + +//**************************************************************************** +// use this for screens that fade out but don't fade in +//**************************************************************************** +void UiAltFadeInit(HWND window) { + UiFlushIOMessages(GetParent(window)); +} + + +//**************************************************************************** +//**************************************************************************** +void UiFadeStart(HWND window) { + if (! sgFading) { + BOOL result = SDlgSetTimer(window, FADE_TIMER_ID, FADE_TIMER_DELAY, UiFadeTimerProc); + sgFading = TRUE; + } +} diff --git a/Uisrc/UI/FADE.H b/Uisrc/UI/FADE.H new file mode 100644 index 0000000..3ca9324 --- /dev/null +++ b/Uisrc/UI/FADE.H @@ -0,0 +1,19 @@ +//**************************************************************************** +// fade.h +// created 10.28.96 +//**************************************************************************** + +#define DEFAULT_FADE_STEPS 5 +#define DEFAULT_STEPS 5 + +//**************************************************************************** +//**************************************************************************** +void UiVidFade(int max, int curr); +void UiVidFadeOut(int steps); + +void UiFadeInit(HWND window, BOOL turnoncursor = TRUE); +void UiAltFadeInit(HWND window); +void UiFadeStart(HWND window); + +void UiFadeAbort(HWND window); +BOOL UiIsFading(); diff --git a/Uisrc/UI/FOCUS.CPP b/Uisrc/UI/FOCUS.CPP new file mode 100644 index 0000000..93e15f3 --- /dev/null +++ b/Uisrc/UI/FOCUS.CPP @@ -0,0 +1,234 @@ +//**************************************************************************** +// Focus.cpp +// code for animating the input focus indicator (for a "Doom-like" interface +// +// By Frank Pearce +// created 10.16.96 +//**************************************************************************** + + +#include "pch.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + #define MAX_FRAMES 8 + + static HTRANS sgTransHandles[MAX_FRAMES]; + static SIZE sgFrameSize; + static int sgFrame; + static BOOL sgFocusLostBefore; + static HWND sgLastFocusWnd; + + +//**************************************************************************** +//**************************************************************************** +void FocusSnd(HWND focus) { + if (focus == sgLastFocusWnd) return; + if (sgFocusLostBefore) { + UiSndPlayClick(); + } + sgLastFocusWnd = focus; +} + + +//**************************************************************************** +// returns the width of a frame of the focus animation +//**************************************************************************** +int FocusWidth(void) { + return sgFrameSize.cx; +} + + +//**************************************************************************** +//**************************************************************************** +static void FocusInvalidate(HWND child) { + RECT rect; + + GetClientRect(child, &rect); + rect.bottom--; + rect.right--; + + // invalidate right side of ctrl + rect.left = rect.right - sgFrameSize.cx; + InvalidateRect(child, &rect, FALSE); + + // invalidate left side of ctrl + rect.left = 0; + rect.right = sgFrameSize.cx - 1; + InvalidateRect(child, &rect, FALSE); +} + + +//**************************************************************************** +//**************************************************************************** +void FocusErase(HWND parent, HWND child) { + TPBMP ParentBmp, ChildBmp; + RECT rect; + int xoffset; + + ParentBmp = (TPBMP) GetWindowLong(parent, GWL_USERDATA); + ChildBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! ParentBmp) return; + if (! ChildBmp) return; + if (! ParentBmp->data) return; + if (! ChildBmp->data) return; + + GetWindowRect(child,&rect); + ScreenToClient(parent, (LPPOINT)&rect.left); + ScreenToClient(parent, (LPPOINT)&rect.right); + + // erase the left end + SBltROP3 ( + ChildBmp->data, + ParentBmp->data + (rect.top * ParentBmp->datasize.cx) + rect.left, + sgFrameSize.cx, + ChildBmp->datasize.cy, + ChildBmp->datasize.cx, + ParentBmp->datasize.cx, + NULL, + SRCCOPY + ); + + // erase the right end + xoffset = ChildBmp->datasize.cx - sgFrameSize.cx; + SBltROP3 ( + ChildBmp->data + xoffset, + ParentBmp->data + (rect.top * ParentBmp->datasize.cx) + rect.left + xoffset, + sgFrameSize.cx, + ChildBmp->datasize.cy, + ChildBmp->datasize.cx, + ParentBmp->datasize.cx, + NULL, + SRCCOPY + ); + + FocusInvalidate(child); +} + + +//**************************************************************************** +//**************************************************************************** +void FocusLost(HWND parent, HWND child) { + int id = GetWindowLong(child, GWL_ID); + FocusErase(parent, child); + sgFocusLostBefore = TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL FocusAnimate(HWND parent, HWND child) { + TPBMP ChildBmp; + int xoffset, yoffset; + RECT rect; + + if (! child) return FALSE; + + int id = GetWindowLong(child, GWL_ID); + + if (parent != GetParent(child)) + return FALSE; + + // erase the previous image + FocusErase(parent, child); + + ChildBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! ChildBmp) return FALSE; + if (! ChildBmp->data) return FALSE; + + GetWindowRect(child,&rect); + ScreenToClient(parent, (LPPOINT)&rect.left); + ScreenToClient(parent, (LPPOINT)&rect.right); + + if (sgTransHandles[sgFrame]) { + // center the image vertically + yoffset = (ChildBmp->datasize.cy - sgFrameSize.cy) / 2; +// yoffset = 0; + + // draw onto the left end + STransBlt(ChildBmp->data, 0, yoffset, ChildBmp->datasize.cx, sgTransHandles[sgFrame]); + + // draw onto the right end + xoffset = ChildBmp->datasize.cx - sgFrameSize.cx; + STransBlt(ChildBmp->data, xoffset, yoffset, ChildBmp->datasize.cx, sgTransHandles[sgFrame]); + + FocusInvalidate(child); + } + + + // advance to the next frame + sgFrame++; + if (sgFrame >= MAX_FRAMES) + sgFrame = 0; + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +void FocusAnimateDestroy(void) { + for (int index = 0; index < MAX_FRAMES; index++) { + if (sgTransHandles[index]) { + STransDelete(sgTransHandles[index]); + sgTransHandles[index] = NULL; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +void FocusReInit(void) { + sgFocusLostBefore = FALSE; + sgLastFocusWnd = NULL; +} + + +//**************************************************************************** +//**************************************************************************** +void FocusAnimateInit(LPCSTR filename) { + LPBYTE srcframes = NULL; + SIZE srcsize; + RECT rect; + + sgFocusLostBefore = FALSE; + sgLastFocusWnd = NULL; + + UiLoadBmpFile( + filename, + &srcframes, + &srcsize + ); + + memset(sgTransHandles, 0, sizeof(sgTransHandles)); + + if (srcframes) { + sgFrameSize.cx = srcsize.cx; + sgFrameSize.cy = srcsize.cy / MAX_FRAMES; + + // create an HTRANS for each frame in the animation + for (int index = 0; index < MAX_FRAMES; index++) { + + rect.left = 0; + rect.right = sgFrameSize.cx - 1; + rect.top = index * sgFrameSize.cy; + rect.bottom = rect.top + sgFrameSize.cy - 1; + + STransCreate( + srcframes, + sgFrameSize.cx, + sgFrameSize.cy, + 8, + &rect, + PALETTEINDEX(250), + &sgTransHandles[index] + ); + } + + FREE(srcframes); + } + sgFrame = 0; +} + diff --git a/Uisrc/UI/FRANK.APS b/Uisrc/UI/FRANK.APS new file mode 100644 index 0000000..f8ed36e Binary files /dev/null and b/Uisrc/UI/FRANK.APS differ diff --git a/Uisrc/UI/FRANK.H b/Uisrc/UI/FRANK.H new file mode 100644 index 0000000..3603894 --- /dev/null +++ b/Uisrc/UI/FRANK.H @@ -0,0 +1,189 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Frank.rc +// +#define IDS_WARRIOR 4 +#define IDS_ROGUE 5 +#define IDS_SORCERER 6 +#define IDS_CONFIRM_DELETE 7 +#define IDS_CONFIRM_OVERWRITE 8 +#define IDS_NAME_ERR 15 +#define IDS_CREATE_ERR 16 +#define IDS_DELETE_ERR 17 +#define IDS_ENUMCHAR_ERR 18 +#define IDS_FIRST_NASTY 19 +#define IDS_STRING20 20 +#define IDS_STRING21 21 +#define IDS_STRING22 22 +#define IDS_STRING23 23 +#define IDS_STRING24 24 +#define IDS_STRING25 25 +#define IDS_LAST_NASTY 26 +#define IDS_COPYPROT_ERR 27 +#define IDS_MULTILIST_TITLE 28 +#define IDS_SINGLIST_TITLE 29 +#define IDS_NEWHERO 30 +#define IDS_NEWSINGHERO 31 +#define IDS_NEWMULTHERO 32 +#define IDS_PLAYERSSUPPORTED 33 +#define IDS_DELETESINGHERO 34 +#define IDS_DELETEMULTHERO 35 +#define IDS_CREATEGAME 36 +#define IDS_JOIN_ERR 37 +#define IDS_CREATEGAME_ERR 38 +#define IDS_NORMAL 39 +#define IDS_NIGHTMARE 40 +#define IDS_HELL 41 +#define IDS_CREATEDESC 42 +#define IDS_NOGAME_ERR 43 +#define IDS_SELCONN_ERR 44 +#define IDS_SPAWN_ERR 45 +#define IDS_NOMODEM_ERR 46 +#define IDS_RETRYCONNDESC 47 +#define IDS_GAMEDESCFMT 49 +#define IDS_VERSION_ERR 50 +#define IDS_MODEMJOIN_ERR 51 +#define IDS_CALL_FMT 52 +#define IDS_INITMODEM_ERR 53 +#define IDS_MODEM_CREATE 54 +#define IDS_MODEM_DIALNEW 55 +#define IDS_MODEM_DIALOLD 56 +#define IDS_SELDIAL_INFOTITLE 57 +#define IDS_ENTERDIAL_INFO 58 +#define IDS_ENTERDIAL_TITLE 59 +#define IDS_SPAWNDATA_ERR 63 +#define IDS_NOANSWER_ERR 64 +#define IDS_NOTONE_ERR 65 +#define IDS_BUSY_ERR 66 +#define IDS_MODEM_CREATE2 67 +#define IDS_MODEM_JOIN 68 +#define IDS_SPAWNCLASS_ERR 69 +#define IDS_SPAWNINTRO_ERR 70 +#define IDS_MODEMGAMENAME_FMT 71 +#define IDS_DUPGAMENAME_FMT 73 +#define IDS_MODEMJOINPREV 74 +#define IDS_MODEMJOINNEW 75 +#define IDS_MODEMOFF_ERR 76 +#define IDS_JOINGAMES 77 +#define IDS_MEMORY_ERR 78 +#define IDC_CREATECHAR_BTN 1000 +#define ID_SCROLL_WINDOW 1000 +#define IDC_MULTIPLAYER_BTN 1001 +#define IDC_REPLAYINTRO_BTN 1002 +#define IDC_SHOWCREDITS_BTN 1003 +#define IDDELETE 1006 +#define IDC_NEWDUNGEON_BTN 1007 +#define IDC_CHARNAME 1010 +#define IDC_CHARCLASS 1011 +#define IDC_CHARGOLD 1013 +#define IDC_CHARLEVEL 1014 +#define IDC_CHARVIT 1015 +#define IDC_CHARDEX 1016 +#define IDC_CHARMAGIC 1017 +#define IDC_CHARSTR 1018 +#define IDC_HEROS_LBOX 1020 +#define IDC_WARRIOR_RADIO 1022 +#define IDC_SORCERER_RADIO 1023 +#define IDC_ROGUE_RADIO 1024 +#define IDC_HERONAME_EDIT 1025 +#define IDC_OKCANCEL_TEXT 1026 +#define IDC_CLASS_DESCRIPTION 1027 +#define IDC_LOGONNAME_EDIT 1028 +#define IDC_LOGONPASSWORD_EDIT 1029 +#define IDC_UIGENERIC_PROGRESS 1030 +#define IDC_PROGRESS_TEXT 1031 +#define IDC_NDNORMAL_RADIO 1033 +#define IDC_NDADVANCED_RADIO 1034 +#define IDC_NDNIGHTMARE_RADIO 1035 +#define IDC_DIFFICULTY_DESCRIPTION 1036 +#define IDC_DLGTITLE 1038 +#define IDC_HEROIMAGE 1040 +#define IDC_REGISTRATION 1042 +#define IDC_LOGO 1043 +#define IDC_SINGLEPLAYER_BTN 1044 +#define IDC_HEROBTN1 1047 +#define IDC_HEROBTN2 1048 +#define IDC_HEROBTN3 1049 +#define IDC_HEROBTN4 1050 +#define IDC_HEROBTN5 1051 +#define IDC_HEROBTN6 1052 +#define IDC_FAKECANCEL 1054 +#define IDC_FAKEOK 1056 +#define IDC_LEVELLBL 1057 +#define IDC_STRLBL 1058 +#define IDC_MAGLBL 1059 +#define IDC_DEXLBL 1060 +#define IDC_VITLBL 1061 +#define IDC_WARRIORBTN 1062 +#define IDC_ROGUEBTN 1063 +#define IDC_SORCERERBTN 1064 +#define IDC_NAMEEDIT 1065 +#define IDC_SMACKER 1066 +#define IDC_BLIZZARD 1067 +#define IDC_CONNECTBTN1 1069 +#define IDC_CONNECTBTN2 1070 +#define IDC_CONNECTBTN3 1071 +#define IDC_CONNECTBTN4 1072 +#define IDC_CONNECTBTN5 1073 +#define IDC_CONNECTBTN6 1074 +#define IDC_REQTITLE 1075 +#define IDC_PLAYERSTEXT 1076 +#define IDC_DLGTITLE2 1080 +#define IDC_CONNECTTEXT 1081 +#define IDC_TEXT1 1082 +#define IDC_TEXT2 1083 +#define IDC_TEXT3 1084 +#define IDC_TEXT4 1085 +#define IDC_TEXT5 1086 +#define IDC_GAMEBTN1 1088 +#define IDC_GAMEBTN2 1089 +#define IDC_GAMEBTN3 1090 +#define IDC_GAMEBTN4 1091 +#define IDC_GAMEBTN5 1092 +#define IDC_GAMEBTN6 1093 +#define IDC_DIFFBTN1 1094 +#define IDC_DIFFBTN2 1095 +#define IDC_DIFFBTN3 1096 +#define IDC_DLGTITLE3 1097 +#define IDC_GAMEDESC 1098 +#define IDC_DIFFDESC 1099 +#define IDC_DIRLINKBTN1 1100 +#define IDC_DIRLINKBTN2 1101 +#define IDC_LINKDESC 1102 +#define IDC_SCROLLBAR 1105 +#define IDC_LOADBTN 1106 +#define IDC_NEWBTN 1107 +#define IDC_MODEMDESC 1108 +#define IDC_OK 1109 +#define IDC_MODEMBTN1 1110 +#define IDC_MODEMBTN2 1111 +#define IDC_MODEMBTN3 1112 +#define IDC_MODEMBTN4 1113 +#define IDC_MODEMBTN5 1114 +#define IDC_MODEMBTN6 1115 +#define IDC_DIALEDIT 1116 +#define IDC_DIALBTN1 1117 +#define IDC_DIALBTN2 1118 +#define IDC_DIALBTN3 1119 +#define IDC_DIALBTN4 1120 +#define IDC_DIALBTN5 1121 +#define IDC_DIALBTN6 1122 +#define IDC_REQDESC 1123 +#define IDS_MONKBTN 1124 +#define IDC_MONKBTN 1125 +#define IDS_BARDBTN 1126 +#define IDC_MONKBTN2 1126 +#define IDC_BARDBTN 1127 +#define IDC_SUPPORT_BTN 1128 +#define IDC_BARBARIANBTN 1129 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 124 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1125 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Uisrc/UI/FRANK.RC b/Uisrc/UI/FRANK.RC new file mode 100644 index 0000000..a96c355 --- /dev/null +++ b/Uisrc/UI/FRANK.RC @@ -0,0 +1,905 @@ +//Microsoft Developer Studio generated resource script. +// +#include "frank.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +TITLESCREEN_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + // The text is in the art. + //CTEXT "Copyright © 1997 Synergistic Software",IDC_BLIZZARD, + // 22,173,212,11,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,203 +END + +MAINMENU_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Start Game",IDC_SINGLEPLAYER_BTN,26,81,204,18, + BS_NOTIFY + PUSHBUTTON "Replay Intro",IDC_REPLAYINTRO_BTN,26,99,204,18, + BS_NOTIFY + PUSHBUTTON "Support",IDC_SUPPORT_BTN,26,117,204,18, + BS_NOTIFY + PUSHBUTTON "Credits",IDC_SHOWCREDITS_BTN,26,135,204,18, + BS_NOTIFY + PUSHBUTTON "Exit Hellfire",IDCANCEL,26,153,204,18,BS_NOTIFY + LTEXT "",IDC_REGISTRATION,7,187,242,9,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +MAINMENU_DIALOG2 DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Single Player",IDC_SINGLEPLAYER_BTN,26,81,204,18, + BS_NOTIFY + PUSHBUTTON "Multi Player",IDC_MULTIPLAYER_BTN,26,99,204,18, + BS_NOTIFY + PUSHBUTTON "Replay Intro",IDC_REPLAYINTRO_BTN,26,117,204,18, + BS_NOTIFY + PUSHBUTTON "Support",IDC_SUPPORT_BTN,26,135,204,18, + BS_NOTIFY + PUSHBUTTON "Credits",IDC_SHOWCREDITS_BTN,26,153,204,18, + BS_NOTIFY + PUSHBUTTON "Exit Hellfire",IDCANCEL,26,171,204,18,BS_NOTIFY + LTEXT "",IDC_REGISTRATION,7,187,242,9,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +SELHERO_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + RTEXT "Strength:",IDC_STRLBL,16,151,44,9 + RTEXT "Magic:",IDC_MAGLBL,16,160,44,9 + RTEXT "Dexterity:",IDC_DEXLBL,16,169,44,9 + RTEXT "Vitality:",IDC_VITLBL,16,178,44,9 + CTEXT "",IDC_CHARSTR,64,151,16,9 + CTEXT "",IDC_CHARMAGIC,64,160,16,9 + CTEXT "",IDC_CHARDEX,64,169,16,9 + CTEXT "",IDC_CHARVIT,64,178,16,9 + RTEXT "Level:",IDC_LEVELLBL,16,136,44,9 + CTEXT "",IDC_CHARLEVEL,64,136,16,9 + CONTROL "",IDC_HEROIMAGE,"Static",SS_BLACKFRAME | WS_DISABLED,12, + 89,72,32 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 + CTEXT "Single Player Characters",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED +END + +OKCANCEL_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "OK",IDC_OK,8,41,44,12 + PUSHBUTTON "Cancel",IDCANCEL,60,41,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,5,96,34,0,WS_EX_TRANSPARENT +END + +LOGON_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + EDITTEXT IDC_LOGONNAME_EDIT,52,34,88,12,ES_AUTOHSCROLL + EDITTEXT IDC_LOGONPASSWORD_EDIT,52,50,88,12,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,102,85,44,12 + PUSHBUTTON "Cancel",IDCANCEL,102,99,44,12 + RTEXT "Name:",IDC_STATIC,8,34,41,9,0,WS_EX_TRANSPARENT + RTEXT "Password:",IDC_STATIC,7,50,41,9,0,WS_EX_TRANSPARENT + CTEXT "Connect to Battlenet",IDC_DLGTITLE,0,8,154,9,0, + WS_EX_TRANSPARENT + LTEXT "You can open an account on battlenet FREE at WWW.BATTLE.NET.", + IDC_STATIC,8,76,88,38,0,WS_EX_TRANSPARENT +END + +PROGRESS_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "",IDC_PROGRESS_TEXT,0,4,112,18,0,WS_EX_TRANSPARENT + PUSHBUTTON "Cancel",IDCANCEL,34,42,44,12 + CONTROL "",IDC_UIGENERIC_PROGRESS,"Static",SS_BLACKFRAME,10,22, + 91,16 +END + +OK_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,34,41,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,5,96,34,0,WS_EX_TRANSPARENT +END + +BIGOK_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,55,99,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,20,139,75,0,WS_EX_TRANSPARENT + CTEXT "",IDC_DLGTITLE,7,7,140,9,0,WS_EX_TRANSPARENT +END + +BIGOKCANCEL_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,22,99,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,20,139,75,0,WS_EX_TRANSPARENT + DEFPUSHBUTTON "Cancel",IDCANCEL,88,99,44,12 + CTEXT "",IDC_DLGTITLE,7,7,140,9,0,WS_EX_TRANSPARENT +END + +CREDITS_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "TIMES NEW ROMAN", 700, 0, 0x1 +BEGIN + CONTROL "",ID_SCROLL_WINDOW,"Static",SS_BLACKFRAME | WS_DISABLED, + 12,48,232,106 +END + +SUPPORT_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "TIMES NEW ROMAN", 700, 0, 0x1 +BEGIN + CONTROL "",ID_SCROLL_WINDOW,"Static",SS_BLACKFRAME | WS_DISABLED, + 12,48,232,106 +END + +DISCLAIMER_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Not For Review",IDC_TEXT1,25,7,96,15 + CTEXT "Not For Resale",IDC_TEXT2,134,7,96,15 + LTEXT "This is a five level beta of Hellfire, playable only over Battle.net. There are some features that are not yet implemented, notably multi player quests. Please send all comments and bug reports to bnbeta@blizzard.com.", + IDC_TEXT3,8,30,240,70 + LTEXT "This version of Hellfire is intended for the use of registered Battle.net beta testers only. This beta is for integrity testing of Blizzard Entertainment's Battle.net service and is not intended for review by the media or resale in any manner.", + IDC_TEXT4,8,100,240,70 + LTEXT "Unauthorized distribution is strictly prohibited.", + IDC_TEXT5,8,170,240,14 +END + +SELLIST_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,196,180,48,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "",IDC_HEROBTN1,106,108,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN2,106,119,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN3,106,130,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN4,106,141,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN5,106,152,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN6,106,163,128,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,96,180,48,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Hero",IDC_DLGTITLE,106,89,128,14,WS_DISABLED + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 234,103,10,75 + PUSHBUTTON "Delete",IDDELETE,146,180,48,15,BS_NOTIFY | WS_DISABLED | + NOT WS_TABSTOP +END + +SELCLASS_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Warrior",IDC_WARRIORBTN,106,105,128,14,BS_NOTIFY + PUSHBUTTON "Rogue",IDC_ROGUEBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "Sorcerer",IDC_SORCERERBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "Monk",IDC_MONKBTN,106,147,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Choose Class",IDC_DLGTITLE,106,89,128,14,WS_DISABLED +END + +SELCLASS_DIALOG2 DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Warrior",IDC_WARRIORBTN,106,105,128,14,BS_NOTIFY + PUSHBUTTON "Rogue",IDC_ROGUEBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "Sorcerer",IDC_SORCERERBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "Monk",IDC_MONKBTN,106,147,128,14,BS_NOTIFY + PUSHBUTTON "Bard",IDC_BARDBTN,106,161,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Choose Class",IDC_DLGTITLE,106,89,128,14,WS_DISABLED +END + +SELCLASS_DIALOG3 DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Warrior",IDC_WARRIORBTN,106,108,128,11,BS_NOTIFY + PUSHBUTTON "Rogue",IDC_ROGUEBTN,106,119,128,11,BS_NOTIFY + PUSHBUTTON "Sorcerer",IDC_SORCERERBTN,106,130,128,11,BS_NOTIFY + PUSHBUTTON "Monk",IDC_MONKBTN,106,141,128,11,BS_NOTIFY + PUSHBUTTON "Bard",IDC_BARDBTN,106,153,128,11,BS_NOTIFY + PUSHBUTTON "Barbarian",IDC_BARBARIANBTN,106,163,128,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Choose Class",IDC_DLGTITLE,106,89,128,14,WS_DISABLED +END + +ENTERNAME_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CONTROL "",IDC_NAMEEDIT,"DIABLOEDIT",WS_TABSTOP,106,133,128,14 + CTEXT "Enter Name",IDC_DLGTITLE,106,89,128,14,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP +END + +SELYESNO_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Yes",IDC_OK,92,84,72,15,BS_NOTIFY + PUSHBUTTON "No",IDCANCEL,92,99,72,15,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,48,8,160,71,WS_DISABLED +END + +SELCONNECT_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "",IDC_CONNECTBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN5,122,152,114,11,BS_NOTIFY + CTEXT "Multi Player Game",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,182,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + LTEXT "",IDC_CONNECTTEXT,14,122,82,72,WS_DISABLED + LTEXT "Requirements:",IDC_REQTITLE,14,108,82,9,WS_DISABLED + LTEXT "",IDC_PLAYERSTEXT,14,92,82,9,WS_DISABLED + CTEXT "Select Connection",IDC_DLGTITLE2,120,89,118,14, + WS_DISABLED + PUSHBUTTON "",IDC_CONNECTBTN6,122,163,114,11,BS_NOTIFY + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,103,10,75 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +SELOK_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,92,84,72,15,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,56,8,160,71,WS_DISABLED +END + +SELIPXGAME_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "",IDC_GAMEBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN5,122,152,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN6,122,163,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Join IPX Games",IDC_DLGTITLE,10,68,236,15,WS_DISABLED + CTEXT "Select Game",IDC_DLGTITLE2,120,89,118,14,WS_DISABLED + LTEXT "Description:",IDC_DLGTITLE3,14,89,82,14,WS_DISABLED + LTEXT "",IDC_GAMEDESC,14,108,82,81,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,103,10,75 +END + +SELDIFF_DIALOG DIALOGEX 0, 65, 256, 135 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Create Game",IDC_DLGTITLE,10,3,236,15,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,115,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Normal",IDC_DIFFBTN1,120,54,118,11,BS_NOTIFY + PUSHBUTTON "Nightmare",IDC_DIFFBTN2,120,65,118,11,BS_NOTIFY + PUSHBUTTON "Hell",IDC_DIFFBTN3,120,76,118,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,115,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Difficulty",IDC_DLGTITLE2,120,24,118,15, + WS_DISABLED + CTEXT "",IDC_DLGTITLE3,14,24,82,14,WS_DISABLED + LTEXT "",IDC_DIFFDESC,14,43,82,81,WS_DISABLED +END + +DIRLINK_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Direct Link Connection",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIRLINKBTN1,120,119,118,11,BS_NOTIFY + PUSHBUTTON "Retry Connection",IDC_DIRLINKBTN2,120,130,118,11, + BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE2,120,89,118,15,WS_DISABLED + LTEXT "Link Status:",IDC_DLGTITLE3,14,89,82,14,WS_DISABLED + LTEXT "",IDC_LINKDESC,14,108,82,81,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +SPAWNERR_DIALOG DIALOGEX 0, 69, 256, 134 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "OK",IDC_OK,92,103,72,18,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,56,15,160,75,WS_DISABLED +END + +SELLOAD_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Load Game",IDC_LOADBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "New Game",IDC_NEWBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Save File Exists",IDC_DLGTITLE,106,89,128,14, + WS_DISABLED +END + +MODEM_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Modem Connection",IDC_DLGTITLE,10,68,236,15 + CTEXT "",IDC_DLGTITLE2,14,89,82,14 + LTEXT "",IDC_MODEMDESC,14,108,82,81 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +SELMODEM_DIALOG DIALOGEX 0, 65, 256, 135 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,115,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "",IDC_MODEMBTN1,122,43,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN2,122,54,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN3,122,65,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN4,122,76,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN5,122,87,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN6,122,98,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,115,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Modem",IDC_DLGTITLE2,120,24,118,14,WS_DISABLED + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,38,10,75 + CTEXT "Modem Game Setup",IDC_DLGTITLE,10,3,236,15,WS_DISABLED + CTEXT "Requirments:",IDC_DLGTITLE3,14,24,82,14,WS_DISABLED + LTEXT "The modem must be 14400 BPS or faster. If the device you want to use is not listed here, please check your modem to ensure that it is configured correctly.", + IDC_REQDESC,14,43,82,81,WS_DISABLED +END + +ENTERDIAL_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CONTROL "",IDC_DIALEDIT,"DIABLOEDIT",WS_TABSTOP,122,133,114,14 + CTEXT "Enter Number",IDC_DLGTITLE,122,89,114,14,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP +END + +SELDIAL_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIALBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "Enter New Number",IDC_DIALBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE,120,89,118,14,WS_DISABLED + PUSHBUTTON "",IDC_DIALBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN5,122,152,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN6,122,163,114,11,BS_NOTIFY +END + +MODMSTAT_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDCANCEL,92,84,72,15,BS_NOTIFY + LTEXT "Attempting to connect...",IDC_OKCANCEL_TEXT,56,8,160,71, + WS_DISABLED +END + +SELCRE8JOIN_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIALBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "Join Game",IDC_DIALBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE,120,89,118,14,WS_DISABLED +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + "TITLESCREEN_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MAINMENU_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MAINMENU_DIALOG2", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELHERO_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "OKCANCEL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 54 + END + + "LOGON_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "PROGRESS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 52 + END + + "OK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 54 + END + + "BIGOK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "BIGOKCANCEL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "CREDITS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 242 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END + + "SUPPORT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 242 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END + + "DISCLAIMER_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELLIST_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELCLASS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELCLASS_DIALOG2", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "ENTERNAME_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELYESNO_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELCONNECT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELOK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELIPXGAME_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELDIFF_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 128 + END + + "DIRLINK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SPAWNERR_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELLOAD_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MODEM_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELMODEM_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 128 + END + + "ENTERDIAL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELDIAL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MODMSTAT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELCRE8JOIN_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "frank.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT_FILES +// + +IDR_CREDITS TEXT_FILES DISCARDABLE "credits.txt" +IDR_SUPPORT TEXT_FILES DISCARDABLE "support.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// ART_FILES +// + +IDR_POPUPART ART_FILES DISCARDABLE "srpopup.raw" +IDR_BTNART ART_FILES DISCARDABLE "but_sml.raw" +IDR_ARTPAL ART_FILES DISCARDABLE "srpopup.pal" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +DIABLOCURSOR CURSOR DISCARDABLE "pointer.cur" +DIABLOIBEAM CURSOR DISCARDABLE "ibeam.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WARRIOR "Warrior" + IDS_ROGUE "Rogue" + IDS_SORCERER "Sorcerer" + IDS_CONFIRM_DELETE "\nAre you sure you want to delete the character ""%s""?" + IDS_CONFIRM_OVERWRITE "\nCharacter already exists. Do you want to overwrite ""%s""?" + IDS_NAME_ERR "\nInvalid name. A name cannot contain spaces, reserved characters, or reserved words." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_CREATE_ERR "\n\nUnable to create character." + IDS_DELETE_ERR "\n\nDelete character failed." + IDS_ENUMCHAR_ERR "\n\nUnable to read character files." + IDS_FIRST_NASTY "gvdl" + IDS_STRING20 "dvou" + IDS_STRING21 "tiju" + IDS_STRING22 "cjudi" + IDS_STRING23 "bttipmf" + IDS_STRING24 "ojhhfs" + IDS_STRING25 "cmj{{bse" + IDS_LAST_NASTY "benjo" + IDS_COPYPROT_ERR "Please insert the Diablo CD into your CD-ROM drive and press 'OK'." + IDS_MULTILIST_TITLE "Multi Player Characters" + IDS_SINGLIST_TITLE "Single Player Characters" + IDS_NEWHERO "New Hero" + IDS_NEWSINGHERO "New Single Player Hero" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NEWMULTHERO "New Multi Player Hero" + IDS_PLAYERSSUPPORTED "Players Supported: %d" + IDS_DELETESINGHERO "Delete Single Player Hero" + IDS_DELETEMULTHERO "Delete Multi Player Hero" + IDS_CREATEGAME "Create Game" + IDS_JOIN_ERR "\n\nUnable to join game ""%s.""" + IDS_CREATEGAME_ERR "\n\nUnable to create game." + IDS_NORMAL "Normal" + IDS_NIGHTMARE "Nightmare" + IDS_HELL "Hell" + IDS_CREATEDESC "Create a new game with a difficulty setting of your choice." + IDS_NOGAME_ERR "\n\nA multi player game was not detected!" + IDS_SELCONN_ERR "\n\nUnable to initialize selected connection method." + IDS_SPAWN_ERR "You have selected a feature only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_NOMODEM_ERR "\nUnable to detect a modem. Please install or configure a modem." + IDS_RETRYCONNDESC "A direct link connection was not detected. Check your cable connections and confirm that the connected computer has created a game, then retry." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_GAMEDESCFMT "%s.\nCreated by %s, a level %d %s." + IDS_VERSION_ERR "\nUnable to join the detected game. Your version of Hellfire is incompatible with the game creator's version." + IDS_MODEMJOIN_ERR "\nUnable to establish a connection. A game of Hellfire was not detected at the specified phone number." + IDS_CALL_FMT "Call %s" + IDS_INITMODEM_ERR "\n\nUnable to initialize the selected device." + IDS_MODEM_CREATE "Create a new game with a difficulty setting of your choice. Another player can dial in and join your game in progress." + IDS_MODEM_DIALNEW "Enter and call a number not listed here and join a game already in progress at that number." + IDS_MODEM_DIALOLD "Call the selected number and join a game already in progress at that number." + IDS_SELDIAL_INFOTITLE "Description:" + IDS_ENTERDIAL_INFO "Enter the number you want to call exactly as you would dial it. We recommend including a code to disable call waiting." + IDS_ENTERDIAL_TITLE "Description:" + IDS_SPAWNDATA_ERR "Unable to locate the Spawned Hellfire data file." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NOANSWER_ERR "\n\nUnable to connect. There was no answer at the number dialed." + IDS_NOTONE_ERR "\n\nUnable to dial. No dial tone was detected." + IDS_BUSY_ERR "\n\nUnable to connect. The number dialed was busy." + IDS_MODEM_CREATE2 "Create a new game with a difficulty setting of your choice. The connected player can join your game after you create it." + IDS_MODEM_JOIN "Join the game created by the person that you currently have a connection with." + IDS_SPAWNCLASS_ERR "The Rogue and Sorcerer are only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_SPAWNINTRO_ERR "The Hellfire introduction cinematic is only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_MODEMGAMENAME_FMT "Game %d" + IDS_DUPGAMENAME_FMT "Unable to create game. The game ""%s"" already exists." + IDS_MODEMJOINPREV "Join Previous Game" + IDS_MODEMJOINNEW "Join New Game" + IDS_MODEMOFF_ERR "Modem not detected. Please ensure that your modem is turned on and connected correctly." + IDS_JOINGAMES "Join Games" + IDS_MEMORY_ERR "Not enough memory. Hellfire requires that your system have a minimum of 16 MB of RAM to play multiplayer games." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Uisrc/UI/FRANK.SAV b/Uisrc/UI/FRANK.SAV new file mode 100644 index 0000000..3551145 --- /dev/null +++ b/Uisrc/UI/FRANK.SAV @@ -0,0 +1,887 @@ +//Microsoft Developer Studio generated resource script. +// +#include "frank.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +TITLESCREEN_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + // The text is in the art. + //CTEXT "Copyright © 1997 Synergistic Software",IDC_BLIZZARD, + // 22,173,212,11,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,203 +END + +MAINMENU_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Start Game",IDC_SINGLEPLAYER_BTN,26,81,204,18, + BS_NOTIFY + PUSHBUTTON "Replay Intro",IDC_REPLAYINTRO_BTN,26,99,204,18, + BS_NOTIFY + PUSHBUTTON "Support",IDC_SUPPORT_BTN,26,117,204,18, + BS_NOTIFY + PUSHBUTTON "Credits",IDC_SHOWCREDITS_BTN,26,135,204,18, + BS_NOTIFY + PUSHBUTTON "Exit Hellfire",IDCANCEL,26,153,204,18,BS_NOTIFY + LTEXT "",IDC_REGISTRATION,7,187,242,9,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +MAINMENU_DIALOG2 DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Start Game",IDC_SINGLEPLAYER_BTN,26,81,204,18, + BS_NOTIFY + PUSHBUTTON "Multiplayer",IDC_MULTIPLAYER_BTN,26,99,204,18, + BS_NOTIFY + PUSHBUTTON "Replay Intro",IDC_REPLAYINTRO_BTN,26,117,204,18, + BS_NOTIFY + PUSHBUTTON "Support",IDC_SUPPORT_BTN,26,135,204,18, + BS_NOTIFY + PUSHBUTTON "Credits",IDC_SHOWCREDITS_BTN,26,153,204,18, + BS_NOTIFY + PUSHBUTTON "Exit Hellfire",IDCANCEL,26,171,204,18,BS_NOTIFY + LTEXT "",IDC_REGISTRATION,7,187,242,9,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 +END + +SELHERO_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + RTEXT "Strength:",IDC_STRLBL,16,151,44,9 + RTEXT "Magic:",IDC_MAGLBL,16,160,44,9 + RTEXT "Dexterity:",IDC_DEXLBL,16,169,44,9 + RTEXT "Vitality:",IDC_VITLBL,16,178,44,9 + CTEXT "",IDC_CHARSTR,64,151,16,9 + CTEXT "",IDC_CHARMAGIC,64,160,16,9 + CTEXT "",IDC_CHARDEX,64,169,16,9 + CTEXT "",IDC_CHARVIT,64,178,16,9 + RTEXT "Level:",IDC_LEVELLBL,16,136,44,9 + CTEXT "",IDC_CHARLEVEL,64,136,16,9 + CONTROL "",IDC_HEROIMAGE,"Static",SS_BLACKFRAME | WS_DISABLED,12, + 89,72,32 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,0,0, + 256,65 + CTEXT "Single Player Characters",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED +END + +OKCANCEL_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "OK",IDC_OK,8,41,44,12 + PUSHBUTTON "Cancel",IDCANCEL,60,41,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,5,96,34,0,WS_EX_TRANSPARENT +END + +LOGON_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + EDITTEXT IDC_LOGONNAME_EDIT,52,34,88,12,ES_AUTOHSCROLL + EDITTEXT IDC_LOGONPASSWORD_EDIT,52,50,88,12,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,102,85,44,12 + PUSHBUTTON "Cancel",IDCANCEL,102,99,44,12 + RTEXT "Name:",IDC_STATIC,8,34,41,9,0,WS_EX_TRANSPARENT + RTEXT "Password:",IDC_STATIC,7,50,41,9,0,WS_EX_TRANSPARENT + CTEXT "Connect to Battlenet",IDC_DLGTITLE,0,8,154,9,0, + WS_EX_TRANSPARENT + LTEXT "You can open an account on battlenet FREE at WWW.BATTLE.NET.", + IDC_STATIC,8,76,88,38,0,WS_EX_TRANSPARENT +END + +PROGRESS_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "",IDC_PROGRESS_TEXT,0,4,112,18,0,WS_EX_TRANSPARENT + PUSHBUTTON "Cancel",IDCANCEL,34,42,44,12 + CONTROL "",IDC_UIGENERIC_PROGRESS,"Static",SS_BLACKFRAME,10,22, + 91,16 +END + +OK_DIALOG DIALOGEX 0, 0, 112, 61 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,34,41,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,5,96,34,0,WS_EX_TRANSPARENT +END + +BIGOK_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,55,99,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,20,139,75,0,WS_EX_TRANSPARENT + CTEXT "",IDC_DLGTITLE,7,7,140,9,0,WS_EX_TRANSPARENT +END + +BIGOKCANCEL_DIALOG DIALOGEX 0, 0, 154, 118 +STYLE DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,22,99,44,12 + CTEXT "",IDC_OKCANCEL_TEXT,8,20,139,75,0,WS_EX_TRANSPARENT + DEFPUSHBUTTON "Cancel",IDCANCEL,88,99,44,12 + CTEXT "",IDC_DLGTITLE,7,7,140,9,0,WS_EX_TRANSPARENT +END + +CREDITS_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "TIMES NEW ROMAN", 700, 0, 0x1 +BEGIN + CONTROL "",ID_SCROLL_WINDOW,"Static",SS_BLACKFRAME | WS_DISABLED, + 12,48,232,106 +END + +SUPPORT_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "TIMES NEW ROMAN", 700, 0, 0x1 +BEGIN + CONTROL "",ID_SCROLL_WINDOW,"Static",SS_BLACKFRAME | WS_DISABLED, + 12,48,232,106 +END + +DISCLAIMER_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Not For Review",IDC_TEXT1,25,7,96,15 + CTEXT "Not For Resale",IDC_TEXT2,134,7,96,15 + LTEXT "This is a five level beta of Hellfire, playable only over Battle.net. There are some features that are not yet implemented, notably multi player quests. Please send all comments and bug reports to bnbeta@blizzard.com.", + IDC_TEXT3,8,30,240,70 + LTEXT "This version of Hellfire is intended for the use of registered Battle.net beta testers only. This beta is for integrity testing of Blizzard Entertainment's Battle.net service and is not intended for review by the media or resale in any manner.", + IDC_TEXT4,8,100,240,70 + LTEXT "Unauthorized distribution is strictly prohibited.", + IDC_TEXT5,8,170,240,14 +END + +SELLIST_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,196,180,48,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "",IDC_HEROBTN1,106,108,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN2,106,119,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN3,106,130,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN4,106,141,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN5,106,152,128,11,BS_NOTIFY + PUSHBUTTON "",IDC_HEROBTN6,106,163,128,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,96,180,48,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Hero",IDC_DLGTITLE,106,89,128,14,WS_DISABLED + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 234,103,10,75 + PUSHBUTTON "Delete",IDDELETE,146,180,48,15,BS_NOTIFY | WS_DISABLED | + NOT WS_TABSTOP +END + +SELCLASS_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Warrior",IDC_WARRIORBTN,106,105,128,14,BS_NOTIFY + PUSHBUTTON "Rogue",IDC_ROGUEBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "Sorcerer",IDC_SORCERERBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "Monk",IDC_MONKBTN,106,147,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Choose Class",IDC_DLGTITLE,106,89,128,14,WS_DISABLED +END + +SELCLASS_DIALOG2 DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Warrior",IDC_WARRIORBTN,106,105,128,14,BS_NOTIFY + PUSHBUTTON "Rogue",IDC_ROGUEBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "Sorcerer",IDC_SORCERERBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "Monk",IDC_MONKBTN,106,147,128,14,BS_NOTIFY + PUSHBUTTON "Bard",IDC_BARDBTN,106,161,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Choose Class",IDC_DLGTITLE,106,89,128,14,WS_DISABLED +END + +ENTERNAME_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CONTROL "",IDC_NAMEEDIT,"DIABLOEDIT",WS_TABSTOP,106,133,128,14 + CTEXT "Enter Name",IDC_DLGTITLE,106,89,128,14,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP +END + +SELYESNO_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Yes",IDC_OK,92,84,72,15,BS_NOTIFY + PUSHBUTTON "No",IDCANCEL,92,99,72,15,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,48,8,160,71,WS_DISABLED +END + +SELCONNECT_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "",IDC_CONNECTBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_CONNECTBTN5,122,152,114,11,BS_NOTIFY + CTEXT "Multi Player Game",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,182,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + LTEXT "",IDC_CONNECTTEXT,14,122,82,72,WS_DISABLED + LTEXT "Requirements:",IDC_REQTITLE,14,108,82,9,WS_DISABLED + LTEXT "",IDC_PLAYERSTEXT,14,92,82,9,WS_DISABLED + CTEXT "Select Connection",IDC_DLGTITLE2,120,89,118,14, + WS_DISABLED + PUSHBUTTON "",IDC_CONNECTBTN6,122,163,114,11,BS_NOTIFY + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,103,10,75 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,50,0, + 256,65 +END + +SELOK_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDC_OK,92,84,72,15,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,56,8,160,71,WS_DISABLED +END + +SELIPXGAME_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "",IDC_GAMEBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN5,122,152,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_GAMEBTN6,122,163,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + CTEXT "Join IPX Games",IDC_DLGTITLE,10,68,236,15,WS_DISABLED + CTEXT "Select Game",IDC_DLGTITLE2,120,89,118,14,WS_DISABLED + LTEXT "Description:",IDC_DLGTITLE3,14,89,82,14,WS_DISABLED + LTEXT "",IDC_GAMEDESC,14,108,82,81,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,50,0, + 256,65 + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,103,10,75 +END + +SELDIFF_DIALOG DIALOGEX 0, 65, 256, 135 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Create Game",IDC_DLGTITLE,10,3,236,15,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,115,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Normal",IDC_DIFFBTN1,120,54,118,11,BS_NOTIFY + PUSHBUTTON "Nightmare",IDC_DIFFBTN2,120,65,118,11,BS_NOTIFY + PUSHBUTTON "Hell",IDC_DIFFBTN3,120,76,118,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,115,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Difficulty",IDC_DLGTITLE2,120,24,118,15, + WS_DISABLED + CTEXT "",IDC_DLGTITLE3,14,24,82,14,WS_DISABLED + LTEXT "",IDC_DIFFDESC,14,43,82,81,WS_DISABLED +END + +DIRLINK_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Direct Link Connection",IDC_DLGTITLE,10,68,236,15, + WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIRLINKBTN1,120,119,118,11,BS_NOTIFY + PUSHBUTTON "Retry Connection",IDC_DIRLINKBTN2,120,130,118,11, + BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE2,120,89,118,15,WS_DISABLED + LTEXT "Link Status:",IDC_DLGTITLE3,14,89,82,14,WS_DISABLED + LTEXT "",IDC_LINKDESC,14,108,82,81,WS_DISABLED + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,50,0, + 256,65 +END + +SPAWNERR_DIALOG DIALOGEX 0, 69, 256, 134 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "OK",IDC_OK,92,103,72,18,BS_NOTIFY + LTEXT "",IDC_OKCANCEL_TEXT,56,15,160,75,WS_DISABLED +END + +SELLOAD_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,172,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Load Game",IDC_LOADBTN,106,119,128,14,BS_NOTIFY + PUSHBUTTON "New Game",IDC_NEWBTN,106,133,128,14,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,112,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Save File Exists",IDC_DLGTITLE,106,89,128,14, + WS_DISABLED +END + +MODEM_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CTEXT "Modem Connection",IDC_DLGTITLE,10,68,236,15 + CTEXT "",IDC_DLGTITLE2,14,89,82,14 + LTEXT "",IDC_MODEMDESC,14,108,82,81 + CONTROL "",IDC_LOGO,"Static",SS_BLACKFRAME | WS_DISABLED,50,0, + 256,65 +END + +SELMODEM_DIALOG DIALOGEX 0, 65, 256, 135 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,115,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "",IDC_MODEMBTN1,122,43,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN2,122,54,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN3,122,65,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN4,122,76,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN5,122,87,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_MODEMBTN6,122,98,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,115,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Modem",IDC_DLGTITLE2,120,24,118,14,WS_DISABLED + CONTROL "",IDC_SCROLLBAR,"Static",SS_BLACKFRAME | WS_DISABLED, + 236,38,10,75 + CTEXT "Modem Game Setup",IDC_DLGTITLE,10,3,236,15,WS_DISABLED + CTEXT "Requirments:",IDC_DLGTITLE3,14,24,82,14,WS_DISABLED + LTEXT "The modem must be 14400 BPS or faster. If the device you want to use is not listed here, please check your modem to ensure that it is configured correctly.", + IDC_REQDESC,14,43,82,81,WS_DISABLED +END + +ENTERDIAL_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + CONTROL "",IDC_DIALEDIT,"DIABLOEDIT",WS_TABSTOP,122,133,114,14 + CTEXT "Enter Number",IDC_DLGTITLE,122,89,114,14,WS_DISABLED + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP +END + +SELDIAL_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIALBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "Enter New Number",IDC_DIALBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE,120,89,118,14,WS_DISABLED + PUSHBUTTON "",IDC_DIALBTN3,122,130,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN4,122,141,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN5,122,152,114,11,BS_NOTIFY + PUSHBUTTON "",IDC_DIALBTN6,122,163,114,11,BS_NOTIFY +END + +MODMSTAT_DIALOG DIALOGEX 0, 81, 256, 122 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDCANCEL,92,84,72,15,BS_NOTIFY + LTEXT "Attempting to connect...",IDC_OKCANCEL_TEXT,56,8,160,71, + WS_DISABLED +END + +SELCRE8JOIN_DIALOG DIALOGEX 0, 0, 256, 203 +STYLE WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_TRANSPARENT +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + PUSHBUTTON "Cancel",IDC_FAKECANCEL,180,180,56,15,BS_NOTIFY | + WS_DISABLED | NOT WS_TABSTOP + PUSHBUTTON "Create Game",IDC_DIALBTN1,122,108,114,11,BS_NOTIFY + PUSHBUTTON "Join Game",IDC_DIALBTN2,122,119,114,11,BS_NOTIFY + PUSHBUTTON "OK",IDC_FAKEOK,120,180,56,15,WS_DISABLED | NOT + WS_TABSTOP + CTEXT "Select Action",IDC_DLGTITLE,120,89,118,14,WS_DISABLED +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + "TITLESCREEN_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MAINMENU_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MAINMENU_DIALOG2", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELHERO_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "OKCANCEL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 54 + END + + "LOGON_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "PROGRESS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 52 + END + + "OK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 105 + TOPMARGIN, 7 + BOTTOMMARGIN, 54 + END + + "BIGOK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "BIGOKCANCEL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 147 + TOPMARGIN, 7 + BOTTOMMARGIN, 111 + END + + "CREDITS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 242 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END + + "SUPPORT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 242 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END + + "DISCLAIMER_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELLIST_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELCLASS_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELCLASS_DIALOG2", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "ENTERNAME_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELYESNO_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELCONNECT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELOK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELIPXGAME_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELDIFF_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 128 + END + + "DIRLINK_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SPAWNERR_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELLOAD_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MODEM_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELMODEM_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 128 + END + + "ENTERDIAL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "SELDIAL_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END + + "MODMSTAT_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + HORZGUIDE, 7 + END + + "SELCRE8JOIN_DIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 249 + TOPMARGIN, 7 + BOTTOMMARGIN, 196 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "frank.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT_FILES +// + +IDR_CREDITS TEXT_FILES DISCARDABLE "credits.txt" +IDR_SUPPORT TEXT_FILES DISCARDABLE "support.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// ART_FILES +// + +IDR_POPUPART ART_FILES DISCARDABLE "srpopup.raw" +IDR_BTNART ART_FILES DISCARDABLE "but_sml.raw" +IDR_ARTPAL ART_FILES DISCARDABLE "srpopup.pal" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +DIABLOCURSOR CURSOR DISCARDABLE "pointer.cur" +DIABLOIBEAM CURSOR DISCARDABLE "ibeam.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WARRIOR "Warrior" + IDS_ROGUE "Rogue" + IDS_SORCERER "Sorcerer" + IDS_CONFIRM_DELETE "\nAre you sure you want to delete the character ""%s""?" + IDS_CONFIRM_OVERWRITE "\nCharacter already exists. Do you want to overwrite ""%s""?" + IDS_NAME_ERR "\nInvalid name. A name cannot contain spaces, reserved characters, or reserved words." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_CREATE_ERR "\n\nUnable to create character." + IDS_DELETE_ERR "\n\nDelete character failed." + IDS_ENUMCHAR_ERR "\n\nUnable to read character files." + IDS_FIRST_NASTY "gvdl" + IDS_STRING20 "dvou" + IDS_STRING21 "tiju" + IDS_STRING22 "cjudi" + IDS_STRING23 "bttipmf" + IDS_STRING24 "ojhhfs" + IDS_STRING25 "cmj{{bse" + IDS_LAST_NASTY "benjo" + IDS_COPYPROT_ERR "Please insert the Hellfire CD into your CD-ROM drive and press 'OK'." + IDS_MULTILIST_TITLE "Multi Player Characters" + IDS_SINGLIST_TITLE "Single Player Characters" + IDS_NEWHERO "New Hero" + IDS_NEWSINGHERO "New Single Player Hero" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NEWMULTHERO "New Multi Player Hero" + IDS_PLAYERSSUPPORTED "Players Supported: %d" + IDS_DELETESINGHERO "Delete Single Player Hero" + IDS_DELETEMULTHERO "Delete Multi Player Hero" + IDS_CREATEGAME "Create Game" + IDS_JOIN_ERR "\n\nUnable to join game ""%s.""" + IDS_CREATEGAME_ERR "\n\nUnable to create game." + IDS_NORMAL "Normal" + IDS_NIGHTMARE "Nightmare" + IDS_HELL "Hell" + IDS_CREATEDESC "Create a new game with a difficulty setting of your choice." + IDS_NOGAME_ERR "\n\nA multi player game was not detected!" + IDS_SELCONN_ERR "\n\nUnable to initialize selected connection method." + IDS_SPAWN_ERR "You have selected a feature only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_NOMODEM_ERR "\nUnable to detect a modem. Please install or configure a modem." + IDS_RETRYCONNDESC "A direct link connection was not detected. Check your cable connections and confirm that the connected computer has created a game, then retry." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_GAMEDESCFMT "%s.\nCreated by %s, a level %d %s." + IDS_VERSION_ERR "\nUnable to join the detected game. Your version of Hellfire is incompatible with the game creator's version." + IDS_MODEMJOIN_ERR "\nUnable to establish a connection. A game of Hellfire was not detected at the specified phone number." + IDS_CALL_FMT "Call %s" + IDS_INITMODEM_ERR "\n\nUnable to initialize the selected device." + IDS_MODEM_CREATE "Create a new game with a difficulty setting of your choice. Another player can dial in and join your game in progress." + IDS_MODEM_DIALNEW "Enter and call a number not listed here and join a game already in progress at that number." + IDS_MODEM_DIALOLD "Call the selected number and join a game already in progress at that number." + IDS_SELDIAL_INFOTITLE "Description:" + IDS_ENTERDIAL_INFO "Enter the number you want to call exactly as you would dial it. We recommend including a code to disable call waiting." + IDS_ENTERDIAL_TITLE "Description:" + IDS_SPAWNDATA_ERR "Unable to locate the Spawned Hellfire data file." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NOANSWER_ERR "\n\nUnable to connect. There was no answer at the number dialed." + IDS_NOTONE_ERR "\n\nUnable to dial. No dial tone was detected." + IDS_BUSY_ERR "\n\nUnable to connect. The number dialed was busy." + IDS_MODEM_CREATE2 "Create a new game with a difficulty setting of your choice. The connected player can join your game after you create it." + IDS_MODEM_JOIN "Join the game created by the person that you currently have a connection with." + IDS_SPAWNCLASS_ERR "The Rogue and Sorcerer are only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_SPAWNINTRO_ERR "The Hellfire introduction cinematic is only available in the full retail version of Hellfire. For ordering information call (800) 953-SNOW." + IDS_MODEMGAMENAME_FMT "Game %d" + IDS_DUPGAMENAME_FMT "Unable to create game. The game ""%s"" already exists." + IDS_MODEMJOINPREV "Join Previous Game" + IDS_MODEMJOINNEW "Join New Game" + IDS_MODEMOFF_ERR "Modem not detected. Please ensure that your modem is turned on and connected correctly." + IDS_JOINGAMES "Join Games" + IDS_MEMORY_ERR "Not enough memory. Hellfire requires that your system have a minimum of 16 MB of RAM to play multiplayer games." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Uisrc/UI/IBEAM.CUR b/Uisrc/UI/IBEAM.CUR new file mode 100644 index 0000000..bdc85c4 Binary files /dev/null and b/Uisrc/UI/IBEAM.CUR differ diff --git a/Uisrc/UI/ICONCURS.ICO b/Uisrc/UI/ICONCURS.ICO new file mode 100644 index 0000000..1bdfeda Binary files /dev/null and b/Uisrc/UI/ICONCURS.ICO differ diff --git a/Uisrc/UI/LINK.CUR b/Uisrc/UI/LINK.CUR new file mode 100644 index 0000000..2608ade Binary files /dev/null and b/Uisrc/UI/LINK.CUR differ diff --git a/Uisrc/UI/LOCAL.CPP b/Uisrc/UI/LOCAL.CPP new file mode 100644 index 0000000..d26ac93 --- /dev/null +++ b/Uisrc/UI/LOCAL.CPP @@ -0,0 +1,640 @@ +//**************************************************************************** +// local.cpp +// created 9.13.96 +//**************************************************************************** + +#define OEMRESOURCE + +#include "pch.h" +#include "artfont.h" + + +#define TEST_REDRAW 0 // 0 in final + + +//**************************************************************************** +//**************************************************************************** + #define WNDPROCPROP TEXT("UIWNDPROC") + + static PALETTEENTRY sgPalette[PALETTE_REGISTERS]; + static HPALETTE sghPalIdentity = NULL; + + +//**************************************************************************** +void UiCreateIdentityPal(void) { + LOGPALETTE *lPalette; + PALETTEENTRY *pe; + DWORD *pDword; + + lPalette = (LOGPALETTE *)ALLOC(sizeof(LOGPALETTE) + (PALETTE_REGISTERS-1)*sizeof(PALETTEENTRY)); + if (lPalette == NULL) + return; + + lPalette->palVersion = 0x300; + lPalette->palNumEntries = PALETTE_REGISTERS; + pe = &lPalette->palPalEntry[0]; + pDword = (DWORD *)pe; + for (int i=0; ipeFlags = PC_EXPLICIT; + } + + sghPalIdentity = CreatePalette(lPalette); + FREE(lPalette); +} + +//**************************************************************************** +void UiFreeIdentityPal(void) { + if (sghPalIdentity) { + DeleteObject(sghPalIdentity); + sghPalIdentity = NULL; + } +} + +//**************************************************************************** +HPALETTE UiGetIdentityPal(void) { + return sghPalIdentity; +} + + +//**************************************************************************** +//**************************************************************************** +PALETTEENTRY * UiPaletteEntry(int index) { + return &sgPalette[index]; +} + + +//**************************************************************************** +//**************************************************************************** +void UiClearPalette(PALETTEENTRY * pe) { + for (int palreg = 0; palreg < PALETTE_REGISTERS; palreg++) { + pe[palreg].peRed = 0; + pe[palreg].peGreen = 0; + pe[palreg].peBlue = 0; + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiLoadBmpFile (LPCTSTR filename, + LPBYTE *bitmapbits, + SIZE *bitmapsize) { + + int width, height; + + // DETERMINE THE IMAGE DIMENSIONS + if (!SBmpLoadImage(filename,NULL,NULL,0,&width,&height)) { + if (bitmapbits) { + *bitmapbits = 0; + } + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + return 0; + } + + if (bitmapsize) { + bitmapsize->cx = width; + bitmapsize->cy = height; + } + + // LOAD THE IMAGE + *bitmapbits = (LPBYTE)ALLOC(width*height); + + if (!*bitmapbits) { + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + return 0; + } + + if (!SBmpLoadImage(filename,NULL,*bitmapbits,width*height)) { + FREE(*bitmapbits); + *bitmapbits = NULL; + + bitmapsize->cx = 0; + bitmapsize->cy = 0; + return 0; + } + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL LoadArtFile ( HWND window, + HWND parent, + LPCTSTR controltype, + DWORD controlstyle, + LONG usageflags, + LPCTSTR filename, + LPBYTE *bitmapbits, + SIZE *bitmapsize, + BOOL updatepal) { + + PALETTEENTRY pe[PALETTE_REGISTERS]; + int width, height; + + // DETERMINE THE IMAGE DIMENSIONS + if (!SBmpLoadImage(filename,NULL,NULL,0,&width,&height)) { + if (bitmapbits) { + *bitmapbits = 0; + } + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + return 0; + } + + if (bitmapsize) { + bitmapsize->cx = width; + bitmapsize->cy = height; + } + + // LOAD THE IMAGE + *bitmapbits = (LPBYTE)ALLOC(width*height); + if (!*bitmapbits) { + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + return 0; + } + if (!SBmpLoadImage(filename, pe, *bitmapbits, width*height)) { + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + FREE(*bitmapbits); + *bitmapbits = 0; + return 0; + } + + // REGISTER THE IMAGE WITH THE DIALOG BOX MANAGER + if (!SDlgSetBitmap( + window, + parent, + controltype, + controlstyle, + usageflags, + *bitmapbits, + NULL, + width, + height + )) { + if (bitmapsize) { + bitmapsize->cx = 0; + bitmapsize->cy = 0; + } + FREE(*bitmapbits); + *bitmapbits = 0; + return 0; + } + + // IF THIS IS A SCREEN BACKGROUND, USE ITS PALETTE + if ((!controltype) || (!*controltype)) { + HPALETTE hPal; + + // Get Windows Default colors from the system + hPal = (HPALETTE)GetStockObject(DEFAULT_PALETTE); + GetPaletteEntries(hPal, 0, 10, &pe[0]); + GetPaletteEntries(hPal, 10, 10, &pe[PALETTE_REGISTERS-10]); + + memcpy(sgPalette, pe, (PALETTE_REGISTERS * sizeof(PALETTEENTRY))); + if (updatepal) { + SDrawUpdatePalette(0, 255, &sgPalette[0], TRUE); + } + else { + UiClearPalette(pe); + SDrawUpdatePalette(0, PALETTE_REGISTERS, pe, TRUE); + } + } + + return 1; +} + + +//**************************************************************************** +// given a rect, calculate a new rect of the same size +// that uses the new given upper left coordinates +//**************************************************************************** +void UiCalcNewRect(RECT *rect, int xoffset, int yoffset) { + rect->right -= rect->left; + rect->right += xoffset - 1; + rect->left = xoffset; + + rect->bottom -= rect->top; + rect->bottom += yoffset - 1; + rect->top = yoffset; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiSetStaticBmp(HWND parent, int child_id, LPBYTE bmpbits, SIZE *bmpsize) { + HWND child = GetDlgItem(parent, child_id); + RECT rect; + + GetWindowRect(child,&rect); + ScreenToClient(parent, (LPPOINT)&rect.left); + ScreenToClient(parent, (LPPOINT)&rect.right); + + SDlgSetBitmap( + child, + NULL, + TEXT("Static"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + bmpbits, + &rect, + bmpsize->cx, + bmpsize->cy + ); + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +void UiSetBtnBmp(HWND button, DWORD usage, RECT *rect, LPBYTE bmpbits, SIZE *bmpsize) { + SDlgSetBitmap( + button, + NULL, + TEXT("Button"), + SDLG_STYLE_ANY, + usage, + bmpbits, + rect, + bmpsize->cx, + bmpsize->cy + ); +} + + +//**************************************************************************** +//**************************************************************************** +void UiSetButtonBitmaps(HWND parent, int *btn_ids, LPBYTE bmpbits, SIZE *bmpsize) { + LONG yoffset = 0; + HWND child; + RECT rect; + + for ( ; *btn_ids; btn_ids++) { + // set up the button bitmaps so the use different parts of the texture + child = GetDlgItem(parent, *btn_ids); + if (! child) continue; + + GetClientRect(child, &rect); + + UiCalcNewRect(&rect, 0, yoffset); + UiSetBtnBmp(child, SDLG_USAGE_NORMAL_UNFOCUSED, &rect, bmpbits, bmpsize); + rect.bottom++; + rect.right++; + yoffset = rect.bottom; + + UiCalcNewRect(&rect, 0, yoffset); + UiSetBtnBmp(child, SDLG_USAGE_SELECTED_UNFOCUSED, &rect, bmpbits, bmpsize); + rect.bottom++; + rect.right++; + yoffset = rect.bottom; + + UiCalcNewRect(&rect, 0, yoffset); + UiSetBtnBmp(child, SDLG_USAGE_NORMAL_FOCUSED, &rect, bmpbits, bmpsize); + rect.bottom++; + rect.right++; + yoffset = rect.bottom; + + UiCalcNewRect(&rect, 0, yoffset); + UiSetBtnBmp(child, SDLG_USAGE_SELECTED_FOCUSED, &rect, bmpbits, bmpsize); + rect.bottom++; + rect.right++; + yoffset = rect.bottom; + + UiCalcNewRect(&rect, 0, yoffset); + UiSetBtnBmp(child, SDLG_USAGE_GRAYED, &rect, bmpbits, bmpsize); + rect.bottom++; + rect.right++; + yoffset = rect.bottom; + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiSetTextYellow(HDC hdc) { + SetTextColor(hdc, RGB(0xff, 0xff, 0x00)); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiIsPtInWindow(HWND parent, HWND window, int xpos, int ypos) { + RECT rect; + + if (! parent) return FALSE; + if (! window) return FALSE; + + GetWindowRect(window, &rect); + ScreenToClient(parent, (LPPOINT)&rect.left); + ScreenToClient(parent, (LPPOINT)&rect.right); + + if (xpos < rect.left) return FALSE; + if (xpos >= rect.right) return FALSE; + if (ypos < rect.top) return FALSE; + if (ypos >= rect.bottom) return FALSE; + + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +void UiPaintBtn(HWND window) { + PAINTSTRUCT ps; + HDC dc = SDlgBeginPaint(window, &ps); + SDlgEndPaint(window, &ps); +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK OnPaintBtnProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + WNDPROC oldproc = (WNDPROC) GetProp(window, WNDPROCPROP); + + switch (message) { + case WM_DESTROY: + RemoveProp(window, WNDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +void UiOnPaintBtns(HWND window, int * BtnIDs) { + HWND child; + WNDPROC oldproc; + + for (; *BtnIDs; BtnIDs++) { + child = GetDlgItem(window, *BtnIDs); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, WNDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) OnPaintBtnProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK ActiveDownBtnProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + HWND oldfocus; + WNDPROC oldproc = (WNDPROC) GetProp(window, WNDPROCPROP); + + switch (message) { +#if TEST_REDRAW + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_KEYDOWN: + if (wparam == VK_SCROLL) { + SDrawClearSurface(SDRAW_SURFACE_FRONT); + } + break; +#endif + case WM_LBUTTONDOWN: + // set the focus to this window + oldfocus = GetFocus(); + SetFocus(window); + + // make sure the windows involved in focus changing update + InvalidateRect(oldfocus, NULL, FALSE); + InvalidateRect(window, NULL, FALSE); + UpdateWindow(oldfocus); + UpdateWindow(window); + + // notify the parent of the click + PostMessage( + GetParent(window), + WM_COMMAND, + MAKELONG(GetWindowLong(window, GWL_ID), BN_CLICKED), + (LPARAM) window + ); + return 0; + + case WM_DESTROY: + RemoveProp(window, WNDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +void UiActiveDownBtns(HWND window, int * BtnIDs) { + HWND child; + WNDPROC oldproc; + + for (; *BtnIDs; BtnIDs++) { + child = GetDlgItem(window, *BtnIDs); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, WNDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) ActiveDownBtnProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiFlushIOMessages(HWND window) { + MSG msg; + + while ( + PeekMessage(&msg, window, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) || + PeekMessage(&msg, window, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) + ); +} + + +//**************************************************************************** +//**************************************************************************** +TPBMP UiAllocBmp(void) { + TPBMP tpBmp = (TPBMP) ALLOC(sizeof(TBMP)); + + if (tpBmp) { + tpBmp->data = NULL; + tpBmp->datasize.cx = 0; + tpBmp->datasize.cy = 0; + tpBmp->userdata = 0; + tpBmp->text[0] = 0; + } + return tpBmp; +} + + +//**************************************************************************** +//**************************************************************************** +void UiFreeBmp(TPBMP tpBmp) { + if (tpBmp) { + if (tpBmp->data) { + FREE(tpBmp->data); + tpBmp->data = 0; + } + FREE(tpBmp); + } +} + + +//**************************************************************************** +//**************************************************************************** +void UiSetBmpText(TPBMP tpBmp, LPCSTR text) { + if (! tpBmp) return; + + if (text) { + strncpy(tpBmp->text, text, BMP_TEXT_LEN-1); + tpBmp->text[BMP_TEXT_LEN-1] = 0; + } + else { + tpBmp->text[0] = 0; + } +} + + +//**************************************************************************** +//**************************************************************************** +#define CURSOR_FILE TEXT("ui_art\\cursor.pcx") +static LPBYTE sgCurData = NULL; +static LPBYTE sgCurMask = NULL; +static SIZE sgCurSize; + +//**************************************************************************** +static void UiGenCursorMask(void) { + LPBYTE data = sgCurData; + LPBYTE mask = sgCurMask; + + if (! mask) return; + if (! data) return; + + for (int i = 0; i < (sgCurSize.cx * sgCurSize.cy); i++) { + if (*data++) { + *mask++ = 0; + } + else { + *mask++ = 255; + } + } +} + +//**************************************************************************** +void UiLoadCursor(void) { + int width, height; + + // determine the size of the curspr + if (!SBmpLoadImage(CURSOR_FILE,NULL,NULL,0,&width,&height)) + return; + + // allocate space for the data and mask + sgCurData = (LPBYTE)ALLOC(width*height); + + if (!sgCurData) + return; + + sgCurMask = (LPBYTE)ALLOC(width*height); + if (!sgCurMask) { + FREE(sgCurData); + sgCurData = NULL; + return; + } + + // load the cursor data + if (!SBmpLoadImage(CURSOR_FILE, NULL, sgCurData, width*height)) { + FREE(sgCurData); + sgCurData = NULL; + FREE(sgCurMask); + sgCurMask = NULL; + return; + } + + // save the cursor size + sgCurSize.cx = width; + sgCurSize.cy = height; + + // generate a mask for the cursor + UiGenCursorMask(); +} + +//**************************************************************************** +void UiDestroyCursor(void) { + if (sgCurData) { + FREE(sgCurData); + sgCurData = NULL; + } + if (sgCurMask) { + FREE(sgCurMask); + sgCurMask = NULL; + } +} + +//**************************************************************************** +void UiSetCursor(void) { + if (! sgCurData) { + UiLoadCursor(); + } + SDlgSetSystemCursor(sgCurMask, sgCurData, &sgCurSize, OCR_NORMAL); +} + +//**************************************************************************** +void UiClearCursor(void) { + SDlgSetSystemCursor(NULL, NULL, NULL, OCR_NORMAL); +} + + +//**************************************************************************** +void UiSetWindowsCursors(HWND hWnd) { + HCURSOR OldArrow = NULL; + + UiClearCursor(); // Make sure Storm cursor has been turned off + SDlgSetCursor(hWnd, LoadCursor(global_hinstance, "DIABLOCURSOR"), OCR_NORMAL, &OldArrow); +} + diff --git a/Uisrc/UI/LOCAL.H b/Uisrc/UI/LOCAL.H new file mode 100644 index 0000000..32b64bb --- /dev/null +++ b/Uisrc/UI/LOCAL.H @@ -0,0 +1,136 @@ +//**************************************************************************** +// local.cpp +// created 9.13.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +extern HINSTANCE global_hinstance; + + +//**************************************************************************** +//**************************************************************************** + enum _modes { + SINGLEPLAYER, + MULTIPLAYER, + }; + + #define BMP_TEXT_LEN 256 + typedef struct _bmp { + LPBYTE data; + SIZE datasize; + LONG userdata; + TCHAR text[BMP_TEXT_LEN]; + } TBMP, * TPBMP; + + + +typedef struct _gameinfo TGAMEINFO; +struct _gameinfo { + char szName[MAX_GAME_LEN]; + char szPassword[MAX_PASSWORD_LEN]; +}; + + + +//**************************************************************************** +//**************************************************************************** +#define PALETTE_REGISTERS 256 +PALETTEENTRY * UiPaletteEntry(int index); +void UiClearPalette(PALETTEENTRY * pe); + + +//**************************************************************************** +//**************************************************************************** +BOOL LoadArtFile ( HWND window, + HWND parent, + LPCTSTR controltype, + DWORD controlstyle, + LONG usageflags, + LPCTSTR filename, + LPBYTE *bitmapbits, + SIZE *bitmapsize = NULL, + BOOL updatepal = TRUE); + +BOOL UiLoadBmpFile (LPCTSTR filename, + LPBYTE *bitmapbits, + SIZE *bitmapsize); + +//**************************************************************************** +BOOL UiSetStaticBmp(HWND parent, + int child_id, + LPBYTE bmpbits, + SIZE *bmpsize); + +//**************************************************************************** +void UiCalcNewRect(RECT *rect, + int xoffset, + int yoffset); + +//**************************************************************************** +void UiSetBtnBmp(HWND button, + DWORD usage, + RECT *rect, + LPBYTE bmpbits, + SIZE *bmpsize); + +void UiSetButtonBitmaps(HWND parent, + int *btn_ids, + LPBYTE bmpbits, + SIZE *bmpsize); + +//**************************************************************************** +void UiSetTextYellow(HDC hdc); + +//**************************************************************************** +BOOL UiIsPtInWindow(HWND parent, HWND window, int xpos, int ypos); + +//**************************************************************************** +void UiCreateIdentityPal(void); +void UiFreeIdentityPal(void); +HPALETTE UiGetIdentityPal(void); + +//**************************************************************************** +void UiLoadCursor(void); +void UiDestroyCursor(void); +void UiSetCursor(void); +void UiClearCursor(void); + +void UiSetWindowsCursors(HWND hWnd); + +//**************************************************************************** +void UiPaintBtn(HWND window); +void UiOnPaintBtns(HWND window, int * BtnIDs); +void UiActiveDownBtns(HWND window, int * BtnIDs); + +//**************************************************************************** +void UiFlushIOMessages(HWND window); + + +BOOL Txt2GameData(char *szDesc, TGAMEDATA *pGameData, LPSTR *ppszPlayerName, LPSTR *ppszPlayerDesc); +void GameData2Txt(TGAMEDATA *pGameData, LPCSTR szPlayerName, LPCSTR szPlayerDesc, LPSTR szDesc, int nMaxLength); + +//**************************************************************************** +TPBMP UiAllocBmp(void); +void UiFreeBmp(TPBMP tpBmp); +void UiSetBmpText(TPBMP tpBmp, LPCSTR text); + +//**************************************************************************** +BOOL UiIsSpawned(void); + +//**************************************************************************** +void FocusAnimateInit(LPCTSTR filename); +void FocusReInit(void); +void FocusAnimateDestroy(void); +BOOL FocusAnimate(HWND parent, HWND child); +void FocusLost(HWND parent, HWND child); +void FocusErase(HWND parent, HWND child); +void FocusSnd(HWND focus); + +//**************************************************************************** +BOOL UiRegLoadString (LPCTSTR keyname, + LPCTSTR valuename, + DWORD flags, + LPTSTR buffer, + DWORD bufferchars); diff --git a/Uisrc/UI/LOGON.CPP b/Uisrc/UI/LOGON.CPP new file mode 100644 index 0000000..a2a0b6e --- /dev/null +++ b/Uisrc/UI/LOGON.CPP @@ -0,0 +1,190 @@ +//**************************************************************************** +// Logon.cpp +// Diablo UI log on to battlenet popup dialog +// +// By Frank Pearce +// created 9.25.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define DEFAULT_LEN 16 + + static LPBYTE sgBgBmp = NULL; + static LPBYTE sgBtnBmp = NULL; + + static LPSTR sgName; + static LPSTR sgPassword; + static UINT sgNameLen; + static UINT sgPasswordLen; + + +//**************************************************************************** +//**************************************************************************** +static void LogonSaveInfo(HWND window) { + HWND edit; + + // get the logon name + if (sgName) { + edit = GetDlgItem(window, IDC_LOGONNAME_EDIT); + GetWindowText(edit, sgName, sgNameLen); + } + + // get the logon password + if (sgPassword) { + edit = GetDlgItem(window, IDC_LOGONPASSWORD_EDIT); + GetWindowText(edit, sgPassword, sgPasswordLen); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void LogonClearInfo(HWND window) { + // clear the logon name + if (sgName) + *sgName = 0; + + // clear the logon password + if (sgPassword) + *sgPassword = 0; +} + + +//**************************************************************************** +//**************************************************************************** +static void LogonDestroy(HWND window) { + if (sgBgBmp) { + FREE(sgBgBmp); + sgBgBmp = NULL; + } + if (sgBtnBmp) { + FREE(sgBtnBmp); + sgBtnBmp = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void LogonInit(HWND window) { + HWND edit; + + // load ctrl/dlg bmps + LoadArtFile( + window, + GetParent(window), + TEXT("Popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\lpopup.pcx"), + &sgBgBmp, + NULL + ); + LoadArtFile( + NULL, + window, + TEXT("Button"), + SDLG_STYLE_ANYPUSHBUTTON, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\button.pcx"), + &sgBtnBmp, + NULL + ); + + // make sure there were some lengths set + if (!sgNameLen) sgNameLen = DEFAULT_LEN; + if (!sgPasswordLen) sgPasswordLen = DEFAULT_LEN; + + // limit length of logon name + edit = GetDlgItem(window, IDC_LOGONNAME_EDIT); + SendMessage(edit, EM_LIMITTEXT, sgNameLen, 0); + SetFocus(edit); + + // limit length of logon password + edit = GetDlgItem(window, IDC_LOGONPASSWORD_EDIT); + SendMessage(edit, EM_LIMITTEXT, sgNameLen, 0); + + return; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK LogonDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: + LogonSaveInfo(window); + SDlgEndDialog(window,IDOK); + break; + case IDCANCEL: + LogonClearInfo(window); + SDlgEndDialog(window,IDCANCEL); + break; + } + break; + + case WM_CTLCOLORSTATIC: + if (GetWindowLong((HWND)lparam, GWL_ID) == IDC_DLGTITLE) { + UiSetTextYellow((HDC)wparam); + return (BOOL) GetStockObject(NULL_BRUSH); + } + break; + + case WM_DESTROY: + LogonDestroy(window); + break; + + case WM_INITDIALOG: + LogonInit(window); + return 1; + + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiLogonDialog(HWND parent, + DWORD *selection, + LPSTR logonname, + UINT maxnamelen, + LPSTR logonpassword, + UINT maxpasswordlen +) { + DWORD result; + + sgName = logonname; + sgPassword = logonpassword; + sgNameLen = maxnamelen; + sgPasswordLen = maxpasswordlen; + + result = SDlgDialogBox( + global_hinstance, + TEXT("LOGON_DIALOG"), + parent, + LogonDialogProc + ); + + if (selection) + *selection = result; + + return 1; +} diff --git a/Uisrc/UI/MAINMENU.CPP b/Uisrc/UI/MAINMENU.CPP new file mode 100644 index 0000000..5191e7f --- /dev/null +++ b/Uisrc/UI/MAINMENU.CPP @@ -0,0 +1,368 @@ +//**************************************************************************** +// MainMenu.cpp +// Diablo UI main menu dialog +// +// By Frank Pearce +// created 9.17.96 +//**************************************************************************** + +#define OEMRESOURCE + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +#define ALLOW_SINGLE 1 // 1 in final + +#define MIN_MEMORY_REQ 0x00dac000L // 14MB + + +//**************************************************************************** +//**************************************************************************** + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + extern int SpawnErrDialog(HWND parent, int errstrid, BOOL onmainmenu); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 // frames per second + #define LOGO_TIMER_DELAY 55 //(MILLISEC_PER_SEC / LOGO_FPS) + + #define ATTRACT_TIMER_ID 3 + + #define MAX_REG_LEN 64 + + static TCHAR sgRegistration[MAX_REG_LEN]; + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_REGISTRATION, + 0 + }; +#if ALLOW_SINGLE + static int sgBtnIDs[] = { + IDC_SINGLEPLAYER_BTN, + IDC_MULTIPLAYER_BTN, + IDC_REPLAYINTRO_BTN, + IDC_SUPPORT_BTN, + IDC_SHOWCREDITS_BTN, + IDCANCEL, + 0 + }; +#else + static int sgGrayBtnIDs[] = { + IDC_SINGLEPLAYER_BTN, + 0 + }; + static int sgBtnIDs[] = { + IDC_MULTIPLAYER_BTN, + IDC_REPLAYINTRO_BTN, + IDC_SUPPORT_BTN, + IDC_SHOWCREDITS_BTN, + IDCANCEL, + 0 + }; +#endif + + static UINT sgAttractTimeout; + + +//**************************************************************************** +//**************************************************************************** +LPCTSTR GetRegStr(void) { + return sgRegistration; +} + + +//**************************************************************************** +//**************************************************************************** +static void MainMenuDestroy(HWND window) { + TitleLogoDestroy(); + + FocusAnimateDestroy(); + +#if ALLOW_SINGLE + UiDoomCtrlsDestroy(window, sgBtnIDs); +#else + UiDoomCtrlsDestroy(window, sgGrayBtnIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); +#endif + UiDoomCtrlsDestroy(window, sgTextIDs); + + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + UiClearCursor(); +} + + +//**************************************************************************** +//**************************************************************************** +static void MainMenuResetAttractTimer(HWND window) { + // Crashes so we pulled this. + //SDlgSetTimer(window, ATTRACT_TIMER_ID, sgAttractTimeout * MILLISEC_PER_SEC, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void MainMenuInit(HWND window, UINT attracttimeout) { + TPBMP tpBmp; + HWND child; + + // init a bmp for the window + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + UiIsSpawned() ? TEXT("ui_art\\swmmenu.pcx") : TEXT("ui_art\\mainmenu.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + // set the reg string + child = GetDlgItem(window, IDC_REGISTRATION); + SetWindowText(child, sgRegistration); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_SMALLGRAY); +#if ALLOW_SINGLE + UiDoomButtonsInit(window, sgBtnIDs, AF_HUGE); +#else + UiDoomButtonsInit(window, sgBtnIDs, AF_HUGE); + UiDoomButtonsInit(window, sgGrayBtnIDs, AF_HUGEGRAY); + EnableWindow(GetDlgItem(window, IDC_SINGLEPLAYER_BTN), FALSE); +#endif + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus42.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + MainMenuResetAttractTimer(window); + + UiActiveDownBtns(window, sgBtnIDs); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL HasMultiplayerMemory(void) { + MEMORYSTATUS memstat; + + memstat.dwLength = sizeof(MEMORYSTATUS); + GlobalMemoryStatus(&memstat); + return(memstat.dwTotalPhys > MIN_MEMORY_REQ); +} + + +//**************************************************************************** +//**************************************************************************** +static void MainMenuAbort(HWND window, int ReturnVal, BOOL playsnd) { + //Crashes so we pulled this. + //SDlgKillTimer(window, ATTRACT_TIMER_ID); + + if (UiIsSpawned()) { + if (ReturnVal == MAINMENU_REPLAY_INTRO) { + SpawnErrDialog(window, IDS_SPAWNINTRO_ERR, TRUE); + MainMenuResetAttractTimer(window); + return; + } + } + + // if user selected multiplayer confirm memory requirements + if (ReturnVal == MAINMENU_MULTIPLAYER) { + if (! HasMultiplayerMemory()) { + SpawnErrDialog(window, IDS_MEMORY_ERR, TRUE); + MainMenuResetAttractTimer(window); + return; + } + } + + UiFadeAbort(window); + if (playsnd) + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + SDlgKillTimer(window, LOGO_TIMER_ID); + + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void MainMenuBtnAction(HWND window, int id) { + switch (id) { + case IDC_SINGLEPLAYER_BTN: + MainMenuAbort(window,MAINMENU_SINGLE_PLAYER, TRUE); + break; + case IDC_MULTIPLAYER_BTN: + MainMenuAbort(window,MAINMENU_MULTIPLAYER, TRUE); + break; + case IDC_REPLAYINTRO_BTN: + MainMenuAbort(window,MAINMENU_REPLAY_INTRO, TRUE); + break; + case IDC_SUPPORT_BTN: + MainMenuAbort(window,MAINMENU_SUPPORT, TRUE); + break; + case IDC_SHOWCREDITS_BTN: + MainMenuAbort(window,MAINMENU_SHOW_CREDITS, TRUE); + break; + case IDCANCEL: + MainMenuAbort(window,MAINMENU_EXIT_DIABLO, TRUE); + break; + case IDOK: { + // enter key was pressed + HWND FocusBtn = GetFocus(); + int BtnID = GetWindowLong(FocusBtn, GWL_ID); + SendMessage(window, WM_COMMAND, BtnID, NULL); + } + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK MainMenuDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + MainMenuResetAttractTimer(window); + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_CLICKED) { + MainMenuBtnAction(window, LOWORD(wparam)); + } + break; + + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONDOWN: + case WM_RBUTTONUP: + case WM_MOUSEMOVE: + MainMenuResetAttractTimer(window); + break; + + case WM_DESTROY: + MainMenuDestroy(window); + break; + + case WM_INITDIALOG: + MainMenuInit(window, lparam); + PostMessage(window, WM_USER+1000, 0, 0); + return 1; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + switch (wparam) { + case FOCUS_TIMER_ID: + FocusAnimate(window, GetFocus()); + break; + case LOGO_TIMER_ID: + TitleLogoAnimate(window); + break; + case ATTRACT_TIMER_ID: + if (! UiIsSpawned()) { + MainMenuAbort(window,MAINMENU_ATTRACT_MODE, FALSE); + } + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiMainMenuDialog(LPCTSTR registration, + DWORD * selection, + bool allowMultiplayer, + PLAYSND sndfcn, + UINT attracttimeoutseconds + ) { + DWORD result; + + sgAttractTimeout = attracttimeoutseconds; + + // init the play sound routine for diabloui + UiSndSetFcn(sndfcn); + + // init the custom non-windows font + ArtFontLoad(); + + sgRegistration[0] = 0; + if (registration) + strncpy(sgRegistration, registration, MAX_REG_LEN); + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox( + global_hinstance, + (allowMultiplayer) ? TEXT("MAINMENU_DIALOG2") : TEXT("MAINMENU_DIALOG"), + SDrawGetFrameWindow(), + MainMenuDialogProc + ); + + if (result == MAINMENU_EXIT_DIABLO) { + ArtFontDestroy(); + } + + // set the results + if (selection) + *selection = result; + + return 1; +} diff --git a/Uisrc/UI/MIKE.APS b/Uisrc/UI/MIKE.APS new file mode 100644 index 0000000..080b630 Binary files /dev/null and b/Uisrc/UI/MIKE.APS differ diff --git a/Uisrc/UI/MIKE.H b/Uisrc/UI/MIKE.H new file mode 100644 index 0000000..5f53084 --- /dev/null +++ b/Uisrc/UI/MIKE.H @@ -0,0 +1,86 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Mike.rc +// +#define ID_SCROLL_WINDOW 1000 +#define IDS_GAME_PUBLIC 1001 +#define IDC_AD 1001 +#define IDS_GAME_PRIVATE 1002 +#define IDS_DIFF_NORMAL 1003 +#define IDC_USERLIST 1003 +#define IDS_DIFF_NIGHTMARE 1004 +#define IDS_DIFF_HELL 1005 +#define IDC_CHATWINDOW 1005 +#define IDS_PUBLIC_DESC 1006 +#define IDC_CHATEDIT 1006 +#define IDS_PRIVATE_DESC 1007 +#define ID_CHATJOIN 1007 +#define ID_CHATCREATE 1008 +#define IDS_NAME_REQUIRED 1008 +#define ID_SENDMSG 1009 +#define IDS_PASSWORD_REQUIRED 1009 +#define IDC_EDIT_NAME 1010 +#define IDS_CHAT_HELP 1010 +#define IDC_EDIT_PASSWORD 1011 +#define IDS_GAME_DESC_INCLNAME 1011 +#define IDC_TYPE_PUBLIC 1012 +#define IDS_GAME_DESC 1012 +#define IDC_TYPE_PRIVATE 1013 +#define IDS_NO_ALLOW_SPAWN 1013 +#define IDC_DIF_NORMAL 1014 +#define IDS_DIFF_NORMAL_SHORT 1014 +#define IDC_DIF_NIGHTMARE 1015 +#define IDS_DIFF_NIGHTMARE_SHORT 1015 +#define IDC_DIF_HELL 1016 +#define IDS_DIFF_HELL_SHORT 1016 +#define IDS_NO_ALLOW_SPAWN_SHORT 1017 +#define IDC_COMBO1 1020 +#define IDC_CHAT_CHANNEL 1020 +#define IDC_EDIT1 1022 +#define IDS_NORMAL_DESC 1023 +#define IDS_NIGHTMARE_DESC 1024 +#define IDS_HELL_DESC 1025 +#define IDS_OPEN_DESC 1026 +#define IDC_LIST1 1027 +#define IDS_RESTRICTED_DESC 1027 +#define IDS_GAME_NAME_INVALID 1028 +#define IDC_STATIC_DESC 1029 +#define IDC_STATIC_GAMETYPE_DESC 1029 +#define IDS_NORMAL_DESC_XLONG 1029 +#define IDC_TITLE 1030 +#define IDS_NIGHTMARE_DESC_XLONG 1030 +#define IDC_GAMEDESCRIPTION 1031 +#define IDS_HELL_DESC_XLONG 1031 +#define IDC_RADIO_NORMAL 1032 +#define IDS_LEVEL_AUTHORIZATION 1032 +#define IDC_RADIO_NIGHTMARE 1033 +#define IDS_GAMECREATOR_FMT 1033 +#define IDS_GAMECREATOR 1033 +#define IDS_CREATOR 1033 +#define IDC_RADIO_HELL 1034 +#define IDS_AM 1034 +#define IDS_PM 1035 +#define IDS_CREATIONTIME_FMT 1036 +#define IDS_TIME 1037 +#define IDS_CREATOR_FMT 1038 +#define IDS_GAMEALREADYEXISTS 1039 +#define IDC_STATIC_DIFF_DESC 1040 +#define IDS_CREATEGAMEERROR 1040 +#define IDS_NIGHTMARE_MINREQ 1041 +#define IDC_CHECK1 1042 +#define IDS_HELL_MINREQ 1042 +#define IDS_AUTH_STRTOOLONG 1043 +#define IDS_AUTH_BADHERODESC 1044 +#define IDS_AUTH_CHANNELRESTRICTED 1045 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 128 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1048 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Uisrc/UI/MIKE.RC b/Uisrc/UI/MIKE.RC new file mode 100644 index 0000000..4c6146d --- /dev/null +++ b/Uisrc/UI/MIKE.RC @@ -0,0 +1,221 @@ +//Microsoft Developer Studio generated resource script. +// +#include "mike.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + "DIALOG_CREATE_GAME", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 244 + TOPMARGIN, 10 + BOTTOMMARGIN, 139 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "mike.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +DIALOG_CREATE_GAME DIALOGEX 0, 61, 256, 146 +STYLE WS_POPUP | WS_VISIBLE +FONT 13, "Times New Roman", 700, 0, 0x1 +BEGIN + EDITTEXT IDC_EDIT_NAME,168,50,76,12,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_PASSWORD,168,69,76,12,ES_AUTOHSCROLL + PUSHBUTTON "Normal",IDC_RADIO_NORMAL,46,22,34,29,BS_BOTTOM | + BS_NOTIFY | WS_GROUP | NOT WS_TABSTOP + PUSHBUTTON "Nightmare",IDC_RADIO_NIGHTMARE,25,54,34,29,BS_BOTTOM | + BS_NOTIFY | NOT WS_TABSTOP + PUSHBUTTON "Hell",IDC_RADIO_HELL,67,54,34,29,BS_BOTTOM | BS_NOTIFY | + NOT WS_TABSTOP + DEFPUSHBUTTON "OK",IDOK,181,128,34,15,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,219,128,34,15,WS_GROUP + LTEXT "",IDC_STATIC_DIFF_DESC,10,88,104,50 + CTEXT "Create Game",IDC_TITLE,130,10,114,9,0,WS_EX_TRANSPARENT + RTEXT "Name:",IDC_STATIC,130,50,36,12,0,WS_EX_TRANSPARENT + RTEXT "Password:",IDC_STATIC,130,69,36,12,0,WS_EX_TRANSPARENT + CTEXT "Difficulty",IDC_STATIC,10,10,104,9,0,WS_EX_TRANSPARENT + LTEXT "To make the game private, enter a password below.", + IDC_STATIC,130,23,114,18,0,WS_EX_TRANSPARENT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +DIABLO_LINKCURSOR CURSOR DISCARDABLE "link.cur" +DIABLO_ARROWCURSOR CURSOR DISCARDABLE "arrow.cur" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1997,3,21,1 + PRODUCTVERSION 1,1,0,2 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Blizzard Entertainment\0" + VALUE "FileDescription", "DiabloUI\0" + VALUE "FileVersion", "1997, 3, 21, 1\0" + VALUE "InternalName", "DiabloUI\0" + VALUE "LegalCopyright", "Copyright © 1997\0" + VALUE "OriginalFilename", "DiabloUI.dll\0" + VALUE "ProductName", "Blizzard Entertainment DiabloUI\0" + VALUE "ProductVersion", "1, 1, 0, 2\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_GAME_PUBLIC "Public" + IDS_GAME_PRIVATE "Private - Requires password" + IDS_DIFF_NORMAL "Normal Difficulty" + IDS_DIFF_NIGHTMARE "Nightmare Difficulty" + IDS_DIFF_HELL "Hell Difficulty" + IDS_PUBLIC_DESC "This game will appear in the master list of games. A password will not be required to play." + IDS_PRIVATE_DESC "This game will not appear in the master list of games. A password is required." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NAME_REQUIRED "You must enter a name for the game." + IDS_PASSWORD_REQUIRED "A password is required for all private games." + IDS_GAME_DESC_INCLNAME "%s: %s" + IDS_GAME_DESC "%s" + IDS_DIFF_NORMAL_SHORT "Norm." + IDS_DIFF_NIGHTMARE_SHORT "Ntmare." + IDS_DIFF_HELL_SHORT "Hell" + IDS_NORMAL_DESC "Normal Difficulty\nThis is where a starting character should begin the quest to defeat Diablo." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NIGHTMARE_DESC "Nightmare Difficulty\nThis is recommended for experienced characters only." + IDS_HELL_DESC "Hell Difficulty\nOnly the most experienced characters should venture in this realm." + IDS_OPEN_DESC "Open to players with spawned versions of Diablo." + IDS_RESTRICTED_DESC "Only players with the full retail version of Diablo may join this game." + IDS_GAME_NAME_INVALID "Invalid name. A valid name must not contain reserved words or reserved characters." + IDS_NORMAL_DESC_XLONG "Normal Difficulty\nThis is where a starting character should begin the quest to defeat Diablo." + IDS_NIGHTMARE_DESC_XLONG + "Nightmare Difficulty\nThe denizens of the Labyrinth have been bolstered and will prove to be a greater challenge. This is recommended for experienced characters only." + IDS_HELL_DESC_XLONG "Hell Difficulty\nThe most powerful of the underworld's creatures lurk at the gateway into Hell. Only the most experienced characters should venture in this realm." + IDS_LEVEL_AUTHORIZATION "(L" + IDS_CREATOR "Creator: " + IDS_AM "am" + IDS_PM "pm" + IDS_CREATIONTIME_FMT "%s: %d:%02d%s" + IDS_TIME "Time" + IDS_GAMEALREADYEXISTS "There is already a game running using the name: %s." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_CREATEGAMEERROR "Unable to create game." + IDS_NIGHTMARE_MINREQ "Your character must reach level 20 before you can enter a multiplayer game of Nightmare difficulty." + IDS_HELL_MINREQ "Your character must reach level 30 before you can enter a multiplayer game of Hell Difficulty." + IDS_AUTH_STRTOOLONG "Error: Unable to authorize. String too long." + IDS_AUTH_BADHERODESC "Error: Unable to authorize. Unrecognized character information." + IDS_AUTH_CHANNELRESTRICTED + """%s"" is a restricted channel, and you are not authorized to enter." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Uisrc/UI/MODEM.CPP b/Uisrc/UI/MODEM.CPP new file mode 100644 index 0000000..2fc511b --- /dev/null +++ b/Uisrc/UI/MODEM.CPP @@ -0,0 +1,621 @@ +//**************************************************************************** +// Modem.cpp +// Diablo UI create/join modem multiplayer game +// +// By Frank Pearce +// created 11.18.96 +//**************************************************************************** + + +#include "pch.h" +#include +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + extern int ModmStatDialog(HWND parent); + + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + + extern BOOL UiDoomCreateGame ( + SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid, + BOOL loadfocus, + LPCSTR gamename + ); + extern BOOL CALLBACK EnterDialDialogProc( + HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam + ); + extern BOOL CALLBACK SelDialDialogProc( + HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam + ); + extern BOOL CALLBACK SelCre8JoinDialogProc( + HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam + ); + extern void SelDialSaveBookEntries(LPCSTR dialstring); + + + +//**************************************************************************** +//**************************************************************************** + #define PROVIDERID 'MODM' + + #define MILLISEC_PER_SEC 1000 + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 + + // messages to post to invoke child dialogs + enum _modemstates { + WM_STATE_SELDIALANSWER = (WM_USER+2000), + WM_STATE_ENTERDIAL, + WM_STATE_SELCRE8JOIN + }; + + +//**************************************************************************** +//**************************************************************************** + #define GAMENAME_LEN SNETSPI_MAXSTRINGLENGTH + #define DESCRIPTION_LEN SNETSPI_MAXSTRINGLENGTH + + typedef struct _modemgame TMGAME; + typedef TMGAME *TPMGAME; + struct _modemgame { + DWORD gameid; + TCHAR gamename[GAMENAME_LEN]; + TCHAR gamedesc[DESCRIPTION_LEN]; + }; + static TMGAME sgMGame; + static BOOL sgConnected; + static int sgGameCount; + static int sgLastJoined; + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgDescTitle[] = { + IDC_DLGTITLE2, + 0 + }; + static int sgModemDescID[] = { + IDC_MODEMDESC, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** + // storm related data + static SNETPROGRAMDATAPTR sgMdmProgramData; + static SNETPLAYERDATAPTR sgMdmPlayerData; + static SNETUIDATAPTR sgMdmInterfaceData; + static SNETVERSIONDATAPTR sgMdmVersionData; + static DWORD *sgpMdmPlayerID; + + +//**************************************************************************** +//**************************************************************************** +BOOL ModemConnected(void) { + return sgConnected; +} + + +//**************************************************************************** +//**************************************************************************** +void ModemSetInfo(HWND window, LPCSTR infotitle, LPCSTR text) { + HWND child = GetDlgItem(window, IDC_MODEMDESC); + if (! child) return; + TPBMP tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + UiSetBmpText(tpBmp, text); + UiDoomStaticReset(window, sgModemDescID, AF_SMALLGRAY); + + child = GetDlgItem(window, IDC_DLGTITLE2); + if (! child) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + UiSetBmpText(tpBmp, infotitle); + UiDoomStaticReset(window, sgDescTitle, AF_MEDGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK ModemGameEnum(DWORD gameid, + LPCSTR gamename, + LPCSTR gamedesc) { + sgMGame.gameid = gameid; + strcpy(sgMGame.gamename, gamename); + strcpy(sgMGame.gamedesc, gamedesc); + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL ModemEnum(void) { + // clear old info + sgMGame.gameid = 0; + sgMGame.gamename[0] = 0; + sgMGame.gamedesc[0] = 0; + + if (SNetEnumGames(0, 0, ModemGameEnum, NULL)) { //### MM Diablo Patch #2 3/21/97 + if (! sgMGame.gameid) + return FALSE; + return TRUE; + } + else { + return FALSE; + } +} + + +//**************************************************************************** +//**************************************************************************** +LPCSTR ModemGameName(void) { + return sgMGame.gamename; +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemUpdateGame(HWND window) { + // clear old info + sgMGame.gameid = 0; + sgMGame.gamename[0] = 0; + sgMGame.gamedesc[0] = 0; + + // enum will fill in info if a game exists + if (! SNetEnumGames(0, 0, ModemGameEnum, NULL)) { //### MM Diablo Patch #2 3/21/97 + switch (GetLastError()) { + case SNET_ERROR_NO_NETWORK: + sgConnected = FALSE; + sgGameCount = sgLastJoined = 1; + break; + default: + break; + } + } + else { + sgConnected = TRUE; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemDestroy(HWND window) { + UiDoomCtrlsDestroy(window, sgModemDescID); + UiDoomCtrlsDestroy(window, sgDescTitle); + UiDoomCtrlsDestroy(window, sgTextIDs); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + TitleLogoDestroy(); +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemAbort(HWND window, int ReturnVal) { + UiFadeAbort(window); + SDlgKillTimer(window, LOGO_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemInit(HWND window) { + TPBMP tpBmp; + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\selgame.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomStaticInit(window, sgDescTitle, AF_MEDGRAY); + UiDoomStaticInit(window, sgModemDescID, AF_SMALLGRAY); + + // try to enum modem games + ModemUpdateGame(window); + if (sgConnected) { + PostMessage(window, WM_STATE_SELCRE8JOIN, 0, 0); + } + else { + sgGameCount = sgLastJoined = 1; + PostMessage(window, WM_STATE_SELDIALANSWER, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemCreate(HWND window) { + char namefmt[32]; + char gamename[64]; + SNETUIDATA interfacedata; + SNETCREATEDATA createdata; + + // create new interface data + CopyMemory(&interfacedata,sgMdmInterfaceData,sizeof(SNETUIDATA)); + interfacedata.size = sizeof(SNETUIDATA); + interfacedata.parentwindow = window; + + ZeroMemory(&createdata,sizeof(SNETCREATEDATA)); + createdata.size = sizeof(SNETCREATEDATA); + createdata.providerid = PROVIDERID; + createdata.maxplayers = sgMdmProgramData->maxplayers; + createdata.createflags = 0; + + LoadString(global_hinstance, IDS_MODEMGAMENAME_FMT, namefmt, 31); + wsprintf(gamename, namefmt, sgGameCount); + + if (UiDoomCreateGame( + &createdata, + sgMdmProgramData, + sgMdmPlayerData, + &interfacedata, + sgMdmVersionData, + sgpMdmPlayerID, + TRUE, + gamename + ) + ) { + sgGameCount++; + ModemAbort(window, IDOK); + } + else { + if (! sgConnected) { + PostMessage(window, WM_STATE_SELDIALANSWER, 0, 0); + return; + } + if (GetLastError() == SNET_ERROR_ALREADY_EXISTS) { + sgGameCount++; + } + PostMessage(window, WM_STATE_SELCRE8JOIN, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL sgSNetJoinDone; +static BOOL sgJoinResult; +static int sgSNetJoinErr; +static void __cdecl ModemJoinThread(void *dialstring) { + sgSNetJoinDone = FALSE; + sgJoinResult = SNetJoinGame( + 0, + (sgConnected ? sgMGame.gamename: (LPCSTR)dialstring), + NULL, + sgMdmPlayerData->playername, + sgMdmPlayerData->playerdescription, + sgpMdmPlayerID + ); + if (! sgJoinResult) + sgSNetJoinErr = GetLastError(); + sgSNetJoinDone = TRUE; + _endthread(); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL ModemJoinDone(void) { + return sgSNetJoinDone; +} + + +//**************************************************************************** +//**************************************************************************** +int ModemLastJoinedNumber(void) { + return sgLastJoined; +} + + +//**************************************************************************** +//**************************************************************************** +int ModemGameNumber(LPCSTR gamename) { + + BYTE * szName = (BYTE *)gamename; + + // locate the game number in the string + while ((*szName) && ((*szName < '0') || (*szName > '9'))) { + szName++; + } + + if (*szName) { + return atoi((LPSTR)szName); + } + return 0; +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemJoin(HWND window, LPCSTR DialString) { + + sgSNetJoinDone = FALSE; + _beginthread(ModemJoinThread, 0, (void *)DialString); + + ModmStatDialog(window); + + if (sgJoinResult) { + // is this the first link up? + if (! sgConnected) { + SelDialSaveBookEntries(DialString); + ModemEnum(); + } + // update the local game number + sgGameCount = sgLastJoined = ModemGameNumber(sgMGame.gamename); + sgGameCount++; + + ModemAbort(window, IDOK); + } + else { + TCHAR err[128]; + + switch (sgSNetJoinErr) { + case SNET_ERROR_VERSION_MISMATCH: + LoadString(global_hinstance, IDS_VERSION_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; + case SNET_ERROR_CANCELLED: + // just bring up previous menu + break; + case SNET_ERROR_NOT_CONNECTED: + // no answer + LoadString(global_hinstance, IDS_NOANSWER_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; + case SNET_ERROR_NO_NETWORK: + // no dial tone + LoadString(global_hinstance, IDS_NOTONE_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; +// fgp.patch1.start.1/17/96 +// case SNET_ERROR_HOST_UNREACHABLE: + case SNET_ERROR_NETWORK_BUSY: +// fgp.patch1.end.1/17/96 + // busy signal + LoadString(global_hinstance, IDS_BUSY_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; + case SNET_ERROR_BAD_PROVIDER: + // unable to establish a connection to the modem + LoadString(global_hinstance, IDS_MODEMOFF_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; + default: + LoadString(global_hinstance, IDS_MODEMJOIN_ERR, err, 127); + SelOkDialog(window, err, NULL, TRUE); + break; + } + + if (sgConnected) { + PostMessage(window, WM_STATE_SELCRE8JOIN, 0, 0); + } + else { + PostMessage(window, WM_STATE_SELDIALANSWER, 0, 0); + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemSelDialAnswer(HWND window) { + TCHAR dialstring[MAX_DIAL_LEN]; + int result; + + // bring up the enter name screen + result = SDlgDialogBoxParam( + global_hinstance, + TEXT("SELDIAL_DIALOG"), + window, + SelDialDialogProc, + (LPARAM) dialstring + ); + + switch (result) { + case MODE_DIALNEW: + PostMessage(window, WM_STATE_ENTERDIAL, 0, 0); + break; + case MODE_DIALOLD: + ModemJoin(window, dialstring); + break; + case MODE_ANSWER: + ModemCreate(window); + break; + default: + ModemAbort(window, IDCANCEL); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemEnterDial(HWND window) { + TCHAR dialstring[MAX_DIAL_LEN]; + int result; + + // bring up the enter name screen + result = SDlgDialogBoxParam( + global_hinstance, + TEXT("ENTERDIAL_DIALOG"), + window, + EnterDialDialogProc, + (LPARAM) &dialstring + ); + + if (result == IDOK) { + ModemJoin(window, dialstring); + } + else { + PostMessage(window, WM_STATE_SELDIALANSWER, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ModemSelCre8Join(HWND window) { + int result; + + // bring up the enter name screen + result = SDlgDialogBox( + global_hinstance, + TEXT("SELCRE8JOIN_DIALOG"), + window, + SelDialDialogProc + ); + + switch (result) { + case MODE_DIALNEW: + ModemJoin(window, sgMGame.gamename); + break; + case MODE_ANSWER: + ModemCreate(window); + break; + case SNET_ERROR_NO_NETWORK: + sgConnected = FALSE; + PostMessage(window, WM_STATE_SELDIALANSWER, 0, 0); + break; + default: + ModemAbort(window, IDCANCEL); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK ModemDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + ModemDestroy(window); + break; + + case WM_INITDIALOG: + ModemInit(window); + PostMessage(window, WM_USER+1000, 0, 0); + return 0; + + case WM_STATE_SELDIALANSWER: + ModemSelDialAnswer(window); + return 0; + + case WM_STATE_ENTERDIAL: + ModemEnterDial(window); + return 0; + + case WM_STATE_SELCRE8JOIN: + ModemSelCre8Join(window); + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + TitleLogoAnimate(window); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiModemGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid) { + int result = 0; + + // save parameters for use throughout this file + sgMdmProgramData = programdata; + sgMdmPlayerData = playerdata; + sgMdmInterfaceData = interfacedata; + sgMdmVersionData = versiondata; + sgpMdmPlayerID = playerid; + + // make sure fonts are loaded + ArtFontLoad(); + + // DISPLAY THE DIALOG BOX + result = SDlgDialogBox(global_hinstance, + TEXT("MODEM_DIALOG"), + interfacedata->parentwindow, + ModemDialogProc); + + ArtFontDestroy(); + + if (result == IDOK) + return TRUE; + return FALSE; +} diff --git a/Uisrc/UI/MODMSTAT.CPP b/Uisrc/UI/MODMSTAT.CPP new file mode 100644 index 0000000..d35d12c --- /dev/null +++ b/Uisrc/UI/MODMSTAT.CPP @@ -0,0 +1,209 @@ +//**************************************************************************** +// ModmStat.cpp +// Diablo UI modem status thread/dialog +// +// By Frank Pearce +// created 12.1.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + + extern BOOL ModemJoinDone(void); + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_OKCANCEL_TEXT, + 0 + }; + static int sgBtnIDs[] = { + IDCANCEL, + 0 + }; + +//**************************************************************************** +//**************************************************************************** + static TCHAR sgStatStr[SNETSPI_MAXSTRINGLENGTH]; + static BOOL sgStatChanged; + static BOOL sgAbortable; + static SNETABORTPROC sgpAbortFcn; + + +//**************************************************************************** +//**************************************************************************** +static void ModmStatDestroy(HWND window) { + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); +} + + +//**************************************************************************** +//**************************************************************************** +static void ModmStatInit(HWND window) { + TPBMP tpBmp; + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT("Popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\black.pcx"), + &tpBmp->data, + &tpBmp->datasize + ); + } + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_MEDGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + UiActiveDownBtns(window, sgBtnIDs); + + // init the globals + sgStatStr[0] = 0; + sgStatChanged = FALSE; + sgpAbortFcn = (SNETABORTPROC) NULL; + + // don't allow cancel right away + HWND child = GetDlgItem(window, IDCANCEL); + ShowWindow(child, FALSE); + sgAbortable = FALSE; +} + + +//**************************************************************************** +//**************************************************************************** +static void ModmStatAbort(HWND window, BOOL callabortfcn) { + if (! sgAbortable) return; + + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + if (callabortfcn && sgpAbortFcn) + sgpAbortFcn(); + + SDlgEndDialog(window, 0); +} + + +//**************************************************************************** +//**************************************************************************** +static void ModmStatUpdateStatus(HWND window) { + sgStatChanged = FALSE; + + if (! sgpAbortFcn) return; + + HWND child = GetDlgItem(window, IDC_OKCANCEL_TEXT); + if (! child) return; + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), sgStatStr); + UiDoomStaticReset(window, sgTextIDs, AF_MEDGRAY); + + child = GetDlgItem(window, IDCANCEL); + ShowWindow(child, TRUE); + sgAbortable = TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK ModmStatDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + } + else if (LOWORD(wparam) == IDOK) { + ModmStatAbort(window, TRUE); + } + else if (LOWORD(wparam) == IDCANCEL) { + ModmStatAbort(window, TRUE); + } + break; + + case WM_DESTROY: + ModmStatDestroy(window); + break; + + case WM_INITDIALOG: + ModmStatInit(window); + return 0; + + case WM_TIMER: + if (sgStatChanged) { + ModmStatUpdateStatus(window); + } + if (ModemJoinDone()) { + sgAbortable = TRUE; + ModmStatAbort(window, FALSE); + } + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK ModmStatStatusCallback(LPCSTR statstr, + DWORD completed, + DWORD remaining, + DWORD flags, + SNETABORTPROC abortfcn) { + strcpy(sgStatStr, statstr); + sgStatChanged = TRUE; + sgpAbortFcn = abortfcn; + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +int ModmStatDialog(HWND parent) { + return SDlgDialogBox( + global_hinstance, + TEXT("MODMSTAT_DIALOG"), + parent, + ModmStatDialogProc + ); +} diff --git a/Uisrc/UI/MONO.CPP b/Uisrc/UI/MONO.CPP new file mode 100644 index 0000000..2c87e35 --- /dev/null +++ b/Uisrc/UI/MONO.CPP @@ -0,0 +1,95 @@ +#ifdef _DEBUG +#include "mono.h" + + +// Allocate space for the MonoDriver data. +// and Call the constructor for one MonoDevice data object. +MonoDevice::DeviceData MonoDevice::MDA; + +MonoDevice::DeviceData::DeviceData() : + fhDevice (CreateFile("\\\\.\\DARKMONO.VXD", 0, 0, NULL, NULL, + FILE_FLAG_DELETE_ON_CLOSE, NULL)), + fEnabled((fhDevice != INVALID_HANDLE_VALUE)), + fNextRow(0), + fNextCol(0) +{ + ClearScreen(); +} + +MonoDevice::DeviceData::~DeviceData() +{ + if( Status() ) + { + CloseHandle(fhDevice); + fEnabled = false; + fhDevice = INVALID_HANDLE_VALUE; + fNextRow = 0; + fNextCol = 0; + } +} + +int MonoDevice::PutString( int row, int col, char const * string ) +{ + int Result = 0; + if( Status() && row < HEIGHT && col < WIDTH) + { + short buff[3 + 41]; // allow WIDTH character string + int len = strlen( string ); + Result = len; + int bufferLen = 0; + + for (;len > 0; len -= WIDTH, ++row, col=0, string += bufferLen ) + { + bufferLen = ((len + col) > WIDTH)? WIDTH - (len + col) : len; + if (row >= HEIGHT) + row = 0; + buff[0] = static_cast(row); + buff[1] = static_cast(col); + buff[2] = static_cast(bufferLen); + if( buff[2] > (WIDTH - col) ) + { + buff[2] = (WIDTH - col); + strncpy( reinterpret_cast(buff + 3), string, buff[2] ); + } + else + strcpy( reinterpret_cast(buff + 3), string ); + + DeviceIoControl(MDA.fhDevice, PUT_STRING, + &(buff[0]), sizeof( buff ), NULL, 0, NULL, NULL); + } + + } + return Result; +} + +void __cdecl MonoDevice::Printf( int row, int col, char const * const format, ... ) +{ + if( Status() ) + { + char strbuf [ 256 ]; + va_list argptr; + + va_start(argptr,format); + vsprintf(strbuf,format,argptr); + va_end(argptr); + + PutString( row, col, strbuf ); + } +} + +void __cdecl MonoDevice::Printf( char const * const format, ... ) +{ + if( Status() ) + { + char strbuf [ 256 ]; + va_list argptr; + + va_start(argptr,format); + vsprintf(strbuf,format,argptr); + va_end(argptr); + + PutString( strbuf ); + } +} + +#endif diff --git a/Uisrc/UI/MONO.H b/Uisrc/UI/MONO.H new file mode 100644 index 0000000..c4ccb4a --- /dev/null +++ b/Uisrc/UI/MONO.H @@ -0,0 +1,226 @@ + +/* ======================================================================== + Copyright (c) 1990,1997 Synergistic Software + All Rights Reserved + Author: + ======================================================================== */ + + +#ifdef _DEBUG +#ifndef _MONO_H_ +#define _MONO_H_ + +#define WIN32_LEAN_AND_MEAN +#include +#include +#include + +//#ifdef __BORLANDC__ +//#pragma option -a4 +//#endif +//#ifdef _MSC_VER +//#pragma pack(push,4) +//#endif + +// Define __cdecl for non Microsoft compilers. +#if (!defined(_MSC_VER) && !defined(__cdecl) ) +#define __cdecl +#endif + +// This class is to help put text strings out to a monochrome monitor under +// Windows95. +// It requires the DARKMONO.VXD driver to be installed to work. +// It does do line wrapping. +// There is no stored buffer of the text, so no scrolling. + +class MonoDevice +{ +private: + // Helper class to do auto initialization and to keep from opening the + // driver more than once. + class DeviceData { + private: + friend class MonoDevice; + explicit DeviceData(); + inline bool Status() const; + + + HANDLE fhDevice; + bool fEnabled; + int fNextRow; + int fNextCol; + + protected: + public: + ~DeviceData(); + }; + + enum MonoDimisions + { + WIDTH = 80, + HEIGHT = 24 + }; + + enum MonoFunctions + { + VERSION = 1, + CURSOR_ON = 2, + CURSOR_OFF = 3, + SET_ATTRIBUTE = 4, + CLEAR_SCREEN = 5, + PUT_CHAR = 6, + PUT_STRING = 7 + }; + + // Can't create or distroy one of these. + MonoDevice(); + ~MonoDevice(); + + // Can only have one Monochrome display. + static DeviceData MDA; +public: + typedef enum Attrib + { + ERASE =0x00,NORM =0x07, NORM_BLNK =0x87, + INVRS =0x70,UNDRLN =0x01, UNDRLN_BLNK =0x81, + INVRS_BLNK=0xF0,HI =0x0F, HI_BLNK =0x8F, + HI_UNDRLN=0x09, HI_UNDRLN_BLNK=0x89 + }; + + + static inline bool Status() { return MDA.Status(); } + static inline bool IsEnabled(); + static inline void Enable(); + static inline void Disable(); + static inline void SetAttribute( Attrib attribute ); + static inline void CursorOn(); + static inline void CursorOff(); + static inline void ClearScreen( char fill = ERASE); + static inline bool PutChar( int row, int col, char value ); + static inline bool PutChar( char value ); + static int PutString( int row, int col, char const * const string ); + static inline int PutString( char const * const string ); + static void __cdecl Printf( int row, int col, char const * const format, ... ); + static void __cdecl Printf(char const * const format, ... ); +}; + +inline bool MonoDevice::DeviceData::Status() const +{ + return fhDevice != INVALID_HANDLE_VALUE && fEnabled; +} + +inline bool MonoDevice::IsEnabled() +{ + return MDA.fEnabled; +} + +inline void MonoDevice::Enable() +{ + MDA.fEnabled = true; +} + +inline void MonoDevice::Disable() +{ + MDA.fEnabled = false; +} + +inline void MonoDevice::SetAttribute( Attrib attribute ) +{ + if( Status() ) + { + unsigned char attr = static_cast(attribute); + DeviceIoControl(MDA.fhDevice, SET_ATTRIBUTE, + &attr, sizeof( attr ), + NULL, 0, NULL, NULL); + } +} + +inline void MonoDevice::CursorOn() +{ + if( Status() ) + DeviceIoControl(MDA.fhDevice, CURSOR_ON, + NULL, 0, NULL, 0, NULL, NULL); +} + +inline void MonoDevice::CursorOff() +{ + if( Status() ) + DeviceIoControl(MDA.fhDevice, CURSOR_OFF, + NULL, 0, NULL, 0, NULL, NULL); +} + +inline void MonoDevice::ClearScreen( char fill ) +{ + if( Status() ) + { + DeviceIoControl(MDA.fhDevice, CLEAR_SCREEN, + &fill, sizeof( fill ), NULL, 0, NULL, NULL); + MDA.fNextRow = 0; + MDA.fNextCol = 0; + } +} + +inline bool MonoDevice::PutChar( int row, int col, char value ) +{ + bool Result = false; + + if( Status() && row < HEIGHT && col < WIDTH) + { + short buff[3]; + buff[0] = static_cast(row); + buff[1] = static_cast(col); + buff[2] = value; // high byte doesn't matter + DeviceIoControl(MDA.fhDevice, PUT_CHAR, + &(buff[0]), sizeof( buff ), NULL, 0, NULL, NULL); + Result = true; + } + return Result; +} + +inline bool MonoDevice::PutChar( char value ) +{ + bool const Result = PutChar (MDA.fNextCol, MDA.fNextRow, value); + if (Result) + { + ++MDA.fNextCol; + if (MDA.fNextCol > WIDTH) + { + MDA.fNextCol = 0; + ++MDA.fNextRow; + if (MDA.fNextRow > HEIGHT) + { + MDA.fNextRow = 0; + } + } + } + return Result; +} + +inline int MonoDevice::PutString( char const * const string ) +{ + int const Result = PutString(MDA.fNextRow, MDA.fNextCol, string); + MDA.fNextCol += Result % WIDTH; + if (MDA.fNextCol > WIDTH) + { + MDA.fNextCol %= WIDTH; + ++MDA.fNextRow; + } + MDA.fNextRow += Result / WIDTH; + if (MDA.fNextRow > HEIGHT) + { + MDA.fNextRow %= HEIGHT; + } + return Result; +} + + +//#ifdef __BORLANDC__ +//#pragma option -a. +//#endif +//#ifdef _MSC_VER +//#pragma pack(pop) +//#endif + +#endif +#endif + \ No newline at end of file diff --git a/Uisrc/UI/OKCANCEL.CPP b/Uisrc/UI/OKCANCEL.CPP new file mode 100644 index 0000000..85e1a54 --- /dev/null +++ b/Uisrc/UI/OKCANCEL.CPP @@ -0,0 +1,377 @@ +//**************************************************************************** +// OkCancel.cpp +// Diablo UI ok/cancel dialog +// +// By Frank Pearce +// created 9.23.96 +//**************************************************************************** + +#include "pch.h" + +#include "uisnd.h" +//**************************************************************************** +//**************************************************************************** +#define TEXT_NO_FIT 0xff000000l // indicates that dialog was too small to accomodate text + + enum _sizes { + SIZE_NORMAL, + SIZE_BIG, + NUM_SIZES + }; + + typedef struct _dlg_desc { + char szTemplate[32]; + } DLG_DESC; + + static LPBYTE sgBgBmp = NULL; + static LPBYTE sgBtnBmp = NULL; + static LPCSTR sgTitle; + static int sgSize; + static BOOL sgErrorFlag; + static BOOL sgTestSize = FALSE; + + +//**************************************************************************** +//**************************************************************************** +static void OkCancelDestroy(HWND window) { + if (sgBgBmp) { + FREE(sgBgBmp); + sgBgBmp = NULL; + } + if (sgBtnBmp) { + FREE(sgBtnBmp); + sgBtnBmp = NULL; + } +} + + + +//**************************************************************************** +//**************************************************************************** +BOOL IsTextTooLarge(HWND hWnd, LPCSTR szText) { + HDC hDC; + RECT r, rSave; + + + // If there is no text, size is ok + if (!szText || !szText[0]) + return FALSE; + + if (!hWnd) return TRUE; + + GetClientRect(hWnd, &r); + r.right--; + r.bottom--; + rSave = r; + + hDC = GetDC(hWnd); + // Select the font for this window + HFONT hOldFont = (HFONT)SelectObject(hDC, (HFONT)SendMessage(hWnd, WM_GETFONT, 0, 0)); + if (hDC) { + DrawText(hDC, szText, strlen(szText), &r, DT_CALCRECT | DT_WORDBREAK); + + if (hOldFont) + SelectObject(hDC, hOldFont); + ReleaseDC(hWnd, hDC); + + + if (r.bottom > rSave.bottom || r.right > rSave.right) + return TRUE; + } + + return FALSE; +} +//**************************************************************************** +// OkCancelInit() +// +// if sgTestSize is set, this routine will verify whether the text fits +// in the allotted text controls. +// +// A return value of 0 indicates that the dialog is too small. +// A return value of 1 indicates success. +//**************************************************************************** +static BOOL OkCancelInit(HWND window, LPCSTR okcanceltext) { + SIZE btnsize; + int BtnIDs[] = { IDC_OK, IDCANCEL, 0 }; + LPCTSTR popupfile; + LPCTSTR spopup = TEXT("ui_art\\spopup.pcx"); + LPCTSTR lpopup = TEXT("ui_art\\lpopup.pcx"); + LPCTSTR srpopup = TEXT("ui_art\\srpopup.pcx"); + LPCTSTR lrpopup = TEXT("ui_art\\lrpopup.pcx"); + HWND child; + + if (sgSize == SIZE_NORMAL) { + if (sgErrorFlag) popupfile = srpopup; + else popupfile = spopup; + } + else { //(sgSize == SIZE_BIG) + if (sgErrorFlag) popupfile = lrpopup; + else popupfile = lpopup; + } + + if (SDrawGetFrameWindow() == GetParent(window)) { + PALETTEENTRY *pal; + + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + popupfile, + &sgBgBmp, + FALSE + ); + + // load just the part of the palette the dialog uses + pal = UiPaletteEntry(0); + SDrawUpdatePalette(0, 10, &pal[0]); // Windows colors also + SDrawUpdatePalette(0x70, 144, &pal[0x70], TRUE); + } + else { + LoadArtFile( + window, + GetParent(window), + TEXT("Popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + popupfile, + &sgBgBmp, + NULL + ); + } + + if (SDrawGetFrameWindow() == GetParent(window)) + UiAltFadeInit(window); + + UiLoadBmpFile( + TEXT("ui_art\\but_sml.pcx"), + &sgBtnBmp, + &btnsize + ); + UiSetButtonBitmaps(window, BtnIDs, sgBtnBmp, &btnsize); + + child = GetDlgItem(window, IDC_OKCANCEL_TEXT); + SetWindowText(child, okcanceltext); + + if (sgTestSize && IsTextTooLarge(child, okcanceltext)) + return 0; + + if (sgTitle != NULL) { + child = GetDlgItem(window, IDC_DLGTITLE); + + if (sgTestSize && IsTextTooLarge(child, sgTitle)) + return 0; + + if (child) + SetWindowText(child, sgTitle); + } + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void OkCancelAbort(HWND window, int retval) { + UiSndPlayEnter(); + SDlgEndDialog(window, retval); +} + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK OkCancelDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + ShowCursor(FALSE); + OkCancelDestroy(window); + if (SDrawGetFrameWindow() == GetParent(window)) + UiVidFadeOut(DEFAULT_STEPS*2); + break; + + case WM_INITDIALOG: + // Make sure cursor is visible + ShowCursor(TRUE); + if (!OkCancelInit(window, (LPCSTR)lparam)) + SDlgEndDialog(window, TEXT_NO_FIT); + return 1; + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDOK: + switch (GetWindowLong(GetFocus(), GWL_ID)) { + case IDC_OK: + OkCancelAbort(window, IDOK); + break; + default: + OkCancelAbort(window, IDCANCEL); + break; + } + break; + case IDC_OK: + OkCancelAbort(window, IDOK); + break; + case IDCANCEL: + OkCancelAbort(window, IDCANCEL); + break; + } + break; + + case WM_CTLCOLORSTATIC: + if (GetWindowLong((HWND)lparam, GWL_ID) == IDC_DLGTITLE) { + UiSetTextYellow((HDC)wparam); + return (BOOL) GetStockObject(NULL_BRUSH); + } + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + + +//**************************************************************************** +//**************************************************************************** +int UiOkCancelDialog(HWND parent, LPCSTR okcanceltext, BOOL errorflag) { + + sgSize = SIZE_NORMAL; + sgTitle = NULL; + sgErrorFlag = errorflag; + sgTestSize = FALSE; + + return SDlgDialogBoxParam( + global_hinstance, + TEXT("OKCANCEL_DIALOG"), + parent, + OkCancelDialogProc, + (LPARAM)okcanceltext + ); +} + + +//**************************************************************************** +//**************************************************************************** +int UiOkDialog(HWND parent, LPCSTR oktext, BOOL errorflag) { + + sgSize = SIZE_NORMAL; + sgTitle = NULL; + sgErrorFlag = errorflag; + sgTestSize = FALSE; + + return SDlgDialogBoxParam( + global_hinstance, + TEXT("OK_DIALOG"), + parent, + OkCancelDialogProc, + (LPARAM)oktext + ); +} + + +//**************************************************************************** +//**************************************************************************** +int UiBigOkCancelDialog(HWND parent, LPCSTR oktext, LPCSTR title, BOOL errorflag) { + + sgSize = SIZE_BIG; + sgTitle = title; + sgErrorFlag = errorflag; + sgTestSize = FALSE; + + return SDlgDialogBoxParam( + global_hinstance, + TEXT("BIGOKCANCEL_DIALOG"), + parent, + OkCancelDialogProc, + (LPARAM)oktext + ); +} + + +//**************************************************************************** +//**************************************************************************** +int UiBigOkDialog(HWND parent, LPCSTR oktext, LPCSTR title, BOOL errorflag) { + + sgSize = SIZE_BIG; + sgTitle = title; + sgErrorFlag = errorflag; + sgTestSize = FALSE; + + return SDlgDialogBoxParam( + global_hinstance, + TEXT("BIGOK_DIALOG"), + parent, + OkCancelDialogProc, + (LPARAM)oktext + ); +} + +//**************************************************************************** +//*** +//*** EXPORTED FUNCTIONS +//*** +//**************************************************************************** + +static DLG_DESC sgOkDlgs[NUM_SIZES] = { + { TEXT("OK_DIALOG") }, + { TEXT("BIGOK_DIALOG") }, +}; + +static DLG_DESC sgOkCancelDlgs[NUM_SIZES] = { + { TEXT("OKCANCEL_DIALOG") }, + { TEXT("BIGOKCANCEL_DIALOG") }, +}; + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK UiMessageBoxCallback(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType) { + DWORD dwReturn; + DLG_DESC *pDlgInfo; + + sgTitle = lpCaption; + + // choose between MB_OK and MB_OKCANCEL + if ((uType & MB_TYPEMASK) == MB_OK) + pDlgInfo = sgOkDlgs; + else + pDlgInfo = sgOkCancelDlgs; + + // Set dialog error flag + switch (uType & MB_ICONMASK) { + case MB_ICONWARNING: + case MB_ICONERROR: + sgErrorFlag = TRUE; + break; + + default: + sgErrorFlag = FALSE; + } + + + sgTestSize = TRUE; + for (sgSize=0; sgSize +#include +#include +#include "..\storm.h" +#include "diabloui.h" +#include "DiabEdit.h" +#include "local.h" +#include "Fade.h" +#include "Doom.h" +#include "Sbar.h" +#include "mike.h" +#include "frank.h" diff --git a/Uisrc/UI/POINTER.CUR b/Uisrc/UI/POINTER.CUR new file mode 100644 index 0000000..22b2dba Binary files /dev/null and b/Uisrc/UI/POINTER.CUR differ diff --git a/Uisrc/UI/PROGRESS.CPP b/Uisrc/UI/PROGRESS.CPP new file mode 100644 index 0000000..4f750d1 --- /dev/null +++ b/Uisrc/UI/PROGRESS.CPP @@ -0,0 +1,350 @@ +//**************************************************************************** +// Progress.cpp +// Diablo UI progress bar popup dialog +// +// By Frank Pearce +// created 9.26.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define PROGRESS_TIMER_ID 1 + #define MILLISEC_PER_SEC 1000 + #define CALLS_PER_SEC 20 + #define USER_DELAY (MILLISEC_PER_SEC / sgCallsPerSec) + #define DEFAULT_DELAY (MILLISEC_PER_SEC / CALLS_PER_SEC) + + #define FILL_X 0 + #define FILL_Y 0 + + static LPBYTE sgBgBmp = NULL; + static LPBYTE sgBtnBmp = NULL; + + // the progress bar background + static LPBYTE sgProgBgBmp = NULL; + static SIZE sgProgBgSize; + + // the fill image for the progress bar + static LPBYTE sgProgFillBmp = NULL; + static SIZE sgProgFillSize; + + // the current image based on percent complete + static LPBYTE sgProgBmp = NULL; + static SIZE sgProgSize; + + static BOOL sgAbortable; + static DWORD sgCallsPerSec; + static PROGRESSFCN sgProgressFcn; + static int sgnResult; + static BOOL sgbEndDialog; + + +//**************************************************************************** +//**************************************************************************** +static void ProgressDraw(HWND window, int percent) { + RECT rect; + HWND child = GetDlgItem(window, IDC_UIGENERIC_PROGRESS); + + // draw the bg + if (sgProgBgBmp) + SBltROP3( + sgProgBmp, + sgProgBgBmp, + sgProgSize.cx, + sgProgSize.cy, + sgProgSize.cx, + sgProgBgSize.cx, + NULL, + SRCCOPY + ); + + // draw the fill + if (sgProgFillBmp) + SBltROP3( + sgProgBmp + (FILL_Y * sgProgSize.cx) + FILL_X, + sgProgFillBmp, + ((sgProgSize.cx - (2 * FILL_X)) * percent) / 100, + sgProgSize.cy - (2 * FILL_Y), + sgProgSize.cx, + sgProgFillSize.cx, + NULL, + SRCCOPY + ); + + // invalidate the region + GetWindowRect(child, &rect); + ScreenToClient(window, (LPPOINT)&rect.left); + ScreenToClient(window, (LPPOINT)&rect.right); + InvalidateRect(window, &rect, FALSE); +} + + +//**************************************************************************** +//**************************************************************************** +static void ProgressDestroy(HWND window) { + if (sgBgBmp) { + FREE(sgBgBmp); + sgBgBmp = NULL; + } + if (sgBtnBmp) { + FREE(sgBtnBmp); + sgBtnBmp = NULL; + } + if (sgProgBgBmp) { + FREE(sgProgBgBmp); + sgProgBgBmp = NULL; + } + if (sgProgFillBmp) { + FREE(sgProgFillBmp); + sgProgFillBmp = NULL; + } + if (sgProgBmp) { + FREE(sgProgBmp); + sgProgBmp = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ProgressInit(HWND window, LPCSTR progresstext) { + PALETTEENTRY * pal; + HWND child; + RECT rect; + SIZE btnsize; + int BtnIDs[] = { IDCANCEL, 0 }; + + if (sgCallsPerSec) + SDlgSetTimer(window,PROGRESS_TIMER_ID,USER_DELAY,NULL); + else + SDlgSetTimer(window,PROGRESS_TIMER_ID,DEFAULT_DELAY,NULL); + + // load ctrl/dlg bmps + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\spopup.pcx"), + &sgBgBmp, + NULL, + FALSE + ); + + if (SDrawGetFrameWindow() == GetParent(window)) + UiAltFadeInit(window); + + + // load just the part of the palette the dialog uses + pal = UiPaletteEntry(0); + SDrawUpdatePalette(0, 10, &pal[0]); // Windows colors also + SDrawUpdatePalette(0x70, 144, &pal[0x70], TRUE); + + + UiLoadBmpFile( + TEXT("ui_art\\but_sml.pcx"), + &sgBtnBmp, + &btnsize + ); + if (sgBtnBmp) + UiSetButtonBitmaps(window, BtnIDs, sgBtnBmp, &btnsize); + + // load progress bar textures + UiLoadBmpFile( + TEXT("ui_art\\prog_bg.pcx"), + &sgProgBgBmp, + &sgProgBgSize + ); + UiLoadBmpFile( + TEXT("ui_art\\prog_fil.pcx"), + &sgProgFillBmp, + &sgProgFillSize + ); + + // alloc/create a bitmap for the progress indicator + child = GetDlgItem(window, IDC_UIGENERIC_PROGRESS); + GetClientRect(child, &rect); + + sgProgBmp = (LPBYTE) ALLOC(rect.right * rect.bottom); + if (!sgProgBmp) + return; + + sgProgSize.cx = rect.right; + sgProgSize.cy = rect.bottom; + + SDlgSetBitmap( + child, + NULL, + NULL, + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + sgProgBmp, + NULL, + rect.right, + rect.bottom + ); + ProgressDraw(window, 0); + + // set the text describing what progress is being monitored + child = GetDlgItem(window, IDC_PROGRESS_TEXT); + SetWindowText(child, progresstext); + + // show/hide cancel button based on abortable flag + child = GetDlgItem(window, IDCANCEL); + ShowWindow(child, (sgAbortable ? SW_SHOWNORMAL : SW_HIDE)); + EnableWindow(child, sgAbortable); +} + + +//**************************************************************************** +//**************************************************************************** +static void ProgressEndDialog(HWND window, int nResult) { + sgnResult = IDCANCEL; + sgbEndDialog = TRUE; +} + +//**************************************************************************** +//**************************************************************************** +static void ProgressAbort(HWND window) { + SDlgKillTimer(window, PROGRESS_TIMER_ID); + if (SDrawGetFrameWindow() == GetParent(window)) + UiVidFadeOut(DEFAULT_STEPS*2); + ProgressEndDialog(window, 0); + sgnResult = 0; +} + + +//**************************************************************************** +//**************************************************************************** +static void ProgressTimer(HWND window) { + int percent; + + percent = sgProgressFcn(); + + if (percent >= 100) { + ProgressAbort(window); + } + else { + ProgressDraw(window, percent); + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK ProgressDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (LOWORD(wparam) == IDCANCEL) { + SDlgKillTimer(window, PROGRESS_TIMER_ID); + + if (SDrawGetFrameWindow() == GetParent(window)) + UiVidFadeOut(DEFAULT_STEPS*2); + ProgressEndDialog(window, IDCANCEL); + } + break; + + case WM_DESTROY: + ShowCursor(FALSE); + ProgressDestroy(window); + break; + + case WM_INITDIALOG: + ProgressInit(window, (LPCSTR)lparam); + + // Choose our cursors + UiSetWindowsCursors(SDrawGetFrameWindow()); + UiSetWindowsCursors(window); + ShowCursor(TRUE); + return 1; + + case WM_TIMER: + ProgressTimer(window); + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +static void ProcessMessages(HWND hWnd) { + while (IsWindow(hWnd) && !sgbEndDialog) { + MSG message; + if (PeekMessage(&message,(HWND)0,0,0,PM_REMOVE)) { + if (message.message == WM_QUIT) + PostQuitMessage(message.wParam); + else if (!IsDialogMessage(hWnd,&message)) { + TranslateMessage(&message); + DispatchMessage(&message); + } + } + else { + SDlgCheckTimers(); + SDlgUpdateCursor(); + } + } + + // Get rid of the window if it is killing itself + if (sgbEndDialog) { + DestroyWindow(hWnd); + sgbEndDialog = FALSE; + } +} + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiProgressDialog(HWND parent, + LPCSTR progresstext, + BOOL abortable, + PROGRESSFCN progressfcn, + DWORD callspersec +) { + + sgProgressFcn = progressfcn; + sgAbortable = abortable; + sgCallsPerSec = callspersec; + sgnResult = -1; + sgbEndDialog = FALSE; + + HWND hWndProgress = SDlgCreateDialogParam( + global_hinstance, + TEXT("PROGRESS_DIALOG"), + parent, + ProgressDialogProc, + (LPARAM) progresstext + ); + + if (!hWndProgress) + return FALSE; + + // Now process messages until dialog exits + // (that way we'll behave modal to the outside world of Diablo.exe) + ProcessMessages(hWndProgress); + + if (sgnResult == IDCANCEL || sgnResult == -1) + return FALSE; + + return TRUE; +} diff --git a/Uisrc/UI/RELEASE/ARTFONT.OBJ b/Uisrc/UI/RELEASE/ARTFONT.OBJ new file mode 100644 index 0000000..74e53cc Binary files /dev/null and b/Uisrc/UI/RELEASE/ARTFONT.OBJ differ diff --git a/Uisrc/UI/RELEASE/ARTFONT.SBR b/Uisrc/UI/RELEASE/ARTFONT.SBR new file mode 100644 index 0000000..f243a2b Binary files /dev/null and b/Uisrc/UI/RELEASE/ARTFONT.SBR differ diff --git a/Uisrc/UI/RELEASE/CONNECT.OBJ b/Uisrc/UI/RELEASE/CONNECT.OBJ new file mode 100644 index 0000000..a0a7c5f Binary files /dev/null and b/Uisrc/UI/RELEASE/CONNECT.OBJ differ diff --git a/Uisrc/UI/RELEASE/CONNECT.SBR b/Uisrc/UI/RELEASE/CONNECT.SBR new file mode 100644 index 0000000..477e337 Binary files /dev/null and b/Uisrc/UI/RELEASE/CONNECT.SBR differ diff --git a/Uisrc/UI/RELEASE/COPYPROT.OBJ b/Uisrc/UI/RELEASE/COPYPROT.OBJ new file mode 100644 index 0000000..6f89470 Binary files /dev/null and b/Uisrc/UI/RELEASE/COPYPROT.OBJ differ diff --git a/Uisrc/UI/RELEASE/COPYPROT.SBR b/Uisrc/UI/RELEASE/COPYPROT.SBR new file mode 100644 index 0000000..43ce280 Binary files /dev/null and b/Uisrc/UI/RELEASE/COPYPROT.SBR differ diff --git a/Uisrc/UI/RELEASE/CR8GAME.OBJ b/Uisrc/UI/RELEASE/CR8GAME.OBJ new file mode 100644 index 0000000..6592797 Binary files /dev/null and b/Uisrc/UI/RELEASE/CR8GAME.OBJ differ diff --git a/Uisrc/UI/RELEASE/CR8GAME.SBR b/Uisrc/UI/RELEASE/CR8GAME.SBR new file mode 100644 index 0000000..7fb431a Binary files /dev/null and b/Uisrc/UI/RELEASE/CR8GAME.SBR differ diff --git a/Uisrc/UI/RELEASE/CREADUNG.OBJ b/Uisrc/UI/RELEASE/CREADUNG.OBJ new file mode 100644 index 0000000..bb3b980 Binary files /dev/null and b/Uisrc/UI/RELEASE/CREADUNG.OBJ differ diff --git a/Uisrc/UI/RELEASE/CREADUNG.SBR b/Uisrc/UI/RELEASE/CREADUNG.SBR new file mode 100644 index 0000000..bbade8f Binary files /dev/null and b/Uisrc/UI/RELEASE/CREADUNG.SBR differ diff --git a/Uisrc/UI/RELEASE/CREAHERO.OBJ b/Uisrc/UI/RELEASE/CREAHERO.OBJ new file mode 100644 index 0000000..ecabd6f Binary files /dev/null and b/Uisrc/UI/RELEASE/CREAHERO.OBJ differ diff --git a/Uisrc/UI/RELEASE/CREAHERO.SBR b/Uisrc/UI/RELEASE/CREAHERO.SBR new file mode 100644 index 0000000..b122148 Binary files /dev/null and b/Uisrc/UI/RELEASE/CREAHERO.SBR differ diff --git a/Uisrc/UI/RELEASE/CREDITS.OBJ b/Uisrc/UI/RELEASE/CREDITS.OBJ new file mode 100644 index 0000000..8c6dd33 Binary files /dev/null and b/Uisrc/UI/RELEASE/CREDITS.OBJ differ diff --git a/Uisrc/UI/RELEASE/CREDITS.SBR b/Uisrc/UI/RELEASE/CREDITS.SBR new file mode 100644 index 0000000..1b8f7b8 Binary files /dev/null and b/Uisrc/UI/RELEASE/CREDITS.SBR differ diff --git a/Uisrc/UI/RELEASE/DIABEDIT.OBJ b/Uisrc/UI/RELEASE/DIABEDIT.OBJ new file mode 100644 index 0000000..47da135 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIABEDIT.OBJ differ diff --git a/Uisrc/UI/RELEASE/DIABEDIT.SBR b/Uisrc/UI/RELEASE/DIABEDIT.SBR new file mode 100644 index 0000000..08c7ffe Binary files /dev/null and b/Uisrc/UI/RELEASE/DIABEDIT.SBR differ diff --git a/Uisrc/UI/RELEASE/DIABLOUI.OBJ b/Uisrc/UI/RELEASE/DIABLOUI.OBJ new file mode 100644 index 0000000..9f50242 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIABLOUI.OBJ differ diff --git a/Uisrc/UI/RELEASE/DIABLOUI.RES b/Uisrc/UI/RELEASE/DIABLOUI.RES new file mode 100644 index 0000000..695ec39 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIABLOUI.RES differ diff --git a/Uisrc/UI/RELEASE/DIABLOUI.SBR b/Uisrc/UI/RELEASE/DIABLOUI.SBR new file mode 100644 index 0000000..f535918 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIABLOUI.SBR differ diff --git a/Uisrc/UI/RELEASE/DIRLINK.OBJ b/Uisrc/UI/RELEASE/DIRLINK.OBJ new file mode 100644 index 0000000..ce62af8 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIRLINK.OBJ differ diff --git a/Uisrc/UI/RELEASE/DIRLINK.SBR b/Uisrc/UI/RELEASE/DIRLINK.SBR new file mode 100644 index 0000000..83a6982 Binary files /dev/null and b/Uisrc/UI/RELEASE/DIRLINK.SBR differ diff --git a/Uisrc/UI/RELEASE/DISCLAIM.OBJ b/Uisrc/UI/RELEASE/DISCLAIM.OBJ new file mode 100644 index 0000000..d914b1a Binary files /dev/null and b/Uisrc/UI/RELEASE/DISCLAIM.OBJ differ diff --git a/Uisrc/UI/RELEASE/DISCLAIM.SBR b/Uisrc/UI/RELEASE/DISCLAIM.SBR new file mode 100644 index 0000000..9cbb2f3 Binary files /dev/null and b/Uisrc/UI/RELEASE/DISCLAIM.SBR differ diff --git a/Uisrc/UI/RELEASE/DOOM.OBJ b/Uisrc/UI/RELEASE/DOOM.OBJ new file mode 100644 index 0000000..3c9e4b8 Binary files /dev/null and b/Uisrc/UI/RELEASE/DOOM.OBJ differ diff --git a/Uisrc/UI/RELEASE/DOOM.SBR b/Uisrc/UI/RELEASE/DOOM.SBR new file mode 100644 index 0000000..399af6f Binary files /dev/null and b/Uisrc/UI/RELEASE/DOOM.SBR differ diff --git a/Uisrc/UI/RELEASE/ENTRDIAL.OBJ b/Uisrc/UI/RELEASE/ENTRDIAL.OBJ new file mode 100644 index 0000000..4b758bf Binary files /dev/null and b/Uisrc/UI/RELEASE/ENTRDIAL.OBJ differ diff --git a/Uisrc/UI/RELEASE/ENTRDIAL.SBR b/Uisrc/UI/RELEASE/ENTRDIAL.SBR new file mode 100644 index 0000000..4197200 Binary files /dev/null and b/Uisrc/UI/RELEASE/ENTRDIAL.SBR differ diff --git a/Uisrc/UI/RELEASE/ENTRNAME.OBJ b/Uisrc/UI/RELEASE/ENTRNAME.OBJ new file mode 100644 index 0000000..8099aea Binary files /dev/null and b/Uisrc/UI/RELEASE/ENTRNAME.OBJ differ diff --git a/Uisrc/UI/RELEASE/ENTRNAME.SBR b/Uisrc/UI/RELEASE/ENTRNAME.SBR new file mode 100644 index 0000000..0ec9e47 Binary files /dev/null and b/Uisrc/UI/RELEASE/ENTRNAME.SBR differ diff --git a/Uisrc/UI/RELEASE/FADE.OBJ b/Uisrc/UI/RELEASE/FADE.OBJ new file mode 100644 index 0000000..c355911 Binary files /dev/null and b/Uisrc/UI/RELEASE/FADE.OBJ differ diff --git a/Uisrc/UI/RELEASE/FADE.SBR b/Uisrc/UI/RELEASE/FADE.SBR new file mode 100644 index 0000000..5cc399b Binary files /dev/null and b/Uisrc/UI/RELEASE/FADE.SBR differ diff --git a/Uisrc/UI/RELEASE/FOCUS.OBJ b/Uisrc/UI/RELEASE/FOCUS.OBJ new file mode 100644 index 0000000..6aa2f20 Binary files /dev/null and b/Uisrc/UI/RELEASE/FOCUS.OBJ differ diff --git a/Uisrc/UI/RELEASE/FOCUS.SBR b/Uisrc/UI/RELEASE/FOCUS.SBR new file mode 100644 index 0000000..417bf9d Binary files /dev/null and b/Uisrc/UI/RELEASE/FOCUS.SBR differ diff --git a/Uisrc/UI/RELEASE/HELLFRUI.EXP b/Uisrc/UI/RELEASE/HELLFRUI.EXP new file mode 100644 index 0000000..91f0f54 Binary files /dev/null and b/Uisrc/UI/RELEASE/HELLFRUI.EXP differ diff --git a/Uisrc/UI/RELEASE/HELLFRUI.LIB b/Uisrc/UI/RELEASE/HELLFRUI.LIB new file mode 100644 index 0000000..c09e62f Binary files /dev/null and b/Uisrc/UI/RELEASE/HELLFRUI.LIB differ diff --git a/Uisrc/UI/RELEASE/HELLFRUI.MAP b/Uisrc/UI/RELEASE/HELLFRUI.MAP new file mode 100644 index 0000000..d0c04c0 --- /dev/null +++ b/Uisrc/UI/RELEASE/HELLFRUI.MAP @@ -0,0 +1,1343 @@ + hellfrui + + Timestamp is 34c4ce17 (Tue Jan 20 16:17:27 1998) + + Preferred load address is 20000000 + + Start Length Name Class + 0001:00000000 0001c5e6H .text CODE + 0002:00000000 00001748H .rdata DATA + 0002:00001750 0000033eH .edata DATA + 0003:00000000 00000004H .CRT$XCA DATA + 0003:00000004 00000004H .CRT$XCZ DATA + 0003:00000008 00000004H .CRT$XIA DATA + 0003:0000000c 00000004H .CRT$XIC DATA + 0003:00000010 00000004H .CRT$XIZ DATA + 0003:00000014 00000004H .CRT$XPA DATA + 0003:00000018 00000004H .CRT$XPX DATA + 0003:0000001c 00000004H .CRT$XPZ DATA + 0003:00000020 00000004H .CRT$XTA DATA + 0003:00000024 00000004H .CRT$XTZ DATA + 0003:00000030 000039dcH .data DATA + 0003:00003a10 00004df8H .bss DATA + 0004:00000000 00000050H .idata$2 DATA + 0004:00000050 00000014H .idata$3 DATA + 0004:00000064 000002d8H .idata$4 DATA + 0004:0000033c 000002d8H .idata$5 DATA + 0004:00000614 000008ccH .idata$6 DATA + 0005:00000000 00001070H .rsrc$01 DATA + 0005:00001070 000152f0H .rsrc$02 DATA + + Address Publics by Value Rva+Base Lib:Object + + 0001:00000000 ?ArtFontSet@@YIXH@Z 20001000 f artfont.obj + 0001:00000090 ?ArtFontInit@@YIXXZ 20001090 f artfont.obj + 0001:000000c0 ?ArtFontDestroy@@YIXXZ 200010c0 f artfont.obj + 0001:00000230 ?ArtFontLoad@@YIHXZ 20001230 f artfont.obj + 0001:00000410 ?ArtFontHeight@@YIHXZ 20001410 f artfont.obj + 0001:00000430 ?ArtFontGridWidth@@YIHXZ 20001430 f artfont.obj + 0001:00000450 ?ArtFontPixelWidth@@YIHPBD@Z 20001450 f artfont.obj + 0001:000004b0 ?ArtFontDraw@@YIXPBDPAU_bmp@@HH@Z 200014b0 f artfont.obj + 0001:00000650 ?FreeGlobalHeroArt@@YIXXZ 20001650 f connect.obj + 0001:00000710 ?LoadGlobalHeroArt@@YIHXZ 20001710 f connect.obj + 0001:000008a0 _UiArtCallback@32 200018a0 f connect.obj + 0001:00000c10 _UiGetDataCallback@20 20001c10 f connect.obj + 0001:00000d20 _UiSoundCallback@12 20001d20 f connect.obj + 0001:00000d40 _UiAuthCallback@28 20001d40 f connect.obj + 0001:000010a0 _UiDrawDescCallback@32 200020a0 f connect.obj + 0001:00001810 _UiCategoryCallback@28 20002810 f connect.obj + 0001:00001840 ?GetPlayerCategory@@YIKPBD@Z 20002840 f connect.obj + 0001:00001990 ?Txt2GameData@@YIHPADPAU_gamedata@@PAPAD2@Z 20002990 f connect.obj + 0001:00001a00 ?GameData2Txt@@YIXPAU_gamedata@@PBD1PADH@Z 20002a00 f connect.obj + 0001:00001a70 ?Txt2HeroInfo@@YIHPADPAU_uiheroinfo@@@Z 20002a70 f connect.obj + 0001:00001b90 _UiCreateGameCriteria@8 20002b90 f connect.obj + 0001:00001bc0 _UiCreatePlayerDescription@12 20002bc0 f connect.obj + 0001:00001c30 _UiCopyProtError@4 20002c30 f CopyProt.obj + 0001:00001f60 ?TryCreateGame@@YIHPAUHWND__@@@Z 20002f60 f cr8game.obj + 0001:000020c0 _UiCreateGameCallback@24 200030c0 f cr8game.obj + 0001:000028e0 ?SelDiffLoadFocus@@YIXH@Z 200038e0 f CreaDung.obj + 0001:000028f0 ?SelDiffDialogProc@@YGHPAUHWND__@@IIJ@Z 200038f0 f CreaDung.obj + 0001:000031e0 ?UiDoomCreateGame@@YIHPAU_SNETCREATEDATA@@PAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAKHPBD@Z 200041e0 f CreaDung.obj + 0001:00003250 _UiGetDefaultStats@8 20004250 f CreaHero.obj + 0001:000032a0 _UiCreditsDialog@4 200042a0 f credits.obj + 0001:000038c0 ?DiabEditRegisterClass@@YIXXZ 200048c0 f DiabEdit.obj + 0001:00003e90 ?UiIsSpawned@@YIHXZ 20004e90 f Diabloui.obj + 0001:00003ea0 _UiSetBackgroundBitmap@20 20004ea0 f Diabloui.obj + 0001:00003ee0 _UiSetSpawned@4 20004ee0 f Diabloui.obj + 0001:00003ef0 _UiInitialize@0 20004ef0 f Diabloui.obj + 0001:00003f10 _UiDestroy@0 20004f10 f Diabloui.obj + 0001:00003f30 _UiAppActivate@4 20004f30 f Diabloui.obj + 0001:00003f30 _UiOnPaint@4 20004f30 f Diabloui.obj + 0001:00003f40 _DllMain@12 20004f40 f Diabloui.obj + 0001:00003f80 ?UiDirectLinkGame@@YIHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20004f80 f DirLink.obj + 0001:00004b30 _UiBetaDisclaimer@4 20005b30 f disclaim.obj + 0001:00004d50 ?UiDoomButtonsInit@@YIXPAUHWND__@@PAHHH@Z 20005d50 f Doom.obj + 0001:00005000 ?UiDoomButtonsReset@@YIXPAUHWND__@@PAHHH@Z 20006000 f Doom.obj + 0001:000050b0 ?UiDoomStaticInit@@YIXPAUHWND__@@PAHH@Z 200060b0 f Doom.obj + 0001:00005290 ?UiDoomStaticReset@@YIXPAUHWND__@@PAHH@Z 20006290 f Doom.obj + 0001:00005350 ?UiDoomEditInit@@YIXPAUHWND__@@PAHH@Z 20006350 f Doom.obj + 0001:00005530 ?UiDoomEditReset@@YIXPAUHWND__@@PAHH@Z 20006530 f Doom.obj + 0001:00005580 ?UiDoomCtrlsDestroy@@YIXPAUHWND__@@PAH@Z 20006580 f Doom.obj + 0001:000055d0 ?EnterDialDialogProc@@YGHPAUHWND__@@IIJ@Z 200065d0 f EntrDial.obj + 0001:00005a60 ?EnterNameDialogProc@@YGHPAUHWND__@@IIJ@Z 20006a60 f EntrName.obj + 0001:00005ec0 ?UiVidFade@@YIXHH@Z 20006ec0 f Fade.obj + 0001:00005f60 ?UiVidFadeOut@@YIXH@Z 20006f60 f Fade.obj + 0001:00006050 ?UiIsFading@@YIHXZ 20007050 f Fade.obj + 0001:00006070 ?UiFadeAbort@@YIXPAUHWND__@@@Z 20007070 f Fade.obj + 0001:00006090 ?UiFadeInit@@YIXPAUHWND__@@H@Z 20007090 f Fade.obj + 0001:000060c0 ?UiAltFadeInit@@YIXPAUHWND__@@@Z 200070c0 f Fade.obj + 0001:000060d0 ?UiFadeStart@@YIXPAUHWND__@@@Z 200070d0 f Fade.obj + 0001:00006130 ?FocusSnd@@YIXPAUHWND__@@@Z 20007130 f Focus.obj + 0001:00006160 ?FocusWidth@@YIHXZ 20007160 f Focus.obj + 0001:00006170 ?FocusErase@@YIXPAUHWND__@@0@Z 20007170 f Focus.obj + 0001:000062b0 ?FocusLost@@YIXPAUHWND__@@0@Z 200072b0 f Focus.obj + 0001:000062e0 ?FocusAnimate@@YIHPAUHWND__@@0@Z 200072e0 f Focus.obj + 0001:00006440 ?FocusAnimateDestroy@@YIXXZ 20007440 f Focus.obj + 0001:00006470 ?FocusReInit@@YIXXZ 20007470 f Focus.obj + 0001:00006480 ?FocusAnimateInit@@YIXPBD@Z 20007480 f Focus.obj + 0001:00006560 ?UiCreateIdentityPal@@YIXXZ 20007560 f local.obj + 0001:000065d0 ?UiFreeIdentityPal@@YIXXZ 200075d0 f local.obj + 0001:000065f0 ?UiPaletteEntry@@YIPAUtagPALETTEENTRY@@H@Z 200075f0 f local.obj + 0001:00006600 ?UiClearPalette@@YIXPAUtagPALETTEENTRY@@@Z 20007600 f local.obj + 0001:00006620 ?UiLoadBmpFile@@YIHPBDPAPAEPAUtagSIZE@@@Z 20007620 f local.obj + 0001:00006720 ?LoadArtFile@@YIHPAUHWND__@@0PBDKJ1PAPAEPAUtagSIZE@@H@Z 20007720 f local.obj + 0001:00006920 ?UiCalcNewRect@@YIXPAUtagRECT@@HH@Z 20007920 f local.obj + 0001:00006950 ?UiSetStaticBmp@@YIHPAUHWND__@@HPAEPAUtagSIZE@@@Z 20007950 f local.obj + 0001:000069c0 ?UiSetButtonBitmaps@@YIXPAUHWND__@@PAHPAEPAUtagSIZE@@@Z 200079c0 f local.obj + 0001:00006bc0 ?UiSetTextYellow@@YIXPAUHDC__@@@Z 20007bc0 f local.obj + 0001:00006bd0 ?UiIsPtInWindow@@YIHPAUHWND__@@0HH@Z 20007bd0 f local.obj + 0001:00006c70 ?UiPaintBtn@@YIXPAUHWND__@@@Z 20007c70 f local.obj + 0001:00006ca0 ?UiOnPaintBtns@@YIXPAUHWND__@@PAH@Z 20007ca0 f local.obj + 0001:00006db0 ?UiActiveDownBtns@@YIXPAUHWND__@@PAH@Z 20007db0 f local.obj + 0001:00006f30 ?UiFlushIOMessages@@YIXPAUHWND__@@@Z 20007f30 f local.obj + 0001:00006f80 ?UiAllocBmp@@YIPAU_bmp@@XZ 20007f80 f local.obj + 0001:00006fb0 ?UiFreeBmp@@YIXPAU_bmp@@@Z 20007fb0 f local.obj + 0001:00007000 ?UiSetBmpText@@YIXPAU_bmp@@PBD@Z 20008000 f local.obj + 0001:00007030 ?UiLoadCursor@@YIXXZ 20008030 f local.obj + 0001:000071c0 ?UiDestroyCursor@@YIXXZ 200081c0 f local.obj + 0001:00007220 ?UiSetCursor@@YIXXZ 20008220 f local.obj + 0001:00007250 ?UiClearCursor@@YIXXZ 20008250 f local.obj + 0001:00007270 ?UiSetWindowsCursors@@YIXPAUHWND__@@@Z 20008270 f local.obj + 0001:000072c0 _UiLogonDialog@24 200082c0 f Logon.obj + 0001:00007550 _UiMainMenuDialog@20 20008550 f MainMenu.obj + 0001:00007b50 ?ModemConnected@@YIHXZ 20008b50 f Modem.obj + 0001:00007b60 ?ModemSetInfo@@YIXPAUHWND__@@PBD1@Z 20008b60 f Modem.obj + 0001:00007be0 ?ModemGameEnum@@YGHKPBD0@Z 20008be0 f Modem.obj + 0001:00007c40 ?ModemEnum@@YIHXZ 20008c40 f Modem.obj + 0001:00007c80 ?ModemGameName@@YIPBDXZ 20008c80 f Modem.obj + 0001:00007c90 ?ModemJoinDone@@YIHXZ 20008c90 f Modem.obj + 0001:00007ca0 ?ModemLastJoinedNumber@@YIHXZ 20008ca0 f Modem.obj + 0001:00007cb0 ?ModemGameNumber@@YIHPBD@Z 20008cb0 f Modem.obj + 0001:00007ce0 ?UiModemGame@@YIHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 20008ce0 f Modem.obj + 0001:00008490 ?ModmStatStatusCallback@@YGHPBDKKKP6GHXZ@Z 20009490 f ModmStat.obj + 0001:000084d0 ?ModmStatDialog@@YIHPAUHWND__@@@Z 200094d0 f ModmStat.obj + 0001:000087d0 ?IsTextTooLarge@@YIHPAUHWND__@@PBD@Z 200097d0 f OkCancel.obj + 0001:00008c00 ?UiOkDialog@@YIHPAUHWND__@@PBDH@Z 20009c00 f OkCancel.obj + 0001:00008c40 _UiMessageBoxCallback@16 20009c40 f OkCancel.obj + 0001:00008cf0 _UiProgressDialog@20 20009cf0 f Progress.obj + 0001:000092f0 ?SbarUpClick@@YIHPAUHWND__@@@Z 2000a2f0 f Sbar.obj + 0001:00009320 ?SbarInterpretClick@@YIHPAUHWND__@@HH@Z 2000a320 f Sbar.obj + 0001:00009430 ?SbarDraw@@YIXPAUHWND__@@HHH@Z 2000a430 f Sbar.obj + 0001:000095c0 ?SbarInit@@YIXPAUHWND__@@H@Z 2000a5c0 f Sbar.obj + 0001:000096b0 ?SbarDestroy@@YIXPAUHWND__@@H@Z 2000a6b0 f Sbar.obj + 0001:00009780 ?SelClassDialogProc@@YGHPAUHWND__@@IIJ@Z 2000a780 f SelClass.obj + 0001:00009ca0 ?SelConnDialogProc@@YGHPAUHWND__@@IIJ@Z 2000aca0 f SelConn.obj + 0001:0000b530 _UiSelectProvider@24 2000c530 f SelConn.obj + 0001:0000b5f0 ?SelDialSaveBookEntries@@YIXPBD@Z 2000c5f0 f SelDial.obj + 0001:0000b6f0 ?SelDialDialogProc@@YGHPAUHWND__@@IIJ@Z 2000c6f0 f SelDial.obj + 0001:0000c050 ?UiSetBasicInterface@@YIXH@Z 2000d050 f SelGame.obj + 0001:0000c060 ?UiSetProviderID@@YIXK@Z 2000d060 f SelGame.obj + 0001:0000c070 ?UiGetProviderID@@YIKXZ 2000d070 f SelGame.obj + 0001:0000c080 _UiSelectGame@24 2000d080 f SelGame.obj + 0001:0000c120 ?GetHeroList@@YIPAU_uiheroinfo@@XZ 2000d120 f SelHero.obj + 0001:0000c130 ?GetNumHeros@@YIHXZ 2000d130 f SelHero.obj + 0001:0000c140 ?SelHeroSetDiff@@YIXH@Z 2000d140 f SelHero.obj + 0001:0000c150 ?SelectedName@@YIPBDXZ 2000d150 f SelHero.obj + 0001:0000c160 ?SelHeroGetMode@@YIHXZ 2000d160 f SelHero.obj + 0001:0000c170 ?SelHeroGetDefStats@@YIXHPAU_uidefaultstats@@@Z 2000d170 f SelHero.obj + 0001:0000c180 ?SelHeroClearStats@@YIXPAUHWND__@@@Z 2000d180 f SelHero.obj + 0001:0000c2a0 ?SelHeroSetStats@@YIXPAUHWND__@@PAU_uiheroinfo@@@Z 2000d2a0 f SelHero.obj + 0001:0000c4b0 ?SelHeroSetTitle@@YIXPAUHWND__@@PBD@Z 2000d4b0 f SelHero.obj + 0001:0000c4f0 ?IsNastyName@@YIHPBD@Z 2000d4f0 f SelHero.obj + 0001:0000c5a0 ?InvalidChars@@YIHPBD0@Z 2000d5a0 f SelHero.obj + 0001:0000c610 _UiSelHeroMultDialog@32 2000d610 f SelHero.obj + 0001:0000d5a0 _UiSelHeroSingDialog@36 2000e5a0 f SelHero.obj + 0001:0000d670 ?UiSelectIPXGame@@YIHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@PAK@Z 2000e670 f SelIPX.obj + 0001:0000f250 ?SelListDialogProc@@YGHPAUHWND__@@IIJ@Z 20010250 f SelList.obj + 0001:00010920 ?SelLoadDialogProc@@YGHPAUHWND__@@IIJ@Z 20011920 f SelLoad.obj + 0001:00010cb0 ?UiSelectDevice@@YIHKPAU_SNETPROGRAMDATA@@PAU_SNETPLAYERDATA@@PAU_SNETUIDATA@@PAU_SNETVERSIONDATA@@@Z 20011cb0 f SelModem.obj + 0001:00012460 ?SelYesNoDialog@@YIHPAUHWND__@@PBD1H@Z 20013460 f SelYesNo.obj + 0001:00012780 ?SelOkDialog@@YIHPAUHWND__@@PBD1H@Z 20013780 f SelYesNo.obj + 0001:000127c0 ?SpawnErrDialog@@YIHPAUHWND__@@HH@Z 200137c0 f SelYesNo.obj + 0001:00012830 _UiSupportDialog@4 20013830 f Support.obj + 0001:00012e80 ?TitleLogoAnimate@@YIXPAUHWND__@@@Z 20013e80 f Title.obj + 0001:00012fa0 ?TitleLogoDestroy@@YIXXZ 20013fa0 f Title.obj + 0001:00012ff0 ?TitleLogoInit@@YIXPAUHWND__@@@Z 20013ff0 f Title.obj + 0001:00013070 ?TitleFramesInit@@YIXPAUHWND__@@PBD@Z 20014070 f Title.obj + 0001:00013140 _UiTitleDialog@4 20014140 f Title.obj + 0001:000134e0 ?UiSndSetFcn@@YIXP6GXPBD@Z@Z 200144e0 f UiSnd.obj + 0001:000134f0 ?UiSndInit@@YIXXZ 200144f0 f UiSnd.obj + 0001:00013500 ?UiSndPlayClick@@YIXXZ 20014500 f UiSnd.obj + 0001:00013520 ?UiSndPlayEnter@@YIXXZ 20014520 f UiSnd.obj + 0001:00013540 _STransDelete@4 20014540 f storm:storm.dll + 0001:00013546 _SMemFree@16 20014546 f storm:storm.dll + 0001:0001354c _STransCreate@28 2001454c f storm:storm.dll + 0001:00013552 _SFileCloseFile@4 20014552 f storm:storm.dll + 0001:00013558 _SFileReadFile@20 20014558 f storm:storm.dll + 0001:0001355e _SFileGetFileSize@8 2001455e f storm:storm.dll + 0001:00013564 _SFileOpenFile@8 20014564 f storm:storm.dll + 0001:0001356a _STransBlt@20 2001456a f storm:storm.dll + 0001:00013570 _SMemAlloc@16 20014570 f storm:storm.dll + 0001:00013576 _SBmpLoadImage@28 20014576 f storm:storm.dll + 0001:0001357c _SDlgBltToWindow@40 2001457c f storm:storm.dll + 0001:00013582 _SBltROP3@32 20014582 f storm:storm.dll + 0001:00013588 _SDlgDialogBoxParam@20 20014588 f storm:storm.dll + 0001:0001358e _SDrawGetFrameWindow@4 2001458e f storm:storm.dll + 0001:00013594 _SDrawUpdatePalette@16 20014594 f storm:storm.dll + 0001:0001359a _SDlgSetBitmap@40 2001459a f storm:storm.dll + 0001:000135a0 _SDlgDefDialogProc@16 200145a0 f storm:storm.dll + 0001:000135a6 _SDlgEndDialog@8 200145a6 f storm:storm.dll + 0001:000135ac _SNetCreateGame@40 200145ac f storm:storm.dll + 0001:000135b2 _SDlgSetControlBitmaps@28 200145b2 f storm:storm.dll + 0001:000135b8 _SDlgSetTimer@16 200145b8 f storm:storm.dll + 0001:000135be _SDlgKillTimer@8 200145be f storm:storm.dll + 0001:000135c4 _SGdiImportFont@8 200145c4 f storm:storm.dll + 0001:000135ca _SGdiDeleteObject@4 200145ca f storm:storm.dll + 0001:000135d0 _SGdiTextOut@24 200145d0 f storm:storm.dll + 0001:000135d6 _SGdiSetPitch@4 200145d6 f storm:storm.dll + 0001:000135dc _SGdiSelectObject@4 200145dc f storm:storm.dll + 0001:000135e2 _SDlgDrawBitmap@28 200145e2 f storm:storm.dll + 0001:000135e8 _SNetJoinGame@24 200145e8 f storm:storm.dll + 0001:000135ee _SNetEnumGames@16 200145ee f storm:storm.dll + 0001:000135f4 _SDrawClearSurface@4 200145f4 f storm:storm.dll + 0001:000135fa _SDlgEndPaint@8 200145fa f storm:storm.dll + 0001:00013600 _SDlgBeginPaint@8 20014600 f storm:storm.dll + 0001:00013606 _SDlgSetSystemCursor@16 20014606 f storm:storm.dll + 0001:0001360c _SDlgSetCursor@16 2001460c f storm:storm.dll + 0001:00013612 _SDlgUpdateCursor@0 20014612 f storm:storm.dll + 0001:00013618 _SDlgCheckTimers@0 20014618 f storm:storm.dll + 0001:0001361e _SDlgCreateDialogParam@20 2001461e f storm:storm.dll + 0001:00013624 _SBltROP3Tiled@40 20014624 f storm:storm.dll + 0001:0001362a _SNetEnumProviders@8 2001462a f storm:storm.dll + 0001:00013630 _SNetInitializeProvider@20 20014630 f storm:storm.dll + 0001:00013636 _SRegSaveString@16 20014636 f storm:storm.dll + 0001:0001363c _SRegLoadString@20 2001463c f storm:storm.dll + 0001:00013642 _SNetSelectGame@24 20014642 f storm:storm.dll + 0001:00013648 _SNetInitializeDevice@20 20014648 f storm:storm.dll + 0001:0001364e _SNetEnumDevices@4 2001464e f storm:storm.dll + 0001:00013670 _strchr 20014670 f LIBCMT:strchr.obj + 0001:00013676 ___from_strstr_to_strchr 20014676 LIBCMT:strchr.obj + 0001:00013730 _sprintf 20014730 f LIBCMT:sprintf.obj + 0001:000137a0 _atol 200147a0 f LIBCMT:atox.obj + 0001:00013840 _atoi 20014840 f LIBCMT:atox.obj + 0001:00013850 _strstr 20014850 f LIBCMT:strstr.obj + 0001:000138d0 _localtime 200148d0 f LIBCMT:localtim.obj + 0001:00013ac0 _sscanf 20014ac0 f LIBCMT:sscanf.obj + 0001:00013b10 _strncpy 20014b10 f LIBCMT:strncpy.obj + 0001:00013c10 __beginthread 20014c10 f LIBCMT:thread.obj + 0001:00013d40 __endthread 20014d40 f LIBCMT:thread.obj + 0001:00013d90 __strlwr 20014d90 f LIBCMT:strlwr.obj + 0001:00013f10 _strpbrk 20014f10 f LIBCMT:strpbrk.obj + 0001:00013f50 __stricmp 20014f50 f LIBCMT:stricmp.obj + 0001:00013f50 _stricmp 20014f50 f LIBCMT:stricmp.obj + 0001:00013f50 __strcmpi 20014f50 f LIBCMT:stricmp.obj + 0001:00014020 __CRT_INIT@12 20015020 f LIBCMT:dllcrt0.obj + 0001:00014190 __DllMainCRTStartup@12 20015190 f LIBCMT:dllcrt0.obj + 0001:00014240 __amsg_exit 20015240 f LIBCMT:dllcrt0.obj + 0001:00014280 __flsbuf 20015280 f LIBCMT:_flsbuf.obj + 0001:000143b0 __output 200153b0 f LIBCMT:output.obj + 0001:00014e70 __isctype 20015e70 f LIBCMT:isctype.obj + 0001:00014f10 __allmul 20015f10 f LIBCMT:llmul.obj + 0001:00014f50 ___tzset 20015f50 f LIBCMT:tzset.obj + 0001:00015270 __isindst 20016270 f LIBCMT:tzset.obj + 0001:000156b0 _gmtime 200166b0 f LIBCMT:gmtime.obj + 0001:00015820 __input 20016820 f LIBCMT:input.obj + 0001:00016640 __dosmaperr 20017640 f LIBCMT:dosmap.obj + 0001:000166c0 __errno 200176c0 f LIBCMT:dosmap.obj + 0001:000166d0 ___doserrno 200176d0 f LIBCMT:dosmap.obj + 0001:000166e0 _free 200176e0 f LIBCMT:free.obj + 0001:00016750 __mtinit 20017750 f LIBCMT:tidtable.obj + 0001:000167b0 __mtterm 200177b0 f LIBCMT:tidtable.obj + 0001:000167e0 __initptd 200177e0 f LIBCMT:tidtable.obj + 0001:00016800 __getptd 20017800 f LIBCMT:tidtable.obj + 0001:00016880 __freeptd 20017880 f LIBCMT:tidtable.obj + 0001:00016920 _calloc 20017920 f LIBCMT:calloc.obj + 0001:000169d0 __cinit 200179d0 f LIBCMT:crt0dat.obj + 0001:00016a00 __exit 20017a00 f LIBCMT:crt0dat.obj + 0001:00016a20 __cexit 20017a20 f LIBCMT:crt0dat.obj + 0001:00016af0 __lockexit 20017af0 f LIBCMT:crt0dat.obj + 0001:00016b00 __unlockexit 20017b00 f LIBCMT:crt0dat.obj + 0001:00016b30 __XcptFilter 20017b30 f LIBCMT:winxfltr.obj + 0001:00016d80 __global_unwind2 20017d80 f LIBCMT:exsup.obj + 0001:00016dc2 __local_unwind2 20017dc2 f LIBCMT:exsup.obj + 0001:00016e1a __NLG_Return2 20017e1a LIBCMT:exsup.obj + 0001:00016e2a __abnormal_termination 20017e2a f LIBCMT:exsup.obj + 0001:00016e4d __NLG_Notify1 20017e4d f LIBCMT:exsup.obj + 0001:00016e56 __NLG_Notify 20017e56 f LIBCMT:exsup.obj + 0001:00016e69 __NLG_Dispatch 20017e69 LIBCMT:exsup.obj + 0001:00016e78 __except_handler3 20017e78 f LIBCMT:exsup3.obj + 0001:00016f35 __seh_longjmp_unwind@4 20017f35 f LIBCMT:exsup3.obj + 0001:00016f50 _malloc 20017f50 f LIBCMT:malloc.obj + 0001:00016f70 __nh_malloc 20017f70 f LIBCMT:malloc.obj + 0001:00016fc0 __heap_alloc 20017fc0 f LIBCMT:malloc.obj + 0001:00017020 ___crtLCMapStringA 20018020 f LIBCMT:aw_map.obj + 0001:00017240 __mtinitlocks 20018240 f LIBCMT:mlock.obj + 0001:00017270 __mtdeletelocks 20018270 f LIBCMT:mlock.obj + 0001:000172f0 __lock 200182f0 f LIBCMT:mlock.obj + 0001:00017370 __unlock 20018370 f LIBCMT:mlock.obj + 0001:00017390 __lock_file 20018390 f LIBCMT:mlock.obj + 0001:000173d0 __lock_file2 200183d0 f LIBCMT:mlock.obj + 0001:00017400 __unlock_file 20018400 f LIBCMT:mlock.obj + 0001:00017440 __unlock_file2 20018440 f LIBCMT:mlock.obj + 0001:00017470 ___init_collate 20018470 f LIBCMT:setlocal.obj + 0001:00017470 ___init_dummy 20018470 f LIBCMT:setlocal.obj + 0001:00017480 __tolower_lk 20018480 f LIBCMT:tolower.obj + 0001:00017580 __ioinit 20018580 f LIBCMT:ioinit.obj + 0001:00017790 __ioterm 20018790 f LIBCMT:ioinit.obj + 0001:000177f0 __setenvp 200187f0 f LIBCMT:stdenvp.obj + 0001:000178e0 __setargv 200188e0 f LIBCMT:stdargv.obj + 0001:00017b90 __setmbcp 20018b90 f LIBCMT:mbctype.obj + 0001:00017e90 ___initmbctable 20018e90 f LIBCMT:mbctype.obj + 0001:00017ea0 ___crtGetEnvironmentStringsA 20018ea0 f LIBCMT:aw_env.obj + 0001:00018000 __heap_init 20019000 f LIBCMT:heapinit.obj + 0001:00018040 __heap_term 20019040 f LIBCMT:heapinit.obj + 0001:00018080 ___set_app_type 20019080 f LIBCMT:errmode.obj + 0001:00018090 __FF_MSGBANNER 20019090 f LIBCMT:crt0msg.obj + 0001:000180d0 __NMSG_WRITE 200190d0 f LIBCMT:crt0msg.obj + 0001:000182b0 __lseek 200192b0 f LIBCMT:lseek.obj + 0001:00018330 __lseek_lk 20019330 f LIBCMT:lseek.obj + 0001:000183b0 __write 200193b0 f LIBCMT:write.obj + 0001:00018430 __write_lk 20019430 f LIBCMT:write.obj + 0001:00018640 __getbuf 20019640 f LIBCMT:_getbuf.obj + 0001:000186a0 __isatty 200196a0 f LIBCMT:isatty.obj + 0001:000186d0 ___initstdio 200196d0 f LIBCMT:_file.obj + 0001:00018790 ___endstdio 20019790 f LIBCMT:_file.obj + 0001:000187b0 _wctomb 200197b0 f LIBCMT:wctomb.obj + 0001:00018820 __wctomb_lk 20019820 f LIBCMT:wctomb.obj + 0001:000188a0 __aulldiv 200198a0 f LIBCMT:ulldiv.obj + 0001:00018910 __aullrem 20019910 f LIBCMT:ullrem.obj + 0001:00018990 ___crtGetStringTypeW 20019990 f LIBCMT:aw_str.obj + 0001:00018b20 ___crtGetStringTypeA 20019b20 f LIBCMT:aw_str.obj + 0001:00018c50 _wcstombs 20019c50 f LIBCMT:wcstombs.obj + 0001:00018cd0 __wcstombs_lk 20019cd0 f LIBCMT:wcstombs.obj + 0001:00018f00 __getenv_lk 20019f00 f LIBCMT:getenv.obj + 0001:00018f90 _mbtowc 20019f90 f LIBCMT:mbtowc.obj + 0001:00019010 __mbtowc_lk 2001a010 f LIBCMT:mbtowc.obj + 0001:00019110 _isspace 2001a110 f LIBCMT:_ctype.obj + 0001:00019140 __allshl 2001a140 f LIBCMT:llshl.obj + 0001:00019160 __filbuf 2001a160 f LIBCMT:_filbuf.obj + 0001:00019250 __ungetc_lk 2001a250 f LIBCMT:ungetc.obj + 0001:000192e0 ___sbh_new_region 2001a2e0 f LIBCMT:sbheap.obj + 0001:00019450 ___sbh_release_region 2001a450 f LIBCMT:sbheap.obj + 0001:000194b0 ___sbh_decommit_pages 2001a4b0 f LIBCMT:sbheap.obj + 0001:00019580 ___sbh_find_block 2001a580 f LIBCMT:sbheap.obj + 0001:000195e0 ___sbh_free_block 2001a5e0 f LIBCMT:sbheap.obj + 0001:00019640 ___sbh_alloc_block 2001a640 f LIBCMT:sbheap.obj + 0001:00019880 ___sbh_alloc_block_from_page 2001a880 f LIBCMT:sbheap.obj + 0001:00019a00 ___sbh_resize_block 2001aa00 f LIBCMT:sbheap.obj + 0001:00019ad0 __callnewh 2001aad0 f LIBCMT:handler.obj + 0001:00019af0 ___init_time 2001aaf0 f LIBCMT:inittime.obj + 0001:0001a260 ___init_numeric 2001b260 f LIBCMT:initnum.obj + 0001:0001a4a0 ___init_monetary 2001b4a0 f LIBCMT:initmon.obj + 0001:0001a750 ___init_ctype 2001b750 f LIBCMT:initctyp.obj + 0001:0001aa10 _strcspn 2001ba10 f LIBCMT:strcspn.obj + 0001:0001aa50 _strncmp 2001ba50 f LIBCMT:strncmp.obj + 0001:0001aa90 _wcslen 2001ba90 f LIBCMT:wcslen.obj + 0001:0001aab0 ___crtMessageBoxA 2001bab0 f LIBCMT:crtmbox.obj + 0001:0001ab40 __free_osfhnd 2001bb40 f LIBCMT:osfinfo.obj + 0001:0001abe0 __get_osfhandle 2001bbe0 f LIBCMT:osfinfo.obj + 0001:0001ac30 __lock_fhandle 2001bc30 f LIBCMT:osfinfo.obj + 0001:0001aca0 __unlock_fhandle 2001bca0 f LIBCMT:osfinfo.obj + 0001:0001acd0 __fcloseall 2001bcd0 f LIBCMT:closeall.obj + 0001:0001ad70 __fflush_lk 2001bd70 f LIBCMT:fflush.obj + 0001:0001adb0 __flush 2001bdb0 f LIBCMT:fflush.obj + 0001:0001ae20 __flushall 2001be20 f LIBCMT:fflush.obj + 0001:0001aef0 __fptrap 2001bef0 f LIBCMT:crt0fp.obj + 0001:0001af00 _memmove 2001bf00 f LIBCMT:memmove.obj + 0001:0001b240 __mbsnbicoll 2001c240 f LIBCMT:mbsnbico.obj + 0001:0001b280 ___wtomb_environ 2001c280 f LIBCMT:wtombenv.obj + 0001:0001b300 __read 2001c300 f LIBCMT:read.obj + 0001:0001b380 __read_lk 2001c380 f LIBCMT:read.obj + 0001:0001b5b0 ___getlocaleinfo 2001c5b0 f LIBCMT:inithelp.obj + 0001:0001b760 __itoa 2001c760 f LIBCMT:xtoa.obj + 0001:0001b760 _itoa 2001c760 f LIBCMT:xtoa.obj + 0001:0001b810 ___crtGetLocaleInfoW 2001c810 f LIBCMT:aw_loc.obj + 0001:0001b940 ___crtGetLocaleInfoA 2001c940 f LIBCMT:aw_loc.obj + 0001:0001ba80 _fclose 2001ca80 f LIBCMT:fclose.obj + 0001:0001bac0 __fclose_lk 2001cac0 f LIBCMT:fclose.obj + 0001:0001bb30 __commit 2001cb30 f LIBCMT:commit.obj + 0001:0001bbd0 ___crtCompareStringA 2001cbd0 f LIBCMT:aw_cmp.obj + 0001:0001bed0 ___crtsetenv 2001ced0 f LIBCMT:setenv.obj + 0001:0001c1d0 __close 2001d1d0 f LIBCMT:close.obj + 0001:0001c240 __close_lk 2001d240 f LIBCMT:close.obj + 0001:0001c2d0 __freebuf 2001d2d0 f LIBCMT:_freebuf.obj + 0001:0001c310 _realloc 2001d310 f LIBCMT:realloc.obj + 0001:0001c4c0 __mbschr 2001d4c0 f LIBCMT:mbschr.obj + 0001:0001c590 __strdup 2001d590 f LIBCMT:strdup.obj + 0001:0001c5e0 _RtlUnwind@16 2001d5e0 f kernel32:KERNEL32.dll + 0002:00000000 ??_C@_0BD@BNJE@ui_art?2font42y?4pcx?$AA@ 2001e000 artfont.obj + 0002:00000014 ??_C@_0BD@NODE@ui_art?2font42g?4pcx?$AA@ 2001e014 artfont.obj + 0002:00000028 ??_C@_0BC@EHJK@ui_art?2font42?4bin?$AA@ 2001e028 artfont.obj + 0002:0000003c ??_C@_0BD@JOLH@ui_art?2font16s?4pcx?$AA@ 2001e03c artfont.obj + 0002:00000050 ??_C@_0BD@BMHH@ui_art?2font16g?4pcx?$AA@ 2001e050 artfont.obj + 0002:00000064 ??_C@_0BC@ECP@ui_art?2font16?4bin?$AA@ 2001e064 artfont.obj + 0002:00000078 ??_C@_0BD@MGEJ@ui_art?2font24s?4pcx?$AA@ 2001e078 artfont.obj + 0002:0000008c ??_C@_0BD@EEIJ@ui_art?2font24g?4pcx?$AA@ 2001e08c artfont.obj + 0002:000000a0 ??_C@_0BC@PKIF@ui_art?2font24?4bin?$AA@ 2001e0a0 artfont.obj + 0002:000000b4 ??_C@_0BD@LOFM@ui_art?2font30s?4pcx?$AA@ 2001e0b4 artfont.obj + 0002:000000c8 ??_C@_0BC@OPLA@ui_art?2font30?4bin?$AA@ 2001e0c8 artfont.obj + 0002:000000dc ??_C@_0BD@DMJM@ui_art?2font30g?4pcx?$AA@ 2001e0dc artfont.obj + 0002:000000f0 ??_C@_0CB@KADH@D?3?2diablo97?2UISRC?2ui?2artfont?4cpp@ 2001e0f0 artfont.obj + 0002:00000114 ??_C@_0CB@PDFF@D?3?2diablo97?2UISRC?2ui?2connect?4cpp@ 2001e114 connect.obj + 0002:00000138 ??_C@_0BD@PEEK@ui_art?2special?4pcx?$AA@ 2001e138 connect.obj + 0002:0000014c ??_C@_0BD@BEEM@ui_art?2heronum?4pcx?$AA@ 2001e14c connect.obj + 0002:00000160 ??_C@_0BE@KENP@ui_art?2spwnport?4pcx?$AA@ 2001e160 connect.obj + 0002:00000174 ??_C@_0BE@DJND@ui_art?2heroport?4pcx?$AA@ 2001e174 connect.obj + 0002:00000188 ??_C@_0BD@IOFM@ui_art?2scrlbar?4pcx?$AA@ 2001e188 connect.obj + 0002:0000019c ??_C@_0BE@DDFD@ui_art?2scrlthmb?4pcx?$AA@ 2001e19c connect.obj + 0002:000001b0 ??_C@_0BE@CEHE@ui_art?2scrlarrw?4pcx?$AA@ 2001e1b0 connect.obj + 0002:000001c4 ??_C@_0BC@HPMF@ui_art?2spopup?4pcx?$AA@ 2001e1c4 connect.obj + 0002:000001d8 ??_C@_0BE@DJAL@ui_art?2prog_fil?4pcx?$AA@ 2001e1d8 connect.obj + 0002:000001ec ??_C@_0BD@OBAD@ui_art?2prog_bg?4pcx?$AA@ 2001e1ec connect.obj + 0002:00000200 ??_C@_0BD@NOMM@ui_art?2xsmlogo?4pcx?$AA@ 2001e200 connect.obj + 0002:00000214 ??_C@_0BC@FCLM@ui_art?2lpopup?4pcx?$AA@ 2001e214 connect.obj + 0002:00000228 ??_C@_0BA@IBCF@ui_art?2menu?4pcx?$AA@ 2001e228 connect.obj + 0002:00000238 ??_C@_0BD@OKHC@ui_art?2connect?4pcx?$AA@ 2001e238 connect.obj + 0002:0000024c ??_C@_0BD@KGJO@ui_art?2ipx_bkg?4pcx?$AA@ 2001e24c connect.obj + 0002:00000260 ??_C@_0BD@GDKG@ui_art?2lepopup?4pcx?$AA@ 2001e260 connect.obj + 0002:00000274 ??_C@_0BD@HPGA@ui_art?2welcome?4pcx?$AA@ 2001e274 connect.obj + 0002:00000288 ??_C@_0BD@OFMB@ui_art?2badconn?4pcx?$AA@ 2001e288 connect.obj + 0002:0000029c ??_C@_0BE@CAMA@ui_art?2yellolag?4pcx?$AA@ 2001e29c connect.obj + 0002:000002b0 ??_C@_0BC@MPGG@ui_art?2redlag?4pcx?$AA@ 2001e2b0 connect.obj + 0002:000002c4 ??_C@_0BE@ENAF@ui_art?2bnselchn?4pcx?$AA@ 2001e2c4 connect.obj + 0002:000002d8 ??_C@_0BE@HAIN@ui_art?2bnconnbg?4pcx?$AA@ 2001e2d8 connect.obj + 0002:000002ec ??_C@_0BC@KDGM@ui_art?2epopup?4pcx?$AA@ 2001e2ec connect.obj + 0002:00000300 ??_C@_0BE@KJOH@ui_art?2greenlag?4pcx?$AA@ 2001e300 connect.obj + 0002:00000314 ??_C@_0BE@DEJH@ui_art?2chat_bkg?4pcx?$AA@ 2001e314 connect.obj + 0002:00000328 ??_C@_0BE@KHEB@ui_art?2bnbuttns?4pcx?$AA@ 2001e328 connect.obj + 0002:0000033c ??_C@_0BD@OLDB@ui_art?2but_med?4pcx?$AA@ 2001e33c connect.obj + 0002:00000350 ??_C@_0BD@JHKJ@ui_art?2but_lrg?4pcx?$AA@ 2001e350 connect.obj + 0002:00000364 ??_C@_0BD@DNJA@ui_art?2but_sml?4pcx?$AA@ 2001e364 connect.obj + 0002:00000378 ??_C@_0BD@BAGF@ui_art?2but_xsm?4pcx?$AA@ 2001e378 connect.obj + 0002:0000038c ??_C@_0BC@GNLF@ui_art?2hpopup?4pcx?$AA@ 2001e38c connect.obj + 0002:000003a0 ??_C@_0BE@HJJE@ui_art?2bnjoinbg?4pcx?$AA@ 2001e3a0 connect.obj + 0002:000003b4 ??_C@_0BC@GMHG@ui_art?2bn_bkg?4pcx?$AA@ 2001e3b4 connect.obj + 0002:000003c8 ??_C@_00A@?$AA@ 2001e3c8 connect.obj + 0002:000003cc ??_C@_0BC@JKIH@DIABLO_LINKCURSOR?$AA@ 2001e3cc connect.obj + 0002:000003e0 ??_C@_0M@OBON@DIABLOIBEAM?$AA@ 2001e3e0 connect.obj + 0002:000003ec ??_C@_0BD@KMPN@DIABLO_ARROWCURSOR?$AA@ 2001e3ec connect.obj + 0002:00000400 ??_C@_08JMKF@?$CFd?$AN?$CFs?$AN?$CFs?$AA@ 2001e400 connect.obj + 0002:0000040c ??_C@_0BL@COHB@?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?$AA@ 2001e40c connect.obj + 0002:00000428 ??_C@_0BM@HJNK@?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?5?$CFd?$AA@ 2001e428 connect.obj + 0002:00000444 ??_C@_06MMDE@?$CD?$CFd?$DP?$CFd?$AA@ 2001e444 connect.obj + 0002:0000044c ??_C@_0BA@KHBF@OKCANCEL_DIALOG?$AA@ 2001e44c CopyProt.obj + 0002:0000045c ??_C@_0L@BDOK@IDR_ARTPAL?$AA@ 2001e45c CopyProt.obj + 0002:00000468 ??_C@_0L@IHCC@IDR_BTNART?$AA@ 2001e468 CopyProt.obj + 0002:00000474 ??_C@_0N@JMKG@IDR_POPUPART?$AA@ 2001e474 CopyProt.obj + 0002:00000484 ??_C@_09BCHJ@ART_FILES?$AA@ 2001e484 CopyProt.obj + 0002:00000490 ??_C@_0BD@OMPG@DIALOG_CREATE_GAME?$AA@ 2001e490 cr8game.obj + 0002:000004a4 ??_C@_0BE@DBMM@ui_art?2diffbtns?4pcx?$AA@ 2001e4a4 cr8game.obj + 0002:000004b8 ??_C@_06FPEO@Dialog?$AA@ 2001e4b8 cr8game.obj + 0002:000004c0 ??_C@_0BE@LCBN@ui_art?2creat_bg?4pcx?$AA@ 2001e4c0 cr8game.obj + 0002:000004d4 ??_C@_0CB@DLCM@D?3?2diablo97?2UISRC?2ui?2cr8game?4cpp@ 2001e4d4 cr8game.obj + 0002:000004f8 ??_C@_05MAFJ@popup?$AA@ 2001e4f8 CreaDung.obj + 0002:00000500 ??_C@_0BD@DJGF@ui_art?2seldiff?4pcx?$AA@ 2001e500 CreaDung.obj + 0002:00000514 ??_C@_0BD@DGHH@ui_art?2focus16?4pcx?$AA@ 2001e514 CreaDung.obj + 0002:00000528 ??_C@_0P@HFIB@SELDIFF_DIALOG?$AA@ 2001e528 CreaDung.obj + 0002:00000538 ??_C@_0P@JIJJ@CREDITS_DIALOG?$AA@ 2001e538 credits.obj + 0002:00000548 ??_C@_0BA@MIDB@Times?5New?5Roman?$AA@ 2001e548 credits.obj + 0002:00000558 ??_C@_0BD@EBFM@ui_art?2credits?4pcx?$AA@ 2001e558 credits.obj + 0002:0000056c ??_C@_0M@NJGA@IDR_CREDITS?$AA@ 2001e56c credits.obj + 0002:00000578 ??_C@_0L@PJMP@TEXT_FILES?$AA@ 2001e578 credits.obj + 0002:00000584 ??_C@_0CB@FIHL@D?3?2diablo97?2UISRC?2ui?2credits?4cpp@ 2001e584 credits.obj + 0002:000005a8 ??_C@_0L@ELIF@DIABLOEDIT?$AA@ 2001e5a8 DiabEdit.obj + 0002:000005b4 ??_C@_0CC@OPFN@D?3?2diablo97?2UISRC?2ui?2DiabEdit?4cp@ 2001e5b4 DiabEdit.obj + 0002:000005d8 ??_C@_0L@GCMK@RESTRICTED?$AA@ 2001e5d8 DiabEdit.obj + 0002:000005e4 ??_C@_06MDJJ@CURSOR?$AA@ 2001e5e4 DiabEdit.obj + 0002:000005ec ??_C@_05HDEI@LIMIT?$AA@ 2001e5ec DiabEdit.obj + 0002:000005f4 ??_C@_0P@GNKF@DIRLINK_DIALOG?$AA@ 2001e5f4 DirLink.obj + 0002:00000604 ??_C@_0BD@GGDF@ui_art?2selgame?4pcx?$AA@ 2001e604 DirLink.obj + 0002:00000618 ??_C@_0BE@MEFK@ui_art?2hf_logo2?4pcx?$AA@ 2001e618 DirLink.obj + 0002:0000062c ??_C@_0BC@JCLE@DISCLAIMER_DIALOG?$AA@ 2001e62c disclaim.obj + 0002:00000640 ??_C@_0BE@BBIB@ui_art?2disclaim?4pcx?$AA@ 2001e640 disclaim.obj + 0002:00000654 ??_C@_0BO@KKDP@D?3?2diablo97?2UISRC?2ui?2Doom?4cpp?$AA@ 2001e654 Doom.obj + 0002:00000674 ??_C@_05INKG@?$DM?$DO?$CF?$CG?$DP?$AA@ 2001e674 EntrDial.obj + 0002:0000067c ??_C@_0BB@ELKH@ui_art?2focus?4pcx?$AA@ 2001e67c EntrDial.obj + 0002:00000690 ??_C@_0N@JEBN@?5?0?$DM?$DO?$CF?$CG?2?$CC?$DP?$CK?$CD?1?$AA@ 2001e690 EntrName.obj + 0002:000006a0 ??_C@_0BP@GHFH@D?3?2diablo97?2UISRC?2ui?2Focus?4cpp?$AA@ 2001e6a0 Focus.obj + 0002:000006c0 ??_C@_0BP@NHIE@D?3?2diablo97?2UISRC?2ui?2local?4cpp?$AA@ 2001e6c0 local.obj + 0002:000006e0 ??_C@_06KCJP@Static?$AA@ 2001e6e0 local.obj + 0002:000006e8 ??_C@_06LKP@Button?$AA@ 2001e6e8 local.obj + 0002:000006f0 ??_C@_09OOFJ@UIWNDPROC?$AA@ 2001e6f0 local.obj + 0002:000006fc ??_C@_0BC@MDH@ui_art?2cursor?4pcx?$AA@ 2001e6fc local.obj + 0002:00000710 ??_C@_0N@IBM@DIABLOCURSOR?$AA@ 2001e710 local.obj + 0002:00000720 ??_C@_0N@GPJD@LOGON_DIALOG?$AA@ 2001e720 Logon.obj + 0002:00000730 ??_C@_0BC@HJBA@ui_art?2button?4pcx?$AA@ 2001e730 Logon.obj + 0002:00000744 ??_C@_05MEPD@Popup?$AA@ 2001e744 Logon.obj + 0002:0000074c ??_C@_0BP@LEFM@D?3?2diablo97?2UISRC?2ui?2Logon?4cpp?$AA@ 2001e74c Logon.obj + 0002:0000076c ??_C@_0BA@OHDO@MAINMENU_DIALOG?$AA@ 2001e76c MainMenu.obj + 0002:0000077c ??_C@_0BB@DPFJ@MAINMENU_DIALOG2?$AA@ 2001e77c MainMenu.obj + 0002:00000790 ??_C@_0BD@HFMC@ui_art?2focus42?4pcx?$AA@ 2001e790 MainMenu.obj + 0002:000007a4 ??_C@_0BE@BKLN@ui_art?2mainmenu?4pcx?$AA@ 2001e7a4 MainMenu.obj + 0002:000007b8 ??_C@_0BD@JABH@ui_art?2swmmenu?4pcx?$AA@ 2001e7b8 MainMenu.obj + 0002:000007cc ??_C@_0N@NMJN@MODEM_DIALOG?$AA@ 2001e7cc Modem.obj + 0002:000007dc ??_C@_0BB@LDNC@ENTERDIAL_DIALOG?$AA@ 2001e7dc Modem.obj + 0002:000007f0 ??_C@_0BD@EKPN@SELCRE8JOIN_DIALOG?$AA@ 2001e7f0 Modem.obj + 0002:00000804 ??_C@_0P@OLFA@SELDIAL_DIALOG?$AA@ 2001e804 Modem.obj + 0002:00000814 ??_C@_0BA@OIAL@MODMSTAT_DIALOG?$AA@ 2001e814 ModmStat.obj + 0002:00000824 ??_C@_0BB@ODGC@ui_art?2black?4pcx?$AA@ 2001e824 ModmStat.obj + 0002:00000838 ??_C@_0BD@DAMN@ui_art?2lrpopup?4pcx?$AA@ 2001e838 OkCancel.obj + 0002:0000084c ??_C@_0BD@FJOA@ui_art?2srpopup?4pcx?$AA@ 2001e84c OkCancel.obj + 0002:00000860 ??_C@_0CC@OPPP@D?3?2diablo97?2UISRC?2ui?2OkCancel?4cp@ 2001e860 OkCancel.obj + 0002:00000884 ??_C@_09JIKG@OK_DIALOG?$AA@ 2001e884 OkCancel.obj + 0002:00000890 ??_C@_0BA@DEEO@PROGRESS_DIALOG?$AA@ 2001e890 Progress.obj + 0002:000008a0 ??_C@_0CC@DNGE@D?3?2diablo97?2UISRC?2ui?2Progress?4cp@ 2001e8a0 Progress.obj + 0002:000008c4 ??_C@_0BE@EPPL@ui_art?2sb_arrow?4pcx?$AA@ 2001e8c4 Sbar.obj + 0002:000008d8 ??_C@_0BE@DDJM@ui_art?2sb_thumb?4pcx?$AA@ 2001e8d8 Sbar.obj + 0002:000008ec ??_C@_0BB@EIBK@ui_art?2sb_bg?4pcx?$AA@ 2001e8ec Sbar.obj + 0002:00000900 ??_C@_0BO@IDDF@D?3?2diablo97?2UISRC?2ui?2Sbar?4cpp?$AA@ 2001e900 Sbar.obj + 0002:00000920 ??_C@_0CB@MHPH@D?3?2diablo97?2UISRC?2ui?2SelConn?4cpp@ 2001e920 SelConn.obj + 0002:00000944 ??_C@_0BD@IKPK@ui_art?2selconn?4pcx?$AA@ 2001e944 SelConn.obj + 0002:00000958 ??_C@_09FIOO@UIOLDPROC?$AA@ 2001e958 SelConn.obj + 0002:00000964 ??_C@_0BC@KMKJ@SELCONNECT_DIALOG?$AA@ 2001e964 SelConn.obj + 0002:00000978 ??_C@_06PMNI@Entry4?$AA@ 2001e978 SelDial.obj + 0002:00000980 ??_C@_06KJDN@Entry3?$AA@ 2001e980 SelDial.obj + 0002:00000988 ??_C@_06DKK@Entry2?$AA@ 2001e988 SelDial.obj + 0002:00000990 ??_C@_06PMBD@Entry1?$AA@ 2001e990 SelDial.obj + 0002:00000998 ??_C@_0BC@LGDC@Diablo?2Phone?5Book?$AA@ 2001e998 SelDial.obj + 0002:000009ac ??_C@_0CB@HGNA@D?3?2diablo97?2UISRC?2ui?2SelHero?4cpp@ 2001e9ac SelHero.obj + 0002:000009d0 ??_C@_02CKJF@?9?9?$AA@ 2001e9d0 SelHero.obj + 0002:000009d4 ??_C@_02MECO@?$CFd?$AA@ 2001e9d4 SelHero.obj + 0002:000009d8 ??_C@_0M@CJEM@?0?$DM?$DO?$CF?$CG?2?$CC?$DP?$CK?$CD?1?$AA@ 2001e9d8 SelHero.obj + 0002:000009e4 ??_C@_0P@OOCD@SELHERO_DIALOG?$AA@ 2001e9e4 SelHero.obj + 0002:000009f4 ??_C@_0BB@FOJK@ENTERNAME_DIALOG?$AA@ 2001e9f4 SelHero.obj + 0002:00000a08 ??_C@_0BA@OPLJ@SELCLASS_DIALOG?$AA@ 2001ea08 SelHero.obj + 0002:00000a18 ??_C@_0BB@CFFB@SELCLASS_DIALOG2?$AA@ 2001ea18 SelHero.obj + 0002:00000a2c ??_C@_0BB@IPMG@SELCLASS_DIALOG3?$AA@ 2001ea2c SelHero.obj + 0002:00000a40 ??_C@_0P@NMKB@SELLIST_DIALOG?$AA@ 2001ea40 SelHero.obj + 0002:00000a50 ??_C@_0BB@BOPD@ui_art?2heros?4pcx?$AA@ 2001ea50 SelHero.obj + 0002:00000a64 ??_C@_0BD@DLNN@ui_art?2selhero?4pcx?$AA@ 2001ea64 SelHero.obj + 0002:00000a78 ??_C@_01FCOA@?5?$AA@ 2001ea78 SelHero.obj + 0002:00000a7c ??_C@_0P@NONH@SELLOAD_DIALOG?$AA@ 2001ea7c SelHero.obj + 0002:00000a8c ??_C@_0CA@OJGP@D?3?2diablo97?2UISRC?2ui?2SelIPX?4cpp?$AA@ 2001ea8c SelIPX.obj + 0002:00000aac ??_C@_0BC@KDCJ@SELIPXGAME_DIALOG?$AA@ 2001eaac SelIPX.obj + 0002:00000ac0 ??_C@_05GGPB@?$CFs?5?$CFd?$AA@ 2001eac0 SelIPX.obj + 0002:00000ac8 ??_C@_0CC@JIGE@D?3?2diablo97?2UISRC?2ui?2SelModem?4cp@ 2001eac8 SelModem.obj + 0002:00000aec ??_C@_0BA@LJIB@SELMODEM_DIALOG?$AA@ 2001eaec SelModem.obj + 0002:00000afc ??_C@_0BA@MGEN@SELYESNO_DIALOG?$AA@ 2001eafc SelYesNo.obj + 0002:00000b0c ??_C@_0BD@PHDL@ui_art?2mmpopup?4pcx?$AA@ 2001eb0c SelYesNo.obj + 0002:00000b20 ??_C@_0BD@FIJO@ui_art?2swmmpop?4pcx?$AA@ 2001eb20 SelYesNo.obj + 0002:00000b34 ??_C@_0N@NIFL@SELOK_DIALOG?$AA@ 2001eb34 SelYesNo.obj + 0002:00000b44 ??_C@_0BA@FNHM@SPAWNERR_DIALOG?$AA@ 2001eb44 SelYesNo.obj + 0002:00000b54 ??_C@_0P@HIFB@SUPPORT_DIALOG?$AA@ 2001eb54 Support.obj + 0002:00000b64 ??_C@_0BD@PBBB@ui_art?2support?4pcx?$AA@ 2001eb64 Support.obj + 0002:00000b78 ??_C@_0M@PELL@IDR_SUPPORT?$AA@ 2001eb78 Support.obj + 0002:00000b84 ??_C@_0CB@LJMO@D?3?2diablo97?2UISRC?2ui?2Support?4cpp@ 2001eb84 Support.obj + 0002:00000ba8 ??_C@_0BP@PHDJ@D?3?2diablo97?2UISRC?2ui?2Title?4cpp?$AA@ 2001eba8 Title.obj + 0002:00000bc8 ??_C@_0BD@MLLC@TITLESCREEN_DIALOG?$AA@ 2001ebc8 Title.obj + 0002:00000bdc ??_C@_0BE@CEDF@ui_art?2hf_logo1?4pcx?$AA@ 2001ebdc Title.obj + 0002:00000bf0 ??_C@_0BE@NIB@ui_art?2hf_title?4pcx?$AA@ 2001ebf0 Title.obj + 0002:00000c04 ??_C@_0BH@NECI@sfx?2items?2titlemov?4wav?$AA@ 2001ec04 UiSnd.obj + 0002:00000c1c ??_C@_0BH@HDHI@sfx?2items?2titlslct?4wav?$AA@ 2001ec1c UiSnd.obj + 0002:00000c44 ??_C@_05EODD@IsTNT?$AA@ 2001ec44 LIBCMT:dllcrt0.obj + 0002:00000c4c ??_C@_0N@IDOE@kernel32?4dll?$AA@ 2001ec4c LIBCMT:dllcrt0.obj + 0002:00000c60 ___lookuptable 2001ec60 LIBCMT:output.obj + 0002:00000cbc ??_C@_1O@POHA@?$AA?$CI?$AAn?$AAu?$AAl?$AAl?$AA?$CJ?$AA?$AA@ 2001ecbc LIBCMT:output.obj + 0002:00000ccc ??_C@_06ONKE@?$CInull?$CJ?$AA@ 2001eccc LIBCMT:output.obj + 0002:00000cd8 ___dnames 2001ecd8 LIBCMT:timeset.obj + 0002:00000cf0 ___mnames 2001ecf0 LIBCMT:timeset.obj + 0002:00000d18 ??_C@_02JHIA@TZ?$AA@ 2001ed18 LIBCMT:tzset.obj + 0002:00000d1c ??_C@_01A@?$AA?$AA@ 2001ed1c LIBCMT:aw_map.obj + 0002:00000d20 ??_C@_13A@?$AA?$AA?$AA?$AA@ 2001ed20 LIBCMT:aw_map.obj + 0002:00000d24 ??_C@_07PCLE@LC_TIME?$AA@ 2001ed24 LIBCMT:setlocal.obj + 0002:00000d2c ??_C@_0L@NKG@LC_NUMERIC?$AA@ 2001ed2c LIBCMT:setlocal.obj + 0002:00000d38 ??_C@_0M@CBIH@LC_MONETARY?$AA@ 2001ed38 LIBCMT:setlocal.obj + 0002:00000d44 ??_C@_08LFGE@LC_CTYPE?$AA@ 2001ed44 LIBCMT:setlocal.obj + 0002:00000d50 ??_C@_0L@CFLC@LC_COLLATE?$AA@ 2001ed50 LIBCMT:setlocal.obj + 0002:00000d5c ??_C@_06GCPK@LC_ALL?$AA@ 2001ed5c LIBCMT:setlocal.obj + 0002:00000d64 ??_C@_01PJCK@?4?$AA@ 2001ed64 LIBCMT:setlocal.obj + 0002:00000d68 ??_C@_0P@GGKG@runtime?5error?5?$AA@ 2001ed68 LIBCMT:crt0msg.obj + 0002:00000d78 ??_C@_02PIMC@?$AN?6?$AA@ 2001ed78 LIBCMT:crt0msg.obj + 0002:00000d7c ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 2001ed7c LIBCMT:crt0msg.obj + 0002:00000d8c ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 2001ed8c LIBCMT:crt0msg.obj + 0002:00000d9c ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 2001ed9c LIBCMT:crt0msg.obj + 0002:00000dac ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 2001edac LIBCMT:crt0msg.obj + 0002:00000dd4 ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 2001edd4 LIBCMT:crt0msg.obj + 0002:00000e0c ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 2001ee0c LIBCMT:crt0msg.obj + 0002:00000e44 ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 2001ee44 LIBCMT:crt0msg.obj + 0002:00000e6c ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 2001ee6c LIBCMT:crt0msg.obj + 0002:00000ea4 ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 2001eea4 LIBCMT:crt0msg.obj + 0002:00000ed0 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 2001eed0 LIBCMT:crt0msg.obj + 0002:00000ef4 ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 2001eef4 LIBCMT:crt0msg.obj + 0002:00000f24 ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 2001ef24 LIBCMT:crt0msg.obj + 0002:00000f50 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 2001ef50 LIBCMT:crt0msg.obj + 0002:00000f74 ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 2001ef74 LIBCMT:crt0msg.obj + 0002:00000fa0 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 2001efa0 LIBCMT:crt0msg.obj + 0002:00000fcc ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 2001efcc LIBCMT:crt0msg.obj + 0002:00000ff4 ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 2001eff4 LIBCMT:crt0msg.obj + 0002:0000101c ??_C@_02JJJH@?6?6?$AA@ 2001f01c LIBCMT:crt0msg.obj + 0002:00001020 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 2001f020 LIBCMT:crt0msg.obj + 0002:0000103c ??_C@_03NAME@?4?4?4?$AA@ 2001f03c LIBCMT:crt0msg.obj + 0002:00001040 ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 2001f040 LIBCMT:crt0msg.obj + 0002:00001058 ??_C@_0O@GLHB@united?9states?$AA@ 2001f058 LIBCMT:getqloc.obj + 0002:00001068 ??_C@_0P@IIKK@united?9kingdom?$AA@ 2001f068 LIBCMT:getqloc.obj + 0002:00001078 ??_C@_0O@ILBP@united?5states?$AA@ 2001f078 LIBCMT:getqloc.obj + 0002:00001088 ??_C@_0P@KBEK@united?5kingdom?$AA@ 2001f088 LIBCMT:getqloc.obj + 0002:00001098 ??_C@_03IGKO@twn?$AA@ 2001f098 LIBCMT:getqloc.obj + 0002:0000109c ??_C@_06CMKP@turkey?$AA@ 2001f09c LIBCMT:getqloc.obj + 0002:000010a4 ??_C@_03PMGP@tur?$AA@ 2001f0a4 LIBCMT:getqloc.obj + 0002:000010a8 ??_C@_06OBJC@taiwan?$AA@ 2001f0a8 LIBCMT:getqloc.obj + 0002:000010b0 ??_C@_0M@EKGN@switzerland?$AA@ 2001f0b0 LIBCMT:getqloc.obj + 0002:000010bc ??_C@_06PJFL@sweden?$AA@ 2001f0bc LIBCMT:getqloc.obj + 0002:000010c4 ??_C@_03JDMO@swe?$AA@ 2001f0c4 LIBCMT:getqloc.obj + 0002:000010c8 ??_C@_03COKO@svk?$AA@ 2001f0c8 LIBCMT:getqloc.obj + 0002:000010cc ??_C@_05FBKI@spain?$AA@ 2001f0cc LIBCMT:getqloc.obj + 0002:000010d4 ??_C@_0M@BDFM@south?9korea?$AA@ 2001f0d4 LIBCMT:getqloc.obj + 0002:000010e0 ??_C@_0M@HNHN@south?5korea?$AA@ 2001f0e0 LIBCMT:getqloc.obj + 0002:000010ec ??_C@_03FANM@sgp?$AA@ 2001f0ec LIBCMT:getqloc.obj + 0002:000010f0 ??_C@_09EOGO@singapore?$AA@ 2001f0f0 LIBCMT:getqloc.obj + 0002:000010fc ??_C@_06NHNE@russia?$AA@ 2001f0fc LIBCMT:getqloc.obj + 0002:00001104 ??_C@_03CKBC@prt?$AA@ 2001f104 LIBCMT:getqloc.obj + 0002:00001108 ??_C@_08EJOH@pr?9china?$AA@ 2001f108 LIBCMT:getqloc.obj + 0002:00001114 ??_C@_08CHMG@pr?5china?$AA@ 2001f114 LIBCMT:getqloc.obj + 0002:00001120 ??_C@_08GGAN@portugal?$AA@ 2001f120 LIBCMT:getqloc.obj + 0002:0000112c ??_C@_06NOHH@poland?$AA@ 2001f12c LIBCMT:getqloc.obj + 0002:00001134 ??_C@_03EECH@pol?$AA@ 2001f134 LIBCMT:getqloc.obj + 0002:00001138 ??_C@_03DPCG@nzl?$AA@ 2001f138 LIBCMT:getqloc.obj + 0002:0000113c ??_C@_02OCJK@nz?$AA@ 2001f13c LIBCMT:getqloc.obj + 0002:00001140 ??_C@_06BAPG@norway?$AA@ 2001f140 LIBCMT:getqloc.obj + 0002:00001148 ??_C@_0M@MMKA@new?9zealand?$AA@ 2001f148 LIBCMT:getqloc.obj + 0002:00001154 ??_C@_0M@OFEA@new?5zealand?$AA@ 2001f154 LIBCMT:getqloc.obj + 0002:00001160 ??_C@_0M@POGE@netherlands?$AA@ 2001f160 LIBCMT:getqloc.obj + 0002:0000116c ??_C@_06KJLN@mexico?$AA@ 2001f16c LIBCMT:getqloc.obj + 0002:00001174 ??_C@_03HEJJ@mex?$AA@ 2001f174 LIBCMT:getqloc.obj + 0002:00001178 ??_C@_05OOCK@korea?$AA@ 2001f178 LIBCMT:getqloc.obj + 0002:00001180 ??_C@_05EEKJ@japan?$AA@ 2001f180 LIBCMT:getqloc.obj + 0002:00001188 ??_C@_05DHEA@italy?$AA@ 2001f188 LIBCMT:getqloc.obj + 0002:00001190 ??_C@_03DEBD@irl?$AA@ 2001f190 LIBCMT:getqloc.obj + 0002:00001194 ??_C@_07JJLD@ireland?$AA@ 2001f194 LIBCMT:getqloc.obj + 0002:0000119c ??_C@_07FGBB@iceland?$AA@ 2001f19c LIBCMT:getqloc.obj + 0002:000011a4 ??_C@_07IDDB@hungary?$AA@ 2001f1a4 LIBCMT:getqloc.obj + 0002:000011ac ??_C@_09MGEH@hong?9kong?$AA@ 2001f1ac LIBCMT:getqloc.obj + 0002:000011b8 ??_C@_09OHNN@hong?5kong?$AA@ 2001f1b8 LIBCMT:getqloc.obj + 0002:000011c4 ??_C@_07CCAK@holland?$AA@ 2001f1c4 LIBCMT:getqloc.obj + 0002:000011cc ??_C@_03EFD@hkg?$AA@ 2001f1cc LIBCMT:getqloc.obj + 0002:000011d0 ??_C@_06FLIB@greece?$AA@ 2001f1d0 LIBCMT:getqloc.obj + 0002:000011d8 ??_C@_0O@MEPL@great?5britain?$AA@ 2001f1d8 LIBCMT:getqloc.obj + 0002:000011e8 ??_C@_03EJIM@grc?$AA@ 2001f1e8 LIBCMT:getqloc.obj + 0002:000011ec ??_C@_07CPP@germany?$AA@ 2001f1ec LIBCMT:getqloc.obj + 0002:000011f4 ??_C@_03CAMC@gbr?$AA@ 2001f1f4 LIBCMT:getqloc.obj + 0002:000011f8 ??_C@_06DNOH@france?$AA@ 2001f1f8 LIBCMT:getqloc.obj + 0002:00001200 ??_C@_07IMFA@finland?$AA@ 2001f200 LIBCMT:getqloc.obj + 0002:00001208 ??_C@_07LGIB@england?$AA@ 2001f208 LIBCMT:getqloc.obj + 0002:00001210 ??_C@_03GOFI@dnk?$AA@ 2001f210 LIBCMT:getqloc.obj + 0002:00001214 ??_C@_07ILKC@denmark?$AA@ 2001f214 LIBCMT:getqloc.obj + 0002:0000121c ??_C@_03ELPA@cze?$AA@ 2001f21c LIBCMT:getqloc.obj + 0002:00001220 ??_C@_03KHAN@chn?$AA@ 2001f220 LIBCMT:getqloc.obj + 0002:00001224 ??_C@_05NMPB@china?$AA@ 2001f224 LIBCMT:getqloc.obj + 0002:0000122c ??_C@_03MAM@che?$AA@ 2001f22c LIBCMT:getqloc.obj + 0002:00001230 ??_C@_06CJAO@canada?$AA@ 2001f230 LIBCMT:getqloc.obj + 0002:00001238 ??_C@_03EPD@can?$AA@ 2001f238 LIBCMT:getqloc.obj + 0002:0000123c ??_C@_07GN@britain?$AA@ 2001f23c LIBCMT:getqloc.obj + 0002:00001244 ??_C@_06GEHJ@brazil?$AA@ 2001f244 LIBCMT:getqloc.obj + 0002:0000124c ??_C@_03GOO@bra?$AA@ 2001f24c LIBCMT:getqloc.obj + 0002:00001250 ??_C@_07ECDD@belgium?$AA@ 2001f250 LIBCMT:getqloc.obj + 0002:00001258 ??_C@_03FJGB@bel?$AA@ 2001f258 LIBCMT:getqloc.obj + 0002:0000125c ??_C@_03DIDL@aut?$AA@ 2001f25c LIBCMT:getqloc.obj + 0002:00001260 ??_C@_07OIK@austria?$AA@ 2001f260 LIBCMT:getqloc.obj + 0002:00001268 ??_C@_09MKKB@australia?$AA@ 2001f268 LIBCMT:getqloc.obj + 0002:00001274 ??_C@_03GNNO@aus?$AA@ 2001f274 LIBCMT:getqloc.obj + 0002:00001278 ??_C@_07DLAK@america?$AA@ 2001f278 LIBCMT:getqloc.obj + 0002:00001280 ??_C@_03IPEP@usa?$AA@ 2001f280 LIBCMT:getqloc.obj + 0002:00001284 ??_C@_02PILH@us?$AA@ 2001f284 LIBCMT:getqloc.obj + 0002:00001288 ??_C@_02FHP@uk?$AA@ 2001f288 LIBCMT:getqloc.obj + 0002:0000128c ??_C@_07BNFK@turkish?$AA@ 2001f28c LIBCMT:getqloc.obj + 0002:00001294 ??_C@_03MKGF@trk?$AA@ 2001f294 LIBCMT:getqloc.obj + 0002:00001298 ??_C@_05DEAI@swiss?$AA@ 2001f298 LIBCMT:getqloc.obj + 0002:000012a0 ??_C@_07ENHD@swedish?$AA@ 2001f2a0 LIBCMT:getqloc.obj + 0002:000012a8 ??_C@_03IFGE@sve?$AA@ 2001f2a8 LIBCMT:getqloc.obj + 0002:000012ac ??_C@_0P@NJBN@spanish?9modern?$AA@ 2001f2ac LIBCMT:getqloc.obj + 0002:000012bc ??_C@_0BA@NHDN@spanish?9mexican?$AA@ 2001f2bc LIBCMT:getqloc.obj + 0002:000012cc ??_C@_07EFLC@spanish?$AA@ 2001f2cc LIBCMT:getqloc.obj + 0002:000012d4 ??_C@_06KFFJ@slovak?$AA@ 2001f2d4 LIBCMT:getqloc.obj + 0002:000012dc ??_C@_03EBAN@sky?$AA@ 2001f2dc LIBCMT:getqloc.obj + 0002:000012e0 ??_C@_07JNDN@russian?$AA@ 2001f2e0 LIBCMT:getqloc.obj + 0002:000012e8 ??_C@_03LKIP@rus?$AA@ 2001f2e8 LIBCMT:getqloc.obj + 0002:000012ec ??_C@_03LCE@ptg?$AA@ 2001f2ec LIBCMT:getqloc.obj + 0002:000012f0 ??_C@_03LOP@ptb?$AA@ 2001f2f0 LIBCMT:getqloc.obj + 0002:000012f4 ??_C@_0BF@KMMM@portuguese?9brazilian?$AA@ 2001f2f4 LIBCMT:getqloc.obj + 0002:0000130c ??_C@_0L@HNPF@portuguese?$AA@ 2001f30c LIBCMT:getqloc.obj + 0002:00001318 ??_C@_06CDNL@polish?$AA@ 2001f318 LIBCMT:getqloc.obj + 0002:00001320 ??_C@_03CKDN@plk?$AA@ 2001f320 LIBCMT:getqloc.obj + 0002:00001324 ??_C@_0BC@BAAE@norwegian?9nynorsk?$AA@ 2001f324 LIBCMT:getqloc.obj + 0002:00001338 ??_C@_0BB@PBHK@norwegian?9bokmal?$AA@ 2001f338 LIBCMT:getqloc.obj + 0002:0000134c ??_C@_09EHKL@norwegian?$AA@ 2001f34c LIBCMT:getqloc.obj + 0002:00001358 ??_C@_03BLDF@nor?$AA@ 2001f358 LIBCMT:getqloc.obj + 0002:0000135c ??_C@_03EMKB@non?$AA@ 2001f35c LIBCMT:getqloc.obj + 0002:00001360 ??_C@_03HGMI@nld?$AA@ 2001f360 LIBCMT:getqloc.obj + 0002:00001364 ??_C@_03IJLK@nlb?$AA@ 2001f364 LIBCMT:getqloc.obj + 0002:00001368 ??_C@_06KKAE@korean?$AA@ 2001f368 LIBCMT:getqloc.obj + 0002:00001370 ??_C@_03BHJ@kor?$AA@ 2001f370 LIBCMT:getqloc.obj + 0002:00001374 ??_C@_03LKFD@jpn?$AA@ 2001f374 LIBCMT:getqloc.obj + 0002:00001378 ??_C@_08KCAB@japanese?$AA@ 2001f378 LIBCMT:getqloc.obj + 0002:00001384 ??_C@_03OLMB@its?$AA@ 2001f384 LIBCMT:getqloc.obj + 0002:00001388 ??_C@_0O@BEAN@italian?9swiss?$AA@ 2001f388 LIBCMT:getqloc.obj + 0002:00001398 ??_C@_07CBME@italian?$AA@ 2001f398 LIBCMT:getqloc.obj + 0002:000013a0 ??_C@_03BHJP@ita?$AA@ 2001f3a0 LIBCMT:getqloc.obj + 0002:000013a4 ??_C@_03CCLJ@isl?$AA@ 2001f3a4 LIBCMT:getqloc.obj + 0002:000013a8 ??_C@_0O@OIFK@irish?9english?$AA@ 2001f3a8 LIBCMT:getqloc.obj + 0002:000013b8 ??_C@_09OEEF@icelandic?$AA@ 2001f3b8 LIBCMT:getqloc.obj + 0002:000013c4 ??_C@_09IBNG@hungarian?$AA@ 2001f3c4 LIBCMT:getqloc.obj + 0002:000013d0 ??_C@_03FCHO@hun?$AA@ 2001f3d0 LIBCMT:getqloc.obj + 0002:000013d4 ??_C@_05DOKD@greek?$AA@ 2001f3d4 LIBCMT:getqloc.obj + 0002:000013dc ??_C@_0N@NBPL@german?9swiss?$AA@ 2001f3dc LIBCMT:getqloc.obj + 0002:000013ec ??_C@_0BA@MKDC@german?9austrian?$AA@ 2001f3ec LIBCMT:getqloc.obj + 0002:000013fc ??_C@_06IAFA@german?$AA@ 2001f3fc LIBCMT:getqloc.obj + 0002:00001404 ??_C@_03LCOK@frs?$AA@ 2001f404 LIBCMT:getqloc.obj + 0002:00001408 ??_C@_0N@ODNB@french?9swiss?$AA@ 2001f408 LIBCMT:getqloc.obj + 0002:00001418 ??_C@_0BA@NABK@french?9canadian?$AA@ 2001f418 LIBCMT:getqloc.obj + 0002:00001428 ??_C@_0P@CJNO@french?9belgian?$AA@ 2001f428 LIBCMT:getqloc.obj + 0002:00001438 ??_C@_06PMNM@french?$AA@ 2001f438 LIBCMT:getqloc.obj + 0002:00001440 ??_C@_03BLJK@frc?$AA@ 2001f440 LIBCMT:getqloc.obj + 0002:00001444 ??_C@_03LBAN@frb?$AA@ 2001f444 LIBCMT:getqloc.obj + 0002:00001448 ??_C@_03EOLE@fra?$AA@ 2001f448 LIBCMT:getqloc.obj + 0002:0000144c ??_C@_07DLFI@finnish?$AA@ 2001f44c LIBCMT:getqloc.obj + 0002:00001454 ??_C@_03KLOL@fin?$AA@ 2001f454 LIBCMT:getqloc.obj + 0002:00001458 ??_C@_03KNMC@esp?$AA@ 2001f458 LIBCMT:getqloc.obj + 0002:0000145c ??_C@_03KPHI@esn?$AA@ 2001f45c LIBCMT:getqloc.obj + 0002:00001460 ??_C@_03FAMB@esm?$AA@ 2001f460 LIBCMT:getqloc.obj + 0002:00001464 ??_C@_03DPKJ@enz?$AA@ 2001f464 LIBCMT:getqloc.obj + 0002:00001468 ??_C@_03DOPE@enu?$AA@ 2001f468 LIBCMT:getqloc.obj + 0002:0000146c ??_C@_03GJGA@eni?$AA@ 2001f46c LIBCMT:getqloc.obj + 0002:00001470 ??_C@_0M@LJOL@english?9usa?$AA@ 2001f470 LIBCMT:getqloc.obj + 0002:0000147c ??_C@_0L@FMNC@english?9us?$AA@ 2001f47c LIBCMT:getqloc.obj + 0002:00001488 ??_C@_0L@KBBK@english?9uk?$AA@ 2001f488 LIBCMT:getqloc.obj + 0002:00001494 ??_C@_0L@EGPP@english?9nz?$AA@ 2001f494 LIBCMT:getqloc.obj + 0002:000014a0 ??_C@_0M@PMJI@english?9ire?$AA@ 2001f4a0 LIBCMT:getqloc.obj + 0002:000014ac ??_C@_0M@DCFH@english?9can?$AA@ 2001f4ac LIBCMT:getqloc.obj + 0002:000014b8 ??_C@_0M@FLHK@english?9aus?$AA@ 2001f4b8 LIBCMT:getqloc.obj + 0002:000014c4 ??_C@_0BB@HNCK@english?9american?$AA@ 2001f4c4 LIBCMT:getqloc.obj + 0002:000014d8 ??_C@_07ELCN@english?$AA@ 2001f4d8 LIBCMT:getqloc.obj + 0002:000014e0 ??_C@_03MCKK@eng?$AA@ 2001f4e0 LIBCMT:getqloc.obj + 0002:000014e4 ??_C@_03GIPG@enc?$AA@ 2001f4e4 LIBCMT:getqloc.obj + 0002:000014e8 ??_C@_03DNNI@ena?$AA@ 2001f4e8 LIBCMT:getqloc.obj + 0002:000014ec ??_C@_03EEPO@ell?$AA@ 2001f4ec LIBCMT:getqloc.obj + 0002:000014f0 ??_C@_0O@PAMI@dutch?9belgian?$AA@ 2001f4f0 LIBCMT:getqloc.obj + 0002:00001500 ??_C@_05NPEI@dutch?$AA@ 2001f500 LIBCMT:getqloc.obj + 0002:00001508 ??_C@_03OCEJ@deu?$AA@ 2001f508 LIBCMT:getqloc.obj + 0002:0000150c ??_C@_03BNDL@des?$AA@ 2001f50c LIBCMT:getqloc.obj + 0002:00001510 ??_C@_03OBGF@dea?$AA@ 2001f510 LIBCMT:getqloc.obj + 0002:00001514 ??_C@_06KEAI@danish?$AA@ 2001f514 LIBCMT:getqloc.obj + 0002:0000151c ??_C@_03LKJC@dan?$AA@ 2001f51c LIBCMT:getqloc.obj + 0002:00001520 ??_C@_05BMOA@czech?$AA@ 2001f520 LIBCMT:getqloc.obj + 0002:00001528 ??_C@_03LPJK@csy?$AA@ 2001f528 LIBCMT:getqloc.obj + 0002:0000152c ??_C@_03POL@cht?$AA@ 2001f52c LIBCMT:getqloc.obj + 0002:00001530 ??_C@_03FKAO@chs?$AA@ 2001f530 LIBCMT:getqloc.obj + 0002:00001534 ??_C@_0BE@FPEJ@chinese?9traditional?$AA@ 2001f534 LIBCMT:getqloc.obj + 0002:00001548 ??_C@_0BC@CHFL@chinese?9singapore?$AA@ 2001f548 LIBCMT:getqloc.obj + 0002:0000155c ??_C@_0BD@DCMH@chinese?9simplified?$AA@ 2001f55c LIBCMT:getqloc.obj + 0002:00001570 ??_C@_0BB@JMOE@chinese?9hongkong?$AA@ 2001f570 LIBCMT:getqloc.obj + 0002:00001584 ??_C@_07NGFN@chinese?$AA@ 2001f584 LIBCMT:getqloc.obj + 0002:0000158c ??_C@_03PCOI@chi?$AA@ 2001f58c LIBCMT:getqloc.obj + 0002:00001590 ??_C@_03FIHP@chh?$AA@ 2001f590 LIBCMT:getqloc.obj + 0002:00001594 ??_C@_08HFLO@canadian?$AA@ 2001f594 LIBCMT:getqloc.obj + 0002:000015a0 ??_C@_07INIJ@belgian?$AA@ 2001f5a0 LIBCMT:getqloc.obj + 0002:000015a8 ??_C@_0L@LCCA@australian?$AA@ 2001f5a8 LIBCMT:getqloc.obj + 0002:000015b4 ??_C@_0BB@BJIO@american?9english?$AA@ 2001f5b4 LIBCMT:getqloc.obj + 0002:000015c8 ??_C@_0BB@DAGO@american?5english?$AA@ 2001f5c8 LIBCMT:getqloc.obj + 0002:000015dc ??_C@_08HENB@american?$AA@ 2001f5dc LIBCMT:getqloc.obj + 0002:000015e8 ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 2001f5e8 LIBCMT:crtmbox.obj + 0002:000015fc ??_C@_0BA@GILI@GetActiveWindow?$AA@ 2001f5fc LIBCMT:crtmbox.obj + 0002:0000160c ??_C@_0M@PKCK@MessageBoxA?$AA@ 2001f60c LIBCMT:crtmbox.obj + 0002:00001618 ??_C@_0L@HKL@user32?4dll?$AA@ 2001f618 LIBCMT:crtmbox.obj + 0002:00001624 ??_C@_07CJME@H?3mm?3ss?$AA@ 2001f624 LIBCMT:strftime.obj + 0002:0000162c ??_C@_0BE@MHI@dddd?0?5MMMM?5dd?0?5yyyy?$AA@ 2001f62c LIBCMT:strftime.obj + 0002:00001640 ??_C@_06HCAD@M?1d?1yy?$AA@ 2001f640 LIBCMT:strftime.obj + 0002:00001648 ??_C@_02DBLP@PM?$AA@ 2001f648 LIBCMT:strftime.obj + 0002:0000164c ??_C@_02ENLM@AM?$AA@ 2001f64c LIBCMT:strftime.obj + 0002:00001650 ??_C@_08LIDF@December?$AA@ 2001f650 LIBCMT:strftime.obj + 0002:0000165c ??_C@_08NJLI@November?$AA@ 2001f65c LIBCMT:strftime.obj + 0002:00001668 ??_C@_07IAMM@October?$AA@ 2001f668 LIBCMT:strftime.obj + 0002:00001670 ??_C@_09MKGD@September?$AA@ 2001f670 LIBCMT:strftime.obj + 0002:0000167c ??_C@_06PADP@August?$AA@ 2001f67c LIBCMT:strftime.obj + 0002:00001684 ??_C@_04PIJO@July?$AA@ 2001f684 LIBCMT:strftime.obj + 0002:0000168c ??_C@_04ICFP@June?$AA@ 2001f68c LIBCMT:strftime.obj + 0002:00001694 ??_C@_05JFGC@April?$AA@ 2001f694 LIBCMT:strftime.obj + 0002:0000169c ??_C@_05FGPD@March?$AA@ 2001f69c LIBCMT:strftime.obj + 0002:000016a4 ??_C@_08PGBA@February?$AA@ 2001f6a4 LIBCMT:strftime.obj + 0002:000016b0 ??_C@_07BPKJ@January?$AA@ 2001f6b0 LIBCMT:strftime.obj + 0002:000016b8 ??_C@_03PGJO@Dec?$AA@ 2001f6b8 LIBCMT:strftime.obj + 0002:000016bc ??_C@_03PDLM@Nov?$AA@ 2001f6bc LIBCMT:strftime.obj + 0002:000016c0 ??_C@_03BLHK@Oct?$AA@ 2001f6c0 LIBCMT:strftime.obj + 0002:000016c4 ??_C@_03DPFM@Sep?$AA@ 2001f6c4 LIBCMT:strftime.obj + 0002:000016c8 ??_C@_03CMCH@Aug?$AA@ 2001f6c8 LIBCMT:strftime.obj + 0002:000016cc ??_C@_03OBKI@Jul?$AA@ 2001f6cc LIBCMT:strftime.obj + 0002:000016d0 ??_C@_03LEIG@Jun?$AA@ 2001f6d0 LIBCMT:strftime.obj + 0002:000016d4 ??_C@_03MGHB@May?$AA@ 2001f6d4 LIBCMT:strftime.obj + 0002:000016d8 ??_C@_03MJJM@Apr?$AA@ 2001f6d8 LIBCMT:strftime.obj + 0002:000016dc ??_C@_03GNHA@Mar?$AA@ 2001f6dc LIBCMT:strftime.obj + 0002:000016e0 ??_C@_03PICE@Feb?$AA@ 2001f6e0 LIBCMT:strftime.obj + 0002:000016e4 ??_C@_03IEIF@Jan?$AA@ 2001f6e4 LIBCMT:strftime.obj + 0002:000016e8 ??_C@_08FAKH@Saturday?$AA@ 2001f6e8 LIBCMT:strftime.obj + 0002:000016f4 ??_C@_06ONCK@Friday?$AA@ 2001f6f4 LIBCMT:strftime.obj + 0002:000016fc ??_C@_08CCFO@Thursday?$AA@ 2001f6fc LIBCMT:strftime.obj + 0002:00001708 ??_C@_09PBIN@Wednesday?$AA@ 2001f708 LIBCMT:strftime.obj + 0002:00001714 ??_C@_07BMBC@Tuesday?$AA@ 2001f714 LIBCMT:strftime.obj + 0002:0000171c ??_C@_06CHLK@Monday?$AA@ 2001f71c LIBCMT:strftime.obj + 0002:00001724 ??_C@_06OOEM@Sunday?$AA@ 2001f724 LIBCMT:strftime.obj + 0002:0000172c ??_C@_03MPKK@Sat?$AA@ 2001f72c LIBCMT:strftime.obj + 0002:00001730 ??_C@_03FINJ@Fri?$AA@ 2001f730 LIBCMT:strftime.obj + 0002:00001734 ??_C@_03HIKC@Thu?$AA@ 2001f734 LIBCMT:strftime.obj + 0002:00001738 ??_C@_03HECK@Wed?$AA@ 2001f738 LIBCMT:strftime.obj + 0002:0000173c ??_C@_03ECCP@Tue?$AA@ 2001f73c LIBCMT:strftime.obj + 0002:00001740 ??_C@_03PIEP@Mon?$AA@ 2001f740 LIBCMT:strftime.obj + 0002:00001744 ??_C@_03FHEP@Sun?$AA@ 2001f744 LIBCMT:strftime.obj + 0003:00000000 ___xc_a 20020000 LIBCMT:crt0init.obj + 0003:00000004 ___xc_z 20020004 LIBCMT:crt0init.obj + 0003:00000008 ___xi_a 20020008 LIBCMT:crt0init.obj + 0003:00000010 ___xi_z 20020010 LIBCMT:crt0init.obj + 0003:00000014 ___xp_a 20020014 LIBCMT:crt0init.obj + 0003:0000001c ___xp_z 2002001c LIBCMT:crt0init.obj + 0003:00000020 ___xt_a 20020020 LIBCMT:crt0init.obj + 0003:00000024 ___xt_z 20020024 LIBCMT:crt0init.obj + 0003:00000038 ?sgSysColorTbl@@3PAU_SNET_DATA_SYSCOLORTABLE@@A 20020038 connect.obj + 0003:00000510 __aexit_rtn 20020510 LIBCMT:dllcrt0.obj + 0003:00000514 ___nullstring 20020514 LIBCMT:output.obj + 0003:00000518 ___wnullstring 20020518 LIBCMT:output.obj + 0003:00000520 __pctype 20020520 LIBCMT:ctype.obj + 0003:00000524 __pwctype 20020524 LIBCMT:ctype.obj + 0003:00000528 __ctype 20020528 LIBCMT:ctype.obj + 0003:0000072c ___mb_cur_max 2002072c LIBCMT:nlsdata1.obj + 0003:00000730 ___decimal_point 20020730 LIBCMT:nlsdata1.obj + 0003:00000734 ___decimal_point_length 20020734 LIBCMT:nlsdata1.obj + 0003:00000740 __timezone 20020740 LIBCMT:timeset.obj + 0003:00000744 __daylight 20020744 LIBCMT:timeset.obj + 0003:00000748 __dstbias 20020748 LIBCMT:timeset.obj + 0003:000007d0 __tzname 200207d0 LIBCMT:timeset.obj + 0003:00000968 ___tlsindex 20020968 LIBCMT:tidtable.obj + 0003:00000970 __XcptActTab 20020970 LIBCMT:winxfltr.obj + 0003:000009e8 __First_FPE_Indx 200209e8 LIBCMT:winxfltr.obj + 0003:000009ec __Num_FPE 200209ec LIBCMT:winxfltr.obj + 0003:000009f0 __XcptActTabSize 200209f0 LIBCMT:winxfltr.obj + 0003:000009f4 __XcptActTabCount 200209f4 LIBCMT:winxfltr.obj + 0003:000009f8 __NLG_Destination 200209f8 LIBCMT:exsup.obj + 0003:00000a08 __locktable 20020a08 LIBCMT:mlock.obj + 0003:00000c28 ___badioinfo 20020c28 LIBCMT:ioinit.obj + 0003:00000d48 __amblksiz 20020d48 LIBCMT:heapinit.obj + 0003:00000de0 __iob 20020de0 LIBCMT:_file.obj + 0003:00001060 __cfltcvt_tab 20021060 LIBCMT:cmiscdat.obj + 0003:00001080 __lpdays 20021080 LIBCMT:days.obj + 0003:000010b8 __days 200210b8 LIBCMT:days.obj + 0003:000010f0 ___small_block_heap 200210f0 LIBCMT:sbheap.obj + 0003:00003114 ___sbh_threshold 20023114 LIBCMT:sbheap.obj + 0003:00003120 ___rg_lang_rec 20023120 LIBCMT:getqloc.obj + 0003:00003438 ___rg_ctry_rec 20023438 LIBCMT:getqloc.obj + 0003:000036f0 ___rgrgwlang 200236f0 LIBCMT:getqloc.obj + 0003:00003920 ___lc_time_c 20023920 LIBCMT:strftime.obj + 0003:000039cc ___lc_time_curr 200239cc LIBCMT:strftime.obj + 0003:000039d0 ___lconv_static_decimal 200239d0 LIBCMT:lconv.obj + 0003:000039d8 ___lconv_c 200239d8 LIBCMT:lconv.obj + 0003:00003a08 ___lconv 20023a08 LIBCMT:lconv.obj + 0003:000063c4 ?global_hinstance@@3PAUHINSTANCE__@@A 200263c4 Diabloui.obj + 0003:000063c8 ?ui_background@@3PAEA 200263c8 Diabloui.obj + 0003:000063d0 ?ui_backgroundsize@@3UtagSIZE@@A 200263d0 Diabloui.obj + 0003:00007230 __aenvptr 20027230 LIBCMT:dllcrt0.obj + 0003:00007234 __wenvptr 20027234 LIBCMT:dllcrt0.obj + 0003:00007238 ___error_mode 20027238 LIBCMT:dllcrt0.obj + 0003:0000723c ___app_type 2002723c LIBCMT:dllcrt0.obj + 0003:00007324 __umaskval 20027324 LIBCMT:crt0dat.obj + 0003:00007328 __osver 20027328 LIBCMT:crt0dat.obj + 0003:0000732c __winver 2002732c LIBCMT:crt0dat.obj + 0003:00007330 __winmajor 20027330 LIBCMT:crt0dat.obj + 0003:00007334 __winminor 20027334 LIBCMT:crt0dat.obj + 0003:00007338 ___argc 20027338 LIBCMT:crt0dat.obj + 0003:0000733c ___argv 2002733c LIBCMT:crt0dat.obj + 0003:00007340 ___wargv 20027340 LIBCMT:crt0dat.obj + 0003:00007344 __environ 20027344 LIBCMT:crt0dat.obj + 0003:00007348 ___initenv 20027348 LIBCMT:crt0dat.obj + 0003:0000734c __wenviron 2002734c LIBCMT:crt0dat.obj + 0003:00007350 ___winitenv 20027350 LIBCMT:crt0dat.obj + 0003:00007354 __pgmptr 20027354 LIBCMT:crt0dat.obj + 0003:00007358 __wpgmptr 20027358 LIBCMT:crt0dat.obj + 0003:0000735c __exitflag 2002735c LIBCMT:crt0dat.obj + 0003:00007360 __C_Termination_Done 20027360 LIBCMT:crt0dat.obj + 0003:00007364 __C_Exit_Done 20027364 LIBCMT:crt0dat.obj + 0003:000073e0 ___lc_handle 200273e0 LIBCMT:nlsdata2.obj + 0003:000073f8 ___lc_codepage 200273f8 LIBCMT:nlsdata2.obj + 0003:00007508 __mbctype 20027508 LIBCMT:mbctype.obj + 0003:0000760c ___mbcodepage 2002760c LIBCMT:mbctype.obj + 0003:00007610 ___mblcid 20027610 LIBCMT:mbctype.obj + 0003:00007618 ___mbulinfo 20027618 LIBCMT:mbctype.obj + 0003:00007630 __adbgmsg 20027630 LIBCMT:crt0msg.obj + 0003:00007634 __cflush 20027634 LIBCMT:_file.obj + 0003:00007644 ?_pnhHeap@@3P6AHI@ZA 20027644 LIBCMT:handler.obj + 0003:00007648 __newmode 20027648 LIBCMT:_newmode.obj + 0003:0000764c ___lc_time_intl 2002764c LIBCMT:inittime.obj + 0003:00007668 ___lc_id 20027668 LIBCMT:nlsdata3.obj + 0003:00007698 __alternate_form 20027698 LIBCMT:strftime.obj + 0003:0000769c __no_lead_zeros 2002769c LIBCMT:strftime.obj + 0003:000076a8 ___lconv_static_null 200276a8 LIBCMT:lconv.obj + 0003:000076bc ___piob 200276bc + 0003:000076c0 __bufin 200276c0 + 0003:000086c0 __nstream 200286c0 + 0003:000086c4 __crtheap 200286c4 + 0003:000086e0 ___pioinfo 200286e0 + 0003:000087e0 __nhandle 200287e0 + 0003:000087e4 ___setlc_active 200287e4 + 0003:000087e8 ___unguarded_readlc_active 200287e8 + 0003:000087ec ___onexitend 200287ec + 0003:000087f0 ___onexitbegin 200287f0 + 0003:000087f4 __FPinit 200287f4 + 0003:000087f8 __acmdln 200287f8 + 0003:000087fc __pRawDllMain 200287fc + 0003:00008800 __FPmtinit 20028800 + 0003:00008804 __FPmtterm 20028804 + 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 20029000 kernel32:KERNEL32.dll + 0004:00000014 __IMPORT_DESCRIPTOR_USER32 20029014 user32:USER32.dll + 0004:00000028 __IMPORT_DESCRIPTOR_GDI32 20029028 gdi32:GDI32.dll + 0004:0000003c __IMPORT_DESCRIPTOR_storm 2002903c storm:storm.dll + 0004:00000050 __NULL_IMPORT_DESCRIPTOR 20029050 kernel32:KERNEL32.dll + 0004:0000033c __imp__CreatePalette@4 2002933c gdi32:GDI32.dll + 0004:00000340 __imp__GetPaletteEntries@16 20029340 gdi32:GDI32.dll + 0004:00000344 __imp__GetCurrentPositionEx@8 20029344 gdi32:GDI32.dll + 0004:00000348 __imp__TextOutA@20 20029348 gdi32:GDI32.dll + 0004:0000034c __imp__SetTextAlign@8 2002934c gdi32:GDI32.dll + 0004:00000350 __imp__MoveToEx@16 20029350 gdi32:GDI32.dll + 0004:00000354 __imp__GetTextMetricsA@8 20029354 gdi32:GDI32.dll + 0004:00000358 __imp__ExtTextOutA@32 20029358 gdi32:GDI32.dll + 0004:0000035c __imp__SetBkColor@8 2002935c gdi32:GDI32.dll + 0004:00000360 __imp__SetTextColor@8 20029360 gdi32:GDI32.dll + 0004:00000364 __imp__SelectObject@8 20029364 gdi32:GDI32.dll + 0004:00000368 __imp__CreateFontIndirectA@4 20029368 gdi32:GDI32.dll + 0004:0000036c __imp__GetStockObject@4 2002936c gdi32:GDI32.dll + 0004:00000370 __imp__CreateFontA@56 20029370 gdi32:GDI32.dll + 0004:00000374 __imp__DeleteObject@4 20029374 gdi32:GDI32.dll + 0004:00000378 __imp__GetObjectA@12 20029378 gdi32:GDI32.dll + 0004:0000037c \177GDI32_NULL_THUNK_DATA 2002937c gdi32:GDI32.dll + 0004:00000380 __imp__GlobalMemoryStatus@4 20029380 kernel32:KERNEL32.dll + 0004:00000384 __imp__GetModuleHandleA@4 20029384 kernel32:KERNEL32.dll + 0004:00000388 __imp__SizeofResource@8 20029388 kernel32:KERNEL32.dll + 0004:0000038c __imp__SetLastError@4 2002938c kernel32:KERNEL32.dll + 0004:00000390 __imp__MulDiv@12 20029390 kernel32:KERNEL32.dll + 0004:00000394 __imp__GetLastError@0 20029394 kernel32:KERNEL32.dll + 0004:00000398 __imp__FreeResource@4 20029398 kernel32:KERNEL32.dll + 0004:0000039c __imp__FindResourceA@12 2002939c kernel32:KERNEL32.dll + 0004:000003a0 __imp__LoadResource@8 200293a0 kernel32:KERNEL32.dll + 0004:000003a4 __imp__HeapReAlloc@16 200293a4 kernel32:KERNEL32.dll + 0004:000003a8 __imp__CompareStringW@24 200293a8 kernel32:KERNEL32.dll + 0004:000003ac __imp__CompareStringA@24 200293ac kernel32:KERNEL32.dll + 0004:000003b0 __imp__GetStringTypeW@16 200293b0 kernel32:KERNEL32.dll + 0004:000003b4 __imp__ExitProcess@4 200293b4 kernel32:KERNEL32.dll + 0004:000003b8 __imp__GetStringTypeA@20 200293b8 kernel32:KERNEL32.dll + 0004:000003bc __imp__TlsGetValue@4 200293bc kernel32:KERNEL32.dll + 0004:000003c0 __imp__HeapAlloc@12 200293c0 kernel32:KERNEL32.dll + 0004:000003c4 __imp__TlsAlloc@0 200293c4 kernel32:KERNEL32.dll + 0004:000003c8 __imp__GetCurrentThreadId@0 200293c8 kernel32:KERNEL32.dll + 0004:000003cc __imp__TlsFree@4 200293cc kernel32:KERNEL32.dll + 0004:000003d0 __imp__GetTimeZoneInformation@4 200293d0 kernel32:KERNEL32.dll + 0004:000003d4 __imp__GetVersion@0 200293d4 kernel32:KERNEL32.dll + 0004:000003d8 __imp__HeapFree@12 200293d8 kernel32:KERNEL32.dll + 0004:000003dc __imp__GetCommandLineA@0 200293dc kernel32:KERNEL32.dll + 0004:000003e0 __imp__InterlockedIncrement@4 200293e0 kernel32:KERNEL32.dll + 0004:000003e4 __imp__GetProcAddress@8 200293e4 kernel32:KERNEL32.dll + 0004:000003e8 __imp__CloseHandle@4 200293e8 kernel32:KERNEL32.dll + 0004:000003ec __imp__ExitThread@4 200293ec kernel32:KERNEL32.dll + 0004:000003f0 __imp__InterlockedDecrement@4 200293f0 kernel32:KERNEL32.dll + 0004:000003f4 __imp__CreateThread@24 200293f4 kernel32:KERNEL32.dll + 0004:000003f8 __imp__ResumeThread@4 200293f8 kernel32:KERNEL32.dll + 0004:000003fc __imp__TlsSetValue@8 200293fc kernel32:KERNEL32.dll + 0004:00000400 __imp__GetCurrentProcess@0 20029400 kernel32:KERNEL32.dll + 0004:00000404 __imp__UnhandledExceptionFilter@4 20029404 kernel32:KERNEL32.dll + 0004:00000408 __imp__TerminateProcess@8 20029408 kernel32:KERNEL32.dll + 0004:0000040c __imp__MultiByteToWideChar@24 2002940c kernel32:KERNEL32.dll + 0004:00000410 __imp__WideCharToMultiByte@32 20029410 kernel32:KERNEL32.dll + 0004:00000414 __imp__RtlUnwind@16 20029414 kernel32:KERNEL32.dll + 0004:00000418 __imp__LCMapStringW@24 20029418 kernel32:KERNEL32.dll + 0004:0000041c __imp__InitializeCriticalSection@4 2002941c kernel32:KERNEL32.dll + 0004:00000420 __imp__LCMapStringA@24 20029420 kernel32:KERNEL32.dll + 0004:00000424 __imp__EnterCriticalSection@4 20029424 kernel32:KERNEL32.dll + 0004:00000428 __imp__LeaveCriticalSection@4 20029428 kernel32:KERNEL32.dll + 0004:0000042c __imp__DeleteCriticalSection@4 2002942c kernel32:KERNEL32.dll + 0004:00000430 __imp__VirtualAlloc@16 20029430 kernel32:KERNEL32.dll + 0004:00000434 __imp__SetHandleCount@4 20029434 kernel32:KERNEL32.dll + 0004:00000438 __imp__GetFileType@4 20029438 kernel32:KERNEL32.dll + 0004:0000043c __imp__GetStartupInfoA@4 2002943c kernel32:KERNEL32.dll + 0004:00000440 __imp__GetStdHandle@4 20029440 kernel32:KERNEL32.dll + 0004:00000444 __imp__GetCPInfo@8 20029444 kernel32:KERNEL32.dll + 0004:00000448 __imp__GetACP@0 20029448 kernel32:KERNEL32.dll + 0004:0000044c __imp__GetModuleFileNameA@12 2002944c kernel32:KERNEL32.dll + 0004:00000450 __imp__FreeEnvironmentStringsA@4 20029450 kernel32:KERNEL32.dll + 0004:00000454 __imp__FreeEnvironmentStringsW@4 20029454 kernel32:KERNEL32.dll + 0004:00000458 __imp__GetOEMCP@0 20029458 kernel32:KERNEL32.dll + 0004:0000045c __imp__FlushFileBuffers@4 2002945c kernel32:KERNEL32.dll + 0004:00000460 __imp__GetLocaleInfoW@16 20029460 kernel32:KERNEL32.dll + 0004:00000464 __imp__GetLocaleInfoA@16 20029464 kernel32:KERNEL32.dll + 0004:00000468 __imp__ReadFile@20 20029468 kernel32:KERNEL32.dll + 0004:0000046c __imp__SetStdHandle@8 2002946c kernel32:KERNEL32.dll + 0004:00000470 __imp__LoadLibraryA@4 20029470 kernel32:KERNEL32.dll + 0004:00000474 __imp__HeapCreate@12 20029474 kernel32:KERNEL32.dll + 0004:00000478 __imp__VirtualFree@12 20029478 kernel32:KERNEL32.dll + 0004:0000047c __imp__SetFilePointer@16 2002947c kernel32:KERNEL32.dll + 0004:00000480 __imp__WriteFile@20 20029480 kernel32:KERNEL32.dll + 0004:00000484 __imp__LockResource@4 20029484 kernel32:KERNEL32.dll + 0004:00000488 __imp__GetEnvironmentStrings@0 20029488 kernel32:KERNEL32.dll + 0004:0000048c __imp__HeapDestroy@4 2002948c kernel32:KERNEL32.dll + 0004:00000490 __imp__GetEnvironmentStringsW@0 20029490 kernel32:KERNEL32.dll + 0004:00000494 __imp__SetEnvironmentVariableA@8 20029494 kernel32:KERNEL32.dll + 0004:00000498 \177KERNEL32_NULL_THUNK_DATA 20029498 kernel32:KERNEL32.dll + 0004:0000049c __imp__LoadCursorA@8 2002949c user32:USER32.dll + 0004:000004a0 __imp__LoadStringA@16 200294a0 user32:USER32.dll + 0004:000004a4 __imp__SetWindowTextA@8 200294a4 user32:USER32.dll + 0004:000004a8 __imp__OffsetRect@12 200294a8 user32:USER32.dll + 0004:000004ac __imp__SetRect@20 200294ac user32:USER32.dll + 0004:000004b0 __imp__GetFocus@0 200294b0 user32:USER32.dll + 0004:000004b4 __imp__GetDlgItem@8 200294b4 user32:USER32.dll + 0004:000004b8 __imp__GetWindowLongA@8 200294b8 user32:USER32.dll + 0004:000004bc __imp__SendDlgItemMessageA@20 200294bc user32:USER32.dll + 0004:000004c0 __imp__ShowCursor@4 200294c0 user32:USER32.dll + 0004:000004c4 __imp__SendMessageA@16 200294c4 user32:USER32.dll + 0004:000004c8 __imp__GetClientRect@8 200294c8 user32:USER32.dll + 0004:000004cc __imp__GetWindowRect@8 200294cc user32:USER32.dll + 0004:000004d0 __imp__UpdateWindow@4 200294d0 user32:USER32.dll + 0004:000004d4 __imp__SetFocus@4 200294d4 user32:USER32.dll + 0004:000004d8 __imp__SetWindowLongA@12 200294d8 user32:USER32.dll + 0004:000004dc __imp__GetParent@4 200294dc user32:USER32.dll + 0004:000004e0 __imp__InvalidateRect@12 200294e0 user32:USER32.dll + 0004:000004e4 __imp__wsprintfA 200294e4 user32:USER32.dll + 0004:000004e8 __imp__IsWindowEnabled@4 200294e8 user32:USER32.dll + 0004:000004ec __imp__GetKeyState@4 200294ec user32:USER32.dll + 0004:000004f0 __imp__IsWindow@4 200294f0 user32:USER32.dll + 0004:000004f4 __imp__IsWindowVisible@4 200294f4 user32:USER32.dll + 0004:000004f8 __imp__EnableWindow@8 200294f8 user32:USER32.dll + 0004:000004fc __imp__PostQuitMessage@4 200294fc user32:USER32.dll + 0004:00000500 __imp__IsDialogMessageA@8 20029500 user32:USER32.dll + 0004:00000504 __imp__TranslateMessage@4 20029504 user32:USER32.dll + 0004:00000508 __imp__MessageBoxA@16 20029508 user32:USER32.dll + 0004:0000050c __imp__DispatchMessageA@4 2002950c user32:USER32.dll + 0004:00000510 __imp__DestroyWindow@4 20029510 user32:USER32.dll + 0004:00000514 __imp__ReleaseDC@8 20029514 user32:USER32.dll + 0004:00000518 __imp__GetDC@4 20029518 user32:USER32.dll + 0004:0000051c __imp__DrawTextA@20 2002951c user32:USER32.dll + 0004:00000520 __imp__CallWindowProcA@20 20029520 user32:USER32.dll + 0004:00000524 __imp__ShowWindow@8 20029524 user32:USER32.dll + 0004:00000528 __imp__PeekMessageA@20 20029528 user32:USER32.dll + 0004:0000052c __imp__SetPropA@12 2002952c user32:USER32.dll + 0004:00000530 __imp__RemovePropA@8 20029530 user32:USER32.dll + 0004:00000534 __imp__DefWindowProcA@16 20029534 user32:USER32.dll + 0004:00000538 __imp__RegisterClassA@4 20029538 user32:USER32.dll + 0004:0000053c __imp__GetPropA@8 2002953c user32:USER32.dll + 0004:00000540 __imp__GetWindowTextA@12 20029540 user32:USER32.dll + 0004:00000544 __imp__ScreenToClient@8 20029544 user32:USER32.dll + 0004:00000548 __imp__BeginPaint@8 20029548 user32:USER32.dll + 0004:0000054c __imp__EndPaint@8 2002954c user32:USER32.dll + 0004:00000550 __imp__PostMessageA@16 20029550 user32:USER32.dll + 0004:00000554 \177USER32_NULL_THUNK_DATA 20029554 user32:USER32.dll + 0004:00000558 __imp__SGdiDeleteObject@4 20029558 storm:storm.dll + 0004:0000055c __imp__SNetEnumDevices@4 2002955c storm:storm.dll + 0004:00000560 __imp__SNetInitializeDevice@20 20029560 storm:storm.dll + 0004:00000564 __imp__SNetSelectGame@24 20029564 storm:storm.dll + 0004:00000568 __imp__SRegLoadString@20 20029568 storm:storm.dll + 0004:0000056c __imp__SRegSaveString@16 2002956c storm:storm.dll + 0004:00000570 __imp__SNetInitializeProvider@20 20029570 storm:storm.dll + 0004:00000574 __imp__SNetEnumProviders@8 20029574 storm:storm.dll + 0004:00000578 __imp__SBltROP3Tiled@40 20029578 storm:storm.dll + 0004:0000057c __imp__SDlgCreateDialogParam@20 2002957c storm:storm.dll + 0004:00000580 __imp__SDlgCheckTimers@0 20029580 storm:storm.dll + 0004:00000584 __imp__SDlgUpdateCursor@0 20029584 storm:storm.dll + 0004:00000588 __imp__SDlgSetCursor@16 20029588 storm:storm.dll + 0004:0000058c __imp__SDlgSetSystemCursor@16 2002958c storm:storm.dll + 0004:00000590 __imp__SDrawClearSurface@4 20029590 storm:storm.dll + 0004:00000594 __imp__SNetEnumGames@16 20029594 storm:storm.dll + 0004:00000598 __imp__SNetJoinGame@24 20029598 storm:storm.dll + 0004:0000059c __imp__SDlgDrawBitmap@28 2002959c storm:storm.dll + 0004:000005a0 __imp__SGdiSelectObject@4 200295a0 storm:storm.dll + 0004:000005a4 __imp__SGdiSetPitch@4 200295a4 storm:storm.dll + 0004:000005a8 __imp__SGdiTextOut@24 200295a8 storm:storm.dll + 0004:000005ac __imp__SGdiImportFont@8 200295ac storm:storm.dll + 0004:000005b0 __imp__SDlgKillTimer@8 200295b0 storm:storm.dll + 0004:000005b4 __imp__SDlgSetTimer@16 200295b4 storm:storm.dll + 0004:000005b8 __imp__SDlgEndDialog@8 200295b8 storm:storm.dll + 0004:000005bc __imp__SDlgDefDialogProc@16 200295bc storm:storm.dll + 0004:000005c0 __imp__SDlgSetBitmap@40 200295c0 storm:storm.dll + 0004:000005c4 __imp__SDrawUpdatePalette@16 200295c4 storm:storm.dll + 0004:000005c8 __imp__SDrawGetFrameWindow@4 200295c8 storm:storm.dll + 0004:000005cc __imp__SDlgDialogBoxParam@20 200295cc storm:storm.dll + 0004:000005d0 __imp__SBltROP3@32 200295d0 storm:storm.dll + 0004:000005d4 __imp__SDlgBltToWindow@40 200295d4 storm:storm.dll + 0004:000005d8 __imp__SBmpLoadImage@28 200295d8 storm:storm.dll + 0004:000005dc __imp__SMemAlloc@16 200295dc storm:storm.dll + 0004:000005e0 __imp__STransBlt@20 200295e0 storm:storm.dll + 0004:000005e4 __imp__SFileOpenFile@8 200295e4 storm:storm.dll + 0004:000005e8 __imp__SFileGetFileSize@8 200295e8 storm:storm.dll + 0004:000005ec __imp__SFileReadFile@20 200295ec storm:storm.dll + 0004:000005f0 __imp__SFileCloseFile@4 200295f0 storm:storm.dll + 0004:000005f4 __imp__STransCreate@28 200295f4 storm:storm.dll + 0004:000005f8 __imp__SMemFree@16 200295f8 storm:storm.dll + 0004:000005fc __imp__STransDelete@4 200295fc storm:storm.dll + 0004:00000600 __imp__SDlgEndPaint@8 20029600 storm:storm.dll + 0004:00000604 __imp__SDlgBeginPaint@8 20029604 storm:storm.dll + 0004:00000608 __imp__SNetCreateGame@40 20029608 storm:storm.dll + 0004:0000060c __imp__SDlgSetControlBitmaps@28 2002960c storm:storm.dll + 0004:00000610 \177storm_NULL_THUNK_DATA 20029610 storm:storm.dll + + entry point at 0001:00014190 + + Static symbols + + 0001:00013170 ?TitleDialogProc@@YGHPAUHWND__@@IIJ@Z 20014170 f Title.obj + 0001:00012860 ?SupportDialogProc@@YGHPAUHWND__@@IIJ@Z 20013860 f Support.obj + 0001:00012c80 ?SupportAbort@@YIXPAUHWND__@@@Z 20013c80 f Support.obj + 0001:00012cb0 ?ScrollSupport@@YIXPAUHWND__@@@Z 20013cb0 f Support.obj + 0001:000124a0 ?SelYesNoDialogProc@@YGHPAUHWND__@@IIJ@Z 200134a0 f SelYesNo.obj + 0001:00010fc0 ?SelModemEnum@@YGHKPBD0@Z 20011fc0 f SelModem.obj + 0001:00011070 ?SelModemDialogProc@@YGHPAUHWND__@@IIJ@Z 20012070 f SelModem.obj + 0001:000115e0 ?SelModemSetList@@YIXPAUHWND__@@PAU_modeminfo@@@Z 200125e0 f SelModem.obj + 0001:00011670 ?GetNumNode@@YIHPAUHWND__@@@Z 20012670 f SelModem.obj + 0001:000116b0 ?SelModemPageDown@@YIXPAUHWND__@@@Z 200126b0 f SelModem.obj + 0001:000118c0 ?SelModemPageUp@@YIXPAUHWND__@@@Z 200128c0 f SelModem.obj + 0001:00011ad0 ?SelModemScrollDown@@YIXPAUHWND__@@@Z 20012ad0 f SelModem.obj + 0001:00011ca0 ?SelModemScrollUp@@YIXPAUHWND__@@@Z 20012ca0 f SelModem.obj + 0001:00011e60 ?SelModemSubclassEntries@@YIXPAUHWND__@@@Z 20012e60 f SelModem.obj + 0001:00011ed0 ?ModemListWndProc@@YGJPAUHWND__@@IIJ@Z 20012ed0 f SelModem.obj + 0001:00012410 ?SelModemAbort@@YIXPAUHWND__@@H@Z 20013410 f SelModem.obj + 0001:0000f8e0 ?SelListSetList@@YIXPAUHWND__@@PAU_uiheroinfo@@@Z 200108e0 f SelList.obj + 0001:0000f970 ?GetNumNode@@YIHPAUHWND__@@@Z 20010970 f SelList.obj + 0001:0000f9c0 ?SelListPageDown@@YIXPAUHWND__@@@Z 200109c0 f SelList.obj + 0001:0000fc50 ?SelListPageUp@@YIXPAUHWND__@@@Z 20010c50 f SelList.obj + 0001:0000fed0 ?SelListScrollDown@@YIXPAUHWND__@@@Z 20010ed0 f SelList.obj + 0001:00010110 ?SelListScrollUp@@YIXPAUHWND__@@@Z 20011110 f SelList.obj + 0001:00010340 ?ListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 20011340 f SelList.obj + 0001:0000d6e0 ?SelIPXDialogProc@@YGHPAUHWND__@@IIJ@Z 2000e6e0 f SelIPX.obj + 0001:0000dbc0 ?SelIPXDeleteInval@@YIPAU_ipxgame@@PAU1@@Z 2000ebc0 f SelIPX.obj + 0001:0000dc40 ?SelIPXEnum@@YGHKPBD0@Z 2000ec40 f SelIPX.obj + 0001:0000dd40 ?SelIPXSetGames@@YIXPAUHWND__@@PAU_ipxgame@@@Z 2000ed40 f SelIPX.obj + 0001:0000de90 ?SelIPXSetInfo@@YIXPAUHWND__@@H@Z 2000ee90 f SelIPX.obj + 0001:0000e060 ?SelIPXGetFocusNum@@YIHXZ 2000f060 f SelIPX.obj + 0001:0000e0a0 ?SelIPXPageDown@@YIXPAUHWND__@@@Z 2000f0a0 f SelIPX.obj + 0001:0000e250 ?SelIPXPageUp@@YIXPAUHWND__@@@Z 2000f250 f SelIPX.obj + 0001:0000e400 ?SelIPXScrollDown@@YIXPAUHWND__@@@Z 2000f400 f SelIPX.obj + 0001:0000e560 ?SelIPXScrollUp@@YIXPAUHWND__@@@Z 2000f560 f SelIPX.obj + 0001:0000e6b0 ?SelIPXInit@@YIXPAUHWND__@@@Z 2000f6b0 f SelIPX.obj + 0001:0000e8e0 ?IPXListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 2000f8e0 f SelIPX.obj + 0001:0000edd0 ?SelIPXAbort@@YIXPAUHWND__@@H@Z 2000fdd0 f SelIPX.obj + 0001:0000ee10 ?SelIPXCreate@@YIXPAUHWND__@@@Z 2000fe10 f SelIPX.obj + 0001:0000f130 ?SelIPXFreeNode@@YIXPAU_ipxgame@@@Z 20010130 f SelIPX.obj + 0001:0000f150 ?SelIPXJoin@@YIXPAUHWND__@@PAU_ipxgame@@@Z 20010150 f SelIPX.obj + 0001:0000c6d0 ?SelHeroDialogProc@@YGHPAUHWND__@@IIJ@Z 2000d6d0 f SelHero.obj + 0001:0000cdd0 ?SelHeroFreeNode@@YIXPAU_uiheroinfo@@@Z 2000ddd0 f SelHero.obj + 0001:0000cdf0 ?SelHeroGetHeros@@YIXPAUHWND__@@@Z 2000ddf0 f SelHero.obj + 0001:0000cec0 ?SelHeroEnumHero@@YGHPAU_uiheroinfo@@@Z 2000dec0 f SelHero.obj + 0001:0000cf20 ?SelHeroCreateNew@@YIHPAUHWND__@@PBD@Z 2000df20 f SelHero.obj + 0001:0000d190 ?DoDeleteHero@@YIXPAUHWND__@@@Z 2000e190 f SelHero.obj + 0001:0000d3c0 ?DoSelLoad@@YIXPAUHWND__@@@Z 2000e3c0 f SelHero.obj + 0001:0000d420 ?DoSelDiff@@YIXPAUHWND__@@@Z 2000e420 f SelHero.obj + 0001:0000d570 ?SelHeroAbort@@YIXPAUHWND__@@H@Z 2000e570 f SelHero.obj + 0001:0000bb60 ?SelDialAbort@@YIXPAUHWND__@@H@Z 2000cb60 f SelDial.obj + 0001:0000bc10 ?SelDialEnum@@YIXPAUHWND__@@@Z 2000cc10 f SelDial.obj + 0001:0000bd60 ?SelDialInit@@YIXPAUHWND__@@@Z 2000cd60 f SelDial.obj + 0001:0000a0e0 ?SelConnFreeNode@@YIXPAU_provider@@@Z 2000b0e0 f SelConn.obj + 0001:0000a100 ?SelConnSetInfo@@YIXPAUHWND__@@H@Z 2000b100 f SelConn.obj + 0001:0000a1f0 ?SelConnGetFocusNum@@YIHXZ 2000b1f0 f SelConn.obj + 0001:0000a230 ?SelConnPageDown@@YIXPAUHWND__@@@Z 2000b230 f SelConn.obj + 0001:0000a450 ?SelConnPageUp@@YIXPAUHWND__@@@Z 2000b450 f SelConn.obj + 0001:0000a670 ?SelConnScrollDown@@YIXPAUHWND__@@@Z 2000b670 f SelConn.obj + 0001:0000a850 ?SelConnScrollUp@@YIXPAUHWND__@@@Z 2000b850 f SelConn.obj + 0001:0000aa20 ?SelConnInit@@YIXPAUHWND__@@@Z 2000ba20 f SelConn.obj + 0001:0000ac00 ?SelConnEnum@@YGHKPBD0PAU_SNETCAPS@@@Z 2000bc00 f SelConn.obj + 0001:0000acc0 ?SelConnListEntryWndProc@@YGJPAUHWND__@@IIJ@Z 2000bcc0 f SelConn.obj + 0001:0000b230 ?SelConnAbort@@YIXPAUHWND__@@H@Z 2000c230 f SelConn.obj + 0001:0000b270 ?SelConnInitProvider@@YIHPAUHWND__@@@Z 2000c270 f SelConn.obj + 0001:0000b340 ?SelConnInitError@@YIXPAUHWND__@@@Z 2000c340 f SelConn.obj + 0001:0000b390 ?SelConnAttemptInit@@YIXPAUHWND__@@@Z 2000c390 f SelConn.obj + 0001:00008e20 ?ProgressDialogProc@@YGHPAUHWND__@@IIJ@Z 20009e20 f Progress.obj + 0001:00009220 ?ProgressDraw@@YIXPAUHWND__@@H@Z 2000a220 f Progress.obj + 0001:000088c0 ?OkCancelDialogProc@@YGHPAUHWND__@@IIJ@Z 200098c0 f OkCancel.obj + 0001:000084f0 ?ModmStatDialogProc@@YGHPAUHWND__@@IIJ@Z 200094f0 f ModmStat.obj + 0001:00007d50 ?ModemDialogProc@@YGHPAUHWND__@@IIJ@Z 20008d50 f Modem.obj + 0001:00008130 ?ModemCreate@@YIXPAUHWND__@@@Z 20009130 f Modem.obj + 0001:00008280 ?ModemJoin@@YIXPAUHWND__@@PBD@Z 20009280 f Modem.obj + 0001:00008430 ?ModemJoinThread@@YAXPAX@Z 20009430 f Modem.obj + 0001:000075e0 ?MainMenuDialogProc@@YGHPAUHWND__@@IIJ@Z 200085e0 f MainMenu.obj + 0001:00007aa0 ?MainMenuAbort@@YIXPAUHWND__@@HH@Z 20008aa0 f MainMenu.obj + 0001:00007320 ?LogonDialogProc@@YGHPAUHWND__@@IIJ@Z 20008320 f Logon.obj + 0001:00006d10 ?OnPaintBtnProc@@YGJPAUHWND__@@IIJ@Z 20007d10 f local.obj + 0001:00006e20 ?ActiveDownBtnProc@@YGJPAUHWND__@@IIJ@Z 20007e20 f local.obj + 0001:00006100 ?UiFadeTimerProc@@YGXPAUHWND__@@IIK@Z 20007100 f Fade.obj + 0001:00004e80 ?UiDoomTextBtnDraw@@YIXPAUHWND__@@H@Z 20005e80 f Doom.obj + 0001:00004f70 ?UiDoomDrawBg@@YIXPAUHWND__@@0@Z 20005f70 f Doom.obj + 0001:000051e0 ?UiDoomTextDraw@@YIXPAUHWND__@@J@Z 200061e0 f Doom.obj + 0001:00005430 ?UiDoomTextEditDraw@@YIXPAUHWND__@@@Z 20006430 f Doom.obj + 0001:00004b60 ?DisclaimerDialogProc@@YGHPAUHWND__@@IIJ@Z 20005b60 f disclaim.obj + 0001:00003ff0 ?DirLinkDialogProc@@YGHPAUHWND__@@IIJ@Z 20004ff0 f DirLink.obj + 0001:00004570 ?DirLinkAbort@@YIXPAUHWND__@@H@Z 20005570 f DirLink.obj + 0001:000045b0 ?DirLinkCreate@@YIXPAUHWND__@@@Z 200055b0 f DirLink.obj + 0001:00004680 ?DirLinkAutoJoin@@YIXPAUHWND__@@@Z 20005680 f DirLink.obj + 0001:000046f0 ?DirLinkJoin@@YIXPAUHWND__@@@Z 200056f0 f DirLink.obj + 0001:000047f0 ?DirLinkAttemptJoin@@YIXPAUHWND__@@@Z 200057f0 f DirLink.obj + 0001:00004a20 ?DirLinkUpdateGame@@YIXPAUHWND__@@@Z 20005a20 f DirLink.obj + 0001:00004ad0 ?DirLinkEnum@@YGHKPBD0@Z 20005ad0 f DirLink.obj + 0001:00003910 ?DiabEditWndProc@@YGJPAUHWND__@@IIJ@Z 20004910 f DiabEdit.obj + 0001:00003d90 ?DiabEditFlashCursor@@YIXPAUHWND__@@@Z 20004d90 f DiabEdit.obj + 0001:000032d0 ?CreditsDialogProc@@YGHPAUHWND__@@IIJ@Z 200042d0 f credits.obj + 0001:00012c80 ?CreditsAbort@@YIXPAUHWND__@@@Z 20013c80 f Support.obj + 0001:000036f0 ?ScrollCredits@@YIXPAUHWND__@@@Z 200046f0 f credits.obj + 0001:00002eb0 ?SelDiffAttemptCreate@@YIXPAUHWND__@@@Z 20003eb0 f CreaDung.obj + 0001:00003010 ?SelDiffMultiCreate@@YIXPAUHWND__@@@Z 20004010 f CreaDung.obj + 0001:00002130 ?ChatCreateGameDialogProc@@YGHPAUHWND__@@IIJ@Z 20003130 f cr8game.obj + 0001:00002880 ?DrawDiffBtn@@YIXPAUHWND__@@HH@Z 20003880 f cr8game.obj + 0001:00001cb0 ?CopyProtDialogProc@@YGHPAUHWND__@@IIJ@Z 20002cb0 f CopyProt.obj + 0001:000002e0 ?ArtFontLoadFont@@YIXPAU_artfont@@PBD1@Z 200012e0 f artfont.obj + 0001:0001c0e0 _findenv 2001d0e0 f LIBCMT:setenv.obj + 0001:0001c160 _copy_environ 2001d160 f LIBCMT:setenv.obj + 0001:0001bea0 _strncnt 2001cea0 f LIBCMT:aw_cmp.obj + 0001:0001b7a0 _xtoa 2001c7a0 f LIBCMT:xtoa.obj + 0001:0001ae30 _flsall 2001be30 f LIBCMT:fflush.obj + 0001:0001a590 __get_lc_lconv 2001b590 f LIBCMT:initmon.obj + 0001:0001a460 _fix_grouping 2001b460 f LIBCMT:initnum.obj + 0001:0001a6e0 __free_lc_lconv 2001b6e0 f LIBCMT:initmon.obj + 0001:0001a460 _fix_grouping 2001b460 f LIBCMT:initnum.obj + 0001:00019ba0 __get_lc_time 2001aba0 f LIBCMT:inittime.obj + 0001:00019f20 __free_lc_time 2001af20 f LIBCMT:inittime.obj + 0001:0001a160 _storeTimeFmt 2001b160 f LIBCMT:inittime.obj + 0001:00018ec0 _wcsncnt 20019ec0 f LIBCMT:wcstombs.obj + 0001:00017db0 _getSystemCP 20018db0 f LIBCMT:mbctype.obj + 0001:00017e00 _CPtoLCID 20018e00 f LIBCMT:mbctype.obj + 0001:00017e60 _setSBCS 20018e60 f LIBCMT:mbctype.obj + 0001:00017980 _parse_cmdline 20018980 f LIBCMT:stdargv.obj + 0001:0001bea0 _strncnt 2001cea0 f LIBCMT:aw_cmp.obj + 0001:00016da0 __unwind_handler 20017da0 f LIBCMT:exsup.obj + 0001:00016d40 _xcptlookup 20017d40 f LIBCMT:winxfltr.obj + 0001:00016a30 _doexit 20017a30 f LIBCMT:crt0dat.obj + 0001:00016b10 __initterm 20017b10 f LIBCMT:crt0dat.obj + 0001:00016560 __hextodec 20017560 f LIBCMT:input.obj + 0001:000165a0 __inc 200175a0 f LIBCMT:input.obj + 0001:000165d0 __un_inc 200175d0 f LIBCMT:input.obj + 0001:000165f0 __whiteout 200175f0 f LIBCMT:input.obj + 0001:00014f90 __tzset_lk 20015f90 f LIBCMT:tzset.obj + 0001:000152a0 __isindst_lk 200162a0 f LIBCMT:tzset.obj + 0001:00015510 _cvtdate 20016510 f LIBCMT:tzset.obj + 0001:00014d40 _write_char 20015d40 f LIBCMT:output.obj + 0001:00014d90 _write_multi_char 20015d90 f LIBCMT:output.obj + 0001:00014dd0 _write_string 20015dd0 f LIBCMT:output.obj + 0001:00014e10 _get_int_arg 20015e10 f LIBCMT:output.obj + 0001:00014e30 _get_int64_arg 20015e30 f LIBCMT:output.obj + 0001:00014e50 _get_short_arg 20015e50 f LIBCMT:output.obj + 0001:00013c90 __threadstart@4 20014c90 f LIBCMT:thread.obj + +FIXUPS: 14940 14 b ffffff60 fffffefa 49 44 ffffff1a 2a a68 13 11 42 a fffffd5f +FIXUPS: 14fe5 a 23 fffffdde 2d 56 f 20 35 9 1c fffffd1d f 49 d 4f 24 13 +FIXUPS: 14d14 39 d 18 fffffd84 fffffde9 24 18 1252 2f 1f 28 40 145 47 44 +FIXUPS: 152df d 2b 42 1f fffffcd8 29 8 3b 9 15 18 5 5 5 5 18 5 29 5 5 5 +FIXUPS: 15174 69 f78 29 34 38 4c 26 18 d c fa c6 20 fffffa76 fffff5ed 53 +FIXUPS: 155dc 23 6e e 2b 26 8b 88 1aa 1c 16 1d 13 88 12 ac 21 168f 2d 1e +FIXUPS: 17263 43 38 16 39 a5 36 4e 13 10a 46 27 1f b 12 b fffff097 1b fffff883 +FIXUPS: 15f6d d 23 27 14 9e 15 6b 14 39 75b 9 15 19 7a 120 14 199 2d 65 +FIXUPS: 16cca 35 94 1d 37 19 4b 46 24 a 14 2f 11 4c 17 66 3f 20 49 17 dc +FIXUPS: 171ab 958 fffffe58 e c 3f fffffd9e 19 20 26 70 21 25 46 10 10 10 +FIXUPS: 178ed 10 9 fffffde7 13 17 a d ffffff14 2b 1d d d 1d 10 fffff19e +FIXUPS: 18421 2f fffffc3b 7a 81 d 13 7b d fffffd2e 33 15 34 e c fffffee1 +FIXUPS: 17ee0 11 2f 25 fffffe4f fffffda2 10 fffffea0 12 12 1d d 73 12 c +FIXUPS: 17af3 10cd c3 31 1a 7 14 7c 35 f9 fffffa8e 14 10 1c fffffec8 1a +FIXUPS: 1886d 10 44 fffffccc 12 9d 196 fffffcf2 76 fffffd70 5c 10 a 23 +FIXUPS: 1834d 64 2f 13b1 e fffffeb2 fffffd8b 13 b d b 7e cb b 1a 36 b fffffd1b +FIXUPS: 192ef b d b 26 d 3a fffffd2e 18 d8 ae fffffdcf ffffff1e 25 55 fffffbe8 +FIXUPS: 18ba7 16d0 ffffff1f 1b ffffff70 fffffe96 20 10 d6 34 fffffe27 48 +FIXUPS: 19c77 20 10 a7 115 44 fffffbb0 3b 55 13 9 bf 38 15 fffffbc8 1b +FIXUPS: 19802 82 fffffe70 1f 13 1907 c c c c c c c c c c f f f f f f f +FIXUPS: 1b11d f f f 3a 14 14 16 85 fffff316 cd 60 3b 169 601 16 16 16 16 +FIXUPS: 1ae9d 16 16 16 16 c 31 c c c c c b c c c c c c c c c c c c c c +FIXUPS: 1abcf 13 13 13 13 13 10 13 13 13 13 13 13 13 13 13 13 13 13 13 +FIXUPS: 1ad48 13 13 13 13 13 13 13 13 13 13 13 8b2 2a c c c c c c fffffb49 +FIXUPS: 1b29a 14 10 13 f e 31 12 12 3d f f 1c 2f 28 fffff6f1 16 d 9 1b +FIXUPS: 1ab58 23 e dd0 12 d 1d d 9 9 2a f fffffac6 16 d 9 3c f 41 f 3b +FIXUPS: 1b5c8 13 13 13 e 11 13 13 13 13 13 13 13 13 bf7 26 ffffff91 fffffc8d +FIXUPS: 1bd77 1d 4b 44 1d 2a 1e 1d 1a 14 fffffe04 32 2b 23 fffffe60 b 4e +FIXUPS: 1bc1b 44 1e fffffb07 15 13 13 f b5 3d 81 119b c 23 fffffda9 42 +FIXUPS: 1c922 10 b5 4b 2f 10 fffffd0c 15 fffffe62 1e f 1c f 22 19 15 35 +FIXUPS: 1c708 fffffc24 13 b d b ba b 20 ff d78 fffffc27 36 22 20 26 2c +FIXUPS: 1cfd9 2a 28 4c 3c 48 92 12 12 fffffa92 1e 180 48 4e d fffffcdf +FIXUPS: 1cb76 23 7 f e fffffee0 9 b 20 fffe4885 6d 32 227 1bf8c ffffff2f +FIXUPS: 1d4e5 61 1e 10 fffffdb1 19 40 13 2b 11 39 53 12 c 28 fffffe46 ffffff17 +FIXUPS: 1d205 b d b 20 19 c d 20 fffe5525 63 52 130 19 1d 67 1c 75 d6 6c +FIXUPS: 10da 2c 2c 2c 2c 2c 2c 2c 32 14 14 14 14 14 14 14 32 18 c e 14 +FIXUPS: 1696 17 2d 26 45 10 13 14 7b 6e 27 2e1 1c0 a aa 76 54 1f 75 8c +FIXUPS: 1fe4 13 14d 1e 1f 1fa 5a 70 21f 8a 46 3b c4a 17 db e c 3d 6e 20 +FIXUPS: 35ac 68 6d 14 1c 14 18 3c 27 44 b 13b fffff36d 3a 12 a4 16 97 17 +FIXUPS: 2ee1 f 15 22 ffffe749 28fd 8 7e 60 2b 14 4b 5a 9 8 8 7e 45 1e ffffed54 +FIXUPS: 2fad 15 54 15 4b 36 66 77 26 26 5c 1e 48 46 49 f 55 783 28 18 51 +FIXUPS: 3bc6 14 c 38 14 21 5 8 8 1c d 8 8 24 7 13 5 2e c e e e 10 10 2d +FIXUPS: 3f02 5a 9 71b 11 21 8 a 8 d a0 33 b 81 15 35 8 a 8 fffff093 c c +FIXUPS: 3953 c 10 19 17 1e 3f 13 9 48 e 39 e 7f5 11 58 26 16 31 47 8 a +FIXUPS: 43e1 1a 14 38 d 30 55 2e 9 4e 10 8 a 8 1e 1d 10 39 14 8 a 8 9 1351 +FIXUPS: 59db 2e 44 36 5 7 8 8 8 a 8 fffff416 2c 5 5 5 7 5 40 5 d fffff9de +FIXUPS: 4980 34 2c 7a 12c 21 78 1b 127 968 8 a 8 3a 14 2d 9 7 8 8 8 a 8 +FIXUPS: 57dd bd d 7 8 8 8 a 8 3f 14 2f 9 7 8 8 8 a fffffb22 b 1e 12 10 +FIXUPS: 551b 9 7 8 8 8 a 8 22 7 8 8 8 a 7 85 9 7 8 8 8 a 8 43 9 7 8 fffffb75 +FIXUPS: 526f 15 29 39 15 2a 14 7 8 8 8 a 8 26 c 7 c 7 c 5 2e c c e e e +FIXUPS: 5447 10 7 7 f 801 37 21 d 1e a 8 9 12 a 8 fffff278 1c 7 5d c c +FIXUPS: 5053 c 10 10 5 1d 61 2f 14 1b 23 2f 19 9 54 10a7 e 33 7c 31 2c +FIXUPS: 63f2 7 7 7e 7 13 7 3f 1e 1b 3c 9 7 47 fffff593 12 4c c 10 14 37 +FIXUPS: 5c12 c 32 9 e c3b c 70 23 fffff448 31 2f 9 c e 37 9d f 25 1c 17 +FIXUPS: 5fed 3f c e 37 72 31 2c 9 c e 33 98 1a 1d 52 a65 e a c 25 31 fffff862 +FIXUPS: 6610 c c 12 1d 71 14 a 8 2d a 8 2d 2d 9 8 2a 1e 20 9 8 29 40 10 +FIXUPS: 6898 805 9 24 1a 2d 15 fffff965 c c c 10 17 6b 14 a 8 2d a 8 2d +FIXUPS: 6bfd 9 8 2a 15 1d 9 8 29 1e 35 21 13e3 21 28 99 2b 22 1c 16 2c +FIXUPS: 82ab ffffee9b bf 3c 83 5a 7b 24 91 53 7f 27 fffff983 2e 51 1f 1b +FIXUPS: 6fda d 13 5 7 3b 538 4c 79 5e 31 1d 61 66 42 51 26 96 a8 a6 4e +FIXUPS: 7ae6 4d 4d fd b b7 b 171 b d2 39 1e 27 37 29 2e 27 820 28 c 26 +FIXUPS: 8955 a c 7 c 7 c c 39 d 12 b5 17 38 f d 8 8 a 7 fffff7c9 6a 2a +FIXUPS: 83c9 23 a8 92 11 1ae 8 8 a 8 12 1a 1d 9 14 9 9 38 9 2e 15 9 29 +FIXUPS: 883c 5 8 8 a 8 9 15 9 15 9 15 9 c 933 a 8 86 a 1b 1f 28 19 8 a +FIXUPS: 933c ae 7b 23 fffff0d7 5 1c 23 e c 57 5 c c 10 10 9 11 10 52 d +FIXUPS: 8e26 c 7 d 5 31 9 e e d 21 77 2b 11 2c 16 8 a 8 33 25 26 18 8 a +FIXUPS: 908e 3e 13 2c 10 ca 18 49a d 1a 8 1f 8 13 d b 32 e 10 a c c fffff406 +FIXUPS: 8b9e 1e e 9a 69 42 1c 7 5c c c 10 10 9 14 10 ccb e 15 13 c b 14 +FIXUPS: 9b36 2e 2d 30 2e 40 82 fffff833 46 10 c c d 14 14 6a e 1d 13 8 +FIXUPS: 963f f 20 d 13 9f6 1e f b 7 c 15 14 1a 14 14 3c 2f 9 42 7 7 68 +FIXUPS: a2ad fffff66e 26 19 16 d 18 14 38 33 8 d 6e 20 b35 55 25 11 11 +FIXUPS: a699 59 1f 1f 1f 18 fffff5dd 7c 5 b6 26 26 26 2a 13 18 14 3a 11 +FIXUPS: 9faf 21 13 d 18 10 e 21 90f 8 e 10 5 8 8 2a 9 2c 15 f 8 e 15 9 +FIXUPS: aa4d 8 8 14 35 1f e 10 10 a c 1d fffff9ad 54 35 45 1ea4 9 f 8 8 +FIXUPS: c477 8 2a 8 8 a 8 f 43 50 e 12 c d ffffe205 c c c 10 17 46 1a 9 +FIXUPS: a8ce 3c 16 2c 16ca 13 13 13 6a 183 7 8 8 a 7 15 7 7 2a 8 1e 1d +FIXUPS: c2fa 7 21 9 4c 25 7 7 2a 8 1e 1d 6 7 fffff390 28 13 52 da 60 29 +FIXUPS: b9bd 51 6d c 7 c 7 c 5 2b c e e e f f 17 60 20 c 42 302 6b 2e 13 +FIXUPS: af55 35 d 31 b 15 1a 10 15 16 1a 12 12 12 18 d 13 33 6c 69 e 121 +FIXUPS: b356 24 12 4c 1aa 53 21 18 4d f6 fffff597 12 c c c c 10 10 5 17 +FIXUPS: adb4 1a 23 16 9 f 51 1c b 8 8 a 8 25 a 20 14 7 8 8 a 8 1d0f 7 3f +FIXUPS: ccaa 2f 8 b 3f 10 53 c c e 10 10 5 36 a8 2c 1a 1d 1b 7 7 40 10 +FIXUPS: cfc5 8 b 3e 10 ffffdcb1 1b09 9 42 27 41 1a 8 8 5a a a d 8 8 8 2d +FIXUPS: c98d 1e 20 10 1b 28 23 131 8 8 5f c c b 2e 1b 1825 25 2a 31 15 +FIXUPS: e527 8 a 8 36 8 a 7 14 5c 11 50 ffffea61 c 24 24 fffff500 7f 2c +FIXUPS: c6df 4c c c 5 12 1d 4c 11f5 3b 78 161 48 15 5d 15 49 35 29 a6 23 +FIXUPS: de7d 56 e3 3a 15 1a 12 5a 21 53 69 b0 25 44 8f 88 3f 59 1d fffff1c6 +FIXUPS: d66f 11 8e c c 11 27 1a 10 d 18 2e 7 c 7 c 5 2e c 14 e e e 7 25 +FIXUPS: d8d5 11 29 8f 8 a 2814 b 8 8 8 a 8 42 ffffcf7f 19 19 19 19 34 2c +FIXUPS: d28c 25 7a 3b 3b 3b 3b 4c 2b e 38 e 3f 40 12 3a 16 255c 12 13 51 +FIXUPS: fba8 13 13 8b 17e 8 8 8 a 7 41 29 53 32 5 14 c1 7c 47 f 8 8 8 a +FIXUPS: 100c5 81 3d 14 fffff1e3 d 12 4c f2 c 13 52 d7 12 13 52 78 c 7 c +FIXUPS: f734 c 5 2e c 5 46 e e 11 10 1f 69 d e c fffff142 37 d 31 34 10 +FIXUPS: eabd 18 10 18 1a 1a f f f 15 9 14 15 5d 85 1a1 21 2e e8 15 c7 e +FIXUPS: f16c d 12 4c fffff571 c c c c c 10 10 5 7 17 81 b 20 3a 5 14 12 +FIXUPS: e8f2 23 16 9 f 5 42 14 20 8 8 8 a 8 2708 d c0 1f 59 29 4d 10 12 +FIXUPS: 112db 23 24 d 23e 1f 5c 25 4d 10 12 e 23 24 d 13 13 13 8b ffffcefd +FIXUPS: e6bb 7 6a 234b 22 4e 2d 40 10 12 e 1a 24 d d6 93 2e 22 4e 2d 42 +FIXUPS: 10e55 12 e 1a 24 d f5 52 2b 47 10 12 e 23 fffff503 2a 9 8 8 15 +FIXUPS: 10644 9 8 8 15 9 13 8 b 18 1a 1e 12 12 12 18 26 24 d 16 188 27 +FIXUPS: 1098b ae 28 c fffff85e 15 17 8 b 3d 74 35 1d 10 10 10 5 e a c c +FIXUPS: 10477 64 1a 9 41 10 d 15 e d 16 8 8 d 8 1415 16 9 16 8 16 d 8 8 +FIXUPS: 11a76 9 8 16 15 1d 9 8 8 30 1f e 10 10 a c 1d ffffe6ee 5 c c c +FIXUPS: 102bb 250c 27 51 1af 4f 27 51 104 53 2f 55 db 59 29 59 2e2 59 29 +FIXUPS: 13204 13 13 13 6a 170 8 32 ffffe4fa c c c 10 17 8d8 14 8 8 2d 10 +FIXUPS: 122e7 10 18 1a 1e 12 12 12 18 15 14 17 5 2e e e e 10 10 d c c 38 +FIXUPS: 12634 27 11d 10a5 ffffe4e0 36 57 2d 41 25 36 6e 2d 41 25 49 39 +FIXUPS: 1209f c c c c c 10 20 19 3e 13 9 63 10 8 2e 10 8 1259 3f 19 c c +FIXUPS: 13525 17 38 49 16 9 2a 8 14 8 14 8 1b 8 16 11 23 5 1e 31 28 10 +FIXUPS: 13752 7 c c 47 34e a 8 1e 1d 10 39 14 8 a 8 9 3d 11 21 8 a 8 d +FIXUPS: 13c84 8 a 8 9b 33 b 81 15 35 8 a 8 5df 21 8 8 a 8 d 15 8 8 a 8 +FIXUPS: 1383a 11 58 26 16 31 47 8 a 8 1a 14 38 d 30 55 2e 9 4e 10 461 23 +FIXUPS: 13fae 32 4f 32 26 81 23 16 11 12 4f 32 16 10 18 42 18 14 50 11 +FIXUPS: 14324 9 e 3f 32 c 7 c 26 39 + + 32 bytes saved through ICF + diff --git a/Uisrc/UI/RELEASE/LOCAL.OBJ b/Uisrc/UI/RELEASE/LOCAL.OBJ new file mode 100644 index 0000000..4713e6c Binary files /dev/null and b/Uisrc/UI/RELEASE/LOCAL.OBJ differ diff --git a/Uisrc/UI/RELEASE/LOCAL.SBR b/Uisrc/UI/RELEASE/LOCAL.SBR new file mode 100644 index 0000000..025fc96 Binary files /dev/null and b/Uisrc/UI/RELEASE/LOCAL.SBR differ diff --git a/Uisrc/UI/RELEASE/LOGON.OBJ b/Uisrc/UI/RELEASE/LOGON.OBJ new file mode 100644 index 0000000..aa7b598 Binary files /dev/null and b/Uisrc/UI/RELEASE/LOGON.OBJ differ diff --git a/Uisrc/UI/RELEASE/LOGON.SBR b/Uisrc/UI/RELEASE/LOGON.SBR new file mode 100644 index 0000000..8618f7a Binary files /dev/null and b/Uisrc/UI/RELEASE/LOGON.SBR differ diff --git a/Uisrc/UI/RELEASE/MAINMENU.OBJ b/Uisrc/UI/RELEASE/MAINMENU.OBJ new file mode 100644 index 0000000..00e43d3 Binary files /dev/null and b/Uisrc/UI/RELEASE/MAINMENU.OBJ differ diff --git a/Uisrc/UI/RELEASE/MAINMENU.SBR b/Uisrc/UI/RELEASE/MAINMENU.SBR new file mode 100644 index 0000000..0e69a92 Binary files /dev/null and b/Uisrc/UI/RELEASE/MAINMENU.SBR differ diff --git a/Uisrc/UI/RELEASE/MODEM.OBJ b/Uisrc/UI/RELEASE/MODEM.OBJ new file mode 100644 index 0000000..3e62b4e Binary files /dev/null and b/Uisrc/UI/RELEASE/MODEM.OBJ differ diff --git a/Uisrc/UI/RELEASE/MODEM.SBR b/Uisrc/UI/RELEASE/MODEM.SBR new file mode 100644 index 0000000..667ec35 Binary files /dev/null and b/Uisrc/UI/RELEASE/MODEM.SBR differ diff --git a/Uisrc/UI/RELEASE/MODMSTAT.OBJ b/Uisrc/UI/RELEASE/MODMSTAT.OBJ new file mode 100644 index 0000000..a555e36 Binary files /dev/null and b/Uisrc/UI/RELEASE/MODMSTAT.OBJ differ diff --git a/Uisrc/UI/RELEASE/MODMSTAT.SBR b/Uisrc/UI/RELEASE/MODMSTAT.SBR new file mode 100644 index 0000000..2eb1926 Binary files /dev/null and b/Uisrc/UI/RELEASE/MODMSTAT.SBR differ diff --git a/Uisrc/UI/RELEASE/OKCANCEL.OBJ b/Uisrc/UI/RELEASE/OKCANCEL.OBJ new file mode 100644 index 0000000..2b01f89 Binary files /dev/null and b/Uisrc/UI/RELEASE/OKCANCEL.OBJ differ diff --git a/Uisrc/UI/RELEASE/OKCANCEL.SBR b/Uisrc/UI/RELEASE/OKCANCEL.SBR new file mode 100644 index 0000000..659a58d Binary files /dev/null and b/Uisrc/UI/RELEASE/OKCANCEL.SBR differ diff --git a/Uisrc/UI/RELEASE/PROGRESS.OBJ b/Uisrc/UI/RELEASE/PROGRESS.OBJ new file mode 100644 index 0000000..940c6eb Binary files /dev/null and b/Uisrc/UI/RELEASE/PROGRESS.OBJ differ diff --git a/Uisrc/UI/RELEASE/PROGRESS.SBR b/Uisrc/UI/RELEASE/PROGRESS.SBR new file mode 100644 index 0000000..3e92c2a Binary files /dev/null and b/Uisrc/UI/RELEASE/PROGRESS.SBR differ diff --git a/Uisrc/UI/RELEASE/SBAR.OBJ b/Uisrc/UI/RELEASE/SBAR.OBJ new file mode 100644 index 0000000..b80c183 Binary files /dev/null and b/Uisrc/UI/RELEASE/SBAR.OBJ differ diff --git a/Uisrc/UI/RELEASE/SBAR.SBR b/Uisrc/UI/RELEASE/SBAR.SBR new file mode 100644 index 0000000..6d5dd56 Binary files /dev/null and b/Uisrc/UI/RELEASE/SBAR.SBR differ diff --git a/Uisrc/UI/RELEASE/SELCLASS.OBJ b/Uisrc/UI/RELEASE/SELCLASS.OBJ new file mode 100644 index 0000000..a40c65b Binary files /dev/null and b/Uisrc/UI/RELEASE/SELCLASS.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELCLASS.SBR b/Uisrc/UI/RELEASE/SELCLASS.SBR new file mode 100644 index 0000000..26e5cde Binary files /dev/null and b/Uisrc/UI/RELEASE/SELCLASS.SBR differ diff --git a/Uisrc/UI/RELEASE/SELCONN.OBJ b/Uisrc/UI/RELEASE/SELCONN.OBJ new file mode 100644 index 0000000..537c2e9 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELCONN.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELCONN.SBR b/Uisrc/UI/RELEASE/SELCONN.SBR new file mode 100644 index 0000000..879a595 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELCONN.SBR differ diff --git a/Uisrc/UI/RELEASE/SELDIAL.OBJ b/Uisrc/UI/RELEASE/SELDIAL.OBJ new file mode 100644 index 0000000..0a3ee0d Binary files /dev/null and b/Uisrc/UI/RELEASE/SELDIAL.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELDIAL.SBR b/Uisrc/UI/RELEASE/SELDIAL.SBR new file mode 100644 index 0000000..944db17 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELDIAL.SBR differ diff --git a/Uisrc/UI/RELEASE/SELGAME.OBJ b/Uisrc/UI/RELEASE/SELGAME.OBJ new file mode 100644 index 0000000..ecb3c2e Binary files /dev/null and b/Uisrc/UI/RELEASE/SELGAME.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELGAME.SBR b/Uisrc/UI/RELEASE/SELGAME.SBR new file mode 100644 index 0000000..1a833b0 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELGAME.SBR differ diff --git a/Uisrc/UI/RELEASE/SELHERO.OBJ b/Uisrc/UI/RELEASE/SELHERO.OBJ new file mode 100644 index 0000000..9e48886 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELHERO.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELHERO.SBR b/Uisrc/UI/RELEASE/SELHERO.SBR new file mode 100644 index 0000000..9e4c87e Binary files /dev/null and b/Uisrc/UI/RELEASE/SELHERO.SBR differ diff --git a/Uisrc/UI/RELEASE/SELIPX.OBJ b/Uisrc/UI/RELEASE/SELIPX.OBJ new file mode 100644 index 0000000..631452d Binary files /dev/null and b/Uisrc/UI/RELEASE/SELIPX.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELIPX.SBR b/Uisrc/UI/RELEASE/SELIPX.SBR new file mode 100644 index 0000000..92430a5 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELIPX.SBR differ diff --git a/Uisrc/UI/RELEASE/SELLIST.OBJ b/Uisrc/UI/RELEASE/SELLIST.OBJ new file mode 100644 index 0000000..414c372 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELLIST.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELLIST.SBR b/Uisrc/UI/RELEASE/SELLIST.SBR new file mode 100644 index 0000000..e53eb6c Binary files /dev/null and b/Uisrc/UI/RELEASE/SELLIST.SBR differ diff --git a/Uisrc/UI/RELEASE/SELLOAD.OBJ b/Uisrc/UI/RELEASE/SELLOAD.OBJ new file mode 100644 index 0000000..f904048 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELLOAD.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELLOAD.SBR b/Uisrc/UI/RELEASE/SELLOAD.SBR new file mode 100644 index 0000000..147ff20 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELLOAD.SBR differ diff --git a/Uisrc/UI/RELEASE/SELMODEM.OBJ b/Uisrc/UI/RELEASE/SELMODEM.OBJ new file mode 100644 index 0000000..a49e340 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELMODEM.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELMODEM.SBR b/Uisrc/UI/RELEASE/SELMODEM.SBR new file mode 100644 index 0000000..f51affd Binary files /dev/null and b/Uisrc/UI/RELEASE/SELMODEM.SBR differ diff --git a/Uisrc/UI/RELEASE/SELYESNO.OBJ b/Uisrc/UI/RELEASE/SELYESNO.OBJ new file mode 100644 index 0000000..bda2747 Binary files /dev/null and b/Uisrc/UI/RELEASE/SELYESNO.OBJ differ diff --git a/Uisrc/UI/RELEASE/SELYESNO.SBR b/Uisrc/UI/RELEASE/SELYESNO.SBR new file mode 100644 index 0000000..45d462f Binary files /dev/null and b/Uisrc/UI/RELEASE/SELYESNO.SBR differ diff --git a/Uisrc/UI/RELEASE/SUPPORT.OBJ b/Uisrc/UI/RELEASE/SUPPORT.OBJ new file mode 100644 index 0000000..e93db38 Binary files /dev/null and b/Uisrc/UI/RELEASE/SUPPORT.OBJ differ diff --git a/Uisrc/UI/RELEASE/SUPPORT.SBR b/Uisrc/UI/RELEASE/SUPPORT.SBR new file mode 100644 index 0000000..eb1ac4f Binary files /dev/null and b/Uisrc/UI/RELEASE/SUPPORT.SBR differ diff --git a/Uisrc/UI/RELEASE/TITLE.OBJ b/Uisrc/UI/RELEASE/TITLE.OBJ new file mode 100644 index 0000000..506f8a0 Binary files /dev/null and b/Uisrc/UI/RELEASE/TITLE.OBJ differ diff --git a/Uisrc/UI/RELEASE/TITLE.SBR b/Uisrc/UI/RELEASE/TITLE.SBR new file mode 100644 index 0000000..7e3d29b Binary files /dev/null and b/Uisrc/UI/RELEASE/TITLE.SBR differ diff --git a/Uisrc/UI/RELEASE/UISND.OBJ b/Uisrc/UI/RELEASE/UISND.OBJ new file mode 100644 index 0000000..db5049f Binary files /dev/null and b/Uisrc/UI/RELEASE/UISND.OBJ differ diff --git a/Uisrc/UI/RELEASE/UISND.SBR b/Uisrc/UI/RELEASE/UISND.SBR new file mode 100644 index 0000000..2158f9b Binary files /dev/null and b/Uisrc/UI/RELEASE/UISND.SBR differ diff --git a/Uisrc/UI/RELEASE/VC50.IDB b/Uisrc/UI/RELEASE/VC50.IDB new file mode 100644 index 0000000..2437438 Binary files /dev/null and b/Uisrc/UI/RELEASE/VC50.IDB differ diff --git a/Uisrc/UI/SAMPLE.CPP b/Uisrc/UI/SAMPLE.CPP new file mode 100644 index 0000000..9360315 --- /dev/null +++ b/Uisrc/UI/SAMPLE.CPP @@ -0,0 +1,109 @@ +/**************************************************************************** +* +* SAMPLE.CPP +* Diablo UI sample dialog +* +* By Michael O'Brien (9/12/96) +* +***/ + +#include "pch.h" + +static SIZE bgsize; +static LPBYTE backgroundbitmap = NULL; +static LPBYTE buttonbitmap = NULL; + +//=========================================================================== +static void DestroyArtwork (HWND window) { + if (buttonbitmap) { + FREE(buttonbitmap); + buttonbitmap = NULL; + } + if (backgroundbitmap) { + FREE(backgroundbitmap); + backgroundbitmap = NULL; + } +} + +//=========================================================================== +static BOOL LoadArtwork (HWND window) { + SIZE artsize; + + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\samp_bkg.pcx"), + &backgroundbitmap, + &bgsize + ); + + LoadArtFile( + NULL, + window, + TEXT("Button"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\samp_btn.pcx"), + &buttonbitmap, + &artsize + ); + + return 1; +} + +//=========================================================================== +static BOOL CALLBACK SampleDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + switch (LOWORD(wparam)) { + + case IDOK: + SDlgEndDialog(window,1); + break; + + case IDCANCEL: + SDlgEndDialog(window,0); + break; + + } + break; + + case WM_DESTROY: + DestroyArtwork(window); + break; + + case WM_INITDIALOG: + LoadArtwork(window); + return 1; + + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + +/**************************************************************************** +* +* EXPORTED FUNCTIONS +* +***/ + +//=========================================================================== +BOOL APIENTRY UiSampleDialog (DWORD *selection) { + if (!selection) + return 0; + *selection = 0; + + // DISPLAY THE DIALOG BOX + *selection = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SAMPLE_DIALOG"), + SDrawGetFrameWindow(), + SampleDialogProc); + + return 1; +} diff --git a/Uisrc/UI/SBAR.CPP b/Uisrc/UI/SBAR.CPP new file mode 100644 index 0000000..274a5c7 --- /dev/null +++ b/Uisrc/UI/SBAR.CPP @@ -0,0 +1,280 @@ +//**************************************************************************** +// Sbar.cpp +// Diablo UI scroll bar to accompany "Doom style" lists +// +// By Frank Pearce +// created 11.11.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define SBAR_ENABLED 1 // 1 when they work correctly + + #define ARROW_HGT 22 + #define ARROW_FRAMES 2 // 2 up frames and 2 down frames + + #define THUMB_X 3 + #define THUMB_Y ARROW_HGT + #define THUMB_WDT 18 + #define THUMB_RANGE(x) (x->ctrlsize.cy - x->thumbsize.cy - (2*ARROW_HGT)) + + #define FSB_UP 0x00000001 + #define FSB_PGUP 0x00000002 + #define FSB_DN 0x00000004 + #define FSB_PGDN 0x00000008 + #define FSB_THMB 0x00000010 + + +//**************************************************************************** +//**************************************************************************** +typedef struct _sbardata { + LONG flags; + + LPBYTE ctrldata; // the composed image of the scrollbar + SIZE ctrlsize; + + LPBYTE bgdata; // the scrollbar bg art + SIZE bgsize; + + LPBYTE thumbdata; // the art for the thumb + SIZE thumbsize; + + LPBYTE arrowdata; // the art for the arrows + SIZE arrowsize; + + int max; // max entries int the list + int current; // currently selected entry (0 based) + +} TSBAR, * TPSBAR; + + +//**************************************************************************** +//**************************************************************************** +BOOL SbarUpClick(HWND sbar) { + TPSBAR tpSbar = (TPSBAR) GetWindowLong(sbar, GWL_USERDATA); + if (! tpSbar) return FALSE; + if (tpSbar->flags) { + tpSbar->flags = 0; + return TRUE; + } + return FALSE; +} + + +//**************************************************************************** +//**************************************************************************** +int SbarInterpretClick(HWND sbar, int x, int y) { +#if SBAR_ENABLED + int thumbtop, thumbbot; + POINT pt = { x, y}; + + // confirm sbar exists + if (! sbar) return DSB_NONE; + if (! IsWindowVisible(sbar)) return DSB_NONE; + + // get a pointer to the sbar data + TPSBAR tpSbar = (TPSBAR) GetWindowLong(sbar, GWL_USERDATA); + if (! tpSbar) return DSB_NONE; + + // calculate the thumb top and bottom + if (tpSbar->max > 1) + thumbtop = THUMB_Y + (THUMB_RANGE(tpSbar) * tpSbar->current) / (tpSbar->max - 1); + else + thumbtop = THUMB_Y; + thumbbot = thumbtop + tpSbar->thumbsize.cy; + + // convert mouse coords to sbar coords + ScreenToClient(sbar, &pt); + + // determine location of click + if (pt.y < ARROW_HGT) { + tpSbar->flags = FSB_UP; + return DSB_UP; + } + if (pt.y < thumbtop) { + tpSbar->flags = FSB_PGUP; + return DSB_PAGEUP; + } + if (pt.y < thumbbot) { + tpSbar->flags = FSB_THMB; + return DSB_THUMB; + } + if (pt.y < (tpSbar->ctrlsize.cy - ARROW_HGT)) { + tpSbar->flags = FSB_PGDN; + return DSB_PAGEDOWN; + } + tpSbar->flags = FSB_DN; + return DSB_DOWN; +#else + return DSB_NONE; +#endif +} + + +//**************************************************************************** +//**************************************************************************** +void SbarDraw(HWND parent, int SbarID, int Entries, int Current) { +#if SBAR_ENABLED + int yoff, arrowframe; + HWND sbar = GetDlgItem(parent, SbarID); + if (! sbar) return; + TPSBAR tpSbar = (TPSBAR) GetWindowLong(sbar, GWL_USERDATA); + if (! tpSbar) return; + if (! tpSbar->ctrldata) return; + + // save Entries and Current + tpSbar->max = Entries; + tpSbar->current = Current; + + // draw the sbar bg + if (! tpSbar->bgdata) return; + RECT dstrect, srcrect; + dstrect.left = srcrect.left = 0; + dstrect.top = srcrect.top = 0; + dstrect.right = tpSbar->ctrlsize.cx - 1; + dstrect.bottom = tpSbar->ctrlsize.cy - 1; + srcrect.right = tpSbar->ctrlsize.cx - 1; + srcrect.bottom = tpSbar->bgsize.cy - 1; + SBltROP3Tiled( + tpSbar->ctrldata, // dest ptr + &dstrect, // dest rect ptr + tpSbar->ctrlsize.cx, // dest cx + tpSbar->bgdata, // src ptr + &srcrect, // src rect + tpSbar->bgsize.cx, // src cx + 0, // src xoff + 0, // src yoff + NULL, // pattern, + SRCCOPY // copy cmd + ); + + // draw the thumb + if (! tpSbar->thumbdata) return; + if (Entries > 1) + yoff = THUMB_Y + (THUMB_RANGE(tpSbar) * Current) / (Entries - 1); + else + yoff = THUMB_Y; + SBltROP3 ( + tpSbar->ctrldata + (yoff * tpSbar->ctrlsize.cx) + THUMB_X, // dest ptr + tpSbar->thumbdata, // src ptr + THUMB_WDT, // blt wdth + tpSbar->thumbsize.cy, // blt hgt + tpSbar->ctrlsize.cx, // dest cx + tpSbar->thumbsize.cx, // src cx + NULL, // pattern + SRCCOPY // copy cmd + ); + + // draw the up arrow + if (tpSbar->flags & FSB_UP) + arrowframe = 0; + else + arrowframe = 1; + SBltROP3 ( + tpSbar->ctrldata, // dest ptr + tpSbar->arrowdata + (arrowframe * ARROW_HGT * tpSbar->arrowsize.cx), // src ptr + tpSbar->ctrlsize.cx, // blt wdth + ARROW_HGT, // blt hgt + tpSbar->ctrlsize.cx, // dest cx + tpSbar->arrowsize.cx, // src cx + NULL, // pattern + SRCCOPY // copy cmd + ); + + // draw the down arrow + if (tpSbar->flags & FSB_DN) + arrowframe = 2; + else + arrowframe = 3; + SBltROP3 ( + tpSbar->ctrldata + ((tpSbar->ctrlsize.cy - ARROW_HGT) * tpSbar->ctrlsize.cx), // dest ptr + tpSbar->arrowdata + (arrowframe * ARROW_HGT * tpSbar->arrowsize.cx), // src ptr + tpSbar->ctrlsize.cx, // blt wdth + ARROW_HGT, // blt hgt + tpSbar->ctrlsize.cx, // dest cx + tpSbar->arrowsize.cx, // src cx + NULL, // pattern + SRCCOPY // copy cmd + ); + + + InvalidateRect(sbar, NULL, FALSE); +#endif +} + + +//**************************************************************************** +//**************************************************************************** +void SbarInit(HWND parent, int SbarID) { +#if SBAR_ENABLED + TPSBAR tpSbar; + RECT rect; + + HWND sbar = GetDlgItem(parent, SbarID); + if (! sbar) return; + + // alloc a structure to contain all the sbar's data + tpSbar = (TPSBAR) ALLOC(sizeof(TSBAR)); + if (! tpSbar) return; + SetWindowLong(sbar, GWL_USERDATA, (LONG) tpSbar); + + tpSbar->flags = 0; + // set up a bmp for the ctrl + GetClientRect(sbar, &rect); + tpSbar->ctrlsize.cx = rect.right; + tpSbar->ctrlsize.cy = rect.bottom; + tpSbar->ctrldata = (LPBYTE) ALLOC(rect.right * rect.bottom); + if (! tpSbar->ctrldata) return; + SDlgSetBitmap( + sbar, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + tpSbar->ctrldata, + NULL, + tpSbar->ctrlsize.cx, + tpSbar->ctrlsize.cy + ); + + // load some image data for the scroll bar + UiLoadBmpFile("ui_art\\sb_bg.pcx", &tpSbar->bgdata, &tpSbar->bgsize); + UiLoadBmpFile("ui_art\\sb_thumb.pcx", &tpSbar->thumbdata, &tpSbar->thumbsize); + UiLoadBmpFile("ui_art\\sb_arrow.pcx", &tpSbar->arrowdata, &tpSbar->arrowsize); +#else + HWND sbar = GetDlgItem(parent, SbarID); + if (! sbar) return; + ShowWindow(sbar, SW_HIDE); +#endif +} + + +//**************************************************************************** +//**************************************************************************** +void SbarDestroy(HWND parent, int SbarID) { +#if SBAR_ENABLED + HWND sbar = GetDlgItem(parent, SbarID); + if (! sbar) return; + + TPSBAR tpSbar = (TPSBAR) GetWindowLong(sbar, GWL_USERDATA); + if (! tpSbar) return; + + if (tpSbar->ctrldata) + FREE(tpSbar->ctrldata); + if (tpSbar->bgdata) + FREE(tpSbar->bgdata); + if (tpSbar->thumbdata) + FREE(tpSbar->thumbdata); + if (tpSbar->arrowdata) + FREE(tpSbar->arrowdata); + + FREE(tpSbar); + SetWindowLong(sbar, GWL_USERDATA, (LONG) NULL); +#endif +} + + diff --git a/Uisrc/UI/SBAR.H b/Uisrc/UI/SBAR.H new file mode 100644 index 0000000..cf18fc7 --- /dev/null +++ b/Uisrc/UI/SBAR.H @@ -0,0 +1,30 @@ +//**************************************************************************** +// Sbar.h +// Diablo UI scroll bar to accompany "Doom style" lists +// +// By Frank Pearce +// created 11.11.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +enum _clickloc { // defines click locations in the scroll bar + DSB_NONE, + DSB_UP, + DSB_DOWN, + DSB_PAGEUP, + DSB_PAGEDOWN, + DSB_THUMB +}; + + +//**************************************************************************** +//**************************************************************************** +void SbarInit(HWND parent, int SbarID); +void SbarDestroy(HWND parent, int SbarID); + +void SbarDraw(HWND parent, int SbarID, int Entries, int Current); + +BOOL SbarUpClick(HWND sbar); +int SbarInterpretClick(HWND sbar, int x, int y); diff --git a/Uisrc/UI/SELCLASS.CPP b/Uisrc/UI/SELCLASS.CPP new file mode 100644 index 0000000..c004f88 --- /dev/null +++ b/Uisrc/UI/SELCLASS.CPP @@ -0,0 +1,236 @@ +//**************************************************************************** +// SelClass.cpp +// Diablo UI select class for a new hero +// +// By Frank Pearce +// created 10.18.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void SelHeroGetDefStats(int heroclass, TPUIDEFSTATS stats); + extern void SelHeroSetStats(HWND window, TPUIHEROINFO hero); + extern void SelHeroClearStats(HWND window); + extern void SelHeroSetTitle(HWND window, LPCTSTR title); + extern int SelHeroGetMode(void); + + extern int SpawnErrDialog(HWND parent, int errstrid, BOOL onmainmenu); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_WARRIORBTN, + IDC_ROGUEBTN, + IDC_SORCERERBTN, + IDC_MONKBTN, + IDC_BARDBTN, + IDC_BARBARIANBTN, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +static void SelClassDestroy(HWND window) { + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + SelHeroSetTitle(GetParent(window), NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelClassInit(HWND window) { + TCHAR buf[32]; + HWND parent = GetParent(window); + + // set the title for the parent + if (SelHeroGetMode() == MULTIPLAYER) + LoadString(global_hinstance, IDS_NEWMULTHERO, buf, 32-1); + else + LoadString(global_hinstance, IDS_NEWSINGHERO, buf, 32-1); + SelHeroSetTitle(parent, buf); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + UiOnPaintBtns(window, sgListIDs); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void UpdateStats(HWND window, int childid) { + TUIHEROINFO focused; + TUIDEFSTATS defstats; + + + // MM: make sure we init name field to zero since SelHeroSetStats() will + // be using it. + ZeroMemory((LPBYTE)&focused, sizeof(focused)); + + focused.level = 1; + switch (childid) + { + case IDC_WARRIORBTN: + focused.heroclass = UI_WARRIOR; + break; + case IDC_ROGUEBTN: + focused.heroclass = UI_ROGUE; + break; + case IDC_SORCERERBTN: + focused.heroclass = UI_SORCERER; + break; + case IDC_MONKBTN: + focused.heroclass = UI_MONK; + break; + case IDC_BARDBTN: + focused.heroclass = UI_BARD; + break; + case IDC_BARBARIANBTN: + focused.heroclass = UI_BARBARIAN; + break; + } + SelHeroGetDefStats(focused.heroclass, &defstats); + + focused.strength = defstats.strength; + focused.magic = defstats.magic; + focused.dexterity = defstats.dexterity; + focused.vitality = defstats.vitality; + + SelHeroSetStats(GetParent(window), &focused); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelClassAbort(HWND window, int ReturnVal) { + if (UiIsSpawned() && (ReturnVal == IDOK)) { + if (IDC_WARRIORBTN != GetWindowLong(GetFocus(), GWL_ID)) { + SpawnErrDialog(window, IDS_SPAWNCLASS_ERR, FALSE); + return; + } + } + + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + if (ReturnVal == IDOK) { + // return the id of the focused button + ReturnVal = GetWindowLong(GetFocus(), GWL_ID); + } + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelClassDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + UpdateStats(window, LOWORD(wparam)); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelClassAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDOK) { + SelClassAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelClassAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDOWN: + if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKEOK), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + SelClassAbort(window, IDOK); + } + else if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKECANCEL), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + SelClassAbort(window, IDCANCEL); + } + break; + + case WM_DESTROY: + SelClassDestroy(window); + break; + + case WM_INITDIALOG: + SelClassInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/SELCONN.CPP b/Uisrc/UI/SELCONN.CPP new file mode 100644 index 0000000..e30b5bf --- /dev/null +++ b/Uisrc/UI/SELCONN.CPP @@ -0,0 +1,902 @@ +//**************************************************************************** +// SelConn.cpp +// Diablo UI select connection method (in "doom-style" menu format) +// +// By Frank Pearce +// created 10.22.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +#define SB_ALWAYS_ON 0 // 0 in final + + +//**************************************************************************** +//**************************************************************************** + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + + extern BOOL UiSelectDevice( + DWORD providerid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata + ); + + extern void UiSetProviderID(DWORD id); + extern void UiSetBasicInterface(BOOL basic); + extern DWORD UiGetProviderID(); + +//**************************************************************************** +//**************************************************************************** + #define OLDPROCPROP TEXT("UIOLDPROC") + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 + + #define MAX_VISIBLE (IDC_CONNECTBTN6 - IDC_CONNECTBTN1 + 1) + + #define DESCRIPTION_LEN SNETSPI_MAXSTRINGLENGTH + #define REQUIREMENTS_LEN SNETSPI_MAXSTRINGLENGTH + + typedef struct _provider TPROVIDERINFO; + typedef TPROVIDERINFO *TPPROVIDERINFO; + struct _provider { + TPPROVIDERINFO next; + BOOL isbasicinterface; + DWORD id; // provider id + DWORD players; // players supported + TCHAR description[DESCRIPTION_LEN]; // provider name + TCHAR requirements[REQUIREMENTS_LEN]; // provider info + }; + + +//**************************************************************************** +//**************************************************************************** + static int sgBigTextIDs[] = { + IDC_DLGTITLE, + IDC_DLGTITLE2, + 0 + }; + static int sgSmallTextIDs[] = { + IDC_CONNECTTEXT, + IDC_PLAYERSTEXT, + 0 + }; + static int sgLblTextIDs[] = { + IDC_REQTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_CONNECTBTN1, + IDC_CONNECTBTN2, + IDC_CONNECTBTN3, + IDC_CONNECTBTN4, + IDC_CONNECTBTN5, + IDC_CONNECTBTN6, + 0 + }; + + static TPPROVIDERINFO sgProviderList; + static int sgProvListLen; + + static SNETCAPSPTR sgmincaps; + static SNETPROGRAMDATAPTR sgprogramdata; + static SNETPLAYERDATAPTR sgplayerdata; + static SNETUIDATAPTR sginterfacedata; + static SNETVERSIONDATAPTR sgversiondata; + + static BOOL sgRequireUpgrade; + + +//**************************************************************************** +//**************************************************************************** +TPPROVIDERINFO SelConnAllocNode(void) { + return (TPPROVIDERINFO) ALLOC(sizeof(TPROVIDERINFO)); +} +//**************************************************************************** +//**************************************************************************** +static void SelConnFreeNode(TPPROVIDERINFO node) { + if (node) { + FREE(node); + } +} +//**************************************************************************** +//**************************************************************************** +static void SelConnFreeList(TPPROVIDERINFO list) { + TPPROVIDERINFO next; + + while (list) { + next = list->next; + SelConnFreeNode(list); + list = next; + } +} +//**************************************************************************** +//**************************************************************************** +TPPROVIDERINFO SelConnAddNode(TPPROVIDERINFO list, TPPROVIDERINFO node) { + node->next = list; + return node; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelConnEnum(DWORD id, + LPCSTR description, + LPCSTR requirements, + SNETCAPSPTR caps) { + TPPROVIDERINFO newprovider = SelConnAllocNode(); + if (! newprovider) return 0; + newprovider->next = NULL; + newprovider->isbasicinterface = caps->flags & SNET_CAPS_BASICINTERFACE; + newprovider->id = id; + newprovider->players = caps->maxplayers; + strcpy(newprovider->description, description); + strcpy(newprovider->requirements, requirements); + sgProviderList = SelConnAddNode(sgProviderList, newprovider); + sgProvListLen++; + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnSetInfo(HWND window, int childid) { + TCHAR format[64]; + TCHAR supported[72]; + TPPROVIDERINFO tpProvider; + HWND child; + TPBMP tpBmp; + + child = GetDlgItem(window, childid); + if (! child) return; + + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + + tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) return; + + child = GetDlgItem(window, IDC_CONNECTTEXT); + if (! child) return; + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), tpProvider->requirements); + + child = GetDlgItem(window, IDC_PLAYERSTEXT); + if (! child) return; + LoadString(global_hinstance, IDS_PLAYERSSUPPORTED, format, 63); + if (sgprogramdata) + wsprintf(supported, format, min(sgprogramdata->maxplayers, tpProvider->players)); + else + wsprintf(supported, format, tpProvider->players); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), supported); + + UiDoomStaticReset(window, sgSmallTextIDs, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnSetProviders(HWND window, TPPROVIDERINFO provider) { + HWND child; + TPBMP tpBmp; + int * ctrlid = sgListIDs; + + for (; *ctrlid; ctrlid++) { + child = GetDlgItem(window, *ctrlid); + if (! child) continue; + if (! provider) { + EnableWindow(child, FALSE); + continue; + } + + EnableWindow(child, TRUE); + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) continue; + + tpBmp->userdata = (LONG) provider; + UiSetBmpText(tpBmp, provider->description); + + provider = provider->next; + } + + UiDoomButtonsReset(window, sgListIDs, AF_SMALL); +} + + +//**************************************************************************** +//**************************************************************************** +static int SelConnGetFocusNum(void) { + HWND btn = GetFocus(); + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPPROVIDERINFO list = sgProviderList; + if (! list) return 0; + TPPROVIDERINFO node = (TPPROVIDERINFO) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnUpdateSbar(HWND window) { + SbarDraw(window, IDC_SCROLLBAR, sgProvListLen, SelConnGetFocusNum()); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_CONNECTBTN2, + IDC_CONNECTBTN3, + IDC_CONNECTBTN4, + IDC_CONNECTBTN5, + IDC_CONNECTBTN6, + IDC_CONNECTBTN1 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_CONNECTBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnShiftTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_CONNECTBTN6, + IDC_CONNECTBTN1, + IDC_CONNECTBTN2, + IDC_CONNECTBTN3, + IDC_CONNECTBTN4, + IDC_CONNECTBTN5 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_CONNECTBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static int GetNumProvNode(HWND btn) { + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPPROVIDERINFO list = sgProviderList; + if (! list) return 0; + TPPROVIDERINFO node = (TPPROVIDERINFO) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static TPPROVIDERINFO GetProvider(int index) { + TPPROVIDERINFO list = sgProviderList; + + while (list && index) { + list = list->next; + index--; + } + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnPageDown(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + + // get info of 1st btn + HWND btn1 = GetDlgItem(parent, IDC_CONNECTBTN1); + if (! btn1) return; + + // see if there is info below the bottom + TPBMP tpBmp = (TPBMP) GetWindowLong(GetDlgItem(parent, IDC_CONNECTBTN6), GWL_USERDATA); + if (! tpBmp) return; + TPPROVIDERINFO tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if ((! tpProvider) || (! tpProvider->next)) { + SelConnShiftTab(btn1); + return; + } + + // calc the index of the new top + int newtop = GetNumProvNode(btn1) + MAX_VISIBLE; + if (newtop > (sgProvListLen - MAX_VISIBLE)) + newtop = sgProvListLen - MAX_VISIBLE; + + // get the pointer to that index + tpProvider = GetProvider(newtop); + if (! tpProvider) return; + + // update everything on the screen + UiSndPlayClick(); + SelConnSetProviders(parent, tpProvider); + SelConnSetInfo(parent, GetWindowLong(focus, GWL_ID)); + SelConnUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnPageUp(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + HWND btn1 = GetDlgItem(parent, IDC_CONNECTBTN1); + if (! btn1) return; + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(btn1, GWL_USERDATA); + if (! tpBmp) return; + TPPROVIDERINFO tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) return; + if (tpProvider == sgProviderList) { + SelConnTab(GetDlgItem(parent, IDC_CONNECTBTN6)); + return; + } + + // calc the index of the new top + int newtop = GetNumProvNode(btn1) - MAX_VISIBLE; + if (newtop < 0) + newtop = 0; + + // get the pointer to that index + tpProvider = GetProvider(newtop); + if (! tpProvider) return; + + // update everything on the screen + UiSndPlayClick(); + SelConnSetProviders(parent, tpProvider); + SelConnSetInfo(parent, GetWindowLong(focus, GWL_ID)); + SelConnUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnScrollDown(HWND focus) { + // see if there is info below the focus + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPPROVIDERINFO tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) return; + if (! tpProvider->next) return; + + if (GetWindowLong(focus, GWL_ID) < IDC_CONNECTBTN6) { + // handle it just like a tab + SelConnTab(focus); + return; + } + + // advance the list + HWND child = GetDlgItem(GetParent(focus), IDC_CONNECTBTN2); + if (! child) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) return; + UiSndPlayClick(); + SelConnSetProviders(GetParent(focus), tpProvider); + SelConnSetInfo(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelConnUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnScrollUp(HWND focus) { + if (GetWindowLong(focus, GWL_ID) > IDC_CONNECTBTN1) { + // handle it just like a shift-tab + SelConnShiftTab(focus); + return; + } + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPPROVIDERINFO tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) return; + TPPROVIDERINFO tpProviderList = sgProviderList; + if (tpProvider == tpProviderList) return; + + // retreat the list + while (tpProviderList && (tpProviderList->next != tpProvider)) { + tpProviderList = tpProviderList->next; + } + UiSndPlayClick(); + SelConnSetProviders(GetParent(focus), tpProviderList); + SelConnSetInfo(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelConnUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnDestroy(HWND window) { + SbarDestroy(window, IDC_SCROLLBAR); + SelConnFreeList(sgProviderList); + + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgBigTextIDs); + UiDoomCtrlsDestroy(window, sgLblTextIDs); + UiDoomCtrlsDestroy(window, sgSmallTextIDs); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + TitleLogoDestroy(); + FocusAnimateDestroy(); +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK SelConnListEntryWndProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + WNDPROC oldproc = (WNDPROC) GetProp(window, OLDPROCPROP); + + switch (message) { + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_KEYDOWN: + switch (wparam) { + case VK_SPACE: + case VK_RETURN: + SendMessage(GetParent(window), WM_COMMAND, IDOK, (LPARAM)NULL); + break; + case VK_ESCAPE: + SendMessage(GetParent(window), WM_COMMAND, IDCANCEL, (LPARAM)NULL); + break; + case VK_TAB: + if (GetKeyState(VK_SHIFT) < 0) { + SelConnShiftTab(window); + } + else { + SelConnTab(window); + } + break; + case VK_UP: + case VK_LEFT: + SelConnScrollUp(window); + break; + case VK_DOWN: + case VK_RIGHT: + SelConnScrollDown(window); + break; + case VK_PRIOR: + SelConnPageUp(window); + break; + case VK_NEXT: + SelConnPageDown(window); + break; + + } + return 0; + + case WM_DESTROY: + RemoveProp(window, OLDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnSubclassEntries(HWND window) { + HWND child; + int *ListID; + WNDPROC oldproc; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, OLDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) SelConnListEntryWndProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnInit(HWND window) { + TPBMP tpBmp; + + SelConnSubclassEntries(window); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\selconn.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + // set up a doom-like interface + UiDoomStaticInit(window, sgSmallTextIDs, AF_SMALLGRAY); + UiDoomStaticInit(window, sgLblTextIDs, AF_SMALLGRAY); + UiDoomStaticInit(window, sgBigTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_SMALL); + + // get provider list + sgProvListLen = 0; + sgProviderList = NULL; + SNetEnumProviders(NULL, SelConnEnum); + + // set provider buttons to contain text + SelConnSetProviders(window, sgProviderList); + + // init the scroll bar + SbarInit(window, IDC_SCROLLBAR); +#if SB_ALWAYS_ON != 1 + if (sgProvListLen <= MAX_VISIBLE) { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), FALSE); + } +#endif +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnAbort(HWND window, int ReturnVal) { + if (ReturnVal == IDCANCEL) + UiSndPlayEnter(); + UiFadeAbort(window); + SDlgKillTimer(window, LOGO_TIMER_ID); + SDlgKillTimer(window, FOCUS_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelConnInitProvider(HWND window) { + TPPROVIDERINFO tpProvider; + SNETUIDATA tUiData; + + UiSndPlayEnter(); + UiSetProviderID(0); + UiSetBasicInterface(FALSE); + + TPBMP tpBmp = (TPBMP) GetWindowLong(GetFocus(), GWL_USERDATA); + if (! tpBmp) + return FALSE; + + tpProvider = (TPPROVIDERINFO) tpBmp->userdata; + if (! tpProvider) + return FALSE; + UiSetProviderID(tpProvider->id); + UiSetBasicInterface(tpProvider->isbasicinterface); + + if (sginterfacedata) + tUiData = *sginterfacedata; + tUiData.parentwindow = window; + + // Hide cursor while inside Initialize() routine. + // That way the .snp can take control of the cursor and do whatever it wants. + UiClearCursor(); + BOOL bResult = SNetInitializeProvider( + UiGetProviderID(), + sgprogramdata, + sgplayerdata, + &tUiData, + sgversiondata); + UiSetCursor(); + + if (bResult) { + return UiSelectDevice( + UiGetProviderID(), + sgprogramdata, + sgplayerdata, + &tUiData, + sgversiondata + ); + } + else { + return FALSE; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnInitError(HWND window) { + switch (GetLastError()) { + case SNET_ERROR_CANCELLED: + // do nothing if the user cancelled during connect + break; + default: + // error initializing connection method + TCHAR errstr[128]; + LoadString(global_hinstance, IDS_SELCONN_ERR, errstr, 127); + SelOkDialog(window, errstr, NULL, FALSE); + break; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnAttemptInit(HWND window) { + if (SelConnInitProvider(window)) { + SelConnAbort(window, IDOK); + } + else if (GetLastError() == SNET_ERROR_REQUIRES_UPGRADE) { + sgRequireUpgrade = TRUE; + SelConnAbort(window, 0); + } + else { + switch (UiGetProviderID()) { + case 'MODM': + case 'IPXN': + case 'SCBL': + SelConnInitError(window); + break; + + default: + // do nothing, and hope the provider notified the user of the error + break; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelConnInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelConnAttemptInit(window); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelConnAbort(window, IDCANCEL); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_SCROLLBAR), x, y)) { + int SbarClick = SbarInterpretClick(GetDlgItem(window, IDC_SCROLLBAR), x, y); + switch (SbarClick) { + case DSB_UP: + SelConnScrollUp(GetFocus()); + break; + case DSB_PAGEUP: + SelConnPageUp(GetFocus()); + break; + case DSB_DOWN: + SelConnScrollDown(GetFocus()); + break; + case DSB_PAGEDOWN: + SelConnPageDown(GetFocus()); + break; + default: + break; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelConnDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + SelConnSetInfo(window, LOWORD(wparam)); + SelConnUpdateSbar(window); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelConnAttemptInit(window); + } + else if (LOWORD(wparam) == IDOK) { + SelConnAttemptInit(window); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelConnAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDBLCLK: + case WM_LBUTTONDOWN: + SelConnInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + if (SbarUpClick(GetDlgItem(window, IDC_SCROLLBAR))) { + SelConnUpdateSbar(window); + } + break; + + case WM_DESTROY: + SelConnDestroy(window); + break; + + case WM_INITDIALOG: + SelConnInit(window); + PostMessage(window, WM_USER+1000, 0, 0); + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + switch (wparam) { + case FOCUS_TIMER_ID: + FocusAnimate(window, GetFocus()); + break; + case LOGO_TIMER_ID: + TitleLogoAnimate(window); + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelectProvider (SNETCAPSPTR mincaps, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *providerid) { + + DWORD result = 0; + + sgmincaps = mincaps; + sgprogramdata = programdata; + sgplayerdata = playerdata; + sginterfacedata = interfacedata; + sgversiondata = versiondata; + sgRequireUpgrade = FALSE; + + // make sure fonts are loaded + ArtFontLoad(); + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SELCONNECT_DIALOG"), + SDrawGetFrameWindow(), + SelConnDialogProc); + + + if (result == IDOK) { + ArtFontDestroy(); + } + + + if (providerid) + *providerid = UiGetProviderID(); + + if (sgRequireUpgrade) { + SetLastError(SNET_ERROR_REQUIRES_UPGRADE); + return FALSE; + } + else if (result == IDOK) { + return TRUE; + } + else { + SetLastError(SNET_ERROR_CANCELLED); + return FALSE; + } +} diff --git a/Uisrc/UI/SELDIAL.CPP b/Uisrc/UI/SELDIAL.CPP new file mode 100644 index 0000000..b5e96ec --- /dev/null +++ b/Uisrc/UI/SELDIAL.CPP @@ -0,0 +1,432 @@ +//**************************************************************************** +// SelDial.cpp +// Diablo UI select "dial" or "answer" for modem setup +// +// By Frank Pearce +// created 11.23.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void ModemSetInfo(HWND window, LPCSTR infotitle, LPCSTR text); + extern BOOL ModemConnected(void); + extern BOOL ModemEnum(void); + extern LPCSTR ModemGameName(void); + extern int ModemLastJoinedNumber(void); + extern int ModemGameNumber(LPCSTR gamename); + + +//**************************************************************************** +//**************************************************************************** + #define PHONEBOOK_KEY "Diablo\\Phone Book" + #define PHONEBOOK_ENTRY1 "Entry1" + #define PHONEBOOK_ENTRY2 "Entry2" + #define PHONEBOOK_ENTRY3 "Entry3" + #define PHONEBOOK_ENTRY4 "Entry4" + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define ENUM_TIMER_ID 2 + #define ENUM_TIMER_DELAY 2000 + + #define PHONEBOOK_SIZE 4 + typedef struct _phonenumber { + TCHAR number[MAX_DIAL_LEN]; + } TNUMBER, * TPNUMBER; + + +//**************************************************************************** +//**************************************************************************** + static char * sgPhoneEntryNames[PHONEBOOK_SIZE] = { + PHONEBOOK_ENTRY1, + PHONEBOOK_ENTRY2, + PHONEBOOK_ENTRY3, + PHONEBOOK_ENTRY4, + }; + + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_DIALBTN1, + IDC_DIALBTN2, + IDC_DIALBTN3, + IDC_DIALBTN4, + IDC_DIALBTN5, + IDC_DIALBTN6, + 0 + }; + + static TNUMBER sgPhoneBook[PHONEBOOK_SIZE]; + static LPTSTR sgDialString; + + +//**************************************************************************** +//**************************************************************************** +void SelDialSaveBookEntries(LPCSTR dialstring) { + TCHAR entry[MAX_DIAL_LEN]; + int i, lasttomove; + + // is the string already in the list? + for (i = 0; i < PHONEBOOK_SIZE; i++) { + if ( + SRegLoadString( + PHONEBOOK_KEY, + sgPhoneEntryNames[i], + SREG_FLAG_USERSPECIFIC, + entry, + MAX_DIAL_LEN + ) + ) { + entry[MAX_DIAL_LEN-1] = 0; + if (0 == strcmp(entry, dialstring)) { + break; + } + } + } + + if (i == PHONEBOOK_SIZE) + lasttomove = PHONEBOOK_SIZE - 1; + else + lasttomove = i; + + // move all other numbers down in the phone book + for (i = lasttomove-1; i >= 0; i--) { + entry[0] = 0; + if ( + SRegLoadString( + PHONEBOOK_KEY, + sgPhoneEntryNames[i], + SREG_FLAG_USERSPECIFIC, + entry, + MAX_DIAL_LEN + ) + ) { + entry[MAX_DIAL_LEN-1] = 0; + if (strlen(entry)) { + SRegSaveString( + PHONEBOOK_KEY, + sgPhoneEntryNames[i+1], + SREG_FLAG_USERSPECIFIC, + entry + ); + } + } + } + + // save the number in the first slot + SRegSaveString( + PHONEBOOK_KEY, + sgPhoneEntryNames[0], + SREG_FLAG_USERSPECIFIC, + dialstring + ); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialGetBookEntries(void) { + for (int i = 0; i < PHONEBOOK_SIZE; i++) { + if ( + SRegLoadString( + PHONEBOOK_KEY, + sgPhoneEntryNames[i], + SREG_FLAG_USERSPECIFIC, + sgPhoneBook[i].number, + MAX_DIAL_LEN + ) + ) { + sgPhoneBook[i].number[MAX_DIAL_LEN-1] = 0; + } + else { + sgPhoneBook[i].number[0] = 0; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialPhoneBook(HWND window) { + int i; + HWND child; + TPBMP tpBmp; + TCHAR fmt[32]; + TCHAR callstr[64]; + + // make sure my phone book is empty + for (i = 0; i < PHONEBOOK_SIZE; i++) + sgPhoneBook[i].number[0] = 0; + + // get the phone book numbers + SelDialGetBookEntries(); + + // put the info into the buttons + LoadString(global_hinstance, IDS_CALL_FMT, fmt, 31); + for (i = 0; i < PHONEBOOK_SIZE; i++) { + child = GetDlgItem(window, IDC_DIALBTN3 + i); + if (! child) continue; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) continue; + if (strlen(sgPhoneBook[i].number)) { + wsprintf(callstr, fmt, sgPhoneBook[i].number); + UiSetBmpText(tpBmp, callstr); + } + else { + EnableWindow(child, FALSE); + UiSetBmpText(tpBmp, NULL); + } + } + + UiDoomButtonsReset(window, sgListIDs, AF_SMALL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialSetInfo(HWND window, int childid) { + TCHAR title[64], desc[256]; + LoadString(global_hinstance, IDS_SELDIAL_INFOTITLE, title, 63); + switch (childid) { + case IDC_DIALBTN1: + if (ModemConnected()) { + LoadString(global_hinstance, IDS_MODEM_CREATE2, desc, 255); + } + else { + LoadString(global_hinstance, IDS_MODEM_CREATE, desc, 255); + } + break; + case IDC_DIALBTN2: + if (ModemConnected()) { + LoadString(global_hinstance, IDS_MODEM_JOIN, desc, 255); + } + else { + LoadString(global_hinstance, IDS_MODEM_DIALNEW, desc, 255); + } + break; + default: + LoadString(global_hinstance, IDS_MODEM_DIALOLD, desc, 255); + break; + } + ModemSetInfo(GetParent(window), title, desc); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialDestroy(HWND window) { + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + FocusAnimateDestroy(); + ModemSetInfo(GetParent(window), NULL, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialSetJoinBtn(HWND window) { + char joinstr[64]; + HWND child = GetDlgItem(window, IDC_DIALBTN2); + if (! child) return; + + if (ModemGameNumber(ModemGameName()) > ModemLastJoinedNumber()) + LoadString(global_hinstance, IDS_MODEMJOINNEW, joinstr, 63); + else + LoadString(global_hinstance, IDS_MODEMJOINPREV, joinstr, 63); + + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), joinstr); + UiDoomButtonsReset(window, sgListIDs, AF_SMALL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialClearJoinBtn(HWND window) { + HWND child = GetDlgItem(window, IDC_DIALBTN2); + if (! child) return; + + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), NULL); + + UiDoomButtonsReset(window, sgListIDs, AF_SMALL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialAbort(HWND window, int ReturnVal) { + if ((ReturnVal == IDOK) || (ReturnVal == IDCANCEL)) + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + SDlgKillTimer(window, ENUM_TIMER_ID); + if (IDOK == ReturnVal) { + // see what the selection was + int ID = GetWindowLong(GetFocus(), GWL_ID); + switch (ID) { + case IDC_DIALBTN1: + SDlgEndDialog(window, MODE_ANSWER); + break; + case IDC_DIALBTN2: + SDlgEndDialog(window, MODE_DIALNEW); + break; + default: { + if (sgDialString) + strcpy(sgDialString, sgPhoneBook[ID - IDC_DIALBTN3].number); + SDlgEndDialog(window, MODE_DIALOLD); + } + break; + } + } + else { + SDlgEndDialog(window, ReturnVal); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialEnum(HWND window) { + HWND child = GetDlgItem(window, IDC_DIALBTN2); + if (! child) return; + + if (ModemEnum()) { + SelDialSetJoinBtn(window); + EnableWindow(child, TRUE); + ShowWindow(child, TRUE); + } + else { + if (GetLastError() == SNET_ERROR_NO_NETWORK) { + SelDialAbort(window, SNET_ERROR_NO_NETWORK); + } + else { + if (GetFocus() == child) { + SetFocus(GetDlgItem(window, IDC_DIALBTN1)); + } + SelDialClearJoinBtn(window); + EnableWindow(child, FALSE); + ShowWindow(child, FALSE); + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialInit(HWND window) { + HWND parent = GetParent(window); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + UiOnPaintBtns(window, sgListIDs); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_SMALL); + + if (! ModemConnected()) { + SelDialPhoneBook(window); + } + else { + SDlgSetTimer(window, ENUM_TIMER_ID, ENUM_TIMER_DELAY, NULL); + SelDialEnum(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelDialInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelDialAbort(window, IDOK); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelDialAbort(window, IDCANCEL); + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelDialDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + SelDialSetInfo(window, LOWORD(wparam)); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelDialAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDOK) { + SelDialAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelDialAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDOWN: + SelDialInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_DESTROY: + SelDialDestroy(window); + break; + + case WM_INITDIALOG: + sgDialString = (LPSTR) lparam; + SelDialInit(window); + return 0; + + case WM_TIMER: + switch (wparam) { + case FOCUS_TIMER_ID: + FocusAnimate(window, GetFocus()); + break; + case ENUM_TIMER_ID: + SelDialEnum(window); + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/SELGAME.CPP b/Uisrc/UI/SELGAME.CPP new file mode 100644 index 0000000..0a2eac4 --- /dev/null +++ b/Uisrc/UI/SELGAME.CPP @@ -0,0 +1,129 @@ +//**************************************************************************** +// SelGame.cpp +// Diablo UI select multiplayer game +// +// By Frank Pearce +// created 11.5.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** +extern BOOL UiSelectIPXGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); +extern BOOL UiDirectLinkGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); +extern BOOL UiModemGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid); + + + +//**************************************************************************** +//**************************************************************************** + #define ID_NETWORK 'IPXN' + #define ID_MODEM 'MODM' + #define ID_SERIAL 'SCBL' + + +//**************************************************************************** +//**************************************************************************** +static DWORD sgProviderID; +static BOOL sgBasicInterface; +void UiSetBasicInterface(BOOL basic) { + sgBasicInterface = basic; +} +BOOL UiIsBasicInterface(void) { + return sgBasicInterface; +} +void UiSetProviderID(DWORD id) { + sgProviderID = id; +} +DWORD UiGetProviderID(void) { + return sgProviderID; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelectGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid) { + BOOL success; + + if (UiIsBasicInterface()) { + return UiSelectIPXGame( + flags, + programdata, + playerdata, + interfacedata, + versiondata, + playerid + ); + } + + switch (UiGetProviderID()) { + case ID_NETWORK: + success = UiSelectIPXGame( + flags, + programdata, + playerdata, + interfacedata, + versiondata, + playerid + ); + break; + + case ID_MODEM: + success = UiModemGame( + flags, + programdata, + playerdata, + interfacedata, + versiondata, + playerid + ); + break; + + case ID_SERIAL: + success = UiDirectLinkGame( + flags, + programdata, + playerdata, + interfacedata, + versiondata, + playerid + ); + break; + + default: + success = SNetSelectGame( + flags, + programdata, + playerdata, + interfacedata, + versiondata, + playerid + ); + break; + } + + return success; +} diff --git a/Uisrc/UI/SELHERO.CPP b/Uisrc/UI/SELHERO.CPP new file mode 100644 index 0000000..5969fc8 --- /dev/null +++ b/Uisrc/UI/SELHERO.CPP @@ -0,0 +1,1073 @@ +//**************************************************************************** +// SelHero.cpp +// Diablo UI select hero dialogs +// +// By Frank Pearce +// created 9.19.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern int UiCreaHeroDlg(HWND parent, GETDEFHERO getstatsfcn, LPSTR newname, int * charclass); + extern int UiOkCancelDialog(HWND parent, LPCSTR okcanceltext, BOOL errorflag); + extern int UiOkDialog(HWND parent, LPCSTR oktext, BOOL errorflag); + extern int SelYesNoDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + + extern BOOL CALLBACK SelListDialogProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam); + extern BOOL CALLBACK SelClassDialogProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam); + extern BOOL CALLBACK SelLoadDialogProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam); + extern BOOL CALLBACK SelDiffDialogProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam); + extern BOOL CALLBACK EnterNameDialogProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam); + + extern void HeroInfo2Txt(TUIHEROINFO *pHeroInfo, char *szDesc); + + extern void SelDiffLoadFocus(BOOL loadfocus); + static void SelHeroAbort(HWND window, int retval); + + +//**************************************************************************** +//**************************************************************************** + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + #define MILLISEC_PER_SEC 1000 + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 + + +//**************************************************************************** +//**************************************************************************** + enum _wm_states { + WM_STATE_SELLIST = (WM_USER + 2000), + + WM_STATE_SELCLASS, + WM_STATE_ENTERNAME, + + WM_STATE_SELLOAD, + WM_STATE_SELDIFF, + + WM_STATE_CONTINUE, + WM_STATE_NEWHERO, + WM_STATE_DELETEHERO + }; + + +//**************************************************************************** +//**************************************************************************** + static LPBYTE sgHerosBmp = NULL; + static SIZE sgHerosSize; + + static int sgMode; // single or multi player + + //*** strings to put the hero stats in + static char selheroname[MAX_NAME_LEN]; + static char selherolevel[8]; + static char selherostr[4]; + static char selheromagic[4]; + static char selherodex[4]; + static char selherovit[4]; + static BOOL hassaved; + + static ENUMHEROS sgEnumFcn; + static CREATEHERO sgCreateFcn; + static DELETEHERO sgDeleteFcn; + static GETDEFHERO sgGetStatsFcn; + static bool sgAllowBard; + static bool sgAllowBarbarian; + + static TPUIHEROINFO sgHeroList; + static TUIHEROINFO sgNewHero; // for use when a new hero is being created + static int sgListLen; + static int sgDifficulty; + + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgLblIDs[] = { + IDC_LEVELLBL, + IDC_STRLBL, + IDC_MAGLBL, + IDC_DEXLBL, + IDC_VITLBL, + 0 + }; + static int sgDataIDs[] = { + IDC_CHARLEVEL, + IDC_CHARSTR, + IDC_CHARMAGIC, + IDC_CHARDEX, + IDC_CHARVIT, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +TPUIHEROINFO GetHeroList(void) { + return sgHeroList; +} +int GetNumHeros(void) { + return sgListLen; +} + + +//**************************************************************************** +//**************************************************************************** +void SelHeroSetDiff(int difficulty) { + sgDifficulty = difficulty; +} + + +//**************************************************************************** +//**************************************************************************** +LPCTSTR SelectedName(void) { + return selheroname; +} + + +//**************************************************************************** +//**************************************************************************** +TPUIHEROINFO SelHeroAllocNode(void) { + return (TPUIHEROINFO) ALLOC(sizeof(TUIHEROINFO)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroFreeNode(TPUIHEROINFO node) { + if (node) { + FREE(node); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroFreeList(TPUIHEROINFO list) { + TPUIHEROINFO next; + + while (list) { + next = list->next; + SelHeroFreeNode(list); + list = next; + } +} + + +//**************************************************************************** +//**************************************************************************** +TPUIHEROINFO SelHeroAddNode(TPUIHEROINFO list, TPUIHEROINFO node) { + node->next = list; + return node; +} + + +//**************************************************************************** +//**************************************************************************** +static TPUIHEROINFO SelHeroDeleteNode(TPUIHEROINFO list, LPCSTR namekey) { + TPUIHEROINFO current, previous, found; + + current = list; + previous = NULL; + found = NULL; + + while (current && !found) { + if (strcmp(current->name, namekey) == 0) { + found = current; + } + else { + previous = current; + current = current->next; + } + } + + if (found) { + if (previous) + previous->next = found->next; + else + list = found->next; + SelHeroFreeNode(found); + } + + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static TPUIHEROINFO SelHeroFindNode(TPUIHEROINFO list, LPCSTR namekey) { + TPUIHEROINFO current = list; + + while (current) { + if (_stricmp(current->name, namekey) == 0) + break; + current = current->next; + } + + return current; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelHeroEnumHero(TPUIHEROINFO heroinfo) { + TPUIHEROINFO newhero = SelHeroAllocNode(); + if (! newhero) + return 0; + memcpy(newhero, heroinfo, sizeof(TUIHEROINFO)); + newhero->next = NULL; + sgHeroList = SelHeroAddNode(sgHeroList, newhero); + sgListLen++; + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroGetHeros(HWND window) { + TPUIHEROINFO dummyslot; + // add a "new hero" slot at the end of the list + TPUIHEROINFO newhero = SelHeroAllocNode(); + if (!newhero) + return; + + newhero->next = NULL; + LoadString(global_hinstance, IDS_NEWHERO, newhero->name, MAX_NAME_LEN-1); + newhero->level = 0; + sgHeroList = SelHeroAddNode(sgHeroList, newhero); + dummyslot = sgHeroList; + sgListLen = 1; + + // add all the other heros to the list + if (! sgEnumFcn(SelHeroEnumHero)) { + TCHAR err[64]; + // the enum failed -- notify the user + LoadString(global_hinstance, IDS_ENUMCHAR_ERR, err, 64); + UiOkDialog(window, err, TRUE); + } + + if (dummyslot == sgHeroList) { + PostMessage(window, WM_STATE_SELCLASS, 0, 0); + } + else { + PostMessage(window, WM_STATE_SELLIST, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroResetFocus(HWND window, int childID) { + SetFocus(GetDlgItem(window, childID)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroSetImage(HWND window, int heroclass) { + RECT rect; + HWND child = GetDlgItem(window, IDC_HEROIMAGE); + + InvalidateRect(child, NULL, FALSE); + + GetClientRect(child, &rect); + + // hack since the art hasn't changed. + if (heroclass == UI_BARBARIAN) + heroclass = UI_WARRIOR; + else if (heroclass == UI_NUM_CLASSES) + --heroclass; + + UiCalcNewRect(&rect, 0, rect.bottom * heroclass); + + SDlgSetBitmap( + child, + NULL, + TEXT("Static"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + sgHerosBmp, + &rect, + sgHerosSize.cx, + sgHerosSize.cy + ); +} + + +//**************************************************************************** +//**************************************************************************** +int SelHeroGetMode(void) { + return sgMode; +} + + +//**************************************************************************** +//**************************************************************************** +void SelHeroGetDefStats(int heroclass, TPUIDEFSTATS stats) { + sgGetStatsFcn(heroclass, stats);; +} + + +//**************************************************************************** +//**************************************************************************** +void SelHeroClearStats(HWND window) { + LPTSTR empty = "--"; + HWND child; + + hassaved = FALSE; + selheroname[0] = 0; + + child = GetDlgItem(window, IDC_CHARLEVEL); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), empty); + child = GetDlgItem(window, IDC_CHARSTR); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), empty); + child = GetDlgItem(window, IDC_CHARMAGIC); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), empty); + child = GetDlgItem(window, IDC_CHARDEX); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), empty); + child = GetDlgItem(window, IDC_CHARVIT); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), empty); + + SelHeroSetImage(window, UI_NUM_CLASSES); + + UiDoomStaticReset(window, sgDataIDs, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +void SelHeroSetStats(HWND window, TPUIHEROINFO hero) { + HWND child; + + if (! hero->level) { + SelHeroClearStats(window); + return; + } + + hassaved = hero->hassaved; + strcpy(selheroname, hero->name); + + child = GetDlgItem(window, IDC_CHARLEVEL); + wsprintf(selherolevel, "%d", hero->level); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), selherolevel); + + child = GetDlgItem(window, IDC_CHARSTR); + wsprintf(selherostr, "%d", hero->strength); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), selherostr); + + child = GetDlgItem(window, IDC_CHARMAGIC); + wsprintf(selheromagic, "%d", hero->magic); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), selheromagic); + + child = GetDlgItem(window, IDC_CHARDEX); + wsprintf(selherodex, "%d", hero->dexterity); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), selherodex); + + child = GetDlgItem(window, IDC_CHARVIT); + wsprintf(selherovit, "%d", hero->vitality); + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), selherovit); + + SelHeroSetImage(window, hero->heroclass); + + UiDoomStaticReset(window, sgDataIDs, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +void SelHeroSetTitle(HWND window, LPCTSTR title) { + HWND child = GetDlgItem(window, IDC_DLGTITLE); + if (! child) return; + UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), title); + UiDoomStaticReset(window, sgTextIDs, AF_BIGGRAY); +} + +//**************************************************************************** +//**************************************************************************** +static void convert_nasty(LPSTR nasty) { + while (*nasty != 0) { + (*nasty)--; + nasty++; + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL IsNastyName(LPCTSTR name) { + TCHAR tempname[SNETSPI_MAXSTRINGLENGTH]; + TCHAR nasty[MAX_NAME_LEN]; + + strcpy(tempname, name); + _strlwr(tempname); + + for (int index = IDS_FIRST_NASTY; index <= IDS_LAST_NASTY; index++) { + LoadString(global_hinstance, index, nasty, MAX_NAME_LEN-1); + convert_nasty(nasty); + _strlwr(nasty); + if (strstr(tempname, nasty)) { + return TRUE; + } + } + return FALSE; +} + + +//**************************************************************************** +// InvalidChars() +// +// NOTE: SPACE is not included as a bad char. SPACE and any other additional bad +// characters should be placed into the additional string. Things like GAME NAME +// may include spaces. +//**************************************************************************** +BOOL InvalidChars(LPCTSTR name, LPCTSTR additionalbad) { + LPTSTR basicbad = ",<>%&\\\"?*#/"; + unsigned char c; + + if (strpbrk(name, basicbad)) + return TRUE; + + if (strpbrk(name, additionalbad)) + return TRUE; + + while (0 != (c = *name)) { + if (c < ' ') return TRUE; + if ((c > '~') && (c < 0xc0)) return TRUE; + name++; + } + return FALSE; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL ValidName(LPCTSTR name) { + BOOL validname = TRUE; + + // single player name restrictions + if (! strlen(name)) + validname = FALSE; + + // check multi player name restrictions + if (sgMode == MULTIPLAYER) { + if (IsNastyName(name) || InvalidChars(name, " ")) { + validname = FALSE; + } + } + + return validname; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelHeroCreateNew(HWND window, LPCTSTR newname) { + TCHAR title[32]; + TCHAR format[128]; + TCHAR confirm[128 + MAX_NAME_LEN]; + TPUIHEROINFO oldhero; + + if (SelHeroGetMode() == MULTIPLAYER) + LoadString(global_hinstance, IDS_NEWMULTHERO, title, 32-1); + else + LoadString(global_hinstance, IDS_NEWSINGHERO, title, 32-1); + + // make sure the name doesn't have reserved words or chars + if (! ValidName(newname)) { + LoadString(global_hinstance, IDS_NAME_ERR, format, 127); + SelOkDialog(window, format, title, TRUE); + return FALSE; + } + + // see if this name is already used + oldhero = SelHeroFindNode(sgHeroList, newname); + if (oldhero) { + // the name already exists -- confirm the overwrite + LoadString(global_hinstance, IDS_CONFIRM_OVERWRITE, format, 127); + wsprintf(confirm, format, oldhero->name); + if (IDCANCEL == SelYesNoDialog(window, confirm, title, TRUE)) { + return FALSE; + } + } + + strcpy(sgNewHero.name, newname); + sgNewHero.hassaved = FALSE; + + // create the hero file + if (! sgCreateFcn(&sgNewHero)) { + // notify user of the failure + LoadString(global_hinstance, IDS_CREATE_ERR, format, 127); + UiOkDialog(window, format, TRUE); + return FALSE; + } + + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +static void DoDeleteHero(HWND window) { + TCHAR title[32]; + TCHAR format[64]; + TCHAR confirm[64 + MAX_NAME_LEN]; + TPUIHEROINFO hero; + + if (SelHeroGetMode() == MULTIPLAYER) + LoadString(global_hinstance, IDS_DELETEMULTHERO, title, 32-1); + else + LoadString(global_hinstance, IDS_DELETESINGHERO, title, 32-1); + + // confirm the delete + LoadString(global_hinstance, IDS_CONFIRM_DELETE, format, 63); + wsprintf(confirm, format, selheroname); + if (IDCANCEL == SelYesNoDialog(window, confirm, title, TRUE)) { + PostMessage(window, WM_STATE_SELLIST, 0, 0); + return; + } + + // find the hero node to delete + hero = SelHeroFindNode(sgHeroList, selheroname); + if (! hero) { + PostMessage(window, WM_STATE_SELLIST, 0, 0); + return; + } + + // make the callback for the delete + if (! sgDeleteFcn(hero)) { + // the delete failed + LoadString(global_hinstance, IDS_DELETE_ERR, format, 63); + SelOkDialog(window, format, title, TRUE); + PostMessage(window, WM_STATE_SELLIST, 0, 0); + return; + } + + // delete the node + sgHeroList = SelHeroDeleteNode(sgHeroList, selheroname); + sgListLen--; + + // if there are no more heros, go straight to create + LoadString(global_hinstance, IDS_NEWHERO, format, MAX_NAME_LEN-1); + if (0 == strcmp(format, sgHeroList->name)) { + PostMessage(window, WM_STATE_SELCLASS, 0, 0); + } + else { + SelHeroSetStats(window, sgHeroList); + PostMessage(window, WM_STATE_SELLIST, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DoSelList(HWND window) { + int result; + + // bring up the hero selection list + result = SDlgDialogBox( + global_hinstance, + TEXT("SELLIST_DIALOG"), + window, + SelListDialogProc + ); + + if (result == IDOK) { + if (! strlen(selheroname)) { + PostMessage(window, WM_STATE_SELCLASS, 0, 0); + } + else if (sgMode == MULTIPLAYER) { + // a multiplayer hero was selected + PostMessage(window, WM_STATE_CONTINUE, 0, 0); + } + else { + // a single player hero was selected + if (hassaved) { + PostMessage(window, WM_STATE_SELLOAD, 0, 0); + } + else { + sgDifficulty = DIFF_NORMAL; + SelHeroAbort(window, SELHERO_NEW_DUNGEON); + } + } + } + else if (result == IDDELETE) { + PostMessage(window, WM_STATE_DELETEHERO, 0, 0); + } + else { + SelHeroAbort(window, SELHERO_PREVIOUS); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DoSelClass(HWND window) { + int result; + + // bring up the hero selection list + if (sgAllowBarbarian) + { + result = SDlgDialogBox( + global_hinstance, + TEXT("SELCLASS_DIALOG3"), + window, + SelClassDialogProc + ); + } + else if (sgAllowBard) + { + result = SDlgDialogBox( + global_hinstance, + TEXT("SELCLASS_DIALOG2"), + window, + SelClassDialogProc + ); + } + else + { + result = SDlgDialogBox( + global_hinstance, + TEXT("SELCLASS_DIALOG"), + window, + SelClassDialogProc + ); + } + + if ((result == -1) || (result == IDCANCEL)) { + TCHAR buf[32]; + LoadString(global_hinstance, IDS_NEWHERO, buf, 32-1); + if (strcmp(buf, sgHeroList->name) == 0) { + SelHeroAbort(window, SELHERO_PREVIOUS); + } + else { + PostMessage(window, WM_STATE_SELLIST, 0, 0); + } + } + else { + switch (result) { + case IDC_ROGUEBTN: + sgNewHero.heroclass = UI_ROGUE; + break; + case IDC_SORCERERBTN: + sgNewHero.heroclass = UI_SORCERER; + break; + case IDC_MONKBTN: + sgNewHero.heroclass = UI_MONK; + break; + case IDC_BARDBTN: + sgNewHero.heroclass = UI_BARD; + break; + case IDC_BARBARIANBTN: + sgNewHero.heroclass = UI_BARBARIAN; + break; + case IDC_WARRIORBTN: + default: + sgNewHero.heroclass = UI_WARRIOR; + break; + } + PostMessage(window, WM_STATE_ENTERNAME, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DoEnterName(HWND window) { + TCHAR newname[MAX_NAME_LEN]; + int result; + + // bring up the enter name screen + result = SDlgDialogBoxParam( + global_hinstance, + TEXT("ENTERNAME_DIALOG"), + window, + EnterNameDialogProc, + (LPARAM) &newname + ); + + if (result == IDOK) { + newname[MAX_NAME_LEN-1] = 0; + if (SelHeroCreateNew(window, newname)) { + PostMessage(window, WM_STATE_NEWHERO, 0, 0); + } + else { + PostMessage(window, WM_STATE_ENTERNAME, 0, 0); + } + } + else { + PostMessage(window, WM_STATE_SELCLASS, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DoSelLoad(HWND window) { + int result; + + // bring up the enter name screen + result = SDlgDialogBox( + global_hinstance, + TEXT("SELLOAD_DIALOG"), + window, + SelLoadDialogProc + ); + + if ((result == -1) || (result == IDCANCEL)) { + PostMessage(window, WM_STATE_SELLIST, 0, 0); + } + else { + if (result == IDC_LOADBTN) { + PostMessage(window, WM_STATE_CONTINUE, 0, 0); + } + else { + PostMessage(window, WM_STATE_SELDIFF, 0, 0); + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static void DoSelDiff(HWND window) { + int result; + +// if (SelHeroGetMode() == SINGLEPLAYER) { +// // single player is always NORMAL difficulty +// SelHeroSetDiff(DIFF_NORMAL); +// SelHeroAbort(window, SELHERO_NEW_DUNGEON); +// return; +// } + + // bring up the select difficulty options + SelDiffLoadFocus(TRUE); + result = SDlgDialogBoxParam( + global_hinstance, + TEXT("SELDIFF_DIALOG"), + window, + SelDiffDialogProc, + sgMode + ); + + if (result == IDOK) { + // confirm the charcter can create a dungeon of the difficulty setting specified + char szGameDesc[SNETSPI_MAXSTRINGLENGTH]; + char szPlayerDesc[SNETSPI_MAXSTRINGLENGTH]; + char err[256]; + TGAMEDATA GameData; + TPUIHEROINFO pHeroInfo; + + pHeroInfo = SelHeroFindNode(sgHeroList, selheroname); + if (pHeroInfo) { + UiCreatePlayerDescription(pHeroInfo, 'DBLO', szPlayerDesc); + + // Create Game description for Storm (and for display of game later) + GameData.bDiff = sgDifficulty; + GameData2Txt( + &GameData, + selheroname, + szPlayerDesc, + szGameDesc, + sizeof(szGameDesc) + ); + + if ((sgMode == MULTIPLAYER) && + ! UiAuthCallback( + SNET_AUTHTYPE_GAME, + selheroname, + szPlayerDesc, + 0, + szGameDesc, + err, + sizeof(err) + ) + ) { + SelOkDialog(window, err, NULL, TRUE); + PostMessage(window, WM_STATE_SELDIFF, 0, 0); + } + else { + SelHeroAbort(window, SELHERO_NEW_DUNGEON); + } + } + else { + SelHeroAbort(window, SELHERO_NEW_DUNGEON); + } + } + else { + PostMessage(window, WM_STATE_SELLOAD, 0, 0); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroDestroy(HWND window) { + UiDoomCtrlsDestroy(window, sgDataIDs); + UiDoomCtrlsDestroy(window, sgLblIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + + SelHeroFreeList(sgHeroList); + + if (sgHerosBmp) { + FREE(sgHerosBmp); + sgHerosBmp = NULL; + } + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + TitleLogoDestroy(); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroAbort(HWND window, int retval) { + UiFadeAbort(window); + SDlgKillTimer(window, LOGO_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, retval); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelHeroInit(HWND window) { + TPBMP tpBmp; + + // create a list of available heros + SelHeroGetHeros(window); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\selhero.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + UiLoadBmpFile( + TEXT("ui_art\\heros.pcx"), + &sgHerosBmp, + &sgHerosSize + ); + + // init the ctrls to use doom text + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomStaticInit(window, sgLblIDs, AF_SMALLGRAY); + UiDoomStaticInit(window, sgDataIDs, AF_SMALLGRAY); + + SelHeroClearStats(window); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelHeroDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + SelHeroDestroy(window); + break; + + case WM_INITDIALOG: + SelHeroInit(window); + PostMessage(window, WM_USER+1000, 0, 0); + return 0; + + case WM_STATE_SELLIST: + DoSelList(window); + return 0; + + case WM_STATE_SELCLASS: + DoSelClass(window); + return 0; + + case WM_STATE_ENTERNAME: + DoEnterName(window); + return 0; + + case WM_STATE_SELLOAD: + DoSelLoad(window); + return 0; + + case WM_STATE_SELDIFF: + DoSelDiff(window); + return 0; + + case WM_STATE_NEWHERO: + strcpy(selheroname, sgNewHero.name); + if (sgMode == MULTIPLAYER) { + SelHeroAbort(window, SELHERO_CONNECT); + } + else { + //sgDifficulty = DIFF_NORMAL; + //SelHeroAbort(window, SELHERO_NEW_DUNGEON); + PostMessage(window, WM_STATE_SELDIFF, 0, 0); + } + return 0; + + case WM_STATE_DELETEHERO: + DoDeleteHero(window); + return 0; + + case WM_STATE_CONTINUE: + if (sgMode == MULTIPLAYER) { + SelHeroAbort(window, SELHERO_CONNECT); + } + else { + SelHeroAbort(window, SELHERO_CONTINUE); + } + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + TitleLogoAnimate(window); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelHeroMultDialog ( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + GETDEFHERO getstatsfcn, + DWORD *selection, + LPSTR heroname, + bool allowBard, + bool allowBarbarian) { + DWORD result = 0; + + // make sure fonts are loaded + ArtFontLoad(); + + sgEnumFcn = enumfcn; + sgCreateFcn = createfcn; + sgDeleteFcn = deletefcn; + sgGetStatsFcn = getstatsfcn; + sgAllowBard = allowBard; + sgAllowBarbarian = allowBarbarian; + + sgHeroList = NULL; + sgMode = MULTIPLAYER; + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SELHERO_DIALOG"), + SDrawGetFrameWindow(), + SelHeroDialogProc); + + // set the results + if (selection) + *selection = result; + if (heroname) + strcpy(heroname, selheroname); + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelHeroSingDialog ( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + GETDEFHERO getstatsfcn, + DWORD *selection, + LPSTR heroname, + int *difficulty, + bool allowBard, + bool allowBarbarian) { + DWORD result = 0; + + // make sure fonts are loaded + ArtFontLoad(); + + sgEnumFcn = enumfcn; + sgCreateFcn = createfcn; + sgDeleteFcn = deletefcn; + sgGetStatsFcn = getstatsfcn; + sgAllowBard = allowBard; + sgAllowBarbarian = allowBarbarian; + + sgHeroList = NULL; + sgMode = SINGLEPLAYER; + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SELHERO_DIALOG"), + SDrawGetFrameWindow(), + SelHeroDialogProc); + // set the results + if (selection) + *selection = result; + if (heroname) + strcpy(heroname, selheroname); + if (difficulty) + *difficulty = sgDifficulty; + + // if the result is any option that starts the game, free fonts, snds. etc. + if (result != SELHERO_PREVIOUS) { + ArtFontDestroy(); + } + + return 1; +} diff --git a/Uisrc/UI/SELIPX.CPP b/Uisrc/UI/SELIPX.CPP new file mode 100644 index 0000000..41ac5dd --- /dev/null +++ b/Uisrc/UI/SELIPX.CPP @@ -0,0 +1,1127 @@ +//**************************************************************************** +// SelIPX.cpp +// Diablo UI select IPX multiplayer game +// +// By Frank Pearce +// created 11.6.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +#define SB_ALWAYS_ON 0 // 0 in final + +#define MIN_DESC_LEN 16 + +//**************************************************************************** +//**************************************************************************** + extern BOOL Txt2HeroInfo(char *szDesc, TUIHEROINFO *pHeroInfo); + extern void TitleLogoDestroy(void); + extern void TitleLogoInit(HWND window); + extern void TitleFramesInit(HWND window, LPCTSTR filename); + extern void TitleLogoAnimate(HWND window); + + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + + extern DWORD UiGetProviderID(void); + + extern BOOL UiDoomCreateGame (SNETCREATEDATAPTR createdata, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid, + BOOL loadfocus, + LPCSTR gamename); + + + static void SelIPXShiftTab(HWND child); + +//**************************************************************************** +//**************************************************************************** + #define OLDPROCPROP TEXT("UIOLDPROC") + #define PROVIDERID 'IPXN' + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 + + #define ENUM_TIMER_ID 3 // how often we re-enum available games + #define ENUM_TIMER_DELAY 1000 + + #define MAX_VISIBLE 6 + + +//**************************************************************************** +//**************************************************************************** + static int sgTitleIDs[] = { + IDC_DLGTITLE, + IDC_DLGTITLE2, + 0 + }; + static int sgTextIDs[] = { + IDC_DLGTITLE3, + 0 + }; + static int sgGameDescID[] = { + IDC_GAMEDESC, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_GAMEBTN1, + IDC_GAMEBTN2, + IDC_GAMEBTN3, + IDC_GAMEBTN4, + IDC_GAMEBTN5, + IDC_GAMEBTN6, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** + #define GAMENAME_LEN SNETSPI_MAXSTRINGLENGTH + #define DESCRIPTION_LEN SNETSPI_MAXSTRINGLENGTH + + typedef struct _ipxgame TIPXGAME; + typedef TIPXGAME *TPIPXGAME; + struct _ipxgame { + TPIPXGAME next; + DWORD gameid; + BOOL gamevalid; + TCHAR gamename[GAMENAME_LEN]; + TCHAR gamedesc[DESCRIPTION_LEN]; + }; + static TPIPXGAME sgGameList; + static int sgIPXListLen; + static BOOL sgGamesChanged; + + static SNETPROGRAMDATAPTR sgIPXProgramData; + static SNETPLAYERDATAPTR sgIPXPlayerData; + static SNETUIDATAPTR sgIPXInterfaceData; + static SNETVERSIONDATAPTR sgIPXVersionData; + static DWORD *sgpIPXPlayerID; + + +//**************************************************************************** +//**************************************************************************** +TPIPXGAME SelIPXAllocNode(void) { + return (TPIPXGAME) ALLOC(sizeof(TIPXGAME)); +} +//**************************************************************************** +//**************************************************************************** +static void SelIPXFreeNode(TPIPXGAME node) { + if (node) FREE(node); +} +//**************************************************************************** +//**************************************************************************** +static void SelIPXFreeList(TPIPXGAME list) { + TPIPXGAME next; + + while (list) { + next = list->next; + SelIPXFreeNode(list); + list = next; + } +} +//**************************************************************************** +//**************************************************************************** +static TPIPXGAME SelIPXAddNode(TPIPXGAME list, TPIPXGAME node) { + node->next = list; + return node; +} +//**************************************************************************** +// insert a node at the end of the list +//**************************************************************************** +static TPIPXGAME SelIPXAddEnd(TPIPXGAME list, TPIPXGAME node) { + TPIPXGAME head = list; + TPIPXGAME curr = list; + TPIPXGAME prev = NULL; + +// while (curr && curr->gameid) { + while (curr) { + prev = curr; + curr = curr->next; + } + + node->next = curr; + if (prev) + prev->next = node; + else + head = node; + + return head; +} +//**************************************************************************** +//**************************************************************************** +static TPIPXGAME SelIPXFindNode(TPIPXGAME list, DWORD gameid) { + while (list) { + if (list->gameid == gameid) + break; + list = list->next; + } + return list; +} +static TPIPXGAME SelIPXFindNodeName(TPIPXGAME list, LPCSTR name) { + while (list) { + if (! stricmp(list->gamename, name)) + break; + list = list->next; + } + return list; +} + + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXInvalAll(TPIPXGAME list) { + while (list) { + list->gamevalid = FALSE; + list = list->next; + } +} + + +//**************************************************************************** +//**************************************************************************** +static TPIPXGAME SelIPXDeleteInval(TPIPXGAME list) { + TPIPXGAME head = list; + TPIPXGAME curr = list; + TPIPXGAME prev = NULL; + + while (curr) { + // skip valid nodes & the "create" node + if ((curr->gamevalid) || (! curr->gameid)) { + prev = curr; + curr = curr->next; + continue; + } + + // set the next of the previous to point at next of invalid node + if (prev) + prev->next = curr->next; + else + head = curr->next; + + // remove the invalid node from the list + SelIPXFreeNode(curr); + sgGamesChanged = TRUE; + sgIPXListLen--; + + // set the new curr + if (prev) + curr = prev->next; + else + curr = head->next; + } + + return head; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelIPXEnum(DWORD gameid, + LPCSTR gamename, + LPCSTR gamedesc) { + TPIPXGAME newgame; + + // see if the game is already in the list + if (NULL != (newgame = SelIPXFindNode(sgGameList, gameid))) { + newgame->gamevalid = TRUE; + return TRUE; + } + + // the game needs to be added to the list + newgame = SelIPXAllocNode(); + if (! newgame) return FALSE; + newgame->gameid = gameid; + newgame->gamevalid = TRUE; + newgame->next = NULL; + strcpy(newgame->gamename, gamename); + strcpy(newgame->gamedesc, gamedesc); + sgGameList = SelIPXAddEnd(sgGameList, newgame); + sgIPXListLen++; + sgGamesChanged = TRUE; + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXSetGames(HWND window, TPIPXGAME gamelist) { + HWND child; + TPBMP tpBmp; + int * ctrlid = sgListIDs; + + for (; *ctrlid; ctrlid++) { + child = GetDlgItem(window, *ctrlid); + if (! child) continue; + + if (! gamelist) { + // no list entry for this button + if (child == GetFocus()) + SelIPXShiftTab(child); + EnableWindow(child, FALSE); + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (tpBmp) { + tpBmp->userdata = (LONG) NULL; + UiSetBmpText(tpBmp, ""); + } + } + else { + // set the button to use this list entry + EnableWindow(child, TRUE); + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (tpBmp) { + tpBmp->userdata = (LONG) gamelist; + UiSetBmpText(tpBmp, gamelist->gamename); + } + gamelist = gamelist->next; + } + } + + UiDoomButtonsReset(window, sgListIDs, AF_MED); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXSetInfo(HWND window, int childid) { + TPBMP tpBmp; + TPIPXGAME tpGame; + HWND child = GetDlgItem(window, childid); + HWND gamedesc = GetDlgItem(window, IDC_GAMEDESC); + + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpGame = (TPIPXGAME) tpBmp->userdata; + if (! tpGame) return; + + if (! tpGame->gameid) { + // handle the "new game" option + UiSetBmpText((TPBMP)GetWindowLong(gamedesc, GWL_USERDATA), tpGame->gamedesc); + UiDoomStaticReset(window, sgGameDescID, AF_SMALLGRAY); + return; + } + + // make sure there is game desc info + if ((! tpGame->gamedesc) || (strlen(tpGame->gamedesc) < MIN_DESC_LEN)) { + UiSetBmpText((TPBMP)GetWindowLong(gamedesc, GWL_USERDATA), ""); + UiDoomStaticReset(window, sgGameDescID, AF_SMALLGRAY); + return; + } + + // convert the gamedesc into something the user understands + TCHAR szGameDescCopy[128]; + TCHAR szGameInfo[256]; + TGAMEDATA GameData; + TUIHEROINFO HeroInfo; + char * szCreator = ""; + char * szCreatorDesc = ""; + + strcpy(szGameDescCopy, tpGame->gamedesc); + if ( + (! Txt2GameData(szGameDescCopy, &GameData, &szCreator, &szCreatorDesc)) || + (! Txt2HeroInfo(szCreatorDesc, &HeroInfo)) + ) { + UiSetBmpText((TPBMP)GetWindowLong(gamedesc, GWL_USERDATA), NULL); + UiDoomStaticReset(window, sgGameDescID, AF_SMALLGRAY); + return; + } + + TCHAR szDiff[32]; + TCHAR szClass[32]; + TCHAR szDescFmt[128]; + LoadString(global_hinstance, IDS_DIFF_NORMAL + GameData.bDiff, szDiff, 31); + LoadString(global_hinstance, IDS_WARRIOR + HeroInfo.heroclass, szClass, 31); + LoadString(global_hinstance, IDS_GAMEDESCFMT, szDescFmt, 127); + wsprintf(szGameInfo, szDescFmt, szDiff, szCreator, HeroInfo.level, szClass); + + UiSetBmpText((TPBMP)GetWindowLong(gamedesc, GWL_USERDATA), szGameInfo); + UiDoomStaticReset(window, sgGameDescID, AF_SMALLGRAY); +} + + +//**************************************************************************** +//**************************************************************************** +static int SelIPXGetFocusNum(void) { + HWND btn = GetFocus(); + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPIPXGAME list = sgGameList; + if (! list) return 0; + TPIPXGAME node = (TPIPXGAME) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXUpdateSbar(HWND window) { + SbarDraw(window, IDC_SCROLLBAR, sgIPXListLen, SelIPXGetFocusNum()); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXUpdateGames(HWND window) { + // assume all games are invalid + sgGamesChanged = FALSE; + SelIPXInvalAll(sgGameList); + + // enum the games to update the list + SNetEnumGames(0, 0, SelIPXEnum, NULL); //### MM Diablo Patch #2 3/21/97 + + // delete games that are no longer valid + sgGameList = SelIPXDeleteInval(sgGameList); + + // set game buttons to contain text + if (sgGamesChanged) { + SelIPXSetGames(window, sgGameList); + #if SB_ALWAYS_ON != 1 + if (sgIPXListLen <= MAX_VISIBLE) { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), FALSE); + } + else { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), TRUE); + } + #endif + SelIPXSetInfo(window, GetWindowLong(GetFocus(), GWL_ID)); + SelIPXUpdateSbar(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXDestroy(HWND window) { + SelIPXFreeList(sgGameList); + sgGameList = NULL; + + SbarDestroy(window, IDC_SCROLLBAR); + + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgGameDescID); + UiDoomCtrlsDestroy(window, sgTextIDs); + UiDoomCtrlsDestroy(window, sgTitleIDs); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + TitleLogoDestroy(); + FocusAnimateDestroy(); + SDrawClearSurface(SDRAW_SURFACE_FRONT); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_GAMEBTN2, + IDC_GAMEBTN3, + IDC_GAMEBTN4, + IDC_GAMEBTN5, + IDC_GAMEBTN6, + IDC_GAMEBTN1 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_GAMEBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXShiftTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_GAMEBTN6, + IDC_GAMEBTN1, + IDC_GAMEBTN2, + IDC_GAMEBTN3, + IDC_GAMEBTN4, + IDC_GAMEBTN5 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_GAMEBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static int GetNumIPXNode(HWND btn) { + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPIPXGAME list = sgGameList; + if (! list) return 0; + TPIPXGAME node = (TPIPXGAME) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static TPIPXGAME GetGame(int index) { + TPIPXGAME list = sgGameList; + + while (list && index) { + list = list->next; + index--; + } + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXPageDown(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + + // get info of 1st btn + HWND btn1 = GetDlgItem(parent, IDC_GAMEBTN1); + if (! btn1) return; + + // see if there is info below the bottom + TPBMP tpBmp = (TPBMP) GetWindowLong(GetDlgItem(parent, IDC_GAMEBTN6), GWL_USERDATA); + if (! tpBmp) return; + TPIPXGAME tpGame = (TPIPXGAME) tpBmp->userdata; + if ((! tpGame) || (! tpGame->next)) { + SelIPXShiftTab(btn1); + return; + } + + // calc the index of the new top + int newtop = GetNumIPXNode(btn1) + MAX_VISIBLE; + if (newtop > (sgIPXListLen - MAX_VISIBLE)) + newtop = sgIPXListLen - MAX_VISIBLE; + + // get the pointer to that index + tpGame = GetGame(newtop); + if (! tpGame) return; + + // update everything on the screen + UiSndPlayClick(); + SelIPXSetGames(parent, tpGame); + SelIPXSetInfo(parent, GetWindowLong(focus, GWL_ID)); + SelIPXUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXPageUp(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + HWND btn1 = GetDlgItem(parent, IDC_GAMEBTN1); + if (! btn1) return; + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(btn1, GWL_USERDATA); + if (! tpBmp) return; + TPIPXGAME tpGame = (TPIPXGAME) tpBmp->userdata; + if (! tpGame) return; + if (tpGame == sgGameList) { + SelIPXTab(GetDlgItem(parent, IDC_GAMEBTN6)); + return; + } + + // calc the index of the new top + int newtop = GetNumIPXNode(btn1) - MAX_VISIBLE; + if (newtop < 0) + newtop = 0; + + // get the pointer to that index + tpGame = GetGame(newtop); + if (! tpGame) return; + + // update everything on the screen + UiSndPlayClick(); + SelIPXSetGames(parent, tpGame); + SelIPXSetInfo(parent, GetWindowLong(focus, GWL_ID)); + SelIPXUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXScrollDown(HWND focus) { + // see if there is info below the focus + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPIPXGAME tpGame = (TPIPXGAME) tpBmp->userdata; + if (! tpGame) return; + if (! tpGame->next) return; + + if (GetWindowLong(focus, GWL_ID) < IDC_GAMEBTN6) { + // handle it just like a tab + SelIPXTab(focus); + return; + } + + // advance the list + HWND child = GetDlgItem(GetParent(focus), IDC_GAMEBTN2); + if (! child) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpGame = (TPIPXGAME) tpBmp->userdata; + if (! tpGame) return; + UiSndPlayClick(); + SelIPXSetGames(GetParent(focus), tpGame); + SelIPXSetInfo(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelIPXUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXScrollUp(HWND focus) { + if (GetWindowLong(focus, GWL_ID) > IDC_GAMEBTN1) { + // handle it just like a shift-tab + SelIPXShiftTab(focus); + return; + } + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPIPXGAME tpGame = (TPIPXGAME) tpBmp->userdata; + if (! tpGame) return; + TPIPXGAME tpGameList = sgGameList; + if (tpGame == tpGameList) return; + + // retreat the list + while (tpGameList && (tpGameList->next != tpGame)) { + tpGameList = tpGameList->next; + } + UiSndPlayClick(); + SelIPXSetGames(GetParent(focus), tpGameList); + SelIPXSetInfo(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelIPXUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXShowList(HWND window, BOOL showflag) { + HWND child; + int childid; + + for (childid = IDC_GAMEBTN1; childid <= IDC_GAMEBTN6; childid++) { + child = GetDlgItem(window, childid); + if (! child) continue; + ShowWindow(child, showflag); + } + + child = GetDlgItem(window, IDC_SCROLLBAR); + if (sgIPXListLen <= MAX_VISIBLE) { + ShowWindow(child, FALSE); + } + else { + ShowWindow(child, showflag); + } +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK IPXListEntryWndProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + WNDPROC oldproc = (WNDPROC) GetProp(window, OLDPROCPROP); + + switch (message) { + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_KEYDOWN: + switch (wparam) { + case VK_SPACE: + case VK_RETURN: + SendMessage(GetParent(window), WM_COMMAND, IDOK, (LPARAM)NULL); + break; + + case VK_ESCAPE: + SendMessage(GetParent(window), WM_COMMAND, IDCANCEL, (LPARAM)NULL); + break; + + case VK_TAB: + if (GetKeyState(VK_SHIFT) < 0) { + SelIPXShiftTab(window); + } + else { + SelIPXTab(window); + } + break; + + case VK_UP: + case VK_LEFT: + SelIPXScrollUp(window); + break; + + case VK_DOWN: + case VK_RIGHT: + SelIPXScrollDown(window); + break; + + case VK_PRIOR: + SelIPXPageUp(window); + break; + + case VK_NEXT: + SelIPXPageDown(window); + break; + + case VK_DELETE: + SendMessage(GetParent(window),message,wparam,lparam); + break; + } + return 0; + + case WM_DESTROY: + RemoveProp(window, OLDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXSubclassEntries(HWND window) { + HWND child; + int *ListID; + WNDPROC oldproc; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, OLDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) IPXListEntryWndProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXInit(HWND window) { + TPBMP tpBmp; + + SelIPXSubclassEntries(window); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo2.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\selgame.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window); + } + + // if the provider is not IPX use a generic title + if (UiGetProviderID() != PROVIDERID) { + TCHAR generictitle[64]; + HWND child = GetDlgItem(window, IDC_DLGTITLE); + LoadString(global_hinstance, IDS_JOINGAMES, generictitle, 63); + SetWindowText(child, generictitle); + } + + // set up a doom-like interface + UiDoomStaticInit(window, sgTitleIDs, AF_BIGGRAY); + UiDoomStaticInit(window, sgTextIDs, AF_MEDGRAY); + UiDoomStaticInit(window, sgGameDescID, AF_SMALLGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); + + // set a "create game" option + sgIPXListLen = 0; + sgGameList = SelIPXAllocNode(); + if (sgGameList) { + sgIPXListLen++; + sgGameList->gameid = 0; + sgGameList->gamedesc[0] = 0; + sgGameList->next = NULL; + LoadString(global_hinstance, IDS_CREATEGAME, sgGameList->gamename, GAMENAME_LEN-1); + LoadString(global_hinstance, IDS_CREATEDESC, sgGameList->gamedesc, DESCRIPTION_LEN-1); + } + + // get list of games + SNetEnumGames(0, 0, SelIPXEnum, NULL); //### MM Diablo Patch #2 3/21/97 + SelIPXSetGames(window, sgGameList); + + // set a timer so the game list is periodically updated + SDlgSetTimer(window, ENUM_TIMER_ID, ENUM_TIMER_DELAY, NULL); + + // init the scroll bar + SbarInit(window, IDC_SCROLLBAR); +#if SB_ALWAYS_ON != 1 + if (sgIPXListLen <= MAX_VISIBLE) { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), FALSE); + } +#endif +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXAbort(HWND window, int ReturnVal) { + UiFadeAbort(window); + SDlgKillTimer(window, ENUM_TIMER_ID); + SDlgKillTimer(window, LOGO_TIMER_ID); + SDlgKillTimer(window, FOCUS_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXDetermineGameName(LPSTR gamename) { + if (! SelIPXFindNodeName(sgGameList, sgIPXPlayerData->playername)) { + strcpy(gamename, sgIPXPlayerData->playername); + return; + } + + int gamenum = 2; + do { + wsprintf(gamename, "%s %d", sgIPXPlayerData->playername, gamenum++); + } while (SelIPXFindNodeName(sgGameList, gamename)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXCreate(HWND window) { + SNETUIDATA interfacedata; + SNETCREATEDATA createdata; + + // make sure the list is current + SelIPXUpdateGames(window); + + // create new interface data + CopyMemory(&interfacedata,sgIPXInterfaceData,sizeof(SNETUIDATA)); + interfacedata.size = sizeof(SNETUIDATA); + interfacedata.parentwindow = window; + + ZeroMemory(&createdata,sizeof(SNETCREATEDATA)); + createdata.size = sizeof(SNETCREATEDATA); + createdata.providerid = PROVIDERID; + createdata.maxplayers = sgIPXProgramData->maxplayers; + createdata.createflags = 0; + + HWND focus = GetFocus(); + SelIPXShowList(window, FALSE); + + char gamename[SNETSPI_MAXSTRINGLENGTH]; + SelIPXDetermineGameName(gamename); + + if (UiDoomCreateGame( + &createdata, + sgIPXProgramData, + sgIPXPlayerData, + &interfacedata, + sgIPXVersionData, + sgpIPXPlayerID, + FALSE, + gamename + ) + ) { + SelIPXAbort(window, IDOK); + } + else { + SelIPXShowList(window, TRUE); + SetFocus(focus); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXJoin(HWND window, TPIPXGAME tpGame) { + char err[256]; + if (! + UiAuthCallback( + SNET_AUTHTYPE_GAME, + sgIPXPlayerData->playername, + sgIPXPlayerData->playerdescription, + 0, + tpGame->gamedesc, + err, + sizeof(err) + ) + ) { + SelOkDialog(window, err, NULL, FALSE); + return; + } + + if (SNetJoinGame( + tpGame->gameid, + tpGame->gamename, + NULL, + sgIPXPlayerData->playername, + sgIPXPlayerData->playerdescription, + sgpIPXPlayerID + ) + ) { + SelIPXAbort(window, IDOK); + } + else { + // unable to join the specified game + TCHAR format[64], errstr[128]; + LoadString(global_hinstance, IDS_JOIN_ERR, format, 63); + wsprintf(errstr, format, tpGame->gamename); + SelOkDialog(window, errstr, NULL, FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXAttemptJoin(HWND window) { + TPBMP tpBmp; + TPIPXGAME tpGame; + HWND child = GetFocus(); + + if (window != GetParent(child)) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpGame = (TPIPXGAME) tpBmp->userdata; + + UiSndPlayEnter(); + if (tpGame->gameid) + SelIPXJoin(window, tpGame); + else + SelIPXCreate(window); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelIPXInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelIPXAttemptJoin(window); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelIPXAbort(window, IDCANCEL); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_SCROLLBAR), x, y)) { + int SbarClick = SbarInterpretClick(GetDlgItem(window, IDC_SCROLLBAR), x, y); + switch (SbarClick) { + case DSB_UP: + SelIPXScrollUp(GetFocus()); + break; + case DSB_PAGEUP: + SelIPXPageUp(GetFocus()); + break; + case DSB_DOWN: + SelIPXScrollDown(GetFocus()); + break; + case DSB_PAGEDOWN: + SelIPXPageDown(GetFocus()); + break; + default: + break; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelIPXDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + SelIPXSetInfo(window, LOWORD(wparam)); + SelIPXUpdateSbar(window); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelIPXAttemptJoin(window); + } + else if (LOWORD(wparam) == IDOK) { + SelIPXAttemptJoin(window); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelIPXAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDBLCLK: + case WM_LBUTTONDOWN: + SelIPXInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + if (SbarUpClick(GetDlgItem(window, IDC_SCROLLBAR))) { + SelIPXUpdateSbar(window); + } + break; + + case WM_DESTROY: + SelIPXDestroy(window); + break; + + case WM_INITDIALOG: + SelIPXInit(window); + PostMessage(window, WM_USER+1000, 0, 0); + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + switch (wparam) { + case FOCUS_TIMER_ID: + FocusAnimate(window, GetFocus()); + break; + case LOGO_TIMER_ID: + TitleLogoAnimate(window); + break; + case ENUM_TIMER_ID: + SelIPXUpdateGames(window); + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiSelectIPXGame (DWORD flags, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata, + DWORD *playerid) { + int result = 0; + + // save parameters for use throughout this file + sgIPXProgramData = programdata; + sgIPXPlayerData = playerdata; + sgIPXInterfaceData = interfacedata; + sgIPXVersionData = versiondata; + sgpIPXPlayerID = playerid; + + // make sure fonts are loaded + ArtFontLoad(); + + // DISPLAY THE DIALOG BOX + result = SDlgDialogBox(global_hinstance, + TEXT("SELIPXGAME_DIALOG"), + interfacedata->parentwindow, + SelIPXDialogProc); + + ArtFontDestroy(); + + if (result == IDOK) + return TRUE; + + return FALSE; +} diff --git a/Uisrc/UI/SELLIST.CPP b/Uisrc/UI/SELLIST.CPP new file mode 100644 index 0000000..3543ee6 --- /dev/null +++ b/Uisrc/UI/SELLIST.CPP @@ -0,0 +1,606 @@ +//**************************************************************************** +// SelList.cpp +// Diablo UI select hero dialogs +// +// By Frank Pearce +// created 10.18.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void SelHeroSetStats(HWND window, TPUIHEROINFO hero); + extern void SelHeroClearStats(HWND window); + extern void SelHeroSetTitle(HWND window, LPCTSTR title); + extern int SelHeroGetMode(void); + extern TPUIHEROINFO GetHeroList(void); + extern int GetNumHeros(void); + extern LPCTSTR SelectedName(void); + + +//**************************************************************************** +//**************************************************************************** + #define OLDPROCPROP TEXT("UIOLDPROC") + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define MAX_VISIBLE (IDC_HEROBTN6 - IDC_HEROBTN1 + 1) + + +//**************************************************************************** +//**************************************************************************** + static TPUIHEROINFO sgFirstHero = NULL; + + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgDeleteIDs[] = { + IDDELETE, + 0 + }; + static int sgListIDs[] = { + IDC_HEROBTN1, + IDC_HEROBTN2, + IDC_HEROBTN3, + IDC_HEROBTN4, + IDC_HEROBTN5, + IDC_HEROBTN6, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +static void SelListDestroy(HWND window) { + SbarDestroy(window, IDC_SCROLLBAR); + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgDeleteIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + SelHeroSetTitle(GetParent(window), NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListSetList(HWND window, TPUIHEROINFO firsthero) { + HWND child; + TPBMP tpBmp; + int *ListID; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) + continue; + + if (! firsthero) { + EnableWindow(child, FALSE); + continue; + } + + EnableWindow(child, TRUE); + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + UiSetBmpText(tpBmp, firsthero->name); + if (tpBmp) + tpBmp->userdata = (LONG) firsthero; + + firsthero = firsthero->next; + } + + UiDoomButtonsReset(window, sgListIDs, AF_MED); +} + + +//**************************************************************************** +//**************************************************************************** +static void UpdateStats(HWND window, int childid) { + HWND child = GetDlgItem(window, childid); + if (! child) return; + TPBMP tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + TPUIHEROINFO focusedhero = (TPUIHEROINFO) tpBmp->userdata; + + if (focusedhero) { + if (focusedhero->level) + UiDoomButtonsReset(window, sgDeleteIDs, AF_BIG, FALSE); + else + UiDoomButtonsReset(window, sgDeleteIDs, AF_BIGGRAY, FALSE); + SelHeroSetStats(GetParent(window), focusedhero); + } + else { + UiDoomButtonsReset(window, sgDeleteIDs, AF_BIGGRAY, FALSE); + SelHeroClearStats(GetParent(window)); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_HEROBTN2, + IDC_HEROBTN3, + IDC_HEROBTN4, + IDC_HEROBTN5, + IDC_HEROBTN6, + IDC_HEROBTN1 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_HEROBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListShiftTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_HEROBTN6, + IDC_HEROBTN1, + IDC_HEROBTN2, + IDC_HEROBTN3, + IDC_HEROBTN4, + IDC_HEROBTN5 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_HEROBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static int GetNumNode(HWND btn) { + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPUIHEROINFO list = GetHeroList(); + if (! list) return 0; + TPUIHEROINFO node = (TPUIHEROINFO) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static TPUIHEROINFO GetHero(int index) { + TPUIHEROINFO list = GetHeroList(); + + while (list && index) { + list = list->next; + index--; + } + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListUpdateSbar(HWND window) { + SbarDraw(window, IDC_SCROLLBAR, GetNumHeros(), GetNumNode(GetFocus())); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListPageDown(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + + // get info of 1st btn + HWND btn1 = GetDlgItem(parent, IDC_HEROBTN1); + if (! btn1) return; + + // see if there is info below the bottom + TPBMP tpBmp = (TPBMP) GetWindowLong(GetDlgItem(parent, IDC_HEROBTN6), GWL_USERDATA); + if (! tpBmp) return; + TPUIHEROINFO tpHero = (TPUIHEROINFO) tpBmp->userdata; + if ((! tpHero) || (! tpHero->next)) { + SelListShiftTab(btn1); + return; + } + + // calc the index of the new top + int newtop = GetNumNode(btn1) + MAX_VISIBLE; + if (newtop > (GetNumHeros() - MAX_VISIBLE)) + newtop = GetNumHeros() - MAX_VISIBLE; + + // get the pointer to that index + tpHero = GetHero(newtop); + if (! tpHero) return; + + // update everything on the screen + UiSndPlayClick(); + SelListSetList(parent, tpHero); + UpdateStats(parent, GetWindowLong(focus, GWL_ID)); + SelListUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListPageUp(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + HWND btn1 = GetDlgItem(parent, IDC_HEROBTN1); + if (! btn1) return; + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(btn1, GWL_USERDATA); + if (! tpBmp) return; + TPUIHEROINFO tpHero = (TPUIHEROINFO) tpBmp->userdata; + if (! tpHero) return; + if (tpHero == GetHeroList()) { + SelListTab(GetDlgItem(parent, IDC_HEROBTN6)); + return; + } + + // calc the index of the new top + int newtop = GetNumNode(btn1) - MAX_VISIBLE; + if (newtop < 0) + newtop = 0; + + // get the pointer to that index + tpHero = GetHero(newtop); + if (! tpHero) return; + + // update everything on the screen + UiSndPlayClick(); + SelListSetList(parent, tpHero); + UpdateStats(parent, GetWindowLong(focus, GWL_ID)); + SelListUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListScrollDown(HWND focus) { + // see if there is info below the focus + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPUIHEROINFO tpHero = (TPUIHEROINFO) tpBmp->userdata; + if (! tpHero) return; + if (! tpHero->next) return; + + if (GetWindowLong(focus, GWL_ID) < IDC_HEROBTN6) { + // handle it just like a tab + SelListTab(focus); + return; + } + + // advance the list + HWND child = GetDlgItem(GetParent(focus), IDC_HEROBTN2); + if (! child) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpHero = (TPUIHEROINFO) tpBmp->userdata; + if (! tpHero) return; + UiSndPlayClick(); + SelListSetList(GetParent(focus), tpHero); + UpdateStats(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelListUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListScrollUp(HWND focus) { + if (GetWindowLong(focus, GWL_ID) > IDC_HEROBTN1) { + // handle it just like a shift-tab + SelListShiftTab(focus); + return; + } + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPUIHEROINFO tpHero = (TPUIHEROINFO) tpBmp->userdata; + TPUIHEROINFO tpHeroList; + if (! tpHero) return; + if (tpHero == (tpHeroList = GetHeroList())) return; + + // retreat the list + while (tpHeroList && (tpHeroList->next != tpHero)) { + tpHeroList = tpHeroList->next; + } + UiSndPlayClick(); + SelListSetList(GetParent(focus), tpHeroList); + UpdateStats(GetParent(focus), GetWindowLong(focus, GWL_ID)); + SelListUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK ListEntryWndProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + WNDPROC oldproc = (WNDPROC) GetProp(window, OLDPROCPROP); + + switch (message) { + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_KEYDOWN: + switch (wparam) { + case VK_SPACE: + case VK_RETURN: + SendMessage(GetParent(window), WM_COMMAND, IDOK, (LPARAM)NULL); + break; + + case VK_ESCAPE: + SendMessage(GetParent(window), WM_COMMAND, IDCANCEL, (LPARAM)NULL); + break; + + case VK_TAB: + if (GetKeyState(VK_SHIFT) < 0) { + SelListShiftTab(window); + } + else { + SelListTab(window); + } + break; + + case VK_UP: + case VK_LEFT: + SelListScrollUp(window); + break; + + case VK_DOWN: + case VK_RIGHT: + SelListScrollDown(window); + break; + + case VK_PRIOR: + SelListPageUp(window); + break; + + case VK_NEXT: + SelListPageDown(window); + break; + + case VK_DELETE: + SendMessage(GetParent(window),message,wparam,lparam); + break; + } + return 0; + + case WM_DESTROY: + RemoveProp(window, OLDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListSubclassEntries(HWND window) { + HWND child; + int *ListID; + WNDPROC oldproc; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, OLDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) ListEntryWndProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListInit(HWND window) { + TCHAR buf[32]; + HWND parent = GetParent(window); + + SelListSubclassEntries(window); + + // set the title for the parent + if (SelHeroGetMode() == MULTIPLAYER) + LoadString(global_hinstance, IDS_MULTILIST_TITLE, buf, 32-1); + else + LoadString(global_hinstance, IDS_SINGLIST_TITLE, buf, 32-1); + SelHeroSetTitle(parent, buf); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgDeleteIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); + + // set the names into the fake listbox + sgFirstHero = GetHeroList(); + SelListSetList(window, sgFirstHero); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // init the scroll bar + SbarInit(window, IDC_SCROLLBAR); + if (GetNumHeros() <= MAX_VISIBLE) { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelListInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelListAbort(window, IDOK); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelListAbort(window, IDCANCEL); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDDELETE), x, y)) { + if (strlen(SelectedName())) { + SelListAbort(window, IDDELETE); + } + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_SCROLLBAR), x, y)) { + int SbarClick = SbarInterpretClick(GetDlgItem(window, IDC_SCROLLBAR), x, y); + switch (SbarClick) { + case DSB_UP: + SelListScrollUp(GetFocus()); + break; + + case DSB_DOWN: + SelListScrollDown(GetFocus()); + break; + + case DSB_PAGEUP: + SelListPageUp(GetFocus()); + break; + + case DSB_PAGEDOWN: + SelListPageDown(GetFocus()); + break; + + default: + break; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelListDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + UpdateStats(window, LOWORD(wparam)); + SelListUpdateSbar(window); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelListAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDOK) { + SelListAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelListAbort(window, IDCANCEL); + } + break; + + case WM_KEYDOWN: + if (wparam == VK_DELETE) { + if (strlen(SelectedName())) { + SelListAbort(window, IDDELETE); + } + } + break; + + case WM_LBUTTONDBLCLK: + case WM_LBUTTONDOWN: + SelListInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + if (SbarUpClick(GetDlgItem(window, IDC_SCROLLBAR))) { + SelListUpdateSbar(window); + } + break; + + case WM_DESTROY: + SelListDestroy(window); + break; + + case WM_INITDIALOG: + SelListInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/SELLOAD.CPP b/Uisrc/UI/SELLOAD.CPP new file mode 100644 index 0000000..bf4c59b --- /dev/null +++ b/Uisrc/UI/SELLOAD.CPP @@ -0,0 +1,171 @@ +//**************************************************************************** +// SelLoad.cpp +// Diablo UI load/new game for a single player hero with a save file +// +// By Frank Pearce +// created 11.14.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void SelHeroSetTitle(HWND window, LPCTSTR title); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_LOADBTN, + IDC_NEWBTN, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +static void SelLoadDestroy(HWND window) { + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + SelHeroSetTitle(GetParent(window), NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelLoadInit(HWND window) { + TCHAR buf[32]; + HWND parent = GetParent(window); + + // set the title for the parent + LoadString(global_hinstance, IDS_SINGLIST_TITLE, buf, 32-1); + SelHeroSetTitle(parent, buf); + + // point this window at the same bmp it's parent uses + SetWindowLong( + window, + GWL_USERDATA, + GetWindowLong(parent, GWL_USERDATA) + ); + + UiOnPaintBtns(window, sgListIDs); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_MED); + + // set up the animating focus indicator + FocusAnimateInit("ui_art\\focus16.pcx"); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelLoadAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + if (ReturnVal == IDOK) { + // return the id of the focused button + ReturnVal = GetWindowLong(GetFocus(), GWL_ID); + } + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +BOOL CALLBACK SelLoadDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelLoadAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDOK) { + SelLoadAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelLoadAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDOWN: + if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKEOK), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + SelLoadAbort(window, IDOK); + } + else if ( + UiIsPtInWindow( + window, + GetDlgItem(window, IDC_FAKECANCEL), + LOWORD(lparam), + HIWORD(lparam) + ) + ) { + SelLoadAbort(window, IDCANCEL); + } + break; + + case WM_DESTROY: + SelLoadDestroy(window); + break; + + case WM_INITDIALOG: + SelLoadInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} diff --git a/Uisrc/UI/SELMODEM.CPP b/Uisrc/UI/SELMODEM.CPP new file mode 100644 index 0000000..c380214 --- /dev/null +++ b/Uisrc/UI/SELMODEM.CPP @@ -0,0 +1,769 @@ +//**************************************************************************** +// SelModem.cpp +// Diablo UI select modem from a list of modems +// +// By Frank Pearce +// created 11.22.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus); + extern BOOL CALLBACK ModmStatStatusCallback( + LPCSTR statstr, + DWORD completed, + DWORD remaining, + DWORD flags, + SNETABORTPROC abortfcn + ); + + +//**************************************************************************** +//**************************************************************************** + #define OLDPROCPROP TEXT("UIOLDPROC") + + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + #define MAX_VISIBLE (IDC_MODEMBTN6 - IDC_MODEMBTN1 + 1) + + +//**************************************************************************** +//**************************************************************************** + static TPMODEM sgModemList; + static int sgNumModems; + static DWORD sgDeviceID; + + static SNETPROGRAMDATAPTR sgSMProgramData; + static SNETPLAYERDATAPTR sgSMPlayerData; + static SNETUIDATAPTR sgSMInterfaceData; + static SNETVERSIONDATAPTR sgSMVersionData; + + static int sgTextIDs[] = { + IDC_DLGTITLE, + 0 + }; + static int sgText2IDs[] = { + IDC_DLGTITLE2, + IDC_DLGTITLE3, + 0 + }; + static int sgDescID[] = { + IDC_REQDESC, + 0 + }; + static int sgBtnIDs[] = { + IDC_FAKEOK, + IDC_FAKECANCEL, + 0 + }; + static int sgListIDs[] = { + IDC_MODEMBTN1, + IDC_MODEMBTN2, + IDC_MODEMBTN3, + IDC_MODEMBTN4, + IDC_MODEMBTN5, + IDC_MODEMBTN6, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +static TPMODEM ModemAllocNode(void) { + return (TPMODEM) ALLOC(sizeof(TMODEM)); +} +//**************************************************************************** +//**************************************************************************** +static void ModemFreeNode(TPMODEM node) { + if (node) FREE(node); +} +//**************************************************************************** +//**************************************************************************** +static void ModemFreeList(TPMODEM list) { + TPMODEM next; + + while (list) { + next = list->next; + ModemFreeNode(list); + list = next; + } +} +//**************************************************************************** +//**************************************************************************** +static TPMODEM ModemAddNode(TPMODEM list, TPMODEM node) { + node->next = list; + return node; +} +//**************************************************************************** +//**************************************************************************** +static TPMODEM ModemFindNode(TPMODEM list, DWORD deviceid) { + while (list) { + if (list->deviceid == deviceid) + break; + list = list->next; + } + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelModemEnum(DWORD deviceid, + LPCSTR devicename, + LPCSTR devicedesc) { + TPMODEM modem; + + modem = ModemAllocNode(); + if (! modem) return FALSE; + modem->next = NULL; + modem->deviceid = deviceid; + strcpy(modem->devicename, devicename); + strcpy(modem->devicedesc, devicedesc); + sgModemList = ModemAddNode(sgModemList, modem); + sgNumModems++; + return TRUE; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemDestroy(HWND window) { + SbarDestroy(window, IDC_SCROLLBAR); + UiDoomCtrlsDestroy(window, sgListIDs); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + UiDoomCtrlsDestroy(window, sgText2IDs); + UiDoomCtrlsDestroy(window, sgDescID); + + // free the background of the dlg + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemSetList(HWND window, TPMODEM firstmodem) { + HWND child; + TPBMP tpBmp; + int *ListID; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) + continue; + + if (! firstmodem) { + EnableWindow(child, FALSE); + continue; + } + + EnableWindow(child, TRUE); + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + UiSetBmpText(tpBmp, firstmodem->devicename); + if (tpBmp) + tpBmp->userdata = (LONG) firstmodem; + + firstmodem = firstmodem->next; + } + + UiDoomButtonsReset(window, sgListIDs, AF_SMALL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_MODEMBTN2, + IDC_MODEMBTN3, + IDC_MODEMBTN4, + IDC_MODEMBTN5, + IDC_MODEMBTN6, + IDC_MODEMBTN1 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_MODEMBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemShiftTab(HWND child) { + HWND parent, newfocus; + int index; + int NewID[] = { + IDC_MODEMBTN6, + IDC_MODEMBTN1, + IDC_MODEMBTN2, + IDC_MODEMBTN3, + IDC_MODEMBTN4, + IDC_MODEMBTN5 + }; + + parent = GetParent(child); + newfocus = child; + do { + index = GetWindowLong(newfocus, GWL_ID) - IDC_MODEMBTN1; + newfocus = GetDlgItem(parent, NewID[index]); + } while (! IsWindowEnabled(newfocus)); + SetFocus(newfocus); +} + + +//**************************************************************************** +//**************************************************************************** +static int GetNumNode(HWND btn) { + if (! btn) return 0; + TPBMP tpBmp = (TPBMP) GetWindowLong(btn, GWL_USERDATA); + if (! tpBmp) return 0; + TPMODEM list = sgModemList; + if (! list) return 0; + TPMODEM node = (TPMODEM) tpBmp->userdata; + if (! node) return 0; + + int nodenum = 0; + + while (list && (list != node)) { + nodenum++; + list = list->next; + } + + return nodenum; +} + + +//**************************************************************************** +//**************************************************************************** +static TPMODEM GetModem(int index) { + TPMODEM list = sgModemList; + + while (list && index) { + list = list->next; + index--; + } + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemUpdateSbar(HWND window) { + SbarDraw(window, IDC_SCROLLBAR, sgNumModems, GetNumNode(GetFocus())); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemPageDown(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + + // get info of 1st btn + HWND btn1 = GetDlgItem(parent, IDC_MODEMBTN1); + if (! btn1) return; + + // see if there is info below the bottom + TPBMP tpBmp = (TPBMP) GetWindowLong(GetDlgItem(parent, IDC_MODEMBTN6), GWL_USERDATA); + if (! tpBmp) return; + TPMODEM tpModem = (TPMODEM) tpBmp->userdata; + if ((! tpModem) || (! tpModem->next)) { + SelModemShiftTab(btn1); + return; + } + + // calc the index of the new top + int newtop = GetNumNode(btn1) + MAX_VISIBLE; + if (newtop > (sgNumModems - MAX_VISIBLE)) + newtop = sgNumModems - MAX_VISIBLE; + + // get the pointer to that index + tpModem = GetModem(newtop); + if (! tpModem) return; + + // update everything on the screen + UiSndPlayClick(); + SelModemSetList(parent, tpModem); + SelModemUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemPageUp(HWND focus) { + HWND parent = GetParent(focus); + if (! parent) return; + HWND btn1 = GetDlgItem(parent, IDC_MODEMBTN1); + if (! btn1) return; + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(btn1, GWL_USERDATA); + if (! tpBmp) return; + TPMODEM tpModem = (TPMODEM) tpBmp->userdata; + if (! tpModem) return; + if (tpModem == sgModemList) { + SelModemTab(GetDlgItem(parent, IDC_MODEMBTN6)); + return; + } + + // calc the index of the new top + int newtop = GetNumNode(btn1) - MAX_VISIBLE; + if (newtop < 0) + newtop = 0; + + // get the pointer to that index + tpModem = GetModem(newtop); + if (! tpModem) return; + + // update everything on the screen + UiSndPlayClick(); + SelModemSetList(parent, tpModem); + SelModemUpdateSbar(parent); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemScrollDown(HWND focus) { + // see if there is info below the focus + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPMODEM tpModem = (TPMODEM) tpBmp->userdata; + if (! tpModem) return; + if (! tpModem->next) return; + + if (GetWindowLong(focus, GWL_ID) < IDC_MODEMBTN6) { + // handle it just like a tab + SelModemTab(focus); + return; + } + + // advance the list + HWND child = GetDlgItem(GetParent(focus), IDC_MODEMBTN2); + if (! child) return; + tpBmp = (TPBMP) GetWindowLong(child, GWL_USERDATA); + if (! tpBmp) return; + tpModem = (TPMODEM) tpBmp->userdata; + if (! tpModem) return; + UiSndPlayClick(); + SelModemSetList(GetParent(focus), tpModem); + SelModemUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemScrollUp(HWND focus) { + if (GetWindowLong(focus, GWL_ID) > IDC_MODEMBTN1) { + // handle it just like a shift-tab + SelModemShiftTab(focus); + return; + } + + // see if there is info off the top + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (! tpBmp) return; + TPMODEM tpModem = (TPMODEM) tpBmp->userdata; + TPMODEM tpModemList; + if (! tpModem) return; + if (tpModem == (tpModemList = sgModemList)) return; + + // retreat the list + while (tpModemList && (tpModemList->next != tpModem)) { + tpModemList = tpModemList->next; + } + UiSndPlayClick(); + SelModemSetList(GetParent(focus), tpModemList); + SelModemUpdateSbar(GetParent(focus)); +} + + +//**************************************************************************** +//**************************************************************************** +static LRESULT CALLBACK ModemListWndProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + LRESULT result; + WNDPROC oldproc = (WNDPROC) GetProp(window, OLDPROCPROP); + + switch (message) { + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_KEYDOWN: + switch (wparam) { + case VK_SPACE: + case VK_RETURN: + SendMessage(GetParent(window), WM_COMMAND, IDOK, (LPARAM)NULL); + break; + + case VK_ESCAPE: + SendMessage(GetParent(window), WM_COMMAND, IDCANCEL, (LPARAM)NULL); + break; + + case VK_TAB: + if (GetKeyState(VK_SHIFT) < 0) { + SelModemShiftTab(window); + } + else { + SelModemTab(window); + } + break; + + case VK_UP: + case VK_LEFT: + SelModemScrollUp(window); + break; + + case VK_DOWN: + case VK_RIGHT: + SelModemScrollDown(window); + break; + + case VK_PRIOR: + SelModemPageUp(window); + break; + + case VK_NEXT: + SelModemPageDown(window); + break; + } + return 0; + + case WM_DESTROY: + RemoveProp(window, OLDPROCPROP); + if (oldproc) { + SetWindowLong(window, GWL_WNDPROC, (LONG) oldproc); + } + break; + + case WM_PAINT: + UiPaintBtn(window); + return 0; + } + + if (oldproc) + result = CallWindowProc(oldproc, window, message, wparam, lparam); + else + result = DefWindowProc(window, message, wparam, lparam); + return result; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemSubclassEntries(HWND window) { + HWND child; + int *ListID; + WNDPROC oldproc; + + for (ListID = sgListIDs; *ListID; ListID++) { + child = GetDlgItem(window, *ListID); + if (! child) continue; + + oldproc = (WNDPROC) GetWindowLong(child, GWL_WNDPROC); + SetProp(child, OLDPROCPROP,(HANDLE) oldproc); + SetWindowLong(child, GWL_WNDPROC, (LONG) ModemListWndProc); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemInit(HWND window) { + HWND parent = GetParent(window); + + SelModemSubclassEntries(window); + + // load texture maps for this dialog + TPBMP tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT("popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\seldiff.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + } + + + // set up a doom-like interface + UiDoomStaticInit(window, sgDescID, AF_SMALLGRAY); + UiDoomStaticInit(window, sgText2IDs, AF_MEDGRAY); + UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE); + UiDoomButtonsInit(window, sgListIDs, AF_SMALL); + + // set the names into the fake listbox + SelModemSetList(window, sgModemList); + + // set up the animating focus indicator + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + // init the scroll bar + SbarInit(window, IDC_SCROLLBAR); + if (sgNumModems <= MAX_VISIBLE) { + ShowWindow(GetDlgItem(window, IDC_SCROLLBAR), FALSE); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + if (ReturnVal == IDOK) { + // get the id of the selected device + HWND focus = GetFocus(); + if (focus) { + TPBMP tpBmp = (TPBMP) GetWindowLong(focus, GWL_USERDATA); + if (tpBmp) { + TPMODEM tpModem = (TPMODEM) tpBmp->userdata; + if (tpModem) { + sgDeviceID = tpModem->deviceid; + } + } + } + } + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelModemInterpretClick(HWND window, int x, int y) { + if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) { + SelModemAbort(window, IDOK); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) { + SelModemAbort(window, IDCANCEL); + } + else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_SCROLLBAR), x, y)) { + int SbarClick = SbarInterpretClick(GetDlgItem(window, IDC_SCROLLBAR), x, y); + switch (SbarClick) { + case DSB_UP: + SelModemScrollUp(GetFocus()); + break; + + case DSB_DOWN: + SelModemScrollDown(GetFocus()); + break; + + case DSB_PAGEUP: + SelModemPageUp(GetFocus()); + break; + + case DSB_PAGEDOWN: + SelModemPageDown(GetFocus()); + break; + + default: + break; + } + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelModemDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + SelModemUpdateSbar(window); + } + else if (HIWORD(wparam) == BN_DOUBLECLICKED) { + SelModemAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDOK) { + SelModemAbort(window, IDOK); + } + else if (LOWORD(wparam) == IDCANCEL) { + SelModemAbort(window, IDCANCEL); + } + break; + + case WM_LBUTTONDBLCLK: + case WM_LBUTTONDOWN: + SelModemInterpretClick(window, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + if (SbarUpClick(GetDlgItem(window, IDC_SCROLLBAR))) { + SelModemUpdateSbar(window); + } + break; + + case WM_DESTROY: + SelModemDestroy(window); + break; + + case WM_INITDIALOG: + SelModemInit(window); + return 0; + + case WM_TIMER: + FocusAnimate(window, GetFocus()); + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelModemInitDevice(HWND window, DWORD deviceid) { + SNETUIDATA uidata; + + // create new interface data + CopyMemory(&uidata,sgSMInterfaceData,sizeof(SNETUIDATA)); + uidata.statuscallback = ModmStatStatusCallback; + uidata.size = sizeof(SNETUIDATA); + uidata.parentwindow = window; + + return SNetInitializeDevice( + deviceid, + sgSMProgramData, + sgSMPlayerData, + &uidata, + sgSMVersionData + ); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelModemNoModem(DWORD providerid) { + if (providerid == 'MODM') { + TCHAR err[128]; + LoadString(global_hinstance, IDS_NOMODEM_ERR, err, 127); + SelOkDialog(sgSMInterfaceData->parentwindow, err, NULL, FALSE); + return FALSE; + } + else { + return TRUE; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelModemOneModem(void) { + if (SelModemInitDevice(sgSMInterfaceData->parentwindow, sgModemList->deviceid)) { + ModemFreeList(sgModemList); + return TRUE; + } + else { + // error initializing modem + TCHAR initerr[128]; + LoadString(global_hinstance, IDS_INITMODEM_ERR, initerr, 127); + SelOkDialog(sgSMInterfaceData->parentwindow, initerr, NULL, FALSE); + ModemFreeList(sgModemList); + return TRUE; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelModemListModems(void) { + int result = SDlgDialogBox( + global_hinstance, + TEXT("SELMODEM_DIALOG"), + sgSMInterfaceData->parentwindow, + SelModemDialogProc + ); + + if (result == IDOK) { + if (SelModemInitDevice(sgSMInterfaceData->parentwindow, sgDeviceID)) { + ModemFreeList(sgModemList); + return TRUE; + } + else { + // error initializing device + TCHAR initerr[128]; + LoadString(global_hinstance, IDS_INITMODEM_ERR, initerr, 127); + SelOkDialog(sgSMInterfaceData->parentwindow, initerr, NULL, FALSE); + ModemFreeList(sgModemList); + return FALSE; + } + } + else { + // user cancelled + ModemFreeList(sgModemList); + SetLastError(SNET_ERROR_CANCELLED); + return FALSE; + } +} + + +//**************************************************************************** +//**************************************************************************** +BOOL UiSelectDevice(DWORD providerid, + SNETPROGRAMDATAPTR programdata, + SNETPLAYERDATAPTR playerdata, + SNETUIDATAPTR interfacedata, + SNETVERSIONDATAPTR versiondata) { + sgSMProgramData = programdata; + sgSMPlayerData = playerdata; + sgSMInterfaceData = interfacedata; + sgSMVersionData = versiondata; + + // enum all devices + sgModemList = NULL; + sgNumModems = 0; + SNetEnumDevices(SelModemEnum); + + switch (sgNumModems) { + case 0: + return SelModemNoModem(providerid); + + case 1: + return SelModemOneModem(); + + default: + return SelModemListModems(); + } +} diff --git a/Uisrc/UI/SELMULT.CPP b/Uisrc/UI/SELMULT.CPP new file mode 100644 index 0000000..e9e9519 --- /dev/null +++ b/Uisrc/UI/SELMULT.CPP @@ -0,0 +1,465 @@ +//**************************************************************************** +// SelMult.cpp +// Diablo UI select multi player game character dialog +// +// By Frank Pearce +// created 9.19.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** +extern int CreaHeroDlg(HWND parent, char * newname, int * charclass); + + +//**************************************************************************** +//**************************************************************************** +static SIZE bgsize; +static LPBYTE backgroundbitmap = NULL; +static LPBYTE buttonbitmap = NULL; + +//*** strings to put the hero stats in +static char selheroname[NAME_LEN]; +static char selheroclass[CLASS_LEN]; +static char selherolevel[8]; +static char selherostr[8]; +static char selheromagic[8]; +static char selherodex[8]; +static char selherovit[8]; +static char selherogold[16]; + + +static ENUMHEROS global_enumfcn; +static CREATEHERO global_createfcn; +static DELETEHERO global_deletefcn; + +static TPUIHEROINFO herolist; + + +//**************************************************************************** +//**************************************************************************** +TPUIHEROINFO SelMultAllocNode(void) { + return (TPUIHEROINFO) ALLOC(sizeof(TUIHEROINFO)); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultFreeNode(TPUIHEROINFO node) { + FREE(node); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultFreeList(TPUIHEROINFO list) { + TPUIHEROINFO next; + + while (list) { + next = list->next; + SelMultFreeNode(list); + list = next; + } +} + + +//**************************************************************************** +//**************************************************************************** +TPUIHEROINFO SelMultAddNode(TPUIHEROINFO list, TPUIHEROINFO node) { + node->next = list; + return node; +} + + +//**************************************************************************** +//**************************************************************************** +static TPUIHEROINFO SelMultDeleteNode(TPUIHEROINFO list, const char * namekey) { + TPUIHEROINFO current, previous, found; + + current = list; + previous = NULL; + found = NULL; + + while (current && !found) { + if (strcmp(current->name, namekey) == 0) { + found = current; + } + else { + previous = current; + current = current->next; + } + } + + if (found) { + if (previous) + previous->next = found->next; + else + list = found->next; + SelMultFreeNode(found); + } + + return list; +} + + +//**************************************************************************** +//**************************************************************************** +static TPUIHEROINFO SelMultFindNode(TPUIHEROINFO list, const char * namekey) { + TPUIHEROINFO current = list; + + while (current) { + if (strcmp(current->name, namekey) == 0) + break; + current = current->next; + } + + return current; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelMultEnumHero(TPUIHEROINFO heroinfo) { + TPUIHEROINFO newhero = SelMultAllocNode(); + memcpy(newhero, heroinfo, sizeof(TUIHEROINFO)); + herolist = SelMultAddNode(herolist, newhero); + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultGetHeros(void) { + global_enumfcn(SelMultEnumHero); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultSetStats(HWND window, HWND lbox) { + TPUIHEROINFO hero; + HWND child; + + SendMessage( + lbox, + LB_GETTEXT, + SendMessage(lbox, LB_GETCURSEL, 0, 0), + (LPARAM) selheroname + ); + + hero = SelMultFindNode(herolist, selheroname); + + child = GetDlgItem(window, IDC_CHARNAME); + SetWindowText(child, selheroname); + + child = GetDlgItem(window, IDC_CHARCLASS); + strcpy(selheroclass, hero->heroclass); + SetWindowText(child, selheroclass); + + child = GetDlgItem(window, IDC_CHARLEVEL); + wsprintf(selherolevel, "%d", hero->level); + SetWindowText(child, selherolevel); + + child = GetDlgItem(window, IDC_CHARSTR); + wsprintf(selherostr, "%d", hero->strength); + SetWindowText(child, selherostr); + + child = GetDlgItem(window, IDC_CHARMAGIC); + wsprintf(selheromagic, "%d", hero->magic); + SetWindowText(child, selheromagic); + + child = GetDlgItem(window, IDC_CHARDEX); + wsprintf(selherodex, "%d", hero->dexterity); + SetWindowText(child, selherodex); + + child = GetDlgItem(window, IDC_CHARVIT); + wsprintf(selherovit, "%d", hero->vitality); + SetWindowText(child, selherovit); + + child = GetDlgItem(window, IDC_CHARGOLD); + wsprintf(selherogold, "%d", hero->gold); + SetWindowText(child, selherogold); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultClearStats(HWND window) { + HWND child; + + child = GetDlgItem(window, IDC_CHARNAME); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARCLASS); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARLEVEL); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARSTR); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARMAGIC); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARDEX); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARVIT); + SetWindowText(child, NULL); + child = GetDlgItem(window, IDC_CHARGOLD); + SetWindowText(child, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultCreateNew(HWND window) { + TPUIHEROINFO newhero; + char newname[NAME_LEN]; + int charclass; + HWND lbox; + + // bring up the create char popup + if (IDCANCEL == CreaHeroDlg(window, newname, &charclass)) + return; + +#if 0 + lbox = GetDlgItem(window, IDC_MULTICHARS_LBOX); + + // ~~~fgp.add more code here + // if the name has no length use a default name + + if (NULL != (newhero = SelMultFindNode(herolist, newname))) { + // the name already exists + // confirm the overwrite + TCHAR buf[64]; + wsprintf(buf, "Overwrite %s?", newname); + if (IDCANCEL == SDrawMessageBox(buf,TEXT("Confirm Overwrite"),MB_OKCANCEL)) + return; + + // make the new hero the currently selected lbox entry + SendMessage(lbox, LB_SELECTSTRING, -1, (LPARAM)newname); + } + else { + // the user didn't enter a duplicate name + int index; + + // add the new hero to the hero list + newhero = SelMultAllocNode(); + herolist = SelMultAddNode(herolist, newhero); + + // add the new hero to the listbox and select it + index = SendMessage(lbox, LB_ADDSTRING, 0, (LPARAM)newname); + SendMessage(lbox, LB_SETCURSEL, index, 0); + } + + // call the create fcn for the new hero + global_createfcn(newhero); + + // update the displayed stats + SelMultSetStats(window, lbox); +#endif +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultDeleteHero(HWND window) { + TPUIHEROINFO hero; + TCHAR buf[64]; + HWND lbox; + + // confirm the delete + wsprintf(buf, "Delete %s?", selheroname); + if (IDCANCEL == SDrawMessageBox(buf,TEXT("Confirm Delete"),MB_OKCANCEL)) + return; + + // find the hero node to delete + lbox = GetDlgItem(window, IDC_MULTICHARS_LBOX); + hero = SelMultFindNode(herolist, selheroname); + + // make the callback for the delete + global_deletefcn(hero); + + // delete the node + herolist = SelMultDeleteNode(herolist, selheroname); + + // remove it from the listbox + SendMessage( + lbox, + LB_DELETESTRING, + SendMessage(lbox, LB_GETCURSEL, 0, 0), + 0 + ); + + // select a new hero automatically + if (SendMessage(lbox, LB_GETCOUNT, 0, 0)) { + SendMessage(lbox, LB_SETCURSEL, 0, 0); + SelMultSetStats(window, lbox); + } + else { + // disable the DELETE button + EnableWindow(GetDlgItem(window, IDC_DELETECHAR_BTN), FALSE); + SelMultClearStats(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultInitLbox(HWND window, HWND lbox) { + TPUIHEROINFO currenthero = herolist; + + SendMessage(lbox, WM_SETREDRAW, FALSE, 0); + + // fill the list box with all available multiplayer game characters + while (currenthero) { + SendMessage(lbox, LB_ADDSTRING, 0, (LPARAM)(currenthero->name)); + currenthero = currenthero->next; + } + + // if heros already exist default selection to first hero + if (SendMessage(lbox, LB_GETCOUNT, 0, 0)) { + SendMessage(lbox, LB_SETCURSEL, 0, 0); + SelMultSetStats(window, lbox); + } + else { + // disable the DELETE button + EnableWindow(GetDlgItem(window, IDC_DELETECHAR_BTN), FALSE); + } + + SendMessage(lbox, WM_SETREDRAW, TRUE, 0); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelMultConfirmSelected(HWND window) { + // if the listbox is empty the create dlg needs to be popped up + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static void SelMultDestroy(HWND window) { + if (buttonbitmap) { + FREE(buttonbitmap); + buttonbitmap = NULL; + } + if (backgroundbitmap) { + FREE(backgroundbitmap); + backgroundbitmap = NULL; + } + + SelMultFreeList(herolist); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelMultInit(HWND window) { + SIZE artsize; + + // load texture maps for this dialog + if (!LoadArtFile(window,NULL,TEXT(""),TEXT("ui_art\\samp_bkg.pcx"),&backgroundbitmap,&bgsize)) + return 0; + if (!LoadArtFile(NULL,window,TEXT("Button"),TEXT("ui_art\\samp_btn.pcx"),&buttonbitmap,&artsize)) + return 0; + + SelMultGetHeros(); + SelMultInitLbox(window, GetDlgItem(window, IDC_MULTICHARS_LBOX)); + + // set bg bitmaps for stat displays + UiSetChildBmp(window, IDC_CHARNAME, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARCLASS, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARLEVEL, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARSTR, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARMAGIC, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARDEX, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARVIT, backgroundbitmap, &bgsize); + UiSetChildBmp(window, IDC_CHARGOLD, backgroundbitmap, &bgsize); + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelMultDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDC_CREATECHAR_BTN: + SelMultCreateNew(window); + break; + case IDC_DELETECHAR_BTN: + SelMultDeleteHero(window); + break; + case IDC_CONNECT_BTN: + if (SelMultConfirmSelected(window)) { + SDlgEndDialog(window,SELMULT_CONNECT); + } + break; + case IDC_MULTICHARS_LBOX: + if (HIWORD(wparam) == LBN_SELCHANGE) { + // a character was selected -- update the stats on the screen + SelMultSetStats(window, (HWND)lparam); + } + break; + case IDCANCEL: + SDlgEndDialog(window,SELMULT_PREVIOUS); + break; + } + break; + + case WM_DESTROY: + SelMultDestroy(window); + break; + + case WM_INITDIALOG: + SelMultInit(window); + return 1; + + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelMultDialog ( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + DWORD *selection, + char *heroname) { + DWORD result = 0; + + global_enumfcn = enumfcn; + global_createfcn = createfcn; + global_deletefcn = deletefcn; + herolist = NULL; + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SELMULTI_DIALOG"), + SDrawGetFrameWindow(), + SelMultDialogProc); + + // set the results + if (selection) + *selection = result; + if (heroname) + strcpy(heroname, selheroname); + + return 1; +} diff --git a/Uisrc/UI/SELSING.CPP b/Uisrc/UI/SELSING.CPP new file mode 100644 index 0000000..642c128 --- /dev/null +++ b/Uisrc/UI/SELSING.CPP @@ -0,0 +1,121 @@ +//**************************************************************************** +// SelSing.cpp +// Diablo UI select dialog +// +// By Frank Pearce +// created 9.17.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** +static SIZE bgsize; +static LPBYTE backgroundbitmap = NULL; +static LPBYTE buttonbitmap = NULL; + +static char selectedname[NAME_LEN]; + + +//**************************************************************************** +//**************************************************************************** +static void SelSingDestroy(HWND window) { + if (buttonbitmap) { + FREE(buttonbitmap); + buttonbitmap = NULL; + } + if (backgroundbitmap) { + FREE(backgroundbitmap); + backgroundbitmap = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL SelSingInit(HWND window) { + SIZE artsize; + + if (!LoadArtFile(window,NULL,TEXT(""),TEXT("ui_art\\samp_bkg.pcx"),&backgroundbitmap,&bgsize)) + return 0; + if (!LoadArtFile(NULL,window,TEXT("Button"),TEXT("ui_art\\samp_btn.pcx"),&buttonbitmap,&artsize)) + return 0; + + return 1; +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelSingDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + switch (LOWORD(wparam)) { + case IDC_CREATECHAR_BTN: + // bring up the create char popup + break; + case IDC_DELETECHAR_BTN: + // bring up delete confirm dlg + break; + case IDC_NEWDUNGEON_BTN: + // somehow indicate which character is selected to main application + SDlgEndDialog(window,SELSING_NEW_DUNGEON); + break; + case IDC_CONTINUE_BTN: + // somehow indicate which character is selected to main application + SDlgEndDialog(window,SELSING_CONTINUE); + break; + case IDCANCEL: + SDlgEndDialog(window,SELSING_PREVIOUS); + break; + } + break; + + case WM_DESTROY: + SelSingDestroy(window); + break; + + case WM_INITDIALOG: + SelSingInit(window); + return 1; + + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + +//**************************************************************************** +//* +//* EXPORTED FUNCTIONS +//* +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSelSingDialog ( + ENUMHEROS enumfcn, + CREATEHERO createfcn, + DELETEHERO deletefcn, + DWORD *selection, + char *heroname) { + DWORD result; + + // DISPLAY THE DIALOG BOX + result = (DWORD)SDlgDialogBox(global_hinstance, + TEXT("SELSINGLE_DIALOG"), + SDrawGetFrameWindow(), + SelSingDialogProc); + + if (selection) + *selection = result; + if (heroname) + strcpy(heroname, selectedname); + + return 1; +} diff --git a/Uisrc/UI/SELYESNO.CPP b/Uisrc/UI/SELYESNO.CPP new file mode 100644 index 0000000..b0182eb --- /dev/null +++ b/Uisrc/UI/SELYESNO.CPP @@ -0,0 +1,243 @@ +//**************************************************************************** +// SelYesNo.cpp +// Diablo UI select hero "yes/no" dialog +// +// By Frank Pearce +// created 10.21.96 +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" +#include "uisnd.h" + + +//**************************************************************************** +//**************************************************************************** + extern void SelHeroSetTitle(HWND window, LPCTSTR title); + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define FOCUS_TIMER_ID 1 + #define FOCUS_FPS 16 // frames per second + #define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS) + + +//**************************************************************************** +//**************************************************************************** + static int sgTextIDs[] = { + IDC_OKCANCEL_TEXT, + 0 + }; + static int sgBtnIDs[] = { + IDC_OK, + IDCANCEL, + 0 + }; + + static LPCTSTR sgTitle; + static LPCTSTR sgYesNoText; + static BOOL sgLoadFocus; + static BOOL sgMainMenuBG; + static SNETABORTPROC sgpAbortFcn; + + +//**************************************************************************** +//**************************************************************************** +static void SelYesNoDestroy(HWND window) { + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + if (sgLoadFocus) + FocusAnimateDestroy(); + UiDoomCtrlsDestroy(window, sgBtnIDs); + UiDoomCtrlsDestroy(window, sgTextIDs); + if (sgTitle) { + SelHeroSetTitle(GetParent(window), NULL); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SelYesNoInit(HWND window) { + TPBMP tpBmp; + HWND parent = GetParent(window); + + if (sgTitle) + SelHeroSetTitle(parent, sgTitle); + + // load texture maps for this dialog + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT("Popup"), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + (sgMainMenuBG ? + (UiIsSpawned() ? TEXT("ui_art\\swmmpop.pcx") : TEXT("ui_art\\mmpopup.pcx")) : + TEXT("ui_art\\black.pcx") + ), + &tpBmp->data, + &tpBmp->datasize + ); + } + + SetWindowText(GetDlgItem(window, IDC_OKCANCEL_TEXT), sgYesNoText); + + // set up a doom-like interface + UiDoomStaticInit(window, sgTextIDs, AF_MEDGRAY); + UiDoomButtonsInit(window, sgBtnIDs, AF_BIG); + + // set up the animating focus indicator + if (sgLoadFocus) + FocusAnimateInit("ui_art\\focus.pcx"); + else + FocusReInit(); + SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL); + + UiActiveDownBtns(window, sgBtnIDs); +} + + +//**************************************************************************** +//**************************************************************************** +static void SelYesNoAbort(HWND window, int ReturnVal) { + UiSndPlayEnter(); + SDlgKillTimer(window, FOCUS_TIMER_ID); + + if ((ReturnVal == IDCANCEL) && (sgpAbortFcn)) + sgpAbortFcn(); + + if (ReturnVal == IDOK) + // return the id of the focused button + ReturnVal = GetWindowLong(GetFocus(), GWL_ID); + + SDlgEndDialog(window, ReturnVal); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SelYesNoDialogProc(HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_COMMAND: + if (HIWORD(wparam) == BN_KILLFOCUS) { + FocusLost(window, (HWND) lparam); + } + else if (HIWORD(wparam) == BN_SETFOCUS) { + FocusSnd((HWND) lparam); + FocusAnimate(window, (HWND) lparam); + } + else if (LOWORD(wparam) == IDOK) { + switch (GetWindowLong(GetFocus(), GWL_ID)) { + case IDC_OK: + SelYesNoAbort(window, IDOK); + break; + default: + SelYesNoAbort(window, IDCANCEL); + break; + } + } + else if (LOWORD(wparam) == IDCANCEL) { + SelYesNoAbort(window, IDCANCEL); + } + else if (LOWORD(wparam) == IDC_OK) { + SelYesNoAbort(window, IDOK); + } + break; + + case WM_DESTROY: + SelYesNoDestroy(window); + break; + + case WM_INITDIALOG: + SelYesNoInit(window); + return 0; + + case WM_TIMER: + if (! FocusAnimate(window, GetFocus())) { + HWND child = GetDlgItem(window, IDC_OK); + if (child) + SetFocus(child); + else + SetFocus(GetDlgItem(window, IDCANCEL)); + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//**************************************************************************** +int SelYesNoDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus) { + sgTitle = title; + sgYesNoText = text; + sgLoadFocus = loadfocus; + sgMainMenuBG = FALSE; + sgpAbortFcn = NULL; + + return SDlgDialogBox( + global_hinstance, + TEXT("SELYESNO_DIALOG"), + parent, + SelYesNoDialogProc + ); +} + + +//**************************************************************************** +//**************************************************************************** +int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus) { + sgTitle = title; + sgYesNoText = text; + sgLoadFocus = loadfocus; + sgMainMenuBG = FALSE; + sgpAbortFcn = NULL; + + return SDlgDialogBox( + global_hinstance, + TEXT("SELOK_DIALOG"), + parent, + SelYesNoDialogProc + ); +} + + +//**************************************************************************** +//**************************************************************************** +int SpawnErrDialog(HWND parent, int errstrid, BOOL onmainmenu) { + TCHAR buf[256]; + + LoadString(global_hinstance, errstrid, buf, 255); + sgLoadFocus = FALSE; + sgMainMenuBG = onmainmenu; + sgTitle = NULL; + sgYesNoText = buf; + sgpAbortFcn = NULL; + + return SDlgDialogBox( + global_hinstance, + TEXT("SPAWNERR_DIALOG"), + parent, + SelYesNoDialogProc + ); +} + + diff --git a/Uisrc/UI/SRPOPUP.PAL b/Uisrc/UI/SRPOPUP.PAL new file mode 100644 index 0000000..51af73d Binary files /dev/null and b/Uisrc/UI/SRPOPUP.PAL differ diff --git a/Uisrc/UI/SRPOPUP.RAW b/Uisrc/UI/SRPOPUP.RAW new file mode 100644 index 0000000..2c3ed97 Binary files /dev/null and b/Uisrc/UI/SRPOPUP.RAW differ diff --git a/Uisrc/UI/STORM.LIB b/Uisrc/UI/STORM.LIB new file mode 100644 index 0000000..67499fd Binary files /dev/null and b/Uisrc/UI/STORM.LIB differ diff --git a/Uisrc/UI/SUPPORT.CPP b/Uisrc/UI/SUPPORT.CPP new file mode 100644 index 0000000..d489e0e --- /dev/null +++ b/Uisrc/UI/SUPPORT.CPP @@ -0,0 +1,382 @@ +//**************************************************************************** +// +// Support.CPP +// Hellfire UI Support screen +// +// By Michael Morhaime (9/16/96) +// Modified 10.3.96 by Frank Pearce +// Copied 10.7.97 by Gary Powell +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + #define PIXELS_PER_SCROLL 1 + #define ID_SUPPORT_TIMER 1 + #define MILLISEC_PER_SEC 1000 + #define PIXELS_PER_SEC 20 + #define DEFAULT_TIMER (MILLISEC_PER_SEC / (PIXELS_PER_SEC / PIXELS_PER_SCROLL)) + #define USER_TIMER (MILLISEC_PER_SEC / (pixelspersec / PIXELS_PER_SCROLL)) + + #define VERTICAL_PAD 30 // Padding above and below viewable part of offscreen rect + #define TAB_PIXEL_SIZE 40 + #define LINE_HEIGHT 22 + + static LPBYTE sgTextBits = NULL; // bitmap for scrolling text ctrl + static SIZE sgTextBitsSize; + static HSGDIFONT sgTextFont = NULL; + static int sgiTextLoc; + + static HGLOBAL sghSupport; // handle for the Support string resource + static int sgSupportSize; // length of resource in bytes + + static void ScrollSupport(HWND window); + + +//**************************************************************************** +//**************************************************************************** +static void SupportDestroy (HWND window) { + if (sgTextFont) { + SGdiDeleteObject(sgTextFont); + sgTextFont = NULL; + } + if (sgTextBits) { + FREE(sgTextBits); + sgTextBits = NULL; + } + + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); + + if (sghSupport) { + // free the Support text + FreeResource(sghSupport); + sghSupport = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void SupportAbort(HWND window) { + UiFadeAbort(window); + SDlgKillTimer(window,ID_SUPPORT_TIMER); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, 1); +} + + +//**************************************************************************** +//**************************************************************************** +static void SupportInit (HWND window, LPARAM pixelspersec) { + TPBMP tpBmp; + HWND child; + HFONT winfont; + RECT rect; + int nWidth, nHeight; + + // set up the timer based on the specified pixel rate + SDlgSetTimer( + window, + ID_SUPPORT_TIMER, + (pixelspersec ? USER_TIMER : DEFAULT_TIMER), + NULL + ); + + // load the Support into memory + sghSupport = LoadResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_SUPPORT"), TEXT("TEXT_FILES")) + ); + sgSupportSize = SizeofResource( + global_hinstance, + FindResource(global_hinstance, TEXT("IDR_SUPPORT"), TEXT("TEXT_FILES")) + ); + + // init a bmp for the window + tpBmp = UiAllocBmp(); + if (tpBmp) { + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\support.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window, FALSE); + } + + // alloc/create a bitmap for the scrolling text ctrl + child = GetDlgItem(window, ID_SCROLL_WINDOW); + GetWindowRect(child, &rect); + + nWidth = rect.right - rect.left; + nHeight = rect.bottom - rect.top + (VERTICAL_PAD*2); + + sgTextBits = (LPBYTE) ALLOC(nWidth * nHeight); + if (!sgTextBits ) { + SupportAbort(window); + return; + } + + sgTextBitsSize.cx = nWidth; + sgTextBitsSize.cy = nHeight; + + UiCalcNewRect(&rect, 0, VERTICAL_PAD); + + SDlgSetBitmap( + child, + NULL, + NULL, + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + sgTextBits, + &rect, + nWidth, + nHeight + ); + + // init the starting text coordinate and begin drawing the Support + sgiTextLoc = nHeight - VERTICAL_PAD; + ScrollSupport(window); + + // create the font for SGdiTextOut + winfont = CreateFont( + -17,0,0,0,FW_BOLD,0,0,0,ANSI_CHARSET, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + VARIABLE_PITCH | FF_ROMAN,TEXT("Times New Roman") + ); + if (winfont) { + BOOL result = SGdiImportFont(winfont,&sgTextFont); + DeleteObject(winfont); + if (! result) { + SupportAbort(window); + } + } + else { + SupportAbort(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static int sgSupportLen; + +static int credit_length(LPTSTR credit) { + int len = 0; + + // find the length (in characters) of a single line + while ((*credit != '\r') && (*credit != '\n')) { + len++; + credit++; + if (len > sgSupportLen) { + len = -1; + break; + } + } + return len; +} + + +//**************************************************************************** +//**************************************************************************** +static LPTSTR support_next(LPTSTR lastline, int lastlen) { + // skip over last line and cr/lf + lastline += (lastlen + 2); + sgSupportLen -= (lastlen + 2); + + return lastline; +} + + +//**************************************************************************** +//**************************************************************************** +static void SupportDraw(HWND window) { + int x, y, stringlen; + LPTSTR Support; + + // lock the resource and get it's size + Support = (LPTSTR)LockResource(sghSupport); + sgSupportLen = sgSupportSize; + + SGdiSelectObject(sgTextFont); + SGdiSetPitch(sgTextBitsSize.cx); + + for ( + y = sgiTextLoc; + sgSupportLen > 0; + y += LINE_HEIGHT, Support = support_next(Support, stringlen) + ) { + // init left coord + x = 0; + // handle tabs at the begining of a line + while (*Support == '\t') { + x += TAB_PIXEL_SIZE; + Support++; + sgSupportLen--; + } + stringlen = credit_length(Support); + + // make sure the dest coords are in the buffer + if (stringlen == -1) break; + if (y < 0) continue; + if (y > (sgTextBitsSize.cy - VERTICAL_PAD)) break; + + if (stringlen) { +#if 1 + // draw a drop shadow + SGdiTextOut( + sgTextBits, + x + 2, + y + 2, + PALETTEINDEX(0), + Support, + stringlen + ); +#endif + + // draw the text + SGdiTextOut( + sgTextBits, + x, + y, + PALETTEINDEX(224), + Support, + stringlen + ); + } + } + + // has the bottom of the Support scrolled past the top? + if (y < 0) { + SupportAbort(window); + } +} + + +//**************************************************************************** +//**************************************************************************** +static void ScrollSupport (HWND window) { + RECT rect; + HWND child = GetDlgItem(window, ID_SCROLL_WINDOW); + TPBMP tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + + GetWindowRect(child, &rect); + ScreenToClient(window, (LPPOINT)&rect.left); + ScreenToClient(window, (LPPOINT)&rect.right); + + // Copy from Background bitmap to buffer for scrolling text ctrl + SBltROP3 ( + sgTextBits + (sgTextBitsSize.cx * VERTICAL_PAD), + tpBmp->data + (rect.top * tpBmp->datasize.cx) + rect.left, + sgTextBitsSize.cx, + rect.bottom - rect.top, + sgTextBitsSize.cx, + tpBmp->datasize.cx, + NULL, + SRCCOPY + ); + + sgiTextLoc -= PIXELS_PER_SCROLL; + SupportDraw(window); + + InvalidateRect(child, NULL, FALSE); + UpdateWindow(child); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK SupportDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + + switch (message) { + + case WM_DESTROY: + SupportDestroy(window); + break; + + case WM_INITDIALOG: + SupportInit(window, lparam); + PostMessage(window, WM_USER+1000, 0, 0); + return 1; + + case WM_TIMER: + ScrollSupport(window); + break; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_PARENTNOTIFY: + if (LOWORD(wparam) == WM_LBUTTONDOWN || LOWORD(wparam) == WM_RBUTTONDOWN) { + SupportAbort(window); + } + break; + + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + SupportAbort(window); + return 0; + + case WM_KEYDOWN: + if (wparam == VK_SPACE) { + SupportAbort(window); + } + return 0; + + case WM_COMMAND: + SupportAbort(window); + break; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +/**************************************************************************** +* +* EXPORTED FUNCTIONS +* +***/ + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiSupportDialog (UINT pixelspersec) { + // fuck allowing customizable speed + pixelspersec = 25; + + // start the dialog + SDlgDialogBoxParam( + global_hinstance, + TEXT("SUPPORT_DIALOG"), + SDrawGetFrameWindow(), + SupportDialogProc, + pixelspersec + ); + + return 1; +} diff --git a/Uisrc/UI/SUPPORT.TXT b/Uisrc/UI/SUPPORT.TXT new file mode 100644 index 0000000..906d924 --- /dev/null +++ b/Uisrc/UI/SUPPORT.TXT @@ -0,0 +1,22 @@ + +Sierra On-Line maintains a web site at http://www.sierra.com +Follow the links to visit customer service or the discussion +boards associated with Hellfire. + +Sierra On-Line has e-mail technical support at this address: +support@sierra.com +To help us better serve you, please be sure to include the name of +the product, the version number, and the nature of the problem. + + +Blizzard Disclaimer: + Hellfire(tm) is not supported or maintained by Blizzard Entertainment. + Blizzard Entertainment has not tested or certified the quality or + compatibility of this product. All calls or inquiries regarding this + product should be directed to Sierra On-Line, not to Blizzard + Entertainment. + +You can reach the Sierra On-Line customer service support +department from 8am to 4:45pm PST, Monday through Friday at +(425) 644-4343. + diff --git a/Uisrc/UI/TEXT_FIL.BIN b/Uisrc/UI/TEXT_FIL.BIN new file mode 100644 index 0000000..6a0b197 --- /dev/null +++ b/Uisrc/UI/TEXT_FIL.BIN @@ -0,0 +1,235 @@ +Marafie Abdullah, 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, Min Arthur, 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, 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, John Bird, Hannah Blackerby, Tom Blackerby, +Clayton Blackwell, Thomas Blake, Shawn Blaszak, Daniel Bliss, +Fred Bliss, Jeff Bliss, Jon Blum, Hagen Bobby, Rune Boersjoe, +Andrew Boggs, Dave Boisvenu, John Bonds, Jeff Borenstein, +Dorian Borin, Ed Boris, Bartholomew Botta, Michael Boutin, +Michael Boyd, Mike Boyersmith, Michael Boyko, Eric Bradberry, +John Brandstetter, Ryan Breding, Vickers Brett, Paul Brinkmann, +Patrick Briscoe, Scott Brisko, Jeremy Britton, Adrian Broadhead, +Glenn Brouwer, Joe Brown, Sully Bruce, Sébastien Brulotte, +Darrell Brunsch, William Bryan, Jason Bucher, Chris Buchinger, +John Buckles, David Bugay, Erik Burgess, Gabriel Burkett, Chris +Burnes, Richard Butler, Clayton Buuckingham, Jeffrey Bye, +Hamilton Calvin, Dougall Campbell, Donnie Cannon, Shane +Cantrell, Connor Caple, Daniel Carey, James Carlton, Michael +Carmel, Mike Carpenter, Ronald Carruthers, Phil Carter, Bryce +Cartmill, Anthony Caruso, Lon Casey, Tim Caster, Eric +Catrwright, Aaron Chan, Otto Chan, Gene Chang, Hsiao-Lung +Chang, William Chang, George Chappel, Larry Charbonneau, +Boyer Charles, 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, Stiff Chris, Thayne Christiansen, Mende +Christopher, 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, Groovy Cookie, Tim Coolong, Gregory +Coomer, 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, Friend Dan, Kerber Dan, David Dandar, Pro +Daulo, Rob Dautermann, Szabo David, Mike Davies, Kalieb Davis, +Marshall Davis, Ronald Davis, Danny De Bie, Marc De Filippis, +Myles Deighton, Kent Dejarnett, Anthony Delarosa, Neil +Dempster, Peter Denitto, Cosgrove Dennis, Joaquim Dentz, Scott +Dewar, Anish 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, Neitzel Douglas, Chin Du, William Dubis, +Timothy Duewell, Brandon Dunn, Andrew Durham, Don Duvall, +Kevin Dvojack, Daniel Eaton, Paul Eberting, Eric Echelbarger, +Bujone Ed, Lance Eddleman, Ben Eggers, David Eggum, John +Ehde, Brian Eikenberry, 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, 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, Binder Gerald, Josh +Gerwin, 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, Baltz Greg, 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, Ben Hall, Brian +Hall, Kris Hall, 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 Idrén, 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, Solignac Jean-Pierre, Meek Jeff, Joe Jenkins, Bart +Jennings, Paul Jennings, Julien Jenny, Jason Jensen, Martin +Jeremy, Mark Jeschke, Bolt Joe, Andy Johnson, James Johnson, +Leigh Johnson, Mark Johnson, Rupert Johnson, Clyde Jones, +Michael Jones, Tim Jordan, Ben Judy, 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, Timothy Kerber, Tomi Keski-Heikkilä, 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, 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, Derek Lung, Phong Ly, Scott MacGillivray, Dave Mack, +Alec Mak, Steve Mamayek, Michael Mancini, Daniel Mann, +Michael Mann, Chris Manofsky, Nicholas Marcy, Piompino +Mariano, Bob Marius, Savage Mark, 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, John Mehr, Brian +Mendenhall, Peter Mengel, Michael Mersic, Mike Messom, Don +Metcalf, Gary Metzker, Scott Meyer, Kaae Michael, Kendrigan +Michael, Lacour Michael, Joseph Michaud, Andrew Mielke, +Travis Mikalson, Troy Milburn, Ike Miller, Ronnie Miller, Sean +Miller, Steve Miller, 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, Arnold Ng, Anthony Nguyen, Steve +Nguyen, Joseph Nicholas, Charles Nickolaus, Jon Nisbet, Patrick +Nomee, David Norling-Christensen, Bobby Norton, Joseph +Nottingham, Frank O'connor, Frank O'connor, Jon Oden, David +Oester, Lavern Ogden, Zach Oglesby, Lucas Oldfield, Toby +Olsson, Aaron Ondek, Sean Oneill, 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, Elven Patrick, +Andy Patterson, Gibson Paul, 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, Dhingra Philip, 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, 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, Owen Smith, Shannon Smith, Steven Smith, Edward +Smola, Matthew Sneep, Eric Snow, Brad Sobel, Rasmus Sørensen, +Andrew Sorg, Poppy Southcott, Ross Specter, Erik Spencer, Keith +Spencer, Chris Springer, Erikson Squier, Dean St. Onge, Stewart +Stanfield, John Stanley, Terrence Staton, Terrence Staton, +Benjamin Stein, James Steiner, David Steyer, William Stickney, +James Stofer, Norm Storch, Patrick Stovall, Brandon Sturgeon, +Sean Stutler, Anne Sukprasert, Jamal Sullivan, Jay Sung, Park +Sung Joon, Stein Sunnarvik, Nathan Surginer, Robert Swaringen, +Lee Sweeney, 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, 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, , diff --git a/Uisrc/UI/TITLE.CPP b/Uisrc/UI/TITLE.CPP new file mode 100644 index 0000000..c787c08 --- /dev/null +++ b/Uisrc/UI/TITLE.CPP @@ -0,0 +1,316 @@ +//**************************************************************************** +//*** +//*** TITLE.CPP +//*** Diablo UI title screen dialog +//*** +//*** By Frank Pearce (9/13/96) +//*** +//**************************************************************************** + + +#include "pch.h" +#include "artfont.h" + + +//**************************************************************************** +//**************************************************************************** + #define MILLISEC_PER_SEC 1000 + + #define TIMEOUT_TIMER_ID 1 + #define DEFAULT_TIMEOUT 5 + + #define LOGO_TIMER_ID 2 + #define LOGO_FPS 17 + #define LOGO_TIMER_DELAY 55 // (MILLISEC_PER_SEC / LOGO_FPS) + + #define MAX_FRAMES 30 + + static LPBYTE sgLogoBmp = NULL; + static SIZE sgLogoBmpSize; + + static HTRANS sgTransHandles[MAX_FRAMES]; + static int sgFrame; + + static int sgBlizIDs[] = { + IDC_BLIZZARD, + 0 + }; + + +//**************************************************************************** +//**************************************************************************** +void TitleLogoAnimate(HWND window) { + RECT rect; + TPBMP tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA); + HWND child = GetDlgItem(window, IDC_LOGO); + + if (! IsWindowVisible(window)) return; + if (! child) return; + if (! tpBmp) return; + if (! tpBmp->data) return; + if (! sgTransHandles[0]) return; + + sgFrame++; + if ((! sgTransHandles[sgFrame]) || (sgFrame >= MAX_FRAMES)) + sgFrame = 0; + + GetWindowRect(child, &rect); + ScreenToClient(window, (LPPOINT)&rect.left); + ScreenToClient(window, (LPPOINT)&rect.right); + + // Copy from Background bitmap to buffer for animating logo + SBltROP3 ( + sgLogoBmp, + tpBmp->data + (rect.top * tpBmp->datasize.cx) + rect.left, + sgLogoBmpSize.cx, + (sgLogoBmpSize.cy > 480) ? 480 : sgLogoBmpSize.cy, + sgLogoBmpSize.cx, + tpBmp->datasize.cx, + NULL, + SRCCOPY + ); + + STransBlt(sgLogoBmp, 0, 0, sgLogoBmpSize.cx, sgTransHandles[sgFrame]); + + InvalidateRect(child, NULL, FALSE); +} + + +//**************************************************************************** +//**************************************************************************** +void TitleLogoDestroy(void) { + for (int index = 0; index < MAX_FRAMES; index++) { + if (sgTransHandles[index]) { + STransDelete(sgTransHandles[index]); + sgTransHandles[index] = NULL; + } + } + + if (sgLogoBmp) { + FREE(sgLogoBmp); + sgLogoBmp = NULL; + } +} + + +//**************************************************************************** +//**************************************************************************** +static void TitleDestroy (HWND window) { + TitleLogoDestroy(); + + UiDoomCtrlsDestroy(window, sgBlizIDs); + + UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA)); + SetWindowLong(window, GWL_USERDATA, (LONG) 0); +} + + +//**************************************************************************** +//**************************************************************************** +void TitleLogoInit(HWND window) { + RECT rect; + HWND child; + + // alloc/create a bitmap for the animating logo + child = GetDlgItem(window, IDC_LOGO); + if (! child) return; + GetClientRect(child, &rect); + + sgLogoBmp = (LPBYTE) ALLOC(rect.right * rect.bottom); + if (!sgLogoBmp) { + return; + } + sgLogoBmpSize.cx = rect.right; + sgLogoBmpSize.cy = rect.bottom; + + SDlgSetBitmap( + child, + NULL, + NULL, + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + sgLogoBmp, + NULL, + rect.right, + rect.bottom + ); +} + + +//**************************************************************************** +//**************************************************************************** +void TitleFramesInit(HWND window, LPCTSTR filename) { + LPBYTE srcframes = NULL; + SIZE srcsize; + RECT rect; + + UiLoadBmpFile( + filename, + &srcframes, + &srcsize + ); + + memset(sgTransHandles, 0, sizeof(sgTransHandles)); + + if (srcframes) { + int frames = srcsize.cy / sgLogoBmpSize.cy; + if (frames > MAX_FRAMES) + frames = MAX_FRAMES; + // create an HTRANS for each frame in the animation + for (int index = 0; index < frames; index++) { + + rect.left = 0; + rect.right = sgLogoBmpSize.cx - 1; + rect.top = index * sgLogoBmpSize.cy; + rect.bottom = rect.top + sgLogoBmpSize.cy - 1; + + STransCreate( + srcframes, + sgLogoBmpSize.cx, + sgLogoBmpSize.cy, + 8, + &rect, + PALETTEINDEX(250), + &sgTransHandles[index] + ); + + } + + FREE(srcframes); + } + sgFrame = 0; +} + + +//**************************************************************************** +//**************************************************************************** +static void TitleInit(HWND window, LPARAM lparam) { + TPBMP tpBmp; + + // set up a bmp for the window + tpBmp = UiAllocBmp(); + SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp); + if (tpBmp) { + LoadArtFile( + window, + NULL, + TEXT(""), + SDLG_STYLE_ANY, + SDLG_USAGE_BACKGROUND, + TEXT("ui_art\\hf_title.pcx"), + &tpBmp->data, + &tpBmp->datasize, + FALSE + ); + UiFadeInit(window, FALSE); + } + + UiDoomStaticInit(window, sgBlizIDs, AF_MEDGRAY); + + // set up the animating diablo logo + TitleLogoInit(window); + TitleFramesInit(window,TEXT("ui_art\\hf_logo1.pcx")); + TitleLogoAnimate(window); + SDlgSetTimer(window, LOGO_TIMER_ID, LOGO_TIMER_DELAY, NULL); + + // set a timer so the screen will timeout + if (lparam) + SDlgSetTimer(window, TIMEOUT_TIMER_ID, lparam*MILLISEC_PER_SEC, NULL); + else + SDlgSetTimer(window, TIMEOUT_TIMER_ID, DEFAULT_TIMEOUT*MILLISEC_PER_SEC, NULL); +} + + +//**************************************************************************** +//**************************************************************************** +static void TitleAbort(HWND window) { + UiFadeAbort(window); + SDlgKillTimer(window, LOGO_TIMER_ID); + SDlgKillTimer(window, TIMEOUT_TIMER_ID); + UiVidFadeOut(DEFAULT_STEPS*2); + SDlgEndDialog(window, 1); +} + + +//**************************************************************************** +//**************************************************************************** +static BOOL CALLBACK TitleDialogProc (HWND window, + UINT message, + WPARAM wparam, + LPARAM lparam) { + switch (message) { + + case WM_DESTROY: + TitleDestroy(window); + break; + + case WM_INITDIALOG: + TitleInit(window, lparam); + PostMessage(window, WM_USER+1000, 0, 0); + return 1; + + case WM_PARENTNOTIFY: + if (LOWORD(wparam) == WM_LBUTTONDOWN || LOWORD(wparam) == WM_RBUTTONDOWN) { + TitleAbort(window); + } + break; + + case WM_GETDLGCODE: + return DLGC_WANTALLKEYS; + + case WM_COMMAND: + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_KEYDOWN: + TitleAbort(window); + return 0; + + case WM_USER+1000: + if (! UiIsFading()) { + UiFadeStart(window); + } + return 0; + + case WM_TIMER: + switch (wparam) { + case TIMEOUT_TIMER_ID: + TitleAbort(window); + break; + case LOGO_TIMER_ID: + TitleLogoAnimate(window); + break; + } + return 0; + + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + SendMessage(SDrawGetFrameWindow(), message, wparam, lparam); + break; + } + return SDlgDefDialogProc(window,message,wparam,lparam); +} + + +//**************************************************************************** +//*** +//*** EXPORTED FUNCTIONS +//*** +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +BOOL APIENTRY UiTitleDialog (UINT timeoutseconds) { + // init the custom non-windows font + ArtFontLoad(); + + SDlgDialogBoxParam( + global_hinstance, + "TITLESCREEN_DIALOG", + SDrawGetFrameWindow(), + TitleDialogProc, + timeoutseconds + ); + + return 1; +} diff --git a/Uisrc/UI/UI.DSP b/Uisrc/UI/UI.DSP new file mode 100644 index 0000000..f48a7ad --- /dev/null +++ b/Uisrc/UI/UI.DSP @@ -0,0 +1,351 @@ +# Microsoft Developer Studio Project File - Name="ui" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=ui - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ui.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ui.mak" CFG="ui - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ui - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir ".\Release" +# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Target_Dir "." +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir ".\Release" +# PROP Intermediate_Dir ".\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "." +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MT /W3 /Gi /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR /YX /FD /G5Fry /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:"0x20000000" /subsystem:windows /dll /map /machine:I386 /out:"..\..\windebug\hellfrui.dll" /libpath:"..\..\windebug" +# SUBTRACT LINK32 /verbose /incremental:yes + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir ".\ui___Win" +# PROP BASE Intermediate_Dir ".\ui___Win" +# PROP BASE Target_Dir "." +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir ".\debug" +# PROP Intermediate_Dir ".\debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "." +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MDd /W3 /Gm /Gi /GR /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /Fd".\debug\Debug/" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 winspool.lib comdlg32.lib uuid.lib tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:"0x20000000" /subsystem:windows /dll /map:"..\..\windebug/hellfrui.map" /debug /machine:I386 /out:"..\..\windebug\hellfrui.dll" /libpath:"..\..\windebug" +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "ui - Win32 Release" +# Name "ui - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\artfont.cpp +# End Source File +# Begin Source File + +SOURCE=.\connect.cpp +# End Source File +# Begin Source File + +SOURCE=.\CopyProt.cpp +# End Source File +# Begin Source File + +SOURCE=.\cr8game.cpp +# End Source File +# Begin Source File + +SOURCE=.\CreaDung.cpp +# End Source File +# Begin Source File + +SOURCE=.\CreaHero.cpp +# End Source File +# Begin Source File + +SOURCE=.\credits.cpp +# End Source File +# Begin Source File + +SOURCE=.\DiabEdit.cpp +# End Source File +# Begin Source File + +SOURCE=.\Diabloui.cpp +# End Source File +# Begin Source File + +SOURCE=.\Diabloui.def +# End Source File +# Begin Source File + +SOURCE=.\DiabloUI.rc + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DirLink.cpp +# End Source File +# Begin Source File + +SOURCE=.\disclaim.cpp +# End Source File +# Begin Source File + +SOURCE=.\Doom.cpp +# End Source File +# Begin Source File + +SOURCE=.\EntrDial.cpp +# End Source File +# Begin Source File + +SOURCE=.\EntrName.cpp +# End Source File +# Begin Source File + +SOURCE=.\Fade.cpp +# End Source File +# Begin Source File + +SOURCE=.\Focus.cpp +# End Source File +# Begin Source File + +SOURCE=.\local.cpp +# End Source File +# Begin Source File + +SOURCE=.\Logon.cpp +# End Source File +# Begin Source File + +SOURCE=.\MainMenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\Modem.cpp +# End Source File +# Begin Source File + +SOURCE=.\ModmStat.cpp +# End Source File +# Begin Source File + +SOURCE=.\OkCancel.cpp +# End Source File +# Begin Source File + +SOURCE=.\Progress.cpp +# End Source File +# Begin Source File + +SOURCE=.\Sbar.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelClass.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelConn.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelDial.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelGame.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelHero.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelIPX.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelList.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelLoad.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelModem.cpp +# End Source File +# Begin Source File + +SOURCE=.\SelYesNo.cpp +# End Source File +# Begin Source File + +SOURCE=.\Support.cpp +# End Source File +# Begin Source File + +SOURCE=.\Title.cpp +# End Source File +# Begin Source File + +SOURCE=.\UiSnd.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" +# Begin Source File + +SOURCE=.\artfont.h +# End Source File +# Begin Source File + +SOURCE=.\DiabEdit.h +# End Source File +# Begin Source File + +SOURCE=.\Diabloui.h +# End Source File +# Begin Source File + +SOURCE=.\Doom.h +# End Source File +# Begin Source File + +SOURCE=.\Fade.h +# End Source File +# Begin Source File + +SOURCE=.\local.h +# End Source File +# Begin Source File + +SOURCE=.\Pch.h +# End Source File +# Begin Source File + +SOURCE=.\Sbar.h +# End Source File +# Begin Source File + +SOURCE=.\UiSnd.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\arrow.cur +# End Source File +# Begin Source File + +SOURCE=.\ibeam.cur +# End Source File +# Begin Source File + +SOURCE=.\link.cur +# End Source File +# Begin Source File + +SOURCE=.\Pointer.cur +# End Source File +# End Group +# Begin Source File + +SOURCE=.\But_sml.raw +# End Source File +# Begin Source File + +SOURCE=.\Credits.txt +# End Source File +# Begin Source File + +SOURCE=.\Frank.rc +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\Mike.rc +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\Srpopup.pal +# End Source File +# Begin Source File + +SOURCE=.\Srpopup.raw +# End Source File +# Begin Source File + +SOURCE=.\Support.txt +# End Source File +# End Target +# End Project diff --git a/Uisrc/UI/UI.PLG b/Uisrc/UI/UI.PLG new file mode 100644 index 0000000..bce1d82 --- /dev/null +++ b/Uisrc/UI/UI.PLG @@ -0,0 +1,17 @@ +--------------------Configuration: ui - Win32 Release-------------------- +Begining build with project "U:\diabloui\ui\ui.dsp", at root. +Active configuration is Win32 (x86) Dynamic-Link Library (based on Win32 (x86) Dynamic-Link Library) + +Project's tools are: + "32-bit C/C++ Compiler for 80x86" with flags "/nologo /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp".\Release/ui.pch" /YX /Fo".\Release/" /Fd".\Release/" /FD /G5Fry /c " + "OLE Type Library Maker" with flags "/nologo /D "NDEBUG" /mktyplib203 /win32 " + "Win32 Resource Compiler" with flags "/l 0x409 /fo".\Release/DiabloUI.res" /d "NDEBUG" " + "Browser Database Maker" with flags "/nologo /o".\Release/ui.bsc" " + "COFF Linker for 80x86" with flags "tapi32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib /nologo /base:"0x20000000" /subsystem:windows /dll /incremental:no /pdb:".\Release/diabloui.pdb" /map:".\Release/diabloui.map" /machine:I386 /def:".\Diabloui.def" /out:"..\bin\diabloui.dll" /implib:".\Release/diabloui.lib" /libpath:"u:\diabloui" " + "Custom Build" with flags "" + "" with flags "" + + + + +diabloui.dll - 0 error(s), 0 warning(s) diff --git a/Uisrc/UI/UISND.CPP b/Uisrc/UI/UISND.CPP new file mode 100644 index 0000000..9ca9fd3 --- /dev/null +++ b/Uisrc/UI/UISND.CPP @@ -0,0 +1,48 @@ +//**************************************************************************** +// UiSnd.cpp +// created 10.20.96 +//**************************************************************************** + + +#include "pch.h" + + +//**************************************************************************** +//**************************************************************************** + static PLAYSND sgPlaySndFcn; + + +//**************************************************************************** +//**************************************************************************** +void UiSndPlay(LPCSTR sndfile) { + if (! sgPlaySndFcn) return; + sgPlaySndFcn(sndfile); +} + + +//**************************************************************************** +//**************************************************************************** +void UiSndSetFcn(PLAYSND sndfcn) { + sgPlaySndFcn = sndfcn; +} + + +//**************************************************************************** +//**************************************************************************** +void UiSndInit(void) { + sgPlaySndFcn = (PLAYSND) NULL; +} + + +//**************************************************************************** +//**************************************************************************** +void UiSndPlayClick(void) { + UiSndPlay("sfx\\items\\titlemov.wav"); +} + + +//**************************************************************************** +//**************************************************************************** +void UiSndPlayEnter(void) { + UiSndPlay("sfx\\items\\titlslct.wav"); +} diff --git a/Uisrc/UI/UISND.H b/Uisrc/UI/UISND.H new file mode 100644 index 0000000..83ebfaa --- /dev/null +++ b/Uisrc/UI/UISND.H @@ -0,0 +1,13 @@ +//**************************************************************************** +// UiSnd.h +// created 9.13.96 +//**************************************************************************** + + +//**************************************************************************** +//**************************************************************************** +void UiSndInit(void); +void UiSndSetFcn(PLAYSND sndfcn); +void UiSndPlay(LPCSTR sndfile); +void UiSndPlayClick(void); +void UiSndPlayEnter(void); diff --git a/Uisrc/UI/UNUSED.H b/Uisrc/UI/UNUSED.H new file mode 100644 index 0000000..a9a26c9 --- /dev/null +++ b/Uisrc/UI/UNUSED.H @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by DiabloUI.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 103 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Uisrc/UI/ui.vcproj b/Uisrc/UI/ui.vcproj new file mode 100644 index 0000000..609dc5b --- /dev/null +++ b/Uisrc/UI/ui.vcproj @@ -0,0 +1,1120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Uisrc/UI/ui.vcproj.DESKTOP-B2JDPBG.Justin.user b/Uisrc/UI/ui.vcproj.DESKTOP-B2JDPBG.Justin.user new file mode 100644 index 0000000..a1438bc --- /dev/null +++ b/Uisrc/UI/ui.vcproj.DESKTOP-B2JDPBG.Justin.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/Uisrc/UI/ui.vcxproj b/Uisrc/UI/ui.vcxproj new file mode 100644 index 0000000..47537ac --- /dev/null +++ b/Uisrc/UI/ui.vcxproj @@ -0,0 +1,229 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 18.0 + {9B22CB13-A1A2-4701-80F8-718408AF0348} + + + + DynamicLibrary + v145 + false + + + DynamicLibrary + v145 + false + + + + + + + + + + + + + + + <_ProjectFileVersion>18.0.11512.103 + + + .\debug\ + .\debug\ + true + + + .\Release\ + .\Release\ + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\debug/ui.tlb + + + + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + .\debug/ui.pch + .\debug/ + .\debug/ + .\debug\Debug/ + true + Level3 + true + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + tapi32.lib;wsock32.lib;storm.lib;%(AdditionalDependencies) + ../../bin/hellfrui.dll + true + ..\..\windebug;%(AdditionalLibraryDirectories) + .\Diabloui.def + true + .\debug/hellfrui.pdb + true + ..\..\windebug/hellfrui.map + Windows + 0x20000000 + .\debug/hellfrui.lib + MachineX86 + false + + + true + .\debug/ui.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/ui.tlb + + + + /G5Fry %(AdditionalOptions) + MaxSpeed + AnySuitable + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreaded + true + .\Release/ui.pch + .\Release/ + .\Release/ + .\Release/ + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + tapi32.lib;wsock32.lib;storm.lib;%(AdditionalDependencies) + ../../bin/hellfrui.dll + true + ..\..\windebug;%(AdditionalLibraryDirectories) + .\Diabloui.def + .\Release/hellfrui.pdb + true + .\Release/hellfrui.map + Windows + 0x20000000 + .\Release/hellfrui.lib + MachineX86 + false + + + true + .\Release/ui.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Uisrc/UI/ui.vcxproj.filters b/Uisrc/UI/ui.vcxproj.filters new file mode 100644 index 0000000..feecbbc --- /dev/null +++ b/Uisrc/UI/ui.vcxproj.filters @@ -0,0 +1,194 @@ + + + + + {6df183bb-01f5-475f-bcbe-dfb33b142fb1} + cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90 + + + {fbd7f314-e024-481d-8491-90568a682ce6} + h;hpp;hxx;hm;inl;fi;fd + + + {03a654b3-1c09-43ae-8fdd-6d3a87588e71} + ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + + + + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + + + \ No newline at end of file diff --git a/Uisrc/UI/ui.vcxproj.user b/Uisrc/UI/ui.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/Uisrc/UI/ui.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Uisrc/UISRC.DSP b/Uisrc/UISRC.DSP new file mode 100644 index 0000000..a2080e1 --- /dev/null +++ b/Uisrc/UISRC.DSP @@ -0,0 +1,312 @@ +# Microsoft Developer Studio Project File - Name="uisrc" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) External Target" 0x0106 + +CFG=uisrc - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "uisrc.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "uisrc.mak" CFG="uisrc - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "uisrc - Win32 Release" (based on "Win32 (x86) External Target") +!MESSAGE "uisrc - Win32 Debug" (based on "Win32 (x86) External Target") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" + +!IF "$(CFG)" == "uisrc - Win32 Release" + +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Cmd_Line "NMAKE /f uisrc.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "uisrc.exe" +# PROP BASE Bsc_Name "uisrc.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Cmd_Line "NMAKE /f uisrc.mak" +# PROP Rebuild_Opt "/a" +# PROP Target_File "uisrc.exe" +# PROP Bsc_Name "uisrc.bsc" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "uisrc - Win32 Debug" + +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Cmd_Line "NMAKE /f uisrc.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "uisrc.exe" +# PROP BASE Bsc_Name "uisrc.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Cmd_Line "NMAKE /f uisrc.mak" +# PROP Rebuild_Opt "/a" +# PROP Target_File "uisrc.exe" +# PROP Bsc_Name "uisrc.bsc" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "uisrc - Win32 Release" +# Name "uisrc - Win32 Debug" + +!IF "$(CFG)" == "uisrc - Win32 Release" + +!ELSEIF "$(CFG)" == "uisrc - Win32 Debug" + +!ENDIF + +# Begin Group "Source Files" + +# PROP Default_Filter "*.cpp" +# Begin Source File + +SOURCE=.\Ui\Artfont.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Connect.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Copyprot.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Cr8game.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Creadung.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Creahero.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Credits.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Diabedit.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Diabloui.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Dirlink.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Disclaim.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Doom.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Entrdial.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Entrname.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Fade.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Focus.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Local.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Logon.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Mainmenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Modem.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Modmstat.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Okcancel.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Progress.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Sample.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Sbar.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selclass.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selconn.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Seldial.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selgame.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selhero.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selipx.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Sellist.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selload.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selmodem.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selmult.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selsing.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Selyesno.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Title.cpp +# End Source File +# Begin Source File + +SOURCE=.\Ui\Uisnd.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "*.h" +# Begin Source File + +SOURCE=.\Ui\Artfont.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Bnet.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Diabedit.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Diabloui.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Doom.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Fade.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Frank.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Local.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Mike.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Pch.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Sbar.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Uisnd.h +# End Source File +# Begin Source File + +SOURCE=.\Ui\Unused.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "*.rc" +# Begin Source File + +SOURCE=.\Ui\Diabloui.rc +# End Source File +# Begin Source File + +SOURCE=.\Ui\Frank.rc +# End Source File +# Begin Source File + +SOURCE=.\Ui\Mike.rc +# End Source File +# End Group +# End Target +# End Project diff --git a/Uisrc/UISRC.PLG b/Uisrc/UISRC.PLG new file mode 100644 index 0000000..f8d54ba --- /dev/null +++ b/Uisrc/UISRC.PLG @@ -0,0 +1,13 @@ +--------------------Configuration: uisrc - Win32 Debug-------------------- + + +Microsoft (R) Program Maintenance Utility Version 1.62.7022 +Copyright (C) Microsoft Corp 1988-1997. All rights reserved. + +NMAKE : fatal error U1052: file 'uisrc.mak' not found +Stop. +Error executing NMAKE. + + + +uisrc.exe - 1 error(s), 0 warning(s) diff --git a/Uisrc/UI_ART/BADCONN.PCX b/Uisrc/UI_ART/BADCONN.PCX new file mode 100644 index 0000000..63d3037 Binary files /dev/null and b/Uisrc/UI_ART/BADCONN.PCX differ diff --git a/Uisrc/UI_ART/BLACK.PCX b/Uisrc/UI_ART/BLACK.PCX new file mode 100644 index 0000000..2e933a5 Binary files /dev/null and b/Uisrc/UI_ART/BLACK.PCX differ diff --git a/Uisrc/UI_ART/BNBUTTNS.PCX b/Uisrc/UI_ART/BNBUTTNS.PCX new file mode 100644 index 0000000..be86238 Binary files /dev/null and b/Uisrc/UI_ART/BNBUTTNS.PCX differ diff --git a/Uisrc/UI_ART/BNCONNBG.PCX b/Uisrc/UI_ART/BNCONNBG.PCX new file mode 100644 index 0000000..57e5c84 Binary files /dev/null and b/Uisrc/UI_ART/BNCONNBG.PCX differ diff --git a/Uisrc/UI_ART/BNJOINBG.PCX b/Uisrc/UI_ART/BNJOINBG.PCX new file mode 100644 index 0000000..9a06ae2 Binary files /dev/null and b/Uisrc/UI_ART/BNJOINBG.PCX differ diff --git a/Uisrc/UI_ART/BNSELCHN.PCX b/Uisrc/UI_ART/BNSELCHN.PCX new file mode 100644 index 0000000..26d535b Binary files /dev/null and b/Uisrc/UI_ART/BNSELCHN.PCX differ diff --git a/Uisrc/UI_ART/BN_BKG.PCX b/Uisrc/UI_ART/BN_BKG.PCX new file mode 100644 index 0000000..e207abc Binary files /dev/null and b/Uisrc/UI_ART/BN_BKG.PCX differ diff --git a/Uisrc/UI_ART/BUTTON.PCX b/Uisrc/UI_ART/BUTTON.PCX new file mode 100644 index 0000000..2d0986f Binary files /dev/null and b/Uisrc/UI_ART/BUTTON.PCX differ diff --git a/Uisrc/UI_ART/BUT_LRG.PCX b/Uisrc/UI_ART/BUT_LRG.PCX new file mode 100644 index 0000000..808657c Binary files /dev/null and b/Uisrc/UI_ART/BUT_LRG.PCX differ diff --git a/Uisrc/UI_ART/BUT_MED.PCX b/Uisrc/UI_ART/BUT_MED.PCX new file mode 100644 index 0000000..b8500a8 Binary files /dev/null and b/Uisrc/UI_ART/BUT_MED.PCX differ diff --git a/Uisrc/UI_ART/BUT_SML.PCX b/Uisrc/UI_ART/BUT_SML.PCX new file mode 100644 index 0000000..666c3ad Binary files /dev/null and b/Uisrc/UI_ART/BUT_SML.PCX differ diff --git a/Uisrc/UI_ART/BUT_XSM.PCX b/Uisrc/UI_ART/BUT_XSM.PCX new file mode 100644 index 0000000..c6363ef Binary files /dev/null and b/Uisrc/UI_ART/BUT_XSM.PCX differ diff --git a/Uisrc/UI_ART/CD_ICONS.PCX b/Uisrc/UI_ART/CD_ICONS.PCX new file mode 100644 index 0000000..e2147c8 Binary files /dev/null and b/Uisrc/UI_ART/CD_ICONS.PCX differ diff --git a/Uisrc/UI_ART/CHAT_BKG.PCX b/Uisrc/UI_ART/CHAT_BKG.PCX new file mode 100644 index 0000000..bf13bd3 Binary files /dev/null and b/Uisrc/UI_ART/CHAT_BKG.PCX differ diff --git a/Uisrc/UI_ART/CONNANIM.PCX b/Uisrc/UI_ART/CONNANIM.PCX new file mode 100644 index 0000000..28839ef Binary files /dev/null and b/Uisrc/UI_ART/CONNANIM.PCX differ diff --git a/Uisrc/UI_ART/CONNECT.PCX b/Uisrc/UI_ART/CONNECT.PCX new file mode 100644 index 0000000..350dbe6 Binary files /dev/null and b/Uisrc/UI_ART/CONNECT.PCX differ diff --git a/Uisrc/UI_ART/CREAHERO.PCX b/Uisrc/UI_ART/CREAHERO.PCX new file mode 100644 index 0000000..10282d6 Binary files /dev/null and b/Uisrc/UI_ART/CREAHERO.PCX differ diff --git a/Uisrc/UI_ART/CREAT_BG.PCX b/Uisrc/UI_ART/CREAT_BG.PCX new file mode 100644 index 0000000..e1a5179 Binary files /dev/null and b/Uisrc/UI_ART/CREAT_BG.PCX differ diff --git a/Uisrc/UI_ART/CREDITS.PCX b/Uisrc/UI_ART/CREDITS.PCX new file mode 100644 index 0000000..90831b7 Binary files /dev/null and b/Uisrc/UI_ART/CREDITS.PCX differ diff --git a/Uisrc/UI_ART/CURSOR.PCX b/Uisrc/UI_ART/CURSOR.PCX new file mode 100644 index 0000000..796fd96 Binary files /dev/null and b/Uisrc/UI_ART/CURSOR.PCX differ diff --git a/Uisrc/UI_ART/DIFFBTNS.PCX b/Uisrc/UI_ART/DIFFBTNS.PCX new file mode 100644 index 0000000..ea087b9 Binary files /dev/null and b/Uisrc/UI_ART/DIFFBTNS.PCX differ diff --git a/Uisrc/UI_ART/DISCLAIM.PCX b/Uisrc/UI_ART/DISCLAIM.PCX new file mode 100644 index 0000000..2e933a5 Binary files /dev/null and b/Uisrc/UI_ART/DISCLAIM.PCX differ diff --git a/Uisrc/UI_ART/DP_PREFS b/Uisrc/UI_ART/DP_PREFS new file mode 100644 index 0000000..0fd8e1a Binary files /dev/null and b/Uisrc/UI_ART/DP_PREFS differ diff --git a/Uisrc/UI_ART/EPOPUP.PCX b/Uisrc/UI_ART/EPOPUP.PCX new file mode 100644 index 0000000..1c5929c Binary files /dev/null and b/Uisrc/UI_ART/EPOPUP.PCX differ diff --git a/Uisrc/UI_ART/FOCUS.PCX b/Uisrc/UI_ART/FOCUS.PCX new file mode 100644 index 0000000..b582314 Binary files /dev/null and b/Uisrc/UI_ART/FOCUS.PCX differ diff --git a/Uisrc/UI_ART/FOCUS16.PCX b/Uisrc/UI_ART/FOCUS16.PCX new file mode 100644 index 0000000..00e2f69 Binary files /dev/null and b/Uisrc/UI_ART/FOCUS16.PCX differ diff --git a/Uisrc/UI_ART/FOCUS42.PCX b/Uisrc/UI_ART/FOCUS42.PCX new file mode 100644 index 0000000..9fe951a Binary files /dev/null and b/Uisrc/UI_ART/FOCUS42.PCX differ diff --git a/Uisrc/UI_ART/FONT16.BIN b/Uisrc/UI_ART/FONT16.BIN new file mode 100644 index 0000000..4644d34 Binary files /dev/null and b/Uisrc/UI_ART/FONT16.BIN differ diff --git a/Uisrc/UI_ART/FONT16G.PCX b/Uisrc/UI_ART/FONT16G.PCX new file mode 100644 index 0000000..c60b11e Binary files /dev/null and b/Uisrc/UI_ART/FONT16G.PCX differ diff --git a/Uisrc/UI_ART/FONT16S.PCX b/Uisrc/UI_ART/FONT16S.PCX new file mode 100644 index 0000000..92d43b1 Binary files /dev/null and b/Uisrc/UI_ART/FONT16S.PCX differ diff --git a/Uisrc/UI_ART/FONT24.BIN b/Uisrc/UI_ART/FONT24.BIN new file mode 100644 index 0000000..a85e5c9 Binary files /dev/null and b/Uisrc/UI_ART/FONT24.BIN differ diff --git a/Uisrc/UI_ART/FONT24G.PCX b/Uisrc/UI_ART/FONT24G.PCX new file mode 100644 index 0000000..a248cad Binary files /dev/null and b/Uisrc/UI_ART/FONT24G.PCX differ diff --git a/Uisrc/UI_ART/FONT24S.PCX b/Uisrc/UI_ART/FONT24S.PCX new file mode 100644 index 0000000..bde1871 Binary files /dev/null and b/Uisrc/UI_ART/FONT24S.PCX differ diff --git a/Uisrc/UI_ART/FONT30.BIN b/Uisrc/UI_ART/FONT30.BIN new file mode 100644 index 0000000..445346d Binary files /dev/null and b/Uisrc/UI_ART/FONT30.BIN differ diff --git a/Uisrc/UI_ART/FONT30G.PCX b/Uisrc/UI_ART/FONT30G.PCX new file mode 100644 index 0000000..fb5ef5a Binary files /dev/null and b/Uisrc/UI_ART/FONT30G.PCX differ diff --git a/Uisrc/UI_ART/FONT30S.PCX b/Uisrc/UI_ART/FONT30S.PCX new file mode 100644 index 0000000..d801c01 Binary files /dev/null and b/Uisrc/UI_ART/FONT30S.PCX differ diff --git a/Uisrc/UI_ART/FONT42.BIN b/Uisrc/UI_ART/FONT42.BIN new file mode 100644 index 0000000..9598a09 Binary files /dev/null and b/Uisrc/UI_ART/FONT42.BIN differ diff --git a/Uisrc/UI_ART/FONT42G.PCX b/Uisrc/UI_ART/FONT42G.PCX new file mode 100644 index 0000000..550289b Binary files /dev/null and b/Uisrc/UI_ART/FONT42G.PCX differ diff --git a/Uisrc/UI_ART/FONT42Y.PCX b/Uisrc/UI_ART/FONT42Y.PCX new file mode 100644 index 0000000..4a36544 Binary files /dev/null and b/Uisrc/UI_ART/FONT42Y.PCX differ diff --git a/Uisrc/UI_ART/GREENLAG.PCX b/Uisrc/UI_ART/GREENLAG.PCX new file mode 100644 index 0000000..e0bf980 Binary files /dev/null and b/Uisrc/UI_ART/GREENLAG.PCX differ diff --git a/Uisrc/UI_ART/HERONUM.PCX b/Uisrc/UI_ART/HERONUM.PCX new file mode 100644 index 0000000..ca73572 Binary files /dev/null and b/Uisrc/UI_ART/HERONUM.PCX differ diff --git a/Uisrc/UI_ART/HEROPORT.PCX b/Uisrc/UI_ART/HEROPORT.PCX new file mode 100644 index 0000000..e7e3a93 Binary files /dev/null and b/Uisrc/UI_ART/HEROPORT.PCX differ diff --git a/Uisrc/UI_ART/HEROS.PCX b/Uisrc/UI_ART/HEROS.PCX new file mode 100644 index 0000000..6c050b5 Binary files /dev/null and b/Uisrc/UI_ART/HEROS.PCX differ diff --git a/Uisrc/UI_ART/HF_LOGO1.PCX b/Uisrc/UI_ART/HF_LOGO1.PCX new file mode 100644 index 0000000..c074a82 Binary files /dev/null and b/Uisrc/UI_ART/HF_LOGO1.PCX differ diff --git a/Uisrc/UI_ART/HF_TITLE.PCX b/Uisrc/UI_ART/HF_TITLE.PCX new file mode 100644 index 0000000..1a4429c Binary files /dev/null and b/Uisrc/UI_ART/HF_TITLE.PCX differ diff --git a/Uisrc/UI_ART/HPOPUP.PCX b/Uisrc/UI_ART/HPOPUP.PCX new file mode 100644 index 0000000..5c9658b Binary files /dev/null and b/Uisrc/UI_ART/HPOPUP.PCX differ diff --git a/Uisrc/UI_ART/IPX_BKG.PCX b/Uisrc/UI_ART/IPX_BKG.PCX new file mode 100644 index 0000000..440f69e Binary files /dev/null and b/Uisrc/UI_ART/IPX_BKG.PCX differ diff --git a/Uisrc/UI_ART/LEPOPUP.PCX b/Uisrc/UI_ART/LEPOPUP.PCX new file mode 100644 index 0000000..3cfbed5 Binary files /dev/null and b/Uisrc/UI_ART/LEPOPUP.PCX differ diff --git a/Uisrc/UI_ART/LISTBOX.PCX b/Uisrc/UI_ART/LISTBOX.PCX new file mode 100644 index 0000000..8a3af8b Binary files /dev/null and b/Uisrc/UI_ART/LISTBOX.PCX differ diff --git a/Uisrc/UI_ART/LIST_GRY.PCX b/Uisrc/UI_ART/LIST_GRY.PCX new file mode 100644 index 0000000..68b16b4 Binary files /dev/null and b/Uisrc/UI_ART/LIST_GRY.PCX differ diff --git a/Uisrc/UI_ART/LOGO.PCX b/Uisrc/UI_ART/LOGO.PCX new file mode 100644 index 0000000..14817e6 Binary files /dev/null and b/Uisrc/UI_ART/LOGO.PCX differ diff --git a/Uisrc/UI_ART/LPOPUP.PCX b/Uisrc/UI_ART/LPOPUP.PCX new file mode 100644 index 0000000..3cfbed5 Binary files /dev/null and b/Uisrc/UI_ART/LPOPUP.PCX differ diff --git a/Uisrc/UI_ART/LRPOPUP.PCX b/Uisrc/UI_ART/LRPOPUP.PCX new file mode 100644 index 0000000..441c1d7 Binary files /dev/null and b/Uisrc/UI_ART/LRPOPUP.PCX differ diff --git a/Uisrc/UI_ART/MAINMENU.PCX b/Uisrc/UI_ART/MAINMENU.PCX new file mode 100644 index 0000000..8344133 Binary files /dev/null and b/Uisrc/UI_ART/MAINMENU.PCX differ diff --git a/Uisrc/UI_ART/MENU.PCX b/Uisrc/UI_ART/MENU.PCX new file mode 100644 index 0000000..6eae183 Binary files /dev/null and b/Uisrc/UI_ART/MENU.PCX differ diff --git a/Uisrc/UI_ART/MMPOPUP.PCX b/Uisrc/UI_ART/MMPOPUP.PCX new file mode 100644 index 0000000..0d14205 Binary files /dev/null and b/Uisrc/UI_ART/MMPOPUP.PCX differ diff --git a/Uisrc/UI_ART/PRINTER0.BIN b/Uisrc/UI_ART/PRINTER0.BIN new file mode 100644 index 0000000..a536e94 Binary files /dev/null and b/Uisrc/UI_ART/PRINTER0.BIN differ diff --git a/Uisrc/UI_ART/PROG_BG.PCX b/Uisrc/UI_ART/PROG_BG.PCX new file mode 100644 index 0000000..21aadcb Binary files /dev/null and b/Uisrc/UI_ART/PROG_BG.PCX differ diff --git a/Uisrc/UI_ART/PROG_FIL.PCX b/Uisrc/UI_ART/PROG_FIL.PCX new file mode 100644 index 0000000..a686555 Binary files /dev/null and b/Uisrc/UI_ART/PROG_FIL.PCX differ diff --git a/Uisrc/UI_ART/R1_GRY.PCX b/Uisrc/UI_ART/R1_GRY.PCX new file mode 100644 index 0000000..ca710ca Binary files /dev/null and b/Uisrc/UI_ART/R1_GRY.PCX differ diff --git a/Uisrc/UI_ART/R3_GRY.PCX b/Uisrc/UI_ART/R3_GRY.PCX new file mode 100644 index 0000000..17a7013 Binary files /dev/null and b/Uisrc/UI_ART/R3_GRY.PCX differ diff --git a/Uisrc/UI_ART/RADIO1.PCX b/Uisrc/UI_ART/RADIO1.PCX new file mode 100644 index 0000000..9963ae1 Binary files /dev/null and b/Uisrc/UI_ART/RADIO1.PCX differ diff --git a/Uisrc/UI_ART/RADIO2.PCX b/Uisrc/UI_ART/RADIO2.PCX new file mode 100644 index 0000000..d6b1be4 Binary files /dev/null and b/Uisrc/UI_ART/RADIO2.PCX differ diff --git a/Uisrc/UI_ART/RADIO3.PCX b/Uisrc/UI_ART/RADIO3.PCX new file mode 100644 index 0000000..78d2bac Binary files /dev/null and b/Uisrc/UI_ART/RADIO3.PCX differ diff --git a/Uisrc/UI_ART/RADIO4.PCX b/Uisrc/UI_ART/RADIO4.PCX new file mode 100644 index 0000000..0331c72 Binary files /dev/null and b/Uisrc/UI_ART/RADIO4.PCX differ diff --git a/Uisrc/UI_ART/REDLAG.PCX b/Uisrc/UI_ART/REDLAG.PCX new file mode 100644 index 0000000..18be66c Binary files /dev/null and b/Uisrc/UI_ART/REDLAG.PCX differ diff --git a/Uisrc/UI_ART/SB_ARROW.PCX b/Uisrc/UI_ART/SB_ARROW.PCX new file mode 100644 index 0000000..6daee29 Binary files /dev/null and b/Uisrc/UI_ART/SB_ARROW.PCX differ diff --git a/Uisrc/UI_ART/SB_BG.PCX b/Uisrc/UI_ART/SB_BG.PCX new file mode 100644 index 0000000..3fefb1d Binary files /dev/null and b/Uisrc/UI_ART/SB_BG.PCX differ diff --git a/Uisrc/UI_ART/SB_THUMB.PCX b/Uisrc/UI_ART/SB_THUMB.PCX new file mode 100644 index 0000000..f874971 Binary files /dev/null and b/Uisrc/UI_ART/SB_THUMB.PCX differ diff --git a/Uisrc/UI_ART/SCRLARRW.PCX b/Uisrc/UI_ART/SCRLARRW.PCX new file mode 100644 index 0000000..f9c4e31 Binary files /dev/null and b/Uisrc/UI_ART/SCRLARRW.PCX differ diff --git a/Uisrc/UI_ART/SCRLBAR.PCX b/Uisrc/UI_ART/SCRLBAR.PCX new file mode 100644 index 0000000..74ad334 Binary files /dev/null and b/Uisrc/UI_ART/SCRLBAR.PCX differ diff --git a/Uisrc/UI_ART/SCRLTHMB.PCX b/Uisrc/UI_ART/SCRLTHMB.PCX new file mode 100644 index 0000000..144fe17 Binary files /dev/null and b/Uisrc/UI_ART/SCRLTHMB.PCX differ diff --git a/Uisrc/UI_ART/SELCONN.PCX b/Uisrc/UI_ART/SELCONN.PCX new file mode 100644 index 0000000..c734127 Binary files /dev/null and b/Uisrc/UI_ART/SELCONN.PCX differ diff --git a/Uisrc/UI_ART/SELDIFF.PCX b/Uisrc/UI_ART/SELDIFF.PCX new file mode 100644 index 0000000..ffd3510 Binary files /dev/null and b/Uisrc/UI_ART/SELDIFF.PCX differ diff --git a/Uisrc/UI_ART/SELGAME.PCX b/Uisrc/UI_ART/SELGAME.PCX new file mode 100644 index 0000000..c734127 Binary files /dev/null and b/Uisrc/UI_ART/SELGAME.PCX differ diff --git a/Uisrc/UI_ART/SELHERO.PCX b/Uisrc/UI_ART/SELHERO.PCX new file mode 100644 index 0000000..dc49f5e Binary files /dev/null and b/Uisrc/UI_ART/SELHERO.PCX differ diff --git a/Uisrc/UI_ART/SMLOGO.PCX b/Uisrc/UI_ART/SMLOGO.PCX new file mode 100644 index 0000000..05bb854 Binary files /dev/null and b/Uisrc/UI_ART/SMLOGO.PCX differ diff --git a/Uisrc/UI_ART/SPECIAL.PCX b/Uisrc/UI_ART/SPECIAL.PCX new file mode 100644 index 0000000..9ebf1ec Binary files /dev/null and b/Uisrc/UI_ART/SPECIAL.PCX differ diff --git a/Uisrc/UI_ART/SPOPUP.PCX b/Uisrc/UI_ART/SPOPUP.PCX new file mode 100644 index 0000000..0029f35 Binary files /dev/null and b/Uisrc/UI_ART/SPOPUP.PCX differ diff --git a/Uisrc/UI_ART/SPWNPORT.PCX b/Uisrc/UI_ART/SPWNPORT.PCX new file mode 100644 index 0000000..42296b8 Binary files /dev/null and b/Uisrc/UI_ART/SPWNPORT.PCX differ diff --git a/Uisrc/UI_ART/SRPOPUP.PCX b/Uisrc/UI_ART/SRPOPUP.PCX new file mode 100644 index 0000000..8216de5 Binary files /dev/null and b/Uisrc/UI_ART/SRPOPUP.PCX differ diff --git a/Uisrc/UI_ART/SUPPORT.PCX b/Uisrc/UI_ART/SUPPORT.PCX new file mode 100644 index 0000000..90831b7 Binary files /dev/null and b/Uisrc/UI_ART/SUPPORT.PCX differ diff --git a/Uisrc/UI_ART/SWMMENU.PCX b/Uisrc/UI_ART/SWMMENU.PCX new file mode 100644 index 0000000..6ef2290 Binary files /dev/null and b/Uisrc/UI_ART/SWMMENU.PCX differ diff --git a/Uisrc/UI_ART/SWMMPOP.PCX b/Uisrc/UI_ART/SWMMPOP.PCX new file mode 100644 index 0000000..8b40bdf Binary files /dev/null and b/Uisrc/UI_ART/SWMMPOP.PCX differ diff --git a/Uisrc/UI_ART/TITLE.PCX b/Uisrc/UI_ART/TITLE.PCX new file mode 100644 index 0000000..5aa9c2d Binary files /dev/null and b/Uisrc/UI_ART/TITLE.PCX differ diff --git a/Uisrc/UI_ART/WELCOME.PCX b/Uisrc/UI_ART/WELCOME.PCX new file mode 100644 index 0000000..67b02e8 Binary files /dev/null and b/Uisrc/UI_ART/WELCOME.PCX differ diff --git a/Uisrc/UI_ART/XSMLOGO.PCX b/Uisrc/UI_ART/XSMLOGO.PCX new file mode 100644 index 0000000..3e85aaf Binary files /dev/null and b/Uisrc/UI_ART/XSMLOGO.PCX differ diff --git a/Uisrc/UI_ART/YELLOLAG.PCX b/Uisrc/UI_ART/YELLOLAG.PCX new file mode 100644 index 0000000..3249b84 Binary files /dev/null and b/Uisrc/UI_ART/YELLOLAG.PCX differ