Spent a lot of time with try to change engine from D3 to D3BFG.
The main reason was the possibility of using glsl in D3BFG (unlike ARB shaders in D3).
But there are a few ground problems.
First it's a new GUI system based on SWF.
As I suggest guys from ID make a own swf-parser based on ActionScript 2.0 and commandset swf version 7. Moreover the engine convert swf into bswf and then run it with code.
All menus found in base/generated/swf. A main menu (shell.bswf) contain a one main sprite (MovieClip) and ~20 sub-sprites placed in certain sequence. Every sprite action (event) is hardcoded and handled with own proc (HandleAction). Transition between sprites (menu screens) is also hardcoded via SetNextScreen().
In D3BFG a game start with simple "map game/mars_city1" after exec ShowDoomIntro().
There are a few CVARs for swf (swf_loadBinary, swf_debug).
The next shell.swf (Flashdevelop AS2, 1280x960) is compiled and exec in Flash but not working as well in Game:
class Main
{
public static function main(swfRoot:MovieClip):Void
{
// entry point
var menuScreens : Array = new Array(
"NULL",
"menuRoot",
"menuCampaign",
"menuSettings",
"menuLoad",
"menuNewGame",
"menuSystemOptions",
"menuGameOptions",
"menuPartyLobby",
"menuGameLobby",
"menuStereo",
"menuDifficulty",
"menuControls",
"menuKeyboard",
"menuResolution",
"menuController",
"menuDev",
"menuLeaderboards",
"menuGamepad",
"menuMatch",
"menuModeSelect",
"menuBrowser",
"menuCredits");
var myClip : MovieClip = new MovieClip;
myClip = _root.createEmptyMovieClip("menuStart", 0);
for (var i = 1; i < 23; i++) {
// trace( menuScreens[i] );
myClip.attachMovie( menuScreens[i], menuScreens[i], i);
}
}
public function Main()
{
}
And there is no original shell.as or a manual like iddevnet.
Have anyone an idea how to proceed reverse-engineering this process?
Is it possible to ask the developer of the code listing for shell.bswf (e.g. for education/modding purposes)?
How to make it correct?