Skip to content

Commit 1798efb

Browse files
authored
Merge pull request #41 from 444Ro666/myBranch
My branch
2 parents d3c35a7 + 345b13a commit 1798efb

21 files changed

+561
-201
lines changed
Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
2-
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.28803.352
5-
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ezorsia", "ezorsia\ezorsia.vcxproj", "{0F213461-B82B-44EB-9585-761A2EDFC945}"
7-
EndProject
8-
Global
9-
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10-
Debug|x64 = Debug|x64
11-
Debug|x86 = Debug|x86
12-
Release|x64 = Release|x64
13-
Release|x86 = Release|x86
14-
EndGlobalSection
15-
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x64.ActiveCfg = Debug|x64
17-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x64.Build.0 = Debug|x64
18-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x86.ActiveCfg = Debug|Win32
19-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x86.Build.0 = Debug|Win32
20-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x64.ActiveCfg = Release|x64
21-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x64.Build.0 = Release|x64
22-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x86.ActiveCfg = Release|Win32
23-
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x86.Build.0 = Release|Win32
24-
EndGlobalSection
25-
GlobalSection(SolutionProperties) = preSolution
26-
HideSolutionNode = FALSE
27-
EndGlobalSection
28-
GlobalSection(ExtensibilityGlobals) = postSolution
29-
SolutionGuid = {1183CB95-3AE9-4190-B2BA-97D2C77BCA0C}
30-
EndGlobalSection
31-
EndGlobal
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.28803.352
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ezorsia", "ezorsia\ezorsia.vcxproj", "{0F213461-B82B-44EB-9585-761A2EDFC945}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Debug|x86 = Debug|x86
12+
Release|x64 = Release|x64
13+
Release|x86 = Release|x86
14+
EndGlobalSection
15+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x64.ActiveCfg = Debug|x64
17+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x64.Build.0 = Debug|x64
18+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x86.ActiveCfg = Debug|Win32
19+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Debug|x86.Build.0 = Debug|Win32
20+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x64.ActiveCfg = Release|x64
21+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x64.Build.0 = Release|x64
22+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x86.ActiveCfg = Release|Win32
23+
{0F213461-B82B-44EB-9585-761A2EDFC945}.Release|x86.Build.0 = Release|Win32
24+
EndGlobalSection
25+
GlobalSection(SolutionProperties) = preSolution
26+
HideSolutionNode = FALSE
27+
EndGlobalSection
28+
GlobalSection(ExtensibilityGlobals) = postSolution
29+
SolutionGuid = {1183CB95-3AE9-4190-B2BA-97D2C77BCA0C}
30+
EndGlobalSection
31+
EndGlobal

README.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
#### 2023/10/23 - if you used this before this date, `nmconew.dll` is no longer supported, instead re-follow the instructions and name `ijl15.dll` to `2ijl15.dll`, place new `ijl15.dll` in the folder, delete old `nmconew.dll`, and rename `nmconew2.dll` back to `nmconew.dll`
1414

15-
#### 2023/10/17 - Major update to how the DLL client loads wz data, YOU NEED THE [NEW WZ FILE](https://www.mediafire.com/file/6bimll8wtpbclmx/EzorsiaV2_UI.wz/file) OR YOUR GAME WILL CRASH (replace old one, works for all res). [setup for more detailed instructions](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide). For how to toggle off some Ezorsia V2 wz edits see [Troubleshooting Section](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide#troubleshooting)
16-
1715
This DLL modifies addresses in a default, packed, v83 MapleStory client fresh from installation to enable the game to run; as well as changes the game window and canvas resolution to HD.
1816
Most in-game component boundaries are also modified to scale with the custom resolution.
1917

@@ -23,9 +21,6 @@ This standalone DLL client is designed to provide a quality, relatively safe, op
2321

2422
This DLL will work with any client or localhost, including the one that comes from a default installation of the game. Deletion of files that come from a default installation is also unnecessary for it to work.
2523

