mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Added a debug message about missing art file for critters
Minor edit to sfall.h.
This commit is contained in:
@@ -260,8 +260,8 @@
|
|||||||
#define dialog_message(text) sfall_func1("dialog_message", text)
|
#define dialog_message(text) sfall_func1("dialog_message", text)
|
||||||
#define dialog_obj sfall_func0("dialog_obj")
|
#define dialog_obj sfall_func0("dialog_obj")
|
||||||
#define display_stats sfall_func0("display_stats")
|
#define display_stats sfall_func0("display_stats")
|
||||||
#define draw_image(frmFile, frame, x, y, noTransparent) sfall_func5("draw_image", frmFile, frame, x, y, noTransparent)
|
#define draw_image(pathFile, frame, x, y, noTrans) sfall_func5("draw_image", pathFile, frame, x, y, noTrans)
|
||||||
#define draw_image_scaled(frmFile, frame, x, y, w, h) sfall_func6("draw_image_scaled", frmFile, frame, x, y, w, h)
|
#define draw_image_scaled(pathFile, frame, x, y, w, h) sfall_func6("draw_image_scaled", pathFile, frame, x, y, w, h)
|
||||||
#define exec_map_update_scripts sfall_func0("exec_map_update_scripts")
|
#define exec_map_update_scripts sfall_func0("exec_map_update_scripts")
|
||||||
#define floor2(value) sfall_func1("floor2", value)
|
#define floor2(value) sfall_func1("floor2", value)
|
||||||
#define get_can_rest_on_map(map, elev) sfall_func2("get_can_rest_on_map", map, elev)
|
#define get_can_rest_on_map(map, elev) sfall_func2("get_can_rest_on_map", map, elev)
|
||||||
@@ -297,8 +297,6 @@
|
|||||||
#define set_cursor_mode(mode) sfall_func1("set_cursor_mode", mode)
|
#define set_cursor_mode(mode) sfall_func1("set_cursor_mode", mode)
|
||||||
#define set_drugs_data(type, pid, value) sfall_func3("set_drugs_data", type, pid, value)
|
#define set_drugs_data(type, pid, value) sfall_func3("set_drugs_data", type, pid, value)
|
||||||
#define set_dude_obj(critter) sfall_func1("set_dude_obj", critter)
|
#define set_dude_obj(critter) sfall_func1("set_dude_obj", critter)
|
||||||
#define set_fake_perk_npc(npc, perk, level, image, desc) sfall_func5("set_fake_perk_npc", npc, perk, level, image, desc)
|
|
||||||
#define set_fake_trait_npc(npc, trait, active, image, desc) sfall_func5("set_fake_trait_npc", npc, trait, active, image, desc)
|
|
||||||
#define set_flags(obj, flags) sfall_func2("set_flags", obj, flags)
|
#define set_flags(obj, flags) sfall_func2("set_flags", obj, flags)
|
||||||
#define set_iface_tag_text(tag, text, color) sfall_func3("set_iface_tag_text", tag, text, color)
|
#define set_iface_tag_text(tag, text, color) sfall_func3("set_iface_tag_text", tag, text, color)
|
||||||
#define set_ini_setting(setting, value) sfall_func2("set_ini_setting", setting, value)
|
#define set_ini_setting(setting, value) sfall_func2("set_ini_setting", setting, value)
|
||||||
@@ -307,7 +305,6 @@
|
|||||||
#define set_outline(obj, color) sfall_func2("set_outline", obj, color)
|
#define set_outline(obj, color) sfall_func2("set_outline", obj, color)
|
||||||
#define set_rest_heal_time(time) sfall_func1("set_rest_heal_time", time)
|
#define set_rest_heal_time(time) sfall_func1("set_rest_heal_time", time)
|
||||||
#define set_rest_mode(mode) sfall_func1("set_rest_mode", mode)
|
#define set_rest_mode(mode) sfall_func1("set_rest_mode", mode)
|
||||||
#define set_selectable_perk_npc(npc, perk, active, image, desc) sfall_func5("set_selectable_perk_npc", npc, perk, active, image, desc)
|
|
||||||
#define set_unique_id(obj) sfall_func1("set_unique_id", obj)
|
#define set_unique_id(obj) sfall_func1("set_unique_id", obj)
|
||||||
#define unset_unique_id(obj) sfall_func2("set_unique_id", obj, -1)
|
#define unset_unique_id(obj) sfall_func2("set_unique_id", obj, -1)
|
||||||
#define set_unjam_locks_time(time) sfall_func1("set_unjam_locks_time", time)
|
#define set_unjam_locks_time(time) sfall_func1("set_unjam_locks_time", time)
|
||||||
@@ -315,3 +312,7 @@
|
|||||||
#define tile_refresh_display sfall_func0("tile_refresh_display")
|
#define tile_refresh_display sfall_func0("tile_refresh_display")
|
||||||
#define unjam_lock(obj) sfall_func1("unjam_lock", obj)
|
#define unjam_lock(obj) sfall_func1("unjam_lock", obj)
|
||||||
#define unwield_slot(critter, slot) sfall_func2("unwield_slot", critter, slot)
|
#define unwield_slot(critter, slot) sfall_func2("unwield_slot", critter, slot)
|
||||||
|
|
||||||
|
#define set_fake_perk_npc(npc, perk, level, image, desc) sfall_func5("set_fake_perk_npc", npc, perk, level, image, desc)
|
||||||
|
#define set_fake_trait_npc(npc, trait, active, image, desc) sfall_func5("set_fake_trait_npc", npc, trait, active, image, desc)
|
||||||
|
#define set_selectable_perk_npc(npc, perk, active, image, desc) sfall_func5("set_selectable_perk_npc", npc, perk, active, image, desc)
|
||||||
|
|||||||
@@ -310,6 +310,23 @@ hide:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char* artDbgMsg = "Error: file not found: %s\n";
|
||||||
|
static void __declspec(naked) art_data_size_hook() {
|
||||||
|
__asm {
|
||||||
|
test edi, edi;
|
||||||
|
jz artNotExist;
|
||||||
|
retn;
|
||||||
|
artNotExist:
|
||||||
|
mov eax, [esp + 0x124 - 0x1C + 4]; // filename
|
||||||
|
push eax;
|
||||||
|
push artDbgMsg;
|
||||||
|
call fo::funcoffs::debug_printf_;
|
||||||
|
add esp, 8;
|
||||||
|
BREAKPOINT; // break program
|
||||||
|
retn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void __declspec(naked) win_debug_hook() {
|
static void __declspec(naked) win_debug_hook() {
|
||||||
__asm {
|
__asm {
|
||||||
call fo::funcoffs::debug_log_;
|
call fo::funcoffs::debug_log_;
|
||||||
@@ -345,6 +362,9 @@ void DebugModePatch() {
|
|||||||
if (iniGetInt("Debugging", "HideObjIsNullMsg", 0, ::sfall::ddrawIni)) {
|
if (iniGetInt("Debugging", "HideObjIsNullMsg", 0, ::sfall::ddrawIni)) {
|
||||||
MakeJump(0x453FD2, dbg_error_hack);
|
MakeJump(0x453FD2, dbg_error_hack);
|
||||||
}
|
}
|
||||||
|
// prints a debug message about missing art file for critters and interrupts game execution
|
||||||
|
HookCall(0x419B65, art_data_size_hook);
|
||||||
|
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -219,7 +219,7 @@ static void InitModules() {
|
|||||||
static const DWORD loadFunc = 0x4FE1D0;
|
static const DWORD loadFunc = 0x4FE1D0;
|
||||||
static void LoadHRPModule() {
|
static void LoadHRPModule() {
|
||||||
HMODULE dll;
|
HMODULE dll;
|
||||||
__asm call loadFunc; // load HRP dll
|
__asm call loadFunc; // get HRP loading address
|
||||||
__asm mov dll, eax;
|
__asm mov dll, eax;
|
||||||
if (dll != NULL) hrpDLLBaseAddr = (DWORD)dll;
|
if (dll != NULL) hrpDLLBaseAddr = (DWORD)dll;
|
||||||
dlog_f("Loaded f2_res.dll library at the memory address: 0x%x\n", DL_MAIN, dll);
|
dlog_f("Loaded f2_res.dll library at the memory address: 0x%x\n", DL_MAIN, dll);
|
||||||
@@ -322,7 +322,6 @@ defaultIni:
|
|||||||
|
|
||||||
hrpIsEnabled = (*(DWORD*)0x4E4480 != 0x278805C7); // check if HRP is enabled
|
hrpIsEnabled = (*(DWORD*)0x4E4480 != 0x278805C7); // check if HRP is enabled
|
||||||
if (hrpIsEnabled) {
|
if (hrpIsEnabled) {
|
||||||
BlockCall(0x4E4480);
|
|
||||||
LoadHRPModule();
|
LoadHRPModule();
|
||||||
if (strncmp((const char*)HRPAddressOffset(0x39940), "4.1.8", 5) == 0) hrpVersionValid = true;
|
if (strncmp((const char*)HRPAddressOffset(0x39940), "4.1.8", 5) == 0) hrpVersionValid = true;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -69,7 +69,10 @@ namespace sfall
|
|||||||
#define isDebug false
|
#define isDebug false
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Macros for quick replacement of pushad/popad assembler opcodes
|
// Trap for Debugger
|
||||||
|
#define BREAKPOINT __asm int 3
|
||||||
|
|
||||||
|
// Macros for quick replacement of assembler opcodes pushad/popad
|
||||||
#define pushadc __asm push eax __asm push edx __asm push ecx
|
#define pushadc __asm push eax __asm push edx __asm push ecx
|
||||||
#define popadc __asm pop ecx __asm pop edx __asm pop eax
|
#define popadc __asm pop ecx __asm pop edx __asm pop eax
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user