Jump to content

[Xbox] Buffy the Vampire Slayer models


AxelNoir
Go to solution Solved by Durik256,

Recommended Posts

Hello, I'm wondering if anyone has ever managed to pull any models from the Xbox Buffy the Vampire Slayer videogame? Looks like the models are stored inside .pak containers, there was an old zenhax topic for it years back but it's inaccessible and I can't access it so I'm not sure if anyone here might have any access to it possibly. I've attached a sample pak file for someone to look at. It seems the game uses the old Slayer engine and some old Xentax topics came up regarding it but there's not much info or incomplete research on it as well.

 

 

res_m01_highschool_1.zip

Link to comment
Share on other sites

  • Engineer

I used Model researcher and this is the model "buffycheer(base).msh" but faces look weird, I Don't know why.. Vertices and Faces count are 4 bytes before vertices and faces offsets.

About textures those are DXTs, you can use texture finder 

vertices_faces.PNG

Uvs.PNG

Normals_Hex view.PNG

Textures.PNG

Link to comment
Share on other sites

  • Engineer

Noesis python script for textures. Covers all provided samples. I believe there will be more than just 2 pixel formats. But so far DXT1/5.

from inc_noesis import *
import noesis
import rapi
import os

def registerNoesisTypes():
   handle = noesis.register("Buffy the Vampire Slayer - Texture(*.mtx)", "mtx")
   noesis.setHandlerTypeCheck(handle, noepyCheckType)
   noesis.setHandlerLoadRGBA(handle, noepyLoadRGBA)
   noesis.logPopup()
   return 1
        
def noepyCheckType(data):
   bs = NoeBitStream(data)
   if len(data) < 20:
      return 0
   return 1
   
def noepyLoadRGBA(data, texList):
    ctx = rapi.rpgCreateContext()
    bs = NoeBitStream(data)
    baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName()))
    FileName = bs.readString()
    bs.seek(0, NOESEEK_ABS)
    bs.read(32)
    ImgWidth = bs.readUInt()
    ImgHeight = bs.readUInt()
    bs.read(8)
    ImgSize = bs.readUInt()
    MipMap = bs.readUInt()
    PixelFormat = bs.readUInt()
    bs.read(4)
    data = bs.readBytes(ImgSize)

    if PixelFormat == 65:
        texFmt = noesis.NOESISTEX_DXT1
    elif PixelFormat == 69:
        texFmt = noesis.NOESISTEX_DXT5
    texList.append(NoeTexture(rapi.getInputName(), ImgWidth, ImgHeight, data, texFmt))
    return 1

 

  • Like 3
Link to comment
Share on other sites

  • Engineer
  • Solution

I just want to share. I made a plugin "Buffy the Vampire [XBOX] (.mtx/.msh)" for Noesis a long time ago (not for publish) 😀 Mesh, UVs, Skel, Weights, Textures

Без имени-1.png

  • Like 3
Link to comment
Share on other sites

5 hours ago, h3x3r said:

Noesis python script for textures. Covers all provided samples. I believe there will be more than just 2 pixel formats. But so far DXT1/5.

from inc_noesis import *
import noesis
import rapi
import os

def registerNoesisTypes():
   handle = noesis.register("Buffy the Vampire Slayer - Texture(*.mtx)", "mtx")
   noesis.setHandlerTypeCheck(handle, noepyCheckType)
   noesis.setHandlerLoadRGBA(handle, noepyLoadRGBA)
   noesis.logPopup()
   return 1
        
def noepyCheckType(data):
   bs = NoeBitStream(data)
   if len(data) < 20:
      return 0
   return 1
   
def noepyLoadRGBA(data, texList):
    ctx = rapi.rpgCreateContext()
    bs = NoeBitStream(data)
    baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName()))
    FileName = bs.readString()
    bs.seek(0, NOESEEK_ABS)
    bs.read(32)
    ImgWidth = bs.readUInt()
    ImgHeight = bs.readUInt()
    bs.read(8)
    ImgSize = bs.readUInt()
    MipMap = bs.readUInt()
    PixelFormat = bs.readUInt()
    bs.read(4)
    data = bs.readBytes(ImgSize)

    if PixelFormat == 65:
        texFmt = noesis.NOESISTEX_DXT1
    elif PixelFormat == 69:
        texFmt = noesis.NOESISTEX_DXT5
    texList.append(NoeTexture(rapi.getInputName(), ImgWidth, ImgHeight, data, texFmt))
    return 1

 

This is great, seems to work for me so thank you very much for this, much appreciated!

Link to comment
Share on other sites

It would be pretty groovy if I could get hold of Buffy's 4 models and Spike and angel as .obj format. 

I've been trying today but to no avail with the meshes. The script above worked great for the textures.

I'll keep trying 🙂

  • Like 1
Link to comment
Share on other sites

On 5/19/2024 at 12:35 PM, Durik256 said:

I just want to share. I made a plugin "Buffy the Vampire [XBOX] (.mtx/.msh)" for Noesis a long time ago (not for publish) 😀 Mesh, UVs, Skel, Weights, Textures

Без имени-1.png

I believe you charge for this plugin? so does your Noesis plugin export all character flawlessly to .obj or is it just Buffy?

Link to comment
Share on other sites

  • 1 month later...
On 5/20/2024 at 10:45 PM, FreshSoulz said:

I believe you charge for this plugin? so does your Noesis plugin export all character flawlessly to .obj or is it just Buffy?

I have used the plugin and it allows you to export all .msh files that you have extracted from the pak files - fully textured characters (rigged), all skeletal meshes (rigged) and all static meshes. 

There will be minimal manual work require to clean up the Spike and Angel models as by the nature of the original files their .msh file contains both the human and vamp version (that is of course not the fault of the plugin). You will see the first image below has an overlap of the two head meshes included in that msh file. Its an easy fix and there are no issues with the other meshes.

I have always found Durik's plugins to work well and do the job as expected.

Noesis64 2024-06-22 09-35-27-99.jpg

Noesis64 2024-06-22 09-36-03-93.jpg

Noesis64 2024-06-22 09-37-19-35.jpg

Edited by PRP1986
  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...