26-
This DLL requires some minor modifications to UI.wz to work optimally because i'm currently not skilled enough to change the game in those areas using only DLL, these are also provided in the setup.
27-
(The DLL can be used without those UI.wz modifications but you need to turn EzorsiaV2WzIncluded=false and also CustomLoginFrame=false in the `config.ini` file if you aren't using your own custom login frame)
28-
2924
This code can only be compiled on the x86 platform. ([Compilation settings](https://www.mediafire.com/view/9ssrqg8eiwbh0k1/buildsettings2.png/file)) (if DLL from compilation settings doesn't work [try this](https://www.mediafire.com/view/6xk7b9bf8qv3gda/buildsettingsEzorsia.png/file))
3025

3126
- [HD client setup instructions/development guide](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide)
@@ -40,14 +35,17 @@ The default `config.ini` file is included. put it in your game folder (where the
4035
#### How to use (DLL only)
4136
In your v83 MapleStory directory,
4237
1. insert [this dinput8.dll from here](https://github.com/444Ro666/MapleEzorsia-v2/releases) in the game directory
43-
2. insert `config.ini` in that same directory and check to make the values are as they should be
44-
- EzorsiaV2WzIncluded=false if you aren't using the UI.wz from the [setup guide](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide) or if your UI.wz doesn't contain MapleEzorsiaV2wzfiles.img
45-
- also CustomLoginFrame=false if there are no login frame modifications at all (note: MapleEzorsiaV2wzfiles.img counts as a modification even if it doesn't directly touch the original login frame, so CustomLoginFrame=true if EzorsiaV2WzIncluded=true)
46-
- for compatibility with your own wz edits see the [troubleshooting section](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide#troubleshooting)
47-
3. Run your client!
38+
2. Run your Game and see how it looks. if you are satisfied then play!
39+
- if not satisfied or if the game didnt open, close the game, and open the `config.ini` that is generated and edit the values to your liking!
40+
- for compatibility with your own wz edits see the [troubleshooting section](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide#troubleshooting). i suggest doing all your edits in your own EzorsiaV2_UI.wz or MapleEzorsiaV2wzfiles.img (if using .IMG) file to avoid WZ conflicts with the base game, and to ensure you can keep track of them. You can load your edits from these custom files by using the stringpool hook provided in the release source code.
41+
3. Run your Game and enjoy!
42+
4. Game still not working? Try manually downloading [the config and WZ/IMG files here](https://github.com/444Ro666/MapleEzorsia-v2/releases) and inserting them into the appropriate locations manually
43+
- all files except .IMG go into the same folder as your game, .IMG file is only for ppl who use .IMG files, and goes in the Data folder (which only exists for .IMG users)
44+
- Optional stuff: [if you want borderless fullscreen and better graphics check out magpie](https://github.com/Blinue/Magpie) i personally use this when playing on 1280x720 to force it to cover my screen without graphic quality loss. [default v83 client with admin elevation request removed, and 4G flag enabled](https://mega.nz/file/9uNmHIAZ#zzE7t7T6wQyDbJrHJxgw-AOlmzzwCpLrOKmoUlec_5E): this is the default client but doesn't request admin, and can use 4g memory instead of 2g [see my setup instructions here if you want to do the edits yourself for verification](https://github.com/444Ro666/MapleEzorsia-v2/wiki/v83%E2%80%90Client%E2%80%90Setup%E2%80%90and%E2%80%90Development%E2%80%90Guide)
4845

4946
## Features
5047
- the first publically released standalone dll client for v83 (functionality added on 11/16/2023)
48+
- no WZ/IMG conflicts; Ezorsia V2 will generate its only WZ/IMG file, compatible with any set of WZ or IMG files, provided it is configured correctly!
5149
- the ability to load 3 custom third party dll that you can specify in the config, these must be in the game folder; Ezorsia v2's edits will take precedence over conflicting edits (sometimes a good thing if those dll files have things that prevent the game running, and Ezorsia v2 overwrites those same things)
5250
- pick up and exp gain messages that were centered on the character in the original ezorsia is fixed and moved to the bottom right
5351
- the messages also no longer appear cut off at the beginning
@@ -77,7 +75,6 @@ In your v83 MapleStory directory,
7775
- numerous addresses, some of which aren't used because they aren't related to resolution
7876
- key edits/addresses have functionality identified (these cause noticeable issues when messed with)
7977

80-
8178
(note: i have not fully identified all address functionality but i have playtested the game and commented out or modified ones that caused issues; i've also reorganized a lot of the addresses to be closer other addresses in the same memory region)
8279

8380
### Want to help me?

ezorsia/AddyLocations.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@ const DWORD dwCashFixPrev = 0x004AB10F;
207207
const DWORD dwCashFixPrevRtm = 0x004AB11D;
208208
const int dwCashFixPrevNOPs = 14;
209209

210+
const DWORD dwLoadUItwice = 0x009F753C;
211+
const DWORD dwLoadUItwiceRetn = 0x009F7543;
212+
const int dwLoadUItwiceNOPs = 7;
213+
210214
// ===== Unlimited Teleport =====
211215
const DWORD dwTeleFieldLimit = 0x00957BB7;
212216
const DWORD dwTeleUpdateTime = 0x00957BFE;

ezorsia/AutoTypes.h

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ struct ZException { HRESULT m_hr; };
4343
// ZRef<ZSocketBuffer>* _m_pHead; //size 4
4444
// ZRef<ZSocketBuffer>* _m_pTail; //size 4
4545
//};
46-
46+
struct _variant_t2 : tagVARIANT { };
4747
//section start: ty to bubbling/Bia10 for the definitions/classes in this section; their release is at https://github.com/MapleDevelopers/MaplestoryV95.1
48-
struct Ztl_variant_t : _variant_t { };
48+
struct Ztl_variant_t : _variant_t2 { };
4949
struct Ztl_bstr_t : _bstr_t2 { };
5050
class ZSyncAutoUnlock
5151
{
@@ -362,6 +362,9 @@ static _PcCreateObject_IWzFileSystem_t _PcCreateObject_IWzFileSystem_Hook = [](c
362362
_sub_9FB01F(sUOL, pObj, pUnkOuter);
363363
};
364364

365+
typedef void(__cdecl* _sub_9FB084_t)(const wchar_t* sUOL, void* pObj, void* pUnkOuter); //sub_9FB01F end 009FB083
366+
static auto _sub_9FB084 = reinterpret_cast<_sub_9FB084_t>(0x009FB084);//9FB084 //void __cdecl PcCreateObject_IWzPackage(const wchar_t *sUOL, ??? *pObj, IUnknown *pUnkOuter)
367+
365368
typedef void(__cdecl* _CWvsApp__Dir_BackSlashToSlash_t)(char* sDir);
366369
static auto _sub_9F95FE = reinterpret_cast<_CWvsApp__Dir_BackSlashToSlash_t>(0x009F95FE); //sub_9F95FE end 009F9620
367370
bool _CWvsApp__Dir_BackSlashToSlash_rewrite_initialized_2 = true;
@@ -387,7 +390,7 @@ static auto _sub_406301 = reinterpret_cast<_bstr_ctor_t>(0x00406301); //void __t
387390
static _bstr_ctor_t _bstr_ctor_Hook = [](void* pThis, void* edx, const char* str) { //can make it return the ptr of inserted val
388391
return _sub_406301(pThis, nullptr, str); };
389392

390-
typedef void*(__fastcall* _sub_425ADD_t)(void* pThis, void* edx, const char* str); //can make it return the ptr of inserted val //sub_425ADD
393+
typedef void*(__fastcall* _sub_425ADD_t)(Ztl_bstr_t* pThis, void* edx, const char* str); //can make it return the ptr of inserted val //sub_425ADD
391394
static auto _sub_425ADD = reinterpret_cast<_sub_425ADD_t>(0x00425ADD);//void __thiscall Ztl_bstr_t::Ztl_bstr_t(Ztl_bstr_t *this, const char *s) //Ztl_bstr_t ctor
392395

393396
//Ztl_bstr_t
@@ -422,11 +425,15 @@ static auto _sub_425ADD = reinterpret_cast<_sub_425ADD_t>(0x00425ADD);//void __t
422425

423426
typedef HRESULT(__fastcall* _IWzFileSystem__Init_t)(void* pThis, void* edx, Ztl_bstr_t sPath); //sub_9F7964 //HRESULT
424427
static auto _sub_9F7964 = reinterpret_cast<_IWzFileSystem__Init_t>(0x009F7964);//HRESULT __thiscall IWzFileSystem::Init(IWzFileSystem *this, Ztl_bstr_t sPath)
425-
static _IWzFileSystem__Init_t _IWzFileSystem__Init_Hook = [](void* pThis, void* edx, Ztl_bstr_t sPath) {
426-
//-> HRESULT {_IWzFileSystem__Init(pThis, edx, sPath); //HRESULT
427-
//std::cout << "_IWzFileSystem__Init " << " pThis: " << pThis << " edx: " << edx << " sPath: " << sPath << std::endl;
428-
return _sub_9F7964(pThis, nullptr, sPath);
429-
};
428+
429+
typedef unsigned int(__thiscall* _sub_402EA5_t)(_bstr_t__Data_t* pThis);
430+
static auto _sub_402EA5 = reinterpret_cast<_sub_402EA5_t>(0x00402EA5);//unsigned int __thiscall _bstr_t::Data_t::Release(_bstr_t::Data_t *this)
431+
432+
typedef void*(__thiscall* _sub_4039AC_t)(Ztl_variant_t* pvargDest, Ztl_variant_t* pvargSrc, char a3);//could be wrong
433+
static auto _sub_4039AC = reinterpret_cast<_sub_4039AC_t>(0x004039AC);//non-existent func in v95//int __thiscall sub_4039AC(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, char)
434+
435+
auto _unk_BE2EC0 = (_GUID*)0x00BE2EC0;//GUID _GUID_352d8655_51e4_4668_8ce4_0866e2b6a5b5
436+
auto _unk_BD8F28 = (_GUID*)0x00BD8F28;//GUID _GUID_2aeeeb36_a4e1_4e2b_8f6f_2e7bdec5c53d
430437

431438
typedef HRESULT(__fastcall* _IWzNameSpace__Mount_t)(void* pThis, void* edx, Ztl_bstr_t sPath, void* pDown, int nPriority); //HRESULT
432439
static auto _sub_9F790A = reinterpret_cast<_IWzNameSpace__Mount_t>(0x009F790A); //sub_9F790A //HRESULT __thiscall IWzNameSpace::Mount(IWzNameSpace *this, Ztl_bstr_t sPath, IWzNameSpace *pDown, int nPriority)
@@ -435,7 +442,15 @@ static _IWzNameSpace__Mount_t _IWzNameSpace__Mount_Hook = [](void* pThis, void*
435442
return _sub_9F790A(pThis, nullptr, sPath, pDown, nPriority);
436443
};
437444

438-
//sub_79E993
445+
typedef Ztl_variant_t*(__fastcall* _sub_5D995B_t)(void* pThis, void* edx, Ztl_variant_t* result, Ztl_bstr_t sPath);
446+
static auto _sub_5D995B = reinterpret_cast<_sub_5D995B_t>(0x005D995B);//_sub_5D995B//Ztl_variant_t *__thiscall IWzNameSpace::Getitem(IWzNameSpace *this, Ztl_variant_t *result, Ztl_bstr_t sPath)
447+
448+
typedef IUnknown*(__fastcall* _sub_4032B2_t)(Ztl_variant_t* pThis, void* edx, bool fAddRef, bool fTryChangeType);
449+
static auto _sub_4032B2 = reinterpret_cast<_sub_4032B2_t>(0x004032B2);//IUnknown* __thiscall Ztl_variant_t::GetUnknown(Ztl_variant_t* this, bool fAddRef, bool fTryChangeType)
450+
451+
typedef void(__fastcall* _sub_9FCD88_t)(void* pThis, void* edx, IUnknown* p);
452+
static auto _sub_9FCD88 = reinterpret_cast<_sub_9FCD88_t>(0x009FCD88);//sub_9FCD88 //void __thiscall <IWzSeekableArchive(IWzSeekableArchive* this, IUnknown* p)
453+
439454
typedef ZXString<char>* (__fastcall* _StringPool__GetString_t)(void* pThis, void* edx, ZXString<char>* result, unsigned int nIdx, char formal); //also ty to the creators of MapleClientEditTemplate
440455
static auto _sub_79E993 = reinterpret_cast<_StringPool__GetString_t>(0x0079E993);//hook stringpool modification //ty !! popcorn //ty darter //ty teto
441456

@@ -952,6 +967,9 @@ typedef DWORD(WINAPI* GetLastError_t)(); extern GetLastError_t GetLastError_Orig
952967
typedef void(__fastcall* _sub_9F51F6_t)(CWvsApp* pThis, void* edx);
953968
static auto _sub_9F51F6 = reinterpret_cast<_sub_9F51F6_t>(0x009F51F6);//void __thiscall CWvsApp::~CWvsApp(CWvsApp *this)
954969

970+
typedef unsigned int(__fastcall* _sub_9F4E54_t)(unsigned int* pmem, void* edx, unsigned int size, unsigned int* pcheck, unsigned int* pCrc32);
971+
static auto _sub_9F4E54 = reinterpret_cast<_sub_9F4E54_t>(0x009F4E54);//unsigned int __cdecl Crc32_GetCrc32_VMTable(unsigned int pmem, unsigned int size, unsigned intpcheck, unsigned int *pCrc32)
972+
955973
//auto _sub_9F9621 = (void(__cdecl*)(char*))0x009F9621;//XXXXXXXXXXXXX
956974
//auto _unk_BF0B00 = (ZAllocEx<ZAllocAnonSelector>*)0x00BF0B00;//XXXXXXXXXXXXX00B3F3E8
957975

0 commit comments

Comments
 (0)