ROM Hack Discussion Astral Chain ROM Hacking Bible

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,312
Trophies
3
XP
12,108
Country
Poland
This is thread not for cheats, but for getting every file extracted and reverse engineer most important files.
Don't upload anything here that can be treated as legal property (clean textures and meshes especially).

ROMFS
romfs has five types of files:
.wem - single audio WWise file
.bnk - container with multiple audio WWise files
.wai - WWise file containing informations about audio files
.bk2 - bink video format
.pkz - zstd archives containing table, file names and data.

.pkz can be unpacked with this QuickBMS script (made by xentax user - link)
Code:
# Astral Chain . pkz extract
# By Dave, 2019
IDString "pkzl"
ComType ZSTD

Goto 0x10
Get ITEMS Long
Get FILE_ENTRY Long

XMath NAME_TABLE "FILE_ENTRY + (ITEMS * 0x20)"

For A = 1 to ITEMS

Goto FILE_ENTRY
Get NAME_OFFSET Long
Get JUNK Long
Get SIZE Long
Get JUNK Long
Get OFFSET Long
Get JUNK Long
Get ZSIZE Long
Math NAME_OFFSET + NAME_TABLE
Goto NAME_OFFSET
GetDSTring FILENAME 0x10

Clog FILENAME OFFSET ZSIZE SIZE
# Log FILENAME OFFSET ZSIZE # Use this line to get compressed output instead

Math FILE_ENTRY + 0x20

Next A

PKZ archive
And what we can get from it:

.bin - strings used in game like characters names or dialogues, unreadable in current state
.bnvib - vibrations data
.dat - uncompressed archives made with table, file names and data.
.dtt - as .dat, but made for purpose of separating bigger files from .dat for faster loadings, for example .wtp files
.eff - effect files (whatever that means)
.evn - .dat structure
.vat - vertex animation texture
.vfd - vectorfield data
.wta - contains informations about textures in .wtp and properties of models
.wtp - textures container

.wtb - unknown
.epb - unknown

DAT archive
For unpacking DAT type archives, you can use this script (without proper filenames):
Code:
idstring "\x44\x41\x54\x00"
get filecount long
get TABLE_OFFSET long
GET FILE_FORMAT_TABLE long
GET FILENAMES_OFFSET long
set NAME ""
GoTo TABLE_OFFSET
get SIZE_LAST_FILE asize
for x = 1 < filecount
   get offset long
   get size long
   math size - offset
   log NAME offset size
   set NAME ""
   math TABLE_OFFSET + 4
   GOTO TABLE_OFFSET
next x
get offset long
math SIZE_LAST_FILE - offset
set NAME ""
log NAME offset SIZE_LAST_FILE

in DAT files we can find (based on real filenames, not guessed by quickbms script above):
.bnk - archive for WWise audio files
.col - properties of models/textures
.csv - file containing binary data and some comma-separated values
.evn - .dat structure
.ftb - contains informations about font
.ktb - contains informations about font
.mtg - MessageTagSetting
.sar - XML binary file
.wmb - mesh
.wta - contains informations about textures in .wtp and properties of models
.wtp - container for textures

.bxm - unknown
.eft - unknown
.epb - unknown
.est - unknown
.gad - unknown
.hkx - unknown
.mot - unknown
.pso - unknown (shader related)
.seq - unknown
.sop - unknown
.uvd - unknown
.uid - unknown
.vso - unknown (shader related)

I was trying to get little fun with exefs and I found 2 things that maybe someone will be interested to dig more (they are breaking function, so expect game to unexpectedly crash just in case):
Based on 1.0.1 version of game
Coloring some texts (I didn't test if this is related to color GUI)
Code:
710091b384 08  00  38  1e    fcvtzs     w8,s0
to
Code:
710091b384 df  f2  00  71    cmp        w22 ,#0x3c
2019082917101700-257FD939428E4BFE6BF9E2F559D5037A.jpg 2019082917092200-257FD939428E4BFE6BF9E2F559D5037A.jpg 2019082917093900-257FD939428E4BFE6BF9E2F559D5037A.jpg 2019082917100000-257FD939428E4BFE6BF9E2F559D5037A.jpg
Blocking loading informations about Police Station (so no walls made by map, only wall limiting whole scene) and audio related to it
Code:
710056227c e0 03 13 aa    MOV    X0, X19
to
Code:
710056227c 1F F1 00 71    cmp    w8, #0x3c
2019082917152900-257FD939428E4BFE6BF9E2F559D5037A.jpg 2019082917151700-257FD939428E4BFE6BF9E2F559D5037A.jpg
Yes, this is Police Station

If someone will find more info about how to open prioprietary files, I will add it next to file type.
 
Last edited by masagrator,

wangch

Well-Known Member
Member
Joined
Apr 12, 2019
Messages
132
Trophies
0
Age
30
XP
429
Country
United States

Is romfs the file that NAC unpacked and unpacked? Can I find all the item codes through this file?
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,312
Trophies
3
XP
12,108
Country
Poland
After I decompress the xci, I get a NAC file, decompress the NAC file, and then I get a romfs. bin file. Are you talking about this file?
Nope. I mean files in romfs. You are using probably old tutorial, because noone is using romfs.bin nowadays.
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,312
Trophies
3
XP
12,108
Country
Poland
Any chance of an unlocked framerate mod for this? I'd like to see if it might actually hit 60FPS Oc'd. :)
For now no chances, because I can't see anything that can unlock framerate. I only found how to change speed of rendering gameplay and HUD. Cutscenes are still with the same pace.
 
  • Like
