Replacing models in GameCube games?

Discussion in 'Nintendo GameCube' started by Apostrophe, Nov 5, 2013.

  1. Apostrophe
    OP

    Apostrophe VIDEO GAMES

    Member
    145
    39
    Apr 30, 2013
    United States
    I was wondering if it's at all possible to replace models in gamecube games, especially if the replacement model comes from the game itself. For example, in Luigi's Mansion there exists a model of mario stretched to have Luigi's Proportions
    http://tcrf.net/Luigi's_Mansion#Unused_3D_Models

    I was able to swap this model with toad's by unpacking the ISO switching the names, and then rebuilding it with GCRebuilder.
    Warning: Spoilers inside!
    However, if I tried switching the Mario and Lugi model file names, there didn't seem to be any difference. Does anyone know why that is or how to get around that?
     
  2. FAST6191

    FAST6191 Techromancer

    pip Reporter
    23,521
    9,354
    Nov 21, 2005
    Your specific issue I am not sure about so I will have to go general. The short version would be yeah if you have access to the game's unencrypted files (you do) and can run custom versions of them (you can) then you can edit things.

    If things come from within the same game and are similar then yeah it is often worth renaming/repointing as a first pass attempt. However there can be many things that trip you up.

    Such things include
    Differences in the model format, structure, textures..... Within the same game or one made at around the same time in development makes this less likely but there is also the option that the model exceeds general limitations by having too many polygons for general gameplay; people trying to insert giant boss characters frequently run up against this.
    You say you swapped names but nothing happened. Depending upon your methods of name swapping I can see this happening. Though I am not so familiar with the GC in general for things with a filesystem, and that includes Nintendo, you have three ways of opening a file
    1) Scan for file name, load pointers/sector locations and load however you copy data around.
    2) Load file number. This usually gets called things like fast open in the programming setups the devs use and common use models are a favoured item here. On the DS if you encounter a game you can not repack it is probably this that is causing your troubles. If you have just renamed at the iso level then you might have seen this. The solution here is to either swap the code for the models or better (assuming you are not also dealing with 3) below) if you repoint the data so when it looks up say file 7 it instead then knows to read the Mario model.
    3) Raw values loaded somewhere. Tends to be more driven by headers and the playstation line has an odd variation on the theme here (raw LBA reads, used both as a form of anti piracy and seemingly as an anti assets rip protection though there could be good technical reasons too.
    Beyond that there are also ideas like iso allocation where certain files will be put further out in the ISO or something to allow it to be read faster or files will be kept together to prevent fragmentation. I have yet to see a system that uses optical media that does not do this.

    Naturally if the (multiple) files are contained within an archive file (the GC favours things like ARC) then you may have to drop down and edit the arc file pointers and the like as well.

    GC iso manipulation tools are a bit rough and ready in this regard so you might have to go manual, fortunately you should already have the data/pointer for the Mario file so it should just be a matter of copy and paste.
    Chapter 13 on http://hitmen.c02.at/files/yagcd/yagcd/frames.html should detail the GC DVD Structure.
     
  3. Apostrophe
    OP

    Apostrophe VIDEO GAMES

    Member
    145
    39
    Apr 30, 2013
    United States
    Wow thank you for the in-depth reply. You've given me a lot to look into further. My main goal at this point is to see if I can replace the Luigi model with the Mario model.

    For some clarification, the file name for the Mario model is bmario.szp, and the Luigi model is luige.szp, and they are both conveniently in the "model" folder. All I did was swap the file names themselves, in hopes the game would load the mario model when it's supposed to load the luigi model. In my image in the OP I swapped the file names bmario.szp and kinopio.szp, the toad model file. I'm also getting all this information from here

    I'm just a bit confused where you recommend I go from here, since I only have a small amount of experience with this kind of thing. I do have a hex editing program and tried a number of the ARC extractor programs to extract the system.arc as you recommended, but none of them seemed to work for me. Repointing the data so when it looks up a file it knows to read the Mario model sounds like it might work, but I don't know how to do that exactly.