I think you just dont know Amiga software very well. If AmigaOS design was kept easy and simple like it was in Kickstart 1.3 it could even work. In release 2.0 Commodore developers really screwed it up.
My point about scope is that the number of applications that it needs to support is fairly manageable. It doesn't need to support every possible "legal" thing an AmigaOS app can do simply because not every permutation of legal things are actually being done by existing, still useful AmigaOS applications.
So Emumiga will be tailored for each application?
I don't think that's the goal, but if it's *necessary* I don't think anyone would object to it. That's the point.
My wish list would be very short: Blacks Editor because it is still the best text editor for Amiga. AmiNetRadio and dynAMIte could be nice to have, too. I can not remember any other useful 68k applications/games anymore.
And *this* is the point. While I'm sure there are people who use many, many more m68k apps, the total number that people actually use is still fairly limited.
Hmm? Do you realize how often OO application are going to have context switch between 68k and AROS native code? You can not even figure out when 68k code is calling native AROS code because it is nothing but jsr() to a pointer.
Of course you can. Any AROS code that's made "visible" to the m68k code would need to be "mapped" into the m68k apps address space. It's then absolutely trivial to make the m68k emulator detect when the m68k core tries to access an address that would bring it into AROS code.
Nothing is going to tell you 68k code is trying to call AROS BOOPSI dispatcher code.
Yes, the m68k emulator would, because it would know that the target address of a JSR etc. is an address that corresponds to a function exported from the host environment, rather than m68k code. This bit is trivial.
But back to data endianess problem. How do you can really know what kind of data structure there is behind Object pointer? Depending on object type its data structure extension is different. Are you going to detect data structure format based on its pointer + allocated space for object?
This only ever matter if it's a data structure "exported" from AROS to m68k. The subset of data structures that are worth exporting *and* that m68k code would legally try to access is limited, because it is limited to only libraries that are used by m68k code *and* where it makes sense for the m68k code to call the AROS native version of the library rather than a straight m68k version. They don't *need* to be able to call the AROS native versions other than where it impacts integration.
E.g. you don't strictly *need* it to be able to call the host version of Zune, for example (while it might be desirable), since Zune doesn't need to run in a single context for all applications in the system.
There's a tradeoff between how complicated you make it vs. how tight integration is really necessary - the less integration, the closer you get to the Janus-UAE model. The more integration, the more work to translate data structures etc.. It's not either/or.