ROM Hack Xenoblade Chronicles 3 Graphics Settings

orangpelupa

Well-Known Member
Member
Joined
Aug 7, 2009
Messages
388
Trophies
1
XP
1,183
Country
Indonesia
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

  • only horizontal downscale at 98. use with reversenx docked.zip
    5 KB · Views: 68
  • Like
Reactions: cobjak

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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)
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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.
 

deathblade200

Well-Known Member
Member
Joined
May 10, 2016
Messages
1,371
Trophies
0
XP
1,344
Country
United States
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
 

FreewayZero

Member
Newcomer
Joined
Mar 13, 2022
Messages
10
Trophies
0
Age
84
Location
Madrid
XP
97
Country
Spain
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"?
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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
 

deathblade200

Well-Known Member
Member
Joined
May 10, 2016
Messages
1,371
Trophies
0
XP
1,344
Country
United States
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
 

totxxx

Active Member
Newcomer
Joined
Jul 23, 2022
Messages
44
Trophies
0
Age
34
Location
france
XP
101
Country
France
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

totxxx

Active Member
Newcomer
Joined
Jul 23, 2022
Messages
44
Trophies
0
Age
34
Location
france
XP
101
Country
France
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 :'(
 

deathblade200

Well-Known Member
Member
Joined
May 10, 2016
Messages
1,371
Trophies
0
XP
1,344
Country
United States
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
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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

totxxx

Active Member
Newcomer
Joined
Jul 23, 2022
Messages
44
Trophies
0
Age
34
Location
france
XP
101
Country
France
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: 82
Last edited by totxxx,

cobjak

Well-Known Member
Member
Joined
Jan 16, 2019
Messages
278
Trophies
0
Age
31
XP
552
Country
France
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
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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

Chrisssj2

Well-Known Member
Member
Joined
Feb 12, 2008
Messages
2,704
Trophies
1
XP
4,379
Country
Netherlands
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?
 

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,263
Trophies
3
XP
12,020
Country
Poland
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,

chillestvi

New Member
Newbie
Joined
Jul 28, 2022
Messages
3
Trophies
0
Age
27
Location
Georgia
XP
35
Country
United States
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

General chit-chat
Help Users
    SylverReZ @ SylverReZ: Lulz @Veho