ROM Hack Xenoblade Chronicles 3 Graphics Settings

  • Thread starter Thread starter masagrator
  • Start date Start date
  • Views Views 219,978
  • Replies Replies 405
  • Likes Likes 17
for those that are not sensitive to lower vertical resolution, here's the setting that only half the vertical resolution and disabled furblur.

this one half horizontal resolution

both this one and that one use dynamic resolution at 98% GPU usage.

to my eyes, this one looks less jagged but blurrier. while that one looks more jagged but sharper.

both configs stays most of the time at 720p30 outside of battle. with 460mhz GPU, 1600mhz ram.
both conffigs must be run in docked mode
 

Attachments

  • Like
Reactions: cobjak
this one half horizontal resolution

both this one and that one use dynamic resolution at 98% GPU usage.

to my eyes, this one looks less jagged but blurrier. while that one looks more jagged but sharper.

both configs stays most of the time at 720p30 outside of battle. with 460mhz GPU, 1600mhz ram.
both conffigs must be run in docked mode
You sure red_AtRate means GPU usage? I was thinking this defines how much it can jump between resolutions for each frame to smooth out resolution changes (0.99 meaning one frame cannot differ from previous frame more than 1% in terms of pixel count)
 
How to convert existing lib_nx.bin to json? I want to check settings changes made to it.
You need to write your own script.
I made one at the beginning then output converted json with other script, names filled with another script, etc. until I got final form and made a script that can convert this final form into working bin file. :D

Here is the script that dumps all infos to json, but without filling proper names that we know and in different list format.
Python:
import sys
import json
import struct
file = open("lib_nx.bin", "rb")
if (file.read(4) != b"INIB"):
    print("WRONG MAGIC")
    sys.exit()
dummy = file.read(4)
entry_table_offset = int.from_bytes(file.read(4), byteorder="little")
entry_count = int.from_bytes(file.read(4), byteorder="little")
assert(file.tell() == entry_table_offset)
DUMP = []
offsets = []
for i in range(0, entry_count):
    entry = {}
    entry["CRC"] = file.read(4).hex().upper()
    entry["type"] = int.from_bytes(file.read(4), byteorder="little")
    offsets.append(int.from_bytes(file.read(4), byteorder="little"))
    DUMP.append(entry)
assert(offsets[0] == file.tell())
for i in range(0, entry_count):
    print(offsets[i])
    file.seek(offsets[i])
    match(DUMP[i]["type"]):
        # Boolean
        case 0:
            data = int.from_bytes(file.read(4), byteorder="little")
            if (data > 1):
                print("ERROR")
                sys.exit()
            DUMP[i]["data"] = bool(data)
        # Float
        case 1:
            DUMP[i]["data"] = round(struct.unpack('f', file.read(4))[0], 3)
        # (Float, Float, Float)
        case 2:
            DUMP[i]["data"] = [round(struct.unpack('f', file.read(4))[0], 3), round(struct.unpack('f', file.read(4))[0], 3), round(struct.unpack('f', file.read(4))[0], 3)]
        # (Float, Float, Float, Float)
        case 3:
            DUMP[i]["data"] = [round(struct.unpack('f', file.read(4))[0], 3), round(struct.unpack('f', file.read(4))[0], 3), round(struct.unpack('f', file.read(4))[0], 3), round(struct.unpack('f', file.read(4))[0], 3)]
        case _:
            print("UNKNOWN CASE")
            sys.exit()
file.close()
new_file = open("dump.json", "w", encoding="UTF-8")
json.dump(DUMP, new_file, indent="\t", ensure_ascii=False)
new_file.close()

Welp, I don't plan to write proper reverse script or instruct people on how to use it.
It should be pretty clear for anybody with Python programming experience, even small.
 
You sure red_AtRate means GPU usage? I was thinking this defines how much it can jump between resolutions for each frame to smooth out resolution changes (0.99 meaning one frame cannot differ from previous frame more than 1% in terms of pixel count)
dynamic resolution in any game uses around 99% gpu when its below the max resolution because it has no reason to drop the resolution if the resource isn't maxed out. they are just guessing on this one
 
I guess it is more difficult than I imagined, thanks for wasting your time on me tho!

Maybe someone knows changes made to so called "quality mod"?
 
dynamic resolution in any game uses around 99% gpu when its below the max resolution because it has no reason to drop the resolution if the resource isn't maxed out. they are just guessing on this one
Not exactly. With Switch GPU it's actually hard to cross 97% of GPU utilization reported by nvctrl, I guess they can measure it differently and get 99%.
But devs are actually preferring to measure time how long it takes to make one frame and based on that adjusts dynamic resolution. Experience from looking at UE4 configs which allow both of those ways and devs prefer actually time measuring.

But if in XC3 this is actually used, then if it's hardcoded time, with 60 FPS mod DynRes would be pretty broken. :P
 
