Jump to content

eezstreet

Members
  • Posts

    5,207
  • Joined

  • Last visited

Posts posted by eezstreet

  1. This user:

    https://jkhub.org/user/54-almightygir/

     

    I need his permission for a Modification. I've messaged both emails in his download readmes. Only one of them  actually sent, as the other no longer exists, though the email that works seems to be old and I don't think he uses it, as it is only present in his very first download readme. I've also messaged him on JKHub, though emails are more frequently checked.

    He's been spotted a few days ago on the JKCommunity Discord server (https://discord.gg/ZWGEDjX).

     

    @@Almightygir

    Daedra and Smoo like this
  2. So I did a really basic experiment just now -- I swapped the GFC/GOB names so that assets.gfc/.gob became assets_mp.gfc/.gob and vice versa. Both the SP and MP executables loaded just fine. I had previously checked if they shared the same .gfc/.gob by deleting one or the other, and I can also confirm that they do indeed rely on their individual sets. The SP xbe (XBox Executable) loads assets.gob and MP loads assets_mp.gob. Basically this leads me to believe that there's not some sort of check to ensure it's the original container for that executable, but that the problem must be elsewhere.

     

    I can understand if you're bored with this though. If you are would you mind passing the source along? If not I'll do some more thinking to try and help resolve the issue.

    Not bored, I'm just unsure of how to proceed. I looked in the source code pretty extensively and I wasn't able to find any sort of issue indicating the problem. But I can provide the source code, sure.

    Teancum likes this
  3. That would mean it's failing anywhere in this chunk of code:

     

     

            Cmd_Init ();
            Cvar_Init ();
    
            // get the commandline cvars set
            Com_StartupVariable( NULL );
    
            // done early so bind command exists
            CL_InitKeyCommands();
    
    #ifdef _XBOX
            extern void Sys_FilecodeScan_f();
            Sys_InitFileCodes();
            Cmd_AddCommand("filecodes", Sys_FilecodeScan_f);
    
            extern void Sys_StreamInit();
            Sys_StreamInit();
    
            // This just forces the static singleton in the function to call
            // its constructor, which allocates a stupid 12 byte block of
            // memory that never gets freed. Otherwise, it ends up stranded in
            // the middle of the zone:
            TheGhoul2InfoArray();
    #endif
    
            FS_InitFilesystem ();    //uses z_malloc
            R_InitWorldEffects();   // this doesn't do much but I want to be sure certain variables are intialized.
            
            Cbuf_AddText ("exec default.cfg\n");
    
            // skip the jaconfig.cfg if "safe" is on the command line
            if ( !Com_SafeMode() ) {
                Cbuf_AddText ("exec jaconfig.cfg\n");
            }
    
            Cbuf_AddText ("exec autoexec.cfg\n");
            
            Cbuf_Execute ();
    
            // override anything from the config files with command line args
            Com_StartupVariable( NULL );
            
            // allocate the stack based hunk allocator
            Com_InitHunkMemory();
    
            // if any archived cvars are modified after this, we will trigger a writing
            // of the config file
            cvar_modifiedFlags &= ~CVAR_ARCHIVE;
            
            //
            // init commands and vars
            //
            Cmd_AddCommand ("quit", Com_Quit_f);
            Cmd_AddCommand ("writeconfig", Com_WriteConfig_f );
            
            com_maxfps = Cvar_Get ("com_maxfps", "85", CVAR_ARCHIVE);
            
            com_developer = Cvar_Get ("developer", "0", CVAR_TEMP );
            com_logfile = Cvar_Get ("logfile", "0", CVAR_TEMP );
            com_speedslog = Cvar_Get ("speedslog", "0", CVAR_TEMP );
            
            com_timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT );
            com_fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT);
            com_showtrace = Cvar_Get ("com_showtrace", "0", CVAR_CHEAT);
            com_terrainPhysics = Cvar_Get ("com_terrainPhysics", "1", CVAR_CHEAT);
            com_viewlog = Cvar_Get( "viewlog", "0", CVAR_TEMP );
            com_speeds = Cvar_Get ("com_speeds", "0", 0);
            
    #ifdef G2_PERFORMANCE_ANALYSIS
            com_G2Report = Cvar_Get("com_G2Report", "0", 0);
    #endif
    
            cl_paused       = Cvar_Get ("cl_paused", "0", CVAR_ROM);
            sv_paused       = Cvar_Get ("sv_paused", "0", CVAR_ROM);
            com_sv_running = Cvar_Get ("sv_running", "0", CVAR_ROM);
            com_cl_running = Cvar_Get ("cl_running", "0", CVAR_ROM);
            com_skippingcin = Cvar_Get ("skippingCinematic", "0", CVAR_ROM);
            com_buildScript = Cvar_Get( "com_buildScript", "0", 0 );
            
            if ( com_developer && com_developer->integer ) {
                Cmd_AddCommand ("error", Com_Error_f);
                Cmd_AddCommand ("crash", Com_Crash_f );
                Cmd_AddCommand ("freeze", Com_Freeze_f);
            }
            
            s = va("%s %s %s", Q3_VERSION, CPUSTRING, __DATE__ );
            com_version = Cvar_Get ("version", s, CVAR_ROM | CVAR_SERVERINFO );
    
    
            // So any controller can skip the logo movies:
            inSplashMenu = Cvar_Get( "inSplashMenu", "1", 0 );
            controllerOut= Cvar_Get( "ControllerOutNum", "-1", 0);
    
    #ifdef XBOX_DEMO
            // Cvar used to hide "QUIT TO DEMOS MENU" options if we weren't started by CDX
            extern bool demoLaunchDataValid;
            if( demoLaunchDataValid )
                Cvar_SetValue( "ui_allowDemoQuit", 1 );
            else
                Cvar_SetValue( "ui_allowDemoQuit", 0 );
    #endif
    
            SE_Init();    // Initialize StringEd
        
            Sys_Init();    // this also detects CPU type, so I can now do this CPU check below...
    
            Netchan_Init( Com_Milliseconds() & 0xffff );    // pick a port value that should be nice and random
    //    VM_Init();
            SV_Init();
            
            CL_Init();
    
    #ifdef _XBOX
            // Experiment. Sound memory never gets freed, move it earlier. This
            // will also let us play movies sooner, if we need to.
            extern void CL_StartSound(void);
            CL_StartSound();
    #endif
    
            Sys_ShowConsole( com_viewlog->integer, qfalse );
            
            // set com_frameTime so that if a map is started on the
            // command line it will still be able to count on com_frameTime
            // being random enough for a serverid
            com_frameTime = Com_Milliseconds();
    
            // add + commands from command line
    #ifndef _XBOX
            if ( !Com_AddStartupCommands() ) {
    #ifdef NDEBUG
                // if the user didn't give any commands, run default action
    //            if ( !com_dedicated->integer )
                {
                    Cbuf_AddText ("cinematic openinglogos\n");
    //                if( !com_introPlayed->integer ) {
    //                    Cvar_Set( com_introPlayed->name, "1" );
    //                    Cvar_Set( "nextmap", "cinematic intro" );
    //                }
                }
    #endif    
            }
    #endif
    
    DarthValeria and Smoo like this
  4. Removed a lot of pointless drama here (10+ posts), but bottom line: when a file says as its license, "Other players may not share or modify this work." that means you don't share or modify the work. Likewise, you don't attack people for their decision to license such a work that way. That's their decision, and their right to defend their work. If you don't understand that or why that's bad, that's your problem, not theirs. Let's keep it civil now and stay on topic.

  5.  @@eezstreet Will putting that code into Jedi Outcast that you linked work? I would like the destroyer as an option for Outcast SP, but I failed doing this a while ago. Exar Kun like, style of combat for the win! I would actually love THIS!!! if what I said can be done :)

    I think it'd make more sense to pursue a hilt system like Jedi Academy, but that's just me.

  6. zlib's compression algorithm doesn't change across versions, it's the same every time, otherwise you'd get issues with extraction for every application that uses zlib (and there are a lot).

    I tried it with all 9 compression levels and it never produced anything that had the same size as the original archive, always either smaller (with compression) or larger (without compression).

    I ran `gobextract <> <> -noextract -echodata -debug` to see if there was any differences between the two files and they both validated correctly, although the converted assets had backslashes and a leading dot in front of them, so for example:

     

    Mine:

    botfiles/alora.jkb
    

    Theirs:

    .\botfiles\alora.jkb
    

    That alone couldn't cause freezing though, because the filesystem is smart enough to handle the paths correctly (at least this is the case on the pc version)

     

    EDIT: Oh yeah, nope. That would definitely cause a problem. The filename is hashed and compared to other files in the file control table...that was my bad :)

    I'll make some modifications and do a third revision, with a couple of planned features:

    • gobconvert: ability to specify how compressed you want it to be with -level=X (scale of 0 to 9, 1 default, 0 for totally uncompressed)
    • gobextract: drag and drop support, output argument optional (defaults to ./out/)

    EDIT #2: In the meantime @@Teancum, could you test this for me? It should have the correct paths:

    https://www.dropbox.com/s/aozovacngesuyv5/gobconvert_test.zip?dl=0

  7. Yeah, I have BSPthing compiled to split the BSP. It works, but errors out after the last split. Not sure if there's extra data at the end or of there's an actual error. I'll have to check. So specifically Xbox textures need to be DXT3 DDS, max of 256x256 (small, I know). In other games loadscreens can be 512x512, but I'll have to test that as well. Sounds are banked separately, so if people are looking for the ability to dump them into a pk3-->gob, no can do (they live outside the gob in their own archive). Tools might already exist if it's a proprietary Xbox format, but I'll have to look into it more.

     

    I did try using an Xbox .glm on PC, but it crashed, so I'm unsure if PC .glms will work on Xbox. I'll see what Modviewer shows (I think that's what it's called -- the model viewing app?). I'm wondering if the skeleton wasn't further simplified or something. Vicarious Visions optimized several other formats for other ports they did, like Doom 3. If nothing else code comparison for Ghoul2 between OpenJK and the Xbox code should provide some answers, but I'll try the simplest solutions first. I think it's only fitting to try the Jedi Academy Bonus Map Pack first.

     

    So speaking of maps, I'm curious -- will a Jedi Outcast MP map play in Jedi Academy without any modifications? I feel like I remember issues with bots, but it's been AGES since I've messed with it. There are a few mod maps from JO I want to play.

    Yep, JK2 MP maps will work in Jedi Academy as long as the textures and shaders exist for it. SP maps, not so much. You can see my efforts in reverse engineering the JA SP game prior to the source release to load the JK2 SP maps with the JK2:Uncut mod:

  8. Just a joke of course.

     

    This is perfect, though, and I thank you for that. I can extract all my assets, rebuild it as assets.pk3, add mods to the pk3, then convert to gob and test. Couldn't ask for more.

    Keep in mind, you'll need to make some modifications that are specific to the console you're working with. So as a result, you'll need to edit a _console_dir_list_ file in models/players (although I'm not sure this is actually used by the game) and you'll need to make sure your textures are the correct format for the console - DDS for xbox and TDF for gamecube. For maps you'll need to break the BSP into its component lumps (the code for it exists in the xbox code).

    Teancum likes this
×
×
  • Create New...