so? static linked games is accessing directly to hardware by addresses of functionality?
ok than it should be possible by mapping "Direct Hardware Address Access" to "Same function that accessing it"
Making DOSBox itself like glide dynamic app.
And for start it Partial Emulation, Partial Function call.
In theory, steps:
0) Full emulation
1)Partial emulation, one external function call (almost same as Full emulation minus one address_access is mapped to appropriate external function
for dos static link exe it should be same as real hardware, its like status lie. DosBox itself detect
that something wants access address so he replace it to external call.
This is difficult and required some time to learn addresses and their equivalent function's + assembly .
in more abstract theory (as example): exe trying access address 0xfe32 with parameters 0x00 , 0xff , 0xff
in hex it looks like : (push is 0xfe84, jmp is 0xfd95)
# there is some assembly (or c++ written, what ever dosbox use) magic:) code that pop from stack values and draw pixel
but in theory if we catch 0xfe32 address we call external function from glide(2x?).dll
which is "_grDrawPixel(int r, int g, int b)"
with that in theory is possible to "lower intensity emulation of that functionality by dosbox itself and leave it for faster GPU, or d3d API or whatever API is used by glide wrapper , nGlide is d3d9"
this should speed up dosbox
second wrappers often execute functions which is enhanced comparing to real hardware, so better graphics should be.
2) more and more remapped addresses to equivalent external functions.
3) dosbox inside is looks like real hardware for static exe, while its creating exact environment.
outside its just lie, MOST! addresses remapped to functions.
the addresses which is not remapped is actually does not have glide API calls? So they stay Emulated.
dosbox itself become as just Windows exe that uses glide dll
advantages as i think:
faster dosbox execution, because big parts of assembly (emulation code is cut off) instead it uses faster function calls + they executed in other CPU or GPU threads
better graphics , as wrappers can enhance graphics and don't use funky interlace image like voodoo2 does and even more noticeable on voodoo1 (voodoo graphics), 32 color space)
ok , it sounds simple: if we have game that calls function and function access address , than we can go backward way ->
-> we have direct address access, so lets do vice versa . Map all possible addresses to functions, not mapped is being emulated.
While is sounds simple, its just way difficult deep long work, with great advantages: better graphic, more Frames Per Second (FPS).
its how i see and believe in that, nothing is impossible, instead everything is possible =).