X-Hax / sadx-mod-loader

Sonic Adventure DX PC Mod Loader
59 stars 17 forks source link

UI Scale To-Do #8

Open michael-fadely opened 8 years ago

michael-fadely commented 8 years ago

To-do:

Misc:

Non-standard:

Backgrounds/Menus (menu-scale branch):

PiKeyAr commented 7 years ago

(FIXED) Recently I came across a comment stating that playing at higher resolutions affects score calculation in Sky Chase. Apparently getting a high score (needed for emblems) is much easier at lower resolutions. Also, according to that comment, some enemies don't fire at 1080p. Original comment here.

PiKeyAr commented 7 years ago

(FIXED) sub_6436B0 - tutorial background sub_6430F0 - controller picture + button mappings and explanation sub_4343E0 - instruction background (called by the above sub)

RinMaru commented 7 years ago

Just need chao stuff and blackmarket and ill be forever happy

PiKeyAr commented 7 years ago

sub_72C4C0 - Chao Race entry menu sub_749300 - "Press the jump button (space) to cheer Chao on", "Please select a course" etc. sub_7493B0 - some more GUI-related stuff for Chao Race entry menu sub_4DACC0 - Twinkle Circuit continue screen

PiKeyAr commented 6 years ago

Not sure if this is useful, but it's possible to make the game play higher resolution videos or scale lower resolution videos properly. Here's how I got it to play a 1280x960 video.

In the array of VideoData structures at 0x010DB8B0 edit the Width and Height value for the needed video to match those of the actual video. This will make the game scale the video properly, which is enough for videos smaller than 640x480. For bigger videos you also need to patch the function that scales the texture used to display the video. In sub_513850 there's a structure whose coordinates and UVs are adjusted using hardcoded dimensions of 640x480.

There are two 2-byte ints used to set the TEXANIM struct's X and Y coordinates: X at 0x513918 and Y at 0x513921. So to scale it to 1280x960 I wrote 00 05 to 0x513918 and C0 03 to 0x513921. Then I patched the floats used to calculate the texture's UVs:

WriteData((float**)0x51392C, &VideoSize_X);
WriteData((float**)0x513950, &VideoSize_Y);

Finally, I also had to patch dword_10F1D68 to be larger than its default value of 1024 (1280 seems to work), obviously this is a dumb way to do it and it's better to rewrite sub_513850 to use a bigger value. I think it's involved in memory allocation, but I'm not familiar enough with this stuff. Also the above things need to be checked in other resolutions because I used a video that matched my SADX window size.

cheatfreak47 commented 6 years ago

Missed thingie: Adventure Field Emblem Counters appear to not scale

michael-fadely commented 6 years ago

fdf557d5a93aa670c659764a9acf1e42e7ebe690 fixes the adventure field emblem counter

PiKeyAr commented 6 years ago

sub_642790 - Character recap screen text

v10 = (double)v5 - 240.0 + VerticalStretch * 240.0;
v11 = (double)v6 - 320.0 + HorizontalStretch * 320.0;
sub_6424A0((int)(v4 + 36), -1, 64.0, v11, v10, 20.0, v9, v8);
PiKeyAr commented 6 years ago

(fixed by SF94) Looks like the tutorials break with the default "Stretch" option for backgrounds enabled Screenshot (no mods): image

cheatfreak47 commented 6 years ago

Funny I was actually just about to post about this myself. Can confirm, someone reported this issue to me in the BetterSADX comments, with this screenshot: https://steamcommunity.com/sharedfiles/filedetails/?id=1378184911

PiKeyAr commented 6 years ago

(Fixed) sub_750E70 - Chao Race HUD timer sub_7512F0 - Chao Race HUD rankings

PiKeyAr commented 5 years ago

Float at 0x0070142D is screen scale for the Game Gear emulator.

michael-fadely commented 4 years ago

Would somebody mind validating that the posted addresses/UI elements still need fixing? I have the free time, so I'd like to tackle these ASAP.

cheatfreak47 commented 4 years ago

I'd imagine a lot of them still do All the Game Gear stuff for example, I think lots of chao garden stuff needs looked at too. Really just open the game and you'll see, tons of stuff needs work for scaling correctly.

michael-fadely commented 4 years ago

That much is obvious. What I was asking for was specifically for validation of the posted addresses.

michael-fadely commented 4 years ago

Float at 0x0070142D is screen scale for the Game Gear emulator.

This is used as part of a larger structure which I would like to understand first.

michael-fadely commented 4 years ago

EDIT: fixed in af55cb8525f04c3c80f6a32777faaff7b20e7fc0

Looks like the tutorials break with the default "Stretch" option for backgrounds enabled Screenshot (no mods): [snip]

I've identified the issue here. There are user interface elements that are scaling as they technically should since HUD scaling is still enabled, but that ought not in this context

In debug builds of the mod loader, pressing the Dreamcast Z button will disable the scaling. Without holding the debug button: image

While holding the debug button: image

I will figure out a solution.

PiKeyAr commented 4 years ago

Thought I should mention this here. SADX title screen is currently stretched at aspect ratios other than 4:3. image

michael-fadely commented 4 years ago

Title screen fixed.

PiKeyAr commented 4 years ago

image 737BD0 - Chao stat panel 71B210 - Chao button prompts

PiKeyAr commented 4 years ago

image 728A40 - sets up Black Market UI 725420 - Draws menu header 7256C0 - Draws text 726760 - Draws buttons 7270E0 - Draws item list 725A30 - Draws item preview

michael-fadely commented 4 years ago

71B210 - Chao button prompts

Scaling for this has been sitting in the mod loader for quite some time, but it has been disabled because the text rendering in this context is not reverse engineered and becomes invisible.

PiKeyAr commented 4 years ago

Re: Game Gear emulator, I think the structure in question might be this:

struct __cppobj TAdvertiseBase : TObject
{
  TAdvertiseBase::AdvertiseBaseParam Param;
  NJS_POINT2 Center;
  float Spd;
  float Radian;
  float DispScaleX;
  float DispScaleY;
  float Current;
  __int16 Triangle;
  __int16 TriangleUp;
  int Trans;
  NJS_POINT2 Offset;
  int Timer;
};
cheatfreak47 commented 4 years ago

I don't think the animated HUD thing for Big the Cat when he catches a fish, ya know, where it adds the weight to your weight indicator is scaled quite properly.

michael-fadely commented 4 years ago

example?

cheatfreak47 commented 4 years ago

Sure. The game is running at 4K here.

On Catch at 4K: https://gfycat.com/VictoriousPleasedDipper

On Catch 640x480 no scaling enabled: https://gfycat.com/WhimsicalLeanBoar

This also seems to be the case for when you fail to catch something.

On Fail at 4K: tiny_onfishfail

On Fail at 640x480 no scaling enabled: 71250_20200331162442_1

PiKeyAr commented 3 years ago

Some remaining issues with Chao HUD scaling. Chao emotion balls and Chaos Chao sparks are positioned incorrectly. Also, the sparks are too big while the emotion balls are slightly too small I think. image

Here's a screenshot captured at 640x480 stretched to the 4:3 equivalent of 1440p. It seems that the environment maps break at higher resolutions. image

The Sonic Team homepage prompt isn't scaled: image

Minor issue, but I think it would look less awkward if the sliding elements in Chao Race Entry menu had their initial position adjusted to be off screen at aspect ratios other than 4:3. This is how they currently look when the screen fades in at 16:9. image

PiKeyAr commented 8 months ago

Sonic Team homepage screen fixed.