mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Fixed the long existing slotdat.ini function in ExtraSaveSlots.
Reduced duplication in ExtraSaveSlots code. Unified the indent style in ExtraSaveSlots.cpp. Updated version number.
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
;sfall configuration settings
|
;sfall configuration settings
|
||||||
;v3.8.8
|
;v3.8.9
|
||||||
|
|
||||||
[Main]
|
[Main]
|
||||||
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
||||||
|
|||||||
+90
-181
@@ -26,31 +26,32 @@
|
|||||||
//extern
|
//extern
|
||||||
DWORD LSPageOffset = 0;
|
DWORD LSPageOffset = 0;
|
||||||
|
|
||||||
|
|
||||||
int LSButtDN = 0;
|
int LSButtDN = 0;
|
||||||
|
|
||||||
|
static const char* filename = "%s\\savegame\\slotdat.ini";
|
||||||
|
|
||||||
|
static const DWORD AddPageOffset01Addrs[] = {
|
||||||
|
0x47B929, 0x47D8DB, 0x47D9B0, 0x47DA34, 0x47DABF, 0x47DB58, 0x47DBE9,
|
||||||
|
0x47DC9C, 0x47EC77, 0x47F5AB, 0x47F694, 0x47F6EB, 0x47F7FB, 0x47F892,
|
||||||
|
0x47FB86, 0x47FC3A, 0x47FCF2, 0x480117, 0x4801CF, 0x480234, 0x480310,
|
||||||
|
0x4803F3, 0x48049F, 0x480512, 0x4805F2, 0x480767, 0x4807E6, 0x480839,
|
||||||
|
0x4808D3,
|
||||||
|
};
|
||||||
|
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
void SavePageOffsets() {
|
void SavePageOffsets() {
|
||||||
|
char SavePath[MAX_PATH], buffer[6];
|
||||||
|
|
||||||
char SavePath[MAX_PATH];
|
sprintf_s(SavePath, MAX_PATH, filename, *(char**)_patches);
|
||||||
|
|
||||||
char buffer[6];
|
|
||||||
|
|
||||||
strcpy_s(SavePath, MAX_PATH, *(char**)_patches);
|
|
||||||
strcat_s(SavePath, MAX_PATH, "savegame\\SLOTDAT.ini");
|
|
||||||
|
|
||||||
_itoa_s(*(DWORD*)_slot_cursor, buffer, 10);
|
_itoa_s(*(DWORD*)_slot_cursor, buffer, 10);
|
||||||
WritePrivateProfileString("POSITION", "ListNum", buffer, SavePath);
|
WritePrivateProfileString("POSITION", "ListNum", buffer, SavePath);
|
||||||
_itoa_s(LSPageOffset, buffer, 10);
|
_itoa_s(LSPageOffset, buffer, 10);
|
||||||
WritePrivateProfileString("POSITION", "PageOffset", buffer, SavePath);
|
WritePrivateProfileString("POSITION", "PageOffset", buffer, SavePath);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
static void __declspec(naked) save_page_offsets(void) {
|
static void __declspec(naked) save_page_offsets(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
// save last slot position values to file
|
// save last slot position values to file
|
||||||
call SavePageOffsets
|
call SavePageOffsets
|
||||||
@@ -58,31 +59,26 @@ static void __declspec(naked) save_page_offsets(void) {
|
|||||||
mov eax, dword ptr ds:[_lsgwin]
|
mov eax, dword ptr ds:[_lsgwin]
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
void LoadPageOffsets() {
|
void LoadPageOffsets() {
|
||||||
|
|
||||||
char LoadPath[MAX_PATH];
|
char LoadPath[MAX_PATH];
|
||||||
|
|
||||||
strcpy_s(LoadPath, MAX_PATH, *(char**)_patches);
|
sprintf_s(LoadPath, MAX_PATH, filename, *(char**)_patches);
|
||||||
strcat_s(LoadPath, MAX_PATH, "savegame\\SLOTDAT.ini");
|
|
||||||
|
|
||||||
*(DWORD*)_slot_cursor = GetPrivateProfileInt("POSITION", "ListNum", 0, LoadPath);
|
*(DWORD*)_slot_cursor = GetPrivateProfileInt("POSITION", "ListNum", 0, LoadPath);
|
||||||
if(*(DWORD*)_slot_cursor>9)*(DWORD*)_slot_cursor=9;
|
if (*(DWORD*)_slot_cursor > 9) {
|
||||||
|
*(DWORD*)_slot_cursor = 0;
|
||||||
|
}
|
||||||
LSPageOffset = GetPrivateProfileInt("POSITION", "PageOffset", 0, LoadPath);
|
LSPageOffset = GetPrivateProfileInt("POSITION", "PageOffset", 0, LoadPath);
|
||||||
if(LSPageOffset>9990)LSPageOffset=9990;
|
if (LSPageOffset > 9990) {
|
||||||
|
LSPageOffset = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
static void __declspec(naked) load_page_offsets(void) {
|
static void __declspec(naked) load_page_offsets(void) {
|
||||||
|
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
// load last slot position values from file
|
// load last slot position values from file
|
||||||
call LoadPageOffsets
|
call LoadPageOffsets
|
||||||
@@ -90,13 +86,10 @@ static void __declspec(naked) load_page_offsets(void) {
|
|||||||
mov edx, 0x50A480 // ASCII "SAV"
|
mov edx, 0x50A480 // ASCII "SAV"
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
static void __declspec(naked) create_page_buttons(void) {
|
static void __declspec(naked) create_page_buttons(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
// left button -10
|
// left button -10
|
||||||
push 32 // ButType
|
push 32 // ButType
|
||||||
@@ -180,14 +173,16 @@ static void __declspec(naked) create_page_buttons(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
void SetPageNum() {
|
void SetPageNum() {
|
||||||
|
|
||||||
int WinRef = *(DWORD*)_lsgwin; // load/save winref
|
int WinRef = *(DWORD*)_lsgwin; // load/save winref
|
||||||
if(WinRef==NULL)return;
|
if (WinRef == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
WINinfo *SaveLoadWin = GetWinStruct(WinRef);
|
WINinfo *SaveLoadWin = GetWinStruct(WinRef);
|
||||||
if(SaveLoadWin->surface==NULL)return;
|
if (SaveLoadWin->surface == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
BYTE ConsoleGold = *(BYTE*)_YellowColor; // palette offset stored in mem - text colour
|
BYTE ConsoleGold = *(BYTE*)_YellowColor; // palette offset stored in mem - text colour
|
||||||
|
|
||||||
@@ -204,31 +199,35 @@ void SetPageNum() {
|
|||||||
|
|
||||||
DWORD tempPageOffset = -1;
|
DWORD tempPageOffset = -1;
|
||||||
|
|
||||||
|
|
||||||
while (!exitFlag) {
|
while (!exitFlag) {
|
||||||
NewTick = GetTickCount(); // timer for redraw
|
NewTick = GetTickCount(); // timer for redraw
|
||||||
if(OldTick>NewTick)
|
if (OldTick > NewTick) {
|
||||||
OldTick = NewTick;
|
OldTick = NewTick;
|
||||||
|
}
|
||||||
if (NewTick - OldTick > 166) { // time to draw
|
if (NewTick - OldTick > 166) { // time to draw
|
||||||
OldTick = NewTick;
|
OldTick = NewTick;
|
||||||
|
|
||||||
if(blip=='_')blip=' ';
|
if (blip == '_') {
|
||||||
else blip='_';
|
blip = ' ';
|
||||||
|
} else {
|
||||||
|
blip = '_';
|
||||||
|
}
|
||||||
|
|
||||||
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, '_');
|
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, '_');
|
||||||
if(tempPageOffset==-1)
|
if (tempPageOffset == -1) {
|
||||||
sprintf_s(TempText, 32, "#%c", '_');
|
sprintf_s(TempText, 32, "#%c", '_');
|
||||||
|
}
|
||||||
TxtWidth = GetTextWidth(TempText);
|
TxtWidth = GetTextWidth(TempText);
|
||||||
|
|
||||||
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, blip);
|
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, blip);
|
||||||
if(tempPageOffset==-1)
|
if (tempPageOffset == -1) {
|
||||||
sprintf_s(TempText, 32, "#%c", blip);
|
sprintf_s(TempText, 32, "#%c", blip);
|
||||||
|
}
|
||||||
|
|
||||||
// fill over text area with consol black colour
|
// fill over text area with consol black colour
|
||||||
for(unsigned int y=SaveLoadWin->width*52; y<SaveLoadWin->width*82; y=y+SaveLoadWin->width)
|
for (unsigned int y = SaveLoadWin->width * 52; y < SaveLoadWin->width * 82; y = y + SaveLoadWin->width) {
|
||||||
memset(SaveLoadWin->surface + y + 170 - TxtMaxWidth / 2, 0xCF, TxtMaxWidth);
|
memset(SaveLoadWin->surface + y + 170 - TxtMaxWidth / 2, 0xCF, TxtMaxWidth);
|
||||||
|
}
|
||||||
|
|
||||||
PrintText(TempText, ConsoleGold, 170 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, ConsoleGold, 170 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
RedrawWin(WinRef);
|
RedrawWin(WinRef);
|
||||||
@@ -243,29 +242,33 @@ void SetPageNum() {
|
|||||||
if (Number[0] == '0') {
|
if (Number[0] == '0') {
|
||||||
numpos = 0;
|
numpos = 0;
|
||||||
tempPageOffset = -1;
|
tempPageOffset = -1;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
tempPageOffset = (atoi(Number) - 1) * 10;
|
tempPageOffset = (atoi(Number) - 1) * 10;
|
||||||
}
|
}
|
||||||
//else exitFlag=-1;
|
|
||||||
}
|
}
|
||||||
else if(button==0x08 && numpos) {
|
//else exitFlag=-1;
|
||||||
|
} else if (button == 0x08 && numpos) {
|
||||||
numpos--;
|
numpos--;
|
||||||
Number[numpos] = '\0';
|
Number[numpos] = '\0';
|
||||||
if(!numpos) tempPageOffset=-1;
|
if (!numpos) {
|
||||||
else tempPageOffset=(atoi(Number)-1)*10;
|
tempPageOffset = -1;
|
||||||
|
} else {
|
||||||
|
tempPageOffset = (atoi(Number) - 1) * 10;
|
||||||
|
}
|
||||||
|
} else if (button == 0x0D || button == 0x20 || button == 'p' || button == 'P') {
|
||||||
|
exitFlag = -1; // Enter, Space or P Keys
|
||||||
|
} else if (button == 0x1B) {
|
||||||
|
tempPageOffset = -1, exitFlag = -1; // Esc key
|
||||||
}
|
}
|
||||||
else if(button==0x0D || button==0x20 || button=='p' || button=='P') exitFlag=-1;//Enter, Space or P Keys
|
|
||||||
else if(button==0x1B)tempPageOffset=-1, exitFlag=-1;//Esc key
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tempPageOffset!=-1 && tempPageOffset<=9990)
|
if (tempPageOffset != -1 && tempPageOffset <= 9990) {
|
||||||
LSPageOffset = tempPageOffset;
|
LSPageOffset = tempPageOffset;
|
||||||
|
}
|
||||||
|
|
||||||
SaveLoadWin = NULL;
|
SaveLoadWin = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
static void __declspec(naked) check_page_buttons(void) {
|
static void __declspec(naked) check_page_buttons(void) {
|
||||||
/*
|
/*
|
||||||
@@ -351,19 +354,21 @@ LastPage:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
void DrawPageText() {
|
void DrawPageText() {
|
||||||
|
|
||||||
int WinRef = *(DWORD*)_lsgwin; // load/save winref
|
int WinRef = *(DWORD*)_lsgwin; // load/save winref
|
||||||
if(WinRef==NULL)return;
|
if (WinRef == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
WINinfo *SaveLoadWin = GetWinStruct(WinRef);
|
WINinfo *SaveLoadWin = GetWinStruct(WinRef);
|
||||||
if(SaveLoadWin->surface==NULL)return;
|
if (SaveLoadWin->surface == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// fill over text area with consol black colour
|
// fill over text area with consol black colour
|
||||||
for(unsigned int y=SaveLoadWin->width*52; y<SaveLoadWin->width*82; y=y+SaveLoadWin->width)
|
for (unsigned int y = SaveLoadWin->width * 52; y < SaveLoadWin->width * 82; y = y + SaveLoadWin->width) {
|
||||||
memset(SaveLoadWin->surface + 50 + y, 0xCF, 240);
|
memset(SaveLoadWin->surface + 50 + y, 0xCF, 240);
|
||||||
|
}
|
||||||
|
|
||||||
BYTE ConsoleGreen = *(BYTE*)_GreenColor; // palette offset stored in mem - text colour
|
BYTE ConsoleGreen = *(BYTE*)_GreenColor; // palette offset stored in mem - text colour
|
||||||
BYTE ConsoleGold = *(BYTE*)_YellowColor; // palette offset stored in mem - text colour
|
BYTE ConsoleGold = *(BYTE*)_YellowColor; // palette offset stored in mem - text colour
|
||||||
@@ -375,28 +380,38 @@ void DrawPageText() {
|
|||||||
unsigned int TxtWidth = GetTextWidth(TempText);
|
unsigned int TxtWidth = GetTextWidth(TempText);
|
||||||
PrintText(TempText, Colour, 170 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, Colour, 170 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
|
|
||||||
if(LSButtDN==0x549) Colour=ConsoleGold;
|
if (LSButtDN == 0x549) {
|
||||||
else Colour = ConsoleGreen;
|
Colour = ConsoleGold;
|
||||||
|
} else {
|
||||||
|
Colour = ConsoleGreen;
|
||||||
|
}
|
||||||
strcpy_s(TempText, 12, "<<");
|
strcpy_s(TempText, 12, "<<");
|
||||||
TxtWidth = GetTextWidth(TempText);
|
TxtWidth = GetTextWidth(TempText);
|
||||||
PrintText(TempText, Colour, 80 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, Colour, 80 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
|
|
||||||
if(LSButtDN==0x54B) Colour=ConsoleGold;
|
if (LSButtDN == 0x54B) {
|
||||||
else Colour = ConsoleGreen;
|
Colour = ConsoleGold;
|
||||||
|
} else {
|
||||||
|
Colour = ConsoleGreen;
|
||||||
|
}
|
||||||
strcpy_s(TempText, 12, "<");
|
strcpy_s(TempText, 12, "<");
|
||||||
TxtWidth = GetTextWidth(TempText);
|
TxtWidth = GetTextWidth(TempText);
|
||||||
PrintText(TempText, Colour, 112 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, Colour, 112 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
|
|
||||||
|
if (LSButtDN == 0x551) {
|
||||||
|
Colour = ConsoleGold;
|
||||||
if(LSButtDN==0x551) Colour=ConsoleGold;
|
} else {
|
||||||
else Colour = ConsoleGreen;
|
Colour = ConsoleGreen;
|
||||||
|
}
|
||||||
strcpy_s(TempText, 12, ">>");
|
strcpy_s(TempText, 12, ">>");
|
||||||
TxtWidth = GetTextWidth(TempText);
|
TxtWidth = GetTextWidth(TempText);
|
||||||
PrintText(TempText, Colour, 260 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, Colour, 260 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
|
|
||||||
if(LSButtDN==0x54D) Colour=ConsoleGold;
|
if (LSButtDN == 0x54D) {
|
||||||
else Colour = ConsoleGreen;
|
Colour = ConsoleGold;
|
||||||
|
} else {
|
||||||
|
Colour = ConsoleGreen;
|
||||||
|
}
|
||||||
strcpy_s(TempText, 12, ">");
|
strcpy_s(TempText, 12, ">");
|
||||||
TxtWidth = GetTextWidth(TempText);
|
TxtWidth = GetTextWidth(TempText);
|
||||||
PrintText(TempText, Colour, 228 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
PrintText(TempText, Colour, 228 - TxtWidth / 2, 60, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
|
||||||
@@ -404,10 +419,8 @@ void DrawPageText() {
|
|||||||
SaveLoadWin = NULL;
|
SaveLoadWin = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
static void __declspec(naked) draw_page_text(void) {
|
static void __declspec(naked) draw_page_text(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
pushad
|
pushad
|
||||||
call DrawPageText
|
call DrawPageText
|
||||||
@@ -418,11 +431,9 @@ static void __declspec(naked) draw_page_text(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
// add page num offset when reading and writing various save data files
|
// add page num offset when reading and writing various save data files
|
||||||
static void __declspec(naked) AddPageOffset01(void) {
|
static void __declspec(naked) AddPageOffset01(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
mov eax, dword ptr ds:[_slot_cursor] // list position 0-9
|
mov eax, dword ptr ds:[_slot_cursor] // list position 0-9
|
||||||
add eax, LSPageOffset // add page num offset
|
add eax, LSPageOffset // add page num offset
|
||||||
@@ -430,11 +441,9 @@ static void __declspec(naked) AddPageOffset01(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
// getting info for the 10 currently displayed save slots from save.dats
|
// getting info for the 10 currently displayed save slots from save.dats
|
||||||
static void __declspec(naked) AddPageOffset02(void) {
|
static void __declspec(naked) AddPageOffset02(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
pop edx // pop ret addr
|
pop edx // pop ret addr
|
||||||
mov eax, 0x50A514 // ASCII "SAVE.DAT"
|
mov eax, 0x50A514 // ASCII "SAVE.DAT"
|
||||||
@@ -446,11 +455,9 @@ static void __declspec(naked) AddPageOffset02(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
// printing current 10 slot numbers
|
// printing current 10 slot numbers
|
||||||
static void __declspec(naked) AddPageOffset03(void) {
|
static void __declspec(naked) AddPageOffset03(void) {
|
||||||
|
|
||||||
__asm {
|
__asm {
|
||||||
inc eax
|
inc eax
|
||||||
add eax, LSPageOffset // add page num offset
|
add eax, LSPageOffset // add page num offset
|
||||||
@@ -459,133 +466,35 @@ static void __declspec(naked) AddPageOffset03(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
void EnableSuperSaving() {
|
void EnableSuperSaving() {
|
||||||
|
|
||||||
// save/load button setup func
|
// save/load button setup func
|
||||||
SafeWrite8(0x47D80D, 0xE8);
|
MakeCall(0x47D80D, create_page_buttons);
|
||||||
SafeWrite32(0x47D80E, (DWORD)&create_page_buttons - 0x47D812);
|
|
||||||
|
|
||||||
// Draw button text
|
// Draw button text
|
||||||
SafeWrite8(0x47E6E8, 0xE8);
|
MakeCall(0x47E6E8, draw_page_text);
|
||||||
SafeWrite32(0x47E6E9, (DWORD)&draw_page_text - 0x47E6ED);
|
|
||||||
|
|
||||||
// check save buttons
|
// check save buttons
|
||||||
SafeWrite8(0x47BD49, 0xE8);
|
MakeCall(0x47BD49, check_page_buttons);
|
||||||
SafeWrite32(0x47BD4A, (DWORD)&check_page_buttons - 0x47BD4E);
|
|
||||||
|
|
||||||
// check load buttons
|
// check load buttons
|
||||||
SafeWrite8(0x47CB1C, 0xE8);
|
MakeCall(0x47CB1C, check_page_buttons);
|
||||||
SafeWrite32(0x47CB1D, (DWORD)&check_page_buttons - 0x47CB21);
|
|
||||||
|
|
||||||
|
|
||||||
// save current page and list positions to file on load/save scrn exit
|
// save current page and list positions to file on load/save scrn exit
|
||||||
SafeWrite8(0x47D828, 0xE8);
|
MakeCall(0x47D828, save_page_offsets);
|
||||||
SafeWrite32(0x47D829, (DWORD)&save_page_offsets - 0x47D82D);
|
|
||||||
|
|
||||||
// load saved page and list positions from file
|
// load saved page and list positions from file
|
||||||
SafeWrite8(0x47B82B, 0xE8);
|
MakeCall(0x47B82B, load_page_offsets);
|
||||||
SafeWrite32(0x47B82C, (DWORD)&load_page_offsets - 0x47B830);
|
|
||||||
|
|
||||||
|
|
||||||
// Add Load/Save page offset to Load/Save folder number/////////////////
|
// Add Load/Save page offset to Load/Save folder number/////////////////
|
||||||
SafeWrite8(0x47B929, 0xE8);
|
for (int i = 0; i < sizeof(AddPageOffset01Addrs) / 4; i++) {
|
||||||
SafeWrite32(0x47B92A, (DWORD)&AddPageOffset01 - 0x47B92E);
|
MakeCall(AddPageOffset01Addrs[i], AddPageOffset01);
|
||||||
|
}
|
||||||
|
|
||||||
SafeWrite8(0x47D8DB, 0xE8);
|
MakeCall(0x47E5E1, AddPageOffset02);
|
||||||
SafeWrite32(0x47D8DC, (DWORD)&AddPageOffset01 - 0x47D8E0);
|
|
||||||
|
|
||||||
SafeWrite8(0x47D9B0, 0xE8);
|
|
||||||
SafeWrite32(0x47D9B1, (DWORD)&AddPageOffset01 - 0x47D9B5);
|
|
||||||
|
|
||||||
SafeWrite8(0x47DA34, 0xE8);
|
|
||||||
SafeWrite32(0x47DA35, (DWORD)&AddPageOffset01 - 0x47DA39);
|
|
||||||
|
|
||||||
SafeWrite8(0x47DABF, 0xE8);
|
|
||||||
SafeWrite32(0x47DAC0, (DWORD)&AddPageOffset01 - 0x47DAC4);
|
|
||||||
|
|
||||||
SafeWrite8(0x47DB58, 0xE8);
|
|
||||||
SafeWrite32(0x47DB59, (DWORD)&AddPageOffset01 - 0x47DB5D);
|
|
||||||
|
|
||||||
SafeWrite8(0x47DBE9, 0xE8);
|
|
||||||
SafeWrite32(0x47DBEA, (DWORD)&AddPageOffset01 - 0x47DBEE);
|
|
||||||
|
|
||||||
SafeWrite8(0x47DC9C, 0xE8);
|
|
||||||
SafeWrite32(0x47DC9D, (DWORD)&AddPageOffset01 - 0x47DCA1);
|
|
||||||
|
|
||||||
SafeWrite8(0x47EC77, 0xE8);
|
|
||||||
SafeWrite32(0x47EC78, (DWORD)&AddPageOffset01 - 0x47EC7C);
|
|
||||||
|
|
||||||
SafeWrite8(0x47F5AB, 0xE8);
|
|
||||||
SafeWrite32(0x47F5AC, (DWORD)&AddPageOffset01 - 0x47F5B0);
|
|
||||||
|
|
||||||
SafeWrite8(0x47F694, 0xE8);
|
|
||||||
SafeWrite32(0x47F695, (DWORD)&AddPageOffset01 - 0x47F699);
|
|
||||||
|
|
||||||
SafeWrite8(0x47F6EB, 0xE8);
|
|
||||||
SafeWrite32(0x47F6EC, (DWORD)&AddPageOffset01 - 0x47F6F0);
|
|
||||||
|
|
||||||
SafeWrite8(0x47F7FB, 0xE8);
|
|
||||||
SafeWrite32(0x47F7FC, (DWORD)&AddPageOffset01 - 0x47F800);
|
|
||||||
|
|
||||||
SafeWrite8(0x47F892, 0xE8);
|
|
||||||
SafeWrite32(0x47F893, (DWORD)&AddPageOffset01 - 0x47F897);
|
|
||||||
|
|
||||||
SafeWrite8(0x47FB86, 0xE8);
|
|
||||||
SafeWrite32(0x47FB87, (DWORD)&AddPageOffset01 - 0x47FB8B);
|
|
||||||
|
|
||||||
SafeWrite8(0x47FC3A, 0xE8);
|
|
||||||
SafeWrite32(0x47FC3B, (DWORD)&AddPageOffset01 - 0x47FC3F);
|
|
||||||
|
|
||||||
SafeWrite8(0x47FCF2, 0xE8);
|
|
||||||
SafeWrite32(0x47FCF3, (DWORD)&AddPageOffset01 - 0x47FCF7);
|
|
||||||
|
|
||||||
SafeWrite8(0x480117, 0xE8);
|
|
||||||
SafeWrite32(0x480118, (DWORD)&AddPageOffset01 - 0x48011C);
|
|
||||||
|
|
||||||
SafeWrite8(0x4801CF, 0xE8);
|
|
||||||
SafeWrite32(0x4801D0, (DWORD)&AddPageOffset01 - 0x4801D4);
|
|
||||||
|
|
||||||
SafeWrite8(0x480234, 0xE8);
|
|
||||||
SafeWrite32(0x480235, (DWORD)&AddPageOffset01 - 0x480239);
|
|
||||||
|
|
||||||
SafeWrite8(0x480310, 0xE8);
|
|
||||||
SafeWrite32(0x480311, (DWORD)&AddPageOffset01 - 0x480315);
|
|
||||||
|
|
||||||
SafeWrite8(0x4803F3, 0xE8);
|
|
||||||
SafeWrite32(0x4803F4, (DWORD)&AddPageOffset01 - 0x4803F8);
|
|
||||||
|
|
||||||
SafeWrite8(0x48049F, 0xE8);
|
|
||||||
SafeWrite32(0x4804A0, (DWORD)&AddPageOffset01 - 0x4804A4);
|
|
||||||
|
|
||||||
SafeWrite8(0x480512, 0xE8);
|
|
||||||
SafeWrite32(0x480513, (DWORD)&AddPageOffset01 - 0x480517);
|
|
||||||
|
|
||||||
SafeWrite8(0x4805F2, 0xE8);
|
|
||||||
SafeWrite32(0x4805F3, (DWORD)&AddPageOffset01 - 0x4805F7);
|
|
||||||
|
|
||||||
SafeWrite8(0x480767, 0xE8);
|
|
||||||
SafeWrite32(0x480768, (DWORD)&AddPageOffset01 - 0x48076C);
|
|
||||||
|
|
||||||
SafeWrite8(0x4807E6, 0xE8);
|
|
||||||
SafeWrite32(0x4807E7, (DWORD)&AddPageOffset01 - 0x4807EB);
|
|
||||||
|
|
||||||
SafeWrite8(0x480839, 0xE8);
|
|
||||||
SafeWrite32(0x48083A, (DWORD)&AddPageOffset01 - 0x48083E);
|
|
||||||
|
|
||||||
SafeWrite8(0x4808D3, 0xE8);
|
|
||||||
SafeWrite32(0x4808D4, (DWORD)&AddPageOffset01 - 0x4808D8);
|
|
||||||
|
|
||||||
|
|
||||||
SafeWrite8(0x47E5E1, 0xE8);
|
|
||||||
SafeWrite32(0x47E5E2, (DWORD)&AddPageOffset02 - 0x47E5E6);
|
|
||||||
SafeWrite16(0x47E5E6, 0x9090);
|
SafeWrite16(0x47E5E6, 0x9090);
|
||||||
SafeWrite8(0x47E5E8, 0x90);
|
SafeWrite8(0x47E5E8, 0x90);
|
||||||
|
|
||||||
|
MakeCall(0x47E756, AddPageOffset03);
|
||||||
SafeWrite8(0x47E756, 0xE8);
|
|
||||||
SafeWrite32(0x47E757, (DWORD)&AddPageOffset03 - 0x47E75B);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -24,13 +24,13 @@
|
|||||||
|
|
||||||
#define VERSION_MAJOR 3
|
#define VERSION_MAJOR 3
|
||||||
#define VERSION_MINOR 8
|
#define VERSION_MINOR 8
|
||||||
#define VERSION_BUILD 8
|
#define VERSION_BUILD 9
|
||||||
#define VERSION_REV 0
|
#define VERSION_REV 0
|
||||||
|
|
||||||
#ifdef WIN2K
|
#ifdef WIN2K
|
||||||
#define VERSION_STRING "3.8.8 win2k"
|
#define VERSION_STRING "3.8.9 win2k"
|
||||||
#else
|
#else
|
||||||
#define VERSION_STRING "3.8.8"
|
#define VERSION_STRING "3.8.9"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CHECK_VAL (4)
|
#define CHECK_VAL (4)
|
||||||
|
|||||||
Reference in New Issue
Block a user