smith1395 Posted September 14, 2025 Posted September 14, 2025 Hello! I want to localize comic book covers in punisher game 2005 for the platform xbox original. I need help with images that are stored in xeg format. I know there is specialized software to work with ceg for the PC version. I also know peg (ps2) scripts. But neither is compatible with this xeg format... I know that tga files are stored inside. Can someone tell you how to be with this format or there is universal software for such files??? Would appreciate
Moderators ikskoks Posted September 14, 2025 Moderators Posted September 14, 2025 Please share some sample files. And please send links to tools/scripts you are talking about. We are not fortune tellers...
smith1395 Posted September 14, 2025 Author Posted September 14, 2025 (edited) https://github.com/unclehunk/punishermoddingtoolgui comic1.zip Edited September 14, 2025 by smith1395
Moderators ikskoks Posted September 14, 2025 Moderators Posted September 14, 2025 For extracting raw data from archives you can use the same script you linked (punisher_ps2_peg.bms) as archive file format is the same across all platforms https://rewiki.miraheze.org/wiki/The_Punisher_CEG_PEG_XEG The difference is in the image encoding, PC version uses standard DXT5 or RGBA8888, while encoding seems to be different on PS2 and XBOX. I was not able to find correct setting with ImageHeat. Here's how it looks for PC sample: 1
Engineers Solution h3x3r Posted September 14, 2025 Engineers Solution Posted September 14, 2025 But can't produce right width/height. It's 250 x 391 px. 2
smith1395 Posted January 14 Author Posted January 14 (edited) Texture param: res: 512x256 start offset: 1024 Pixel Format PAL8 Swizzling type Xbox\ps3 liner Palette format BGRA8888 This script for insert to raw. Spoiler from inc_noesis import * def registerNoesisTypes(): handle = noesis.register("The Punisher xbox font raw", ".raw") noesis.setHandlerTypeCheck(handle, noepyCheckType) noesis.setHandlerLoadRGBA(handle, noepyLoadRGBA) noesis.setHandlerWriteRGBA(handle, texWriteRGBA) return 1 def noepyCheckType(data): return 1 def noepyLoadRGBA(data, texList): bs = NoeBitStream(data) width = 256 height = 512 palette = bs.readBytes(1024) pixel = bs.readBytes(width*height) pixel = rapi.imageFromMortonOrder(pixel,width,height,1) textureData = rapi.imageDecodeRawPal(pixel,palette,width,height,8,"b8g8r8p8") #BGRX888X 24bit #Im not test in game, if is BGRA8888 32bit just Remove "#" #textureData = rapi.imageDecodeRawPal(pixel,palette,width,height,8,"b8g8r8a8") #BGRA8888 32bit texList.append(NoeTexture("font", width, height, textureData, noesis.NOESISTEX_RGBA32)) return 1 def texWriteRGBA(data, width, height, bs): if width != 256 and height != 512: print("Can't export. width and height not equal 256") return 0 imgPal = rapi.imageGetPalette(data, width, height, 256, 0, 1) idxPix = rapi.imageApplyPalette(data, width, height, imgPal, 256) for i in range(0,256): bs.writeUByte(imgPal[i*4+2]) bs.writeUByte(imgPal[i*4+1]) bs.writeUByte(imgPal[i*4+0]) bs.writeUByte(imgPal[i*4+3]) idxPix = rapi.imageToMortonOrder(idxPix,width,height,1) bs.writeBytes(idxPix) print("Export done!") return 1 Thank you for help h3x3r ikskoks ! Edited January 14 by smith1395 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now