Not exactly. With Switch GPU it's actually hard to cross 97% of GPU utilization reported by nvctrl, I guess they can measure it differently and get 99%.
But devs are actually preferring to measure time how long it takes to make one frame and based on that adjusts dynamic resolution. Experience from looking at UE4 configs which allow both of those ways and devs prefer actually time measuring.

But if in XC3 this is actually used, then if it's hardcoded time, with 60 FPS mod DynRes would be pretty broken. :P
i didn't mean exactly 99% just very close to max. if you look at the gpu in any dynamic resolution supported game it behaves the same. to me it would be illogical to change the resolution at anything less so I really doubt a setting like that would exist
 
hello everyone, I working on an upscale cutscene pack x2 720px2 so 1440p , here the first intro in webm

https://www40.zippyshare.com/v/8VTnt6RO/file.html

here the upscale in mp4 out of topaz : https://drive.google.com/file/d/1wLIwx_QcjIBPTu5x7c-5IcDfKnWmPkwA/view

here the path atmosphere\content\010074F013262000\movie

but game crash on switch an here a picture of the result on emulator. yuzu still run, audio working but freeze on this screen
upscale was done with topaze, and encode to webm with premiere pro + plugin in vp9

if someone have an idea...

maybe something to rework in lib_nx.bin i don't know...

Thanks
1659292263147.png
 
Last edited by totxxx,
  • Like
Reactions: DunArd and cobjak
It's definitely not lib_nx.bin related.
And since this will only profit people using emulator, please move discussion about this to emulator thread mentioned in first post.
Its also for switch :) i post a picture of emulator cause on switch is just message like "game stop to work" I already made upscale cutscene and fmv for switch it work like charm but for xenoblade chronicles 3 not :'(
 
hello everyone, I working on an upscale cutscene pack x2 720px2 so 1440p , here the first intro in webm

https://www40.zippyshare.com/v/8VTnt6RO/file.html

here the upscale in mp4 out of topaz : https://drive.google.com/file/d/1wLIwx_QcjIBPTu5x7c-5IcDfKnWmPkwA/view

here the path atmosphere\content\010074F013262000\movie

but game crash on switch an here a picture of the result on emulator. yuzu still run, audio working but freeze on this screen
upscale was done with topaze, and encode to webm with premiere pro + plugin in vp9

if someone have an idea...

maybe something to rework in lib_nx.bin i don't know...

Thanks
View attachment 320595
Colreduction turned off means it won't work on switch soooo
 
Its also for switch :) i post a picture of emulator cause on switch is just message like "game stop to work" I already made upscale cutscene and fmv for switch it work like charm but for xenoblade chronicles 3 not :'(
How Switch will benefit from 1440p videos?
 
  • Like
Reactions: totxxx
How Switch will benefit from 1440p videos?
most people playing on 4k tv dock mod :) with (for me) or without mclassic who did amazing job on switch with 1440p screen

but even on handled mod here result of upscaling on fmv for switch

but if think my best option is like I usually do, 4k or 8k upscale then convert to 720p :(

EDIT
Running it through the AI model, without upscaling, still looks pretty damn good

here's a screenshot, just running it through the model, at native 720p
Split image. Original on the left, and finished product on the right
 

Attachments

  • 1pass.png
    1pass.png
    2 MB · Views: 156
Last edited by totxxx,
this one half horizontal resolution

both this one and that one use dynamic resolution at 98% GPU usage.

to my eyes, this one looks less jagged but blurrier. while that one looks more jagged but sharper.

both configs stays most of the time at 720p30 outside of battle. with 460mhz GPU, 1600mhz ram.
both conffigs must be run in docked mode
Can you share json or just directly config here for the sharper one please
 
most people playing on 4k tv dock mod
This doesn't output true 4K. It's upscaling from max 1080p through sophisticated interpolation method because Switch operating system doesn't support more than 1080p tv output.
So your video would go through this process:

1440p -downscaling> 1080p -upscaling> 4K

So there won't be any profit from running your videos on Switch.
 
  • Like
Reactions: totxxx
your tid is wrong, read first post again


it must be for layeredfs to work. This means that either you don't have romfs mod or is in wrong titleid folder
why must you post the graphics mod inside the dlc folder AND the game titleid folder anyways?
What happens if you only post in main game title id folder?
 
why must you post the graphics mod inside the dlc folder AND the game titleid folder anyways?
Dunno if I understand you correctly.

Mod with exefs patch will take precedence, mod in DLC folder will be useless if exefs patch is used (if exefs patch won't support your version of game, DLC folder will take precedence)

I didn't post anything in both folders at once. So I don't know why you ask me.
 
Last edited by masagrator,
Is there any chance someone could make a graphic config to keep a stable 540p without dynamic resolution while making the outlines less jagged (probably from turning off AA) for portable mode? I’m fine enough with that kind of resolution because I’d rather not need to stay near my charger to keep a 720p resolution and not lower the fps.
 

Site & Scene News

Popular threads in this forum