@
l0wb1t: Wanted you to experience the feelz of the same thing I observed the first time around
Currently in the works to cover several aspects I overlooked. The post will occur later on. Suffices to say simply patching jumps or changing bytes won't give you input to the background console pane
You need to swap 2 well-placed pointers to change main window input to background console input. As well as setting 1 particular BOOL to a certain value so you get in that "engine step" situation I mentioned, where the member-functions table will point to the console input functions, rather than the window input functions
Tricky, eh?
What I overlooked is the fact that if you run a command that loads a map (e.g.: gamesave, gameload) I need a check on the input pointers, as the game reloads them. What initially did in my code was to restore the pointers on second key press. But.. if you open console (first backup and swap), then load a map (engine already re-initializes the input pointer here), when map loads you still have the console open. Pressing the console key I chose will set BOOL to 0 (console hides) and swap back the input pointers. But.. at this time, the pointer's been re-initialized, so I end-up writing the old pointer to input in place of the current one. And that == crash.
More, later