Essentials Series/Porting a GameCube level to Xbox

This page is part of the Essential Series modding tutorials. It will go through the process of porting a pre-existing GameCube level (ideally one you have created yourself) to be able to be played on the Xbox version of the game. The tutorial assumes you have extracted copies of the game for both of these platforms, the CXBX-Reloaded emulator, and Industrial Park.

As a final note, this tutorial is geared towards those making levels for Battle for Bikini Bottom, but in theory the process should be very similar for other games.

Getting started

 * 1) Use MagicISO to extract the files from the Xbox version of the game.
 * 2) Make a copy of the extracted Xbox files. This will be where your modded files are stored, as you will need to retain the clean copy for later.
 * 3) Make a copy of your level's HIP and HOP files. This copy will be converted to Xbox. Open an instance of Industrial Park with them in it.
 * 4) In each Archive Editor, click on Convert Archive, under Edit (I recommend starting with the HIP). Change the platform from GameCube to Xbox.
 * 5) Industrial Park will convert the archive and assets from the GameCube format to Xbox. Note that not all asset types can be converted. In this table, by looking at the "Cross-Version Copy" column, the ones which can be converted are marked as "Yes".
 * 6) If any of the assets could not be converted, Industrial Park will prompt you with choosing a folder to perform an asset search, in which all HIP/HOPs in the folder you choose and all subfolders will be examined, and the matching assets which could not be converted before will be replaced with these. This is likely to happen in the HOP.
 * 7) At this point, I recommend choosing the root of the Xbox game. This way, all of the game's files will be searched. Another option is to choose the Xbox folder in the IndustrialPark-EditorFiles, but only do this if you are sure that the Xbox EditorFiles (which are less than the GameCube's at the moment) contains all the same archives you imported to your custom level.
 * 8) At the end of the process, if there are still assets which were not found and left unconverted, the list will be shown to you. Make sure you save this list for the further steps.
 * 9) Now, you should review your archives to make sure everything will work as expected.

Models
Models which were custom-made using Industrial Park's importer or one of the DFF plugins (for 3ds Max or Blender) are platform independent, so they can be left unchanged as their format will work in either GameCube or Xbox. This is not the case for many of the game's original models, however. If the asset search could not find all models you used, you have to replace them yourself by deleting them from the archive and copying over a Xbox version of that model.

Textures
The Convert Archive function does not convert textures, and this is necessary as all of them are platform-specific. To do this, we are going to use Magic.TXD.


 * 1) In the HOP's Archive Editor, click on Edit -> TXD Archive -> Export (RW3) and save the TXD to a file.
 * 2) Do the same for the (No RW3) button and save another TXD (make sure you can tell them apart).
 * 3) Open both files in Magic.TXD and click on Edit -> Setup TXD Version.
 * 4) Set the format to Custom and set the platform and version according to this table (it's 3.5.0.0 for Battle For Bikini Bottom on Xbox).
 * 5) After doing this on both TXDs, click on Edit -> TXD Archive -> Import (RW3) in the HOP's Archive Editor and import the first TXD you exported.
 * 6) Do the same for the (No RW3) TXD.

JSP and JSPINFO
If you're making a custom level (and using the blank HIP/HOP templates) I assume your HOP has the blank JSP and JSPINFO assets. You must delete those and replace them with the Xbox version, from the Xbox blank HOP also available in the IndustrialPark-EditorFiles. Make sure you put each asset in the correct layer (and don't accidentally switch the two); also check in the ENV asset in the HIP to see if the BSP Asset ID field points correctly to the JSPINFO's asset ID.

Scavenger hunt
Now begins what is likely the most tedious part of the porting process. This is the point in which you must go through each asset that was not possible to be converted or found (which you got in the list at the end of the first section) and find them again in the Xbox files so you can copy them over to your level. Generally, these are things like ATBL, MINF, MODL, SND, etc.

Copy those assets to the appropriate places in your level. For example, you would copy a MODL to the MODEL layer in your HOP file; you would copy an ATBL to the DEFAULT layer in your HIP file. In reality, it doesn't actually matter if these assets are in the HIP or HOP, or what layer they are on, but it helps a lot to remain organized, and to add future-proofing for any specific dealings with the assets we find out are done by the game.

Remaking assets
Fortunately, this part of the process has been cut considerably as Industrial Park has updated. Here you will need to remake any custom-made assets that cannot be copied over (again, check the wiki page). This is far easier than it seems, albeit slightly tedious.

For example, let's remake this SURF asset.


 * 1) Copy a SURF from any level in the Xbox version of the original game. We're going to change its values, so it doesn't matter what you pick.
 * 2) Paste it into the DEFAULT layer into your Xbox HIP.
 * 3) Click Edit Data, and change all of the values to the ones in the original SURF</tt>.
 * 4) * In this example, I would change DamageType to 00, Sticky to 00, DamageFlags to 00, etc.
 * 5) When you are done, close the asset data editor.

A small note to add is that you will need to import any custom-made sounds manually using WAV files. You can use the Import Multiple Assets tool (under Edit) for that. For custom sounds with related JAW assets, you will also want to click Import Jaw Data after importing the sound.

You should now have every asset from the GameCube level in your Xbox level.

Testing

 * 1) Save the Xbox HIP and HOP.
 * 2) Open sb.ini</tt> in your modded files and change the BOOT scene to your level name (e.g. replace HB00</tt> with JF01</tt>).
 * 3) Open CXBX-Reloaded.
 * 4) Go to File -> Open Xbe and find the default.xbe</tt> file in the modded version of the game.
 * 5) Go to Emulation -> Start.

Your level should now load inside the emulator, and be playable with an Xbox controller.

Once you have completed this process to the number of levels to your liking, you can create an ISO using Qwix and transfer it to your modded Xbox console.

Debugging
Sometimes you will try to test a level, and it will freeze on loading, or at some other point in the level. There are multiple reasons for this.


 * CXBX-Reloaded is not an amazing emulator. Various things can cause slowdown or for the game to freeze for a couple of seconds and then continue. Issues like these will not happen on a real console.
 * This is also the reason why many models will not display in the emulator. Rest assured that these will, in fact, display on console.
 * You may have forgotten to port an asset over, or ported it from the wrong version of the game. Make sure that during the "scavenger hunt," you are only looking in levels from the clean Xbox version of the game. A good check to make is that the number of assets in your Xbox level should be the same as the number of assets in your GameCube level. If it's not, it's likely that you forgot something!
 * If you port a model from the wrong version of the game, sometimes CXBX-Reloaded will falsely allow you to load into the level, only to freeze after a little while, and since the emulator doesn't show many models, it's easy to miss what went wrong. I would go through and do a double-check of all models when this happens.
 * Make sure the level doesn't freeze in the GameCube version. I would do this before starting the porting process.

If your issue is not resolved through any of these means, feel free to ask in the Discord server, as this is a fairly new step in modding the game.

Polishing
Certain things in the original game are different depending on what version you are using. For instance, when you walk up to the clam gate at the top of Jellyfish Fields, it will read "Press the R button to enter Jellyfish Caves" on GameCube, but on Xbox it will read "Pull the R trigger to enter Jellyfish Caves." For an extra coat of polish on your level, I would make similar changes to fit the Xbox version.