Anyone who has used FBA to do anything serious knows that Ram Search is pretty broken at the moment. It tries to load a few billion values, which isn't necessary, and slows the emulator to a halt.
I've tracked down the problem, but I have no idea how to fix it.
In sek.cpp there is a function all drivers call to setup memory regions.
int SekMapMemory(unsigned char* pMemory, unsigned int nStart, unsigned int nEnd, int nType) { ... }
It needs a simple if statement to somehow add nStart and nEnd to a list.
if (nType == SM_RAM) {
//add the block to ram search
}
Then, RAM Search could automatically cull the list down to those regions. This is where my coding skill falls apart. I don't know how to mess with RAM_Search, much less have an adjustable list size that RAM_Search.cpp could see.
Also, the savestate load and save take up an ENORMOUS amount of screen real-estate for no good reason. This can be easily fixed, for mingw in vid_directx_support.cpp, starting at line 783:
ShortMsgFont = CreateFont(12, 0, 0, 0, FW_DEMIBOLD, 0, 0, 0, 0, 0, 0, ANTIALIASED_QUALITY, FF_SWISS, _T("Lucida"));
VidSShortMsg.nTimer = 0;
// create surface to display the text
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
ddsd.dwWidth = 192;
ddsd.dwHeight = 20;
Changes in Red. I can't compile the MinGW version, so I am SOL on these changes.