I *personally* do not believe the job is done by understanding how AllocBitmap is expected to be called.
With "and some info it needs isn't there" I meant some info it expects in a place (register/stack) that isn't allocbitmap param registers.
So for example if CGX in it's AllocBitMap patch would rely (after detecting the call is
the screen bitmap allocation call inside openscreen) on A4 to point to some info which helps it to figure out the screenmode, then a way to figure that out without knowing about that would be:
- on a working CGX RTG system patch the allocbitmap call such that all registers which are not params for allocbitmap call are trashed.
- this would cause CGX to no longer be able to open RTG screen, because it does not find the necessary info in register A4
- you do not know that the register is A4, so you would change patch so long to narrow it down to register A4
- then you look into original 3.1 openscreen code to see what A4 happens to point to before call to AllocBitMap()
In reality it may be something different, but if you are lucky it may be one part of the puzzle solved. Without having source/interface. And without disassembling CGX AllocBitMap and/or breaking/trapping/single stepping AllocBitMap() call when it happens in OpenScreen, which may be easiest of all, but maybe you prefer to avoid such in your opinion maybe (?) illegal (?) sneaking into foreign code.