Reactions: Khodeus

phonz

Well-Known Member
Member
Joined
May 1, 2018
Messages
278
Trophies
0
XP
1,873
Country
Canada
For now no chances, because I can't see anything that can unlock framerate. I only found how to change speed of rendering gameplay and HUD. Cutscenes are still with the same pace.

disassembling main, you can find references to performance modes iirc. Might just be left over stuff from the engine though? Or I might be crazy and thinking of a different game.
Or maybe that's what you were playing with as well?
 

orangpelupa

Well-Known Member
Member
Joined
Aug 7, 2009
Messages
388
Trophies
1
XP
1,183
Country
Indonesia
@masagrator

thanks a ton! have you found whats responsible for the dynamic resolution and framerate? wanna lock the res and try making it run @ 60fps :D

btw the UI color is change-able inside the game. Dunno we can choose arbitrary color or not. Many options are srtill locked


It’s a shame that the intro song isn’t available in japenese :c
IIRC, mine was in Japanese, complete with JP staff names
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,312
Trophies
3
XP
12,108
Country
Poland
I didn't check resolution. I tried everything I could for FPS and only found that animations speed for gameplay is taking 1/60 float and one function is multiplying it by two. I couldn't disable FPS lock.

--------------------- MERGED ---------------------------

Sorry, wrong. I mixed other game with this multiplyier and float. For speed animations it's using getsystemtickfrequency(). Multiply it by two and you have 1s rendered in 60 frames, but because of lock it slows down game twice.
 
Last edited by masagrator,

orangpelupa

Well-Known Member
Member
Joined
Aug 7, 2009
Messages
388
Trophies
1
XP
1,183
Country
Indonesia
I didn't check resolution. I tried everything I could for FPS and only found that animations speed for gameplay is taking 1/60 float and one function is multiplying it by two. I couldn't disable FPS lock.

--------------------- MERGED ---------------------------

Sorry, wrong. I mixed other game with this multiplyier and float. For speed animations it's using getsystemtickfrequency(). Multiply it by two and you have 1s rendered in 60 frames, but because of lock it slows down game twice.

hmm i wonder if the lock can be disabled thru realtime cheat in edizon. gotta need to learn edizon again, has been months since last time i use it hahaha
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • AncientBoi @ AncientBoi:
    :cry: You arent'? :cry:
  • AncientBoi @ AncientBoi:
    [tells my mom not to send you anymore Christmas presents] :evil: :rofl2: :tpi:
  • Xdqwerty @ Xdqwerty:
    im a minor
  • AncientBoi @ AncientBoi:
    So. I'm a Major
  • Xdqwerty @ Xdqwerty:
    im under 18
  • AncientBoi @ AncientBoi:
    I'm waaaaaaaaaay over 18. lol
  • Xdqwerty @ Xdqwerty:
    that makes you a pedo
  • AncientBoi @ AncientBoi:
    Pedo = 1. child 2. boy 3. ? I forgot. But I wish I were still a "Boy" :sad::cry::cry::cry:
  • Xdqwerty @ Xdqwerty:
    i meant simping over someone under 18 while you are over 18 makes you a pedophile
  • AncientBoi @ AncientBoi:
    And when did I "simp" you?
  • AncientBoi @ AncientBoi:
    Just go make me the darn coffee :angry:
  • AncientBoi @ AncientBoi:
    Tea?
  • AncientBoi @ AncientBoi:
    LoL lmao
  • AncientBoi @ AncientBoi:
    L8er dude. going to watch YT's on the Ukraine/ruskie war.
    +1
  • Xdqwerty @ Xdqwerty:
    @AncientBoi,tbh i think im
    not interested in whats going on irl
  • BakerMan @ BakerMan:
    tomorrow's memorial day, so i've been looking for a playlist, but it's all just country and alternative rock
  • Xdqwerty @ Xdqwerty:
    @BakerMan, memorial day for who?
  • BakerMan @ BakerMan:
    why the hell can't i find one with a song about the soldiers who died in battle, the very reason we celebrate
  • Sonic Angel Knight @ Sonic Angel Knight:
    Bake them a cake :ninja:
    +1
  • a_username_that_isnt_cool @ a_username_that_isnt_cool:
    I can change my name back tomorrow
  • Xdqwerty @ Xdqwerty:
    @a_username_that_isnt_cool, what will your new username be?
  • a_username_that_isnt_cool @ a_username_that_isnt_cool:
    My original one
    +1
  • RedColoredStars @ RedColoredStars:
    Stayin inside for memorial day. Just like other holidays, most people dont care or think about the actual reasons behind it. For most it's just another reason to get shit faced drunk and spout off hyper-patriotic nonsense. The Trumpers around here going to be out in full force with their trucks and guns and flags making noise all over town. Hard pass.
    +1
    RedColoredStars @ RedColoredStars: Stayin inside for memorial day. Just like other holidays, most people dont care or think about... +1