#Modifying title screen background color using cheat engine + anything else for forever and ever

1 messages ยท Page 4 of 1

hot cliff
#

on what line

graceful pawn
#

Just to see what it does

#

Here in 150d26fe1

hot cliff
#

ok done

#

testing now

#

๐Ÿ‘€

#

game crash......

#

interesting

graceful pawn
#

Uuuh...

hot cliff
#

gimme a second

#

i need to apply the patch somehow

#

shit how do i do that

graceful pawn
#

Can you apply the no game crash + the bts??

#

Don't know how pc patches work naosmiley

hot cliff
#

yeah i can just gimme a second

graceful pawn
#

I'm intrigued ๐Ÿ‘€

hot cliff
#

actually i'm not sure if i can

#

gimme a second

#

WE GOT A PINK CARD BABY

graceful pawn
#

OH femc

hot cliff
#

and a pink config screen!

graceful pawn
#

Lfgo

hot cliff
#

awesome

graceful pawn
#

How about going to an mc save??

hot cliff
#

yeah lemme check that

graceful pawn
#

Don't know where this function we found is applying

hot cliff
#

oh my god we're still a male

#

god bless

#

this is incredible

graceful pawn
hot cliff
#

amazing

graceful pawn
#

We are so back

#

Didnt expect that to fix absolutely everything lmao

hot cliff
#

crazy right

#

oh shit wait a second

#

how do i make this into an inaba exe patch if ghidra doesn't recognize it

graceful pawn
#

Oh, you can make ghidra recognize it

hot cliff
#

oh wait how lol

graceful pawn
#

150d26fe1 right click here

hot cliff
#

it's nonsense right now

#

oh click the dat?

graceful pawn
#

And click dissasemble

graceful pawn
hot cliff
#

ok lol

#

oh shit there we go

#

crazy!

graceful pawn
#

It's just ghidra didnt know that was a function

#

And I'm not sure yet that is the whole function??

#

But it does work lol

hot cliff
#

oh wait

#

says i'm not in a function

graceful pawn
#

Wait right click again

hot cliff
#

ok

graceful pawn
#

And select "Create Function"

#

It's taking a while to me but should do the job

hot cliff
#

alright

#

just gotta wait it out

#

dued im so excited

graceful pawn
#

Well I'm leaving, gotta do some sport now

hot cliff
#

alrighty

#

thank you for the help!

graceful pawn
#

But we made a great advance!!

graceful pawn
#

Let me know if it works when you get it ready naocheer

hot cliff
#

[replacement Pink Everything Else]

pattern = 0F BA F0 07 48 8D 1D ?? ?? ?? ??

offset = 2
replacement = bytes(E8)

#

that goes so hard

graceful pawn
#

Very nice ๐Ÿ˜

hot cliff
#

yup the inaba exe patch works

graceful pawn
#

Will try to see what is the whole function there tho, don't think that's the whole one

hot cliff
#

and no more blue text in the load menu screen

graceful pawn
#

We cookin femc ๐Ÿง‘โ€๐Ÿณ

hot cliff
#

time to move onto the analyse screen

#

i wonder when it's safe to assume it's a hex code

#

i thought i could add a break point to the btl ui renderer but it makes the game start and immediately stop

#

so that might be a dead end

graceful pawn
#

Yeah, the renderer is rendering too much stuff ๐Ÿ˜…

#

You should try adding a breakpoint on read with specific stuff you can see on-screen

hot cliff
#

yeah i tried that before with the skill names and they didn't work

#

oh ok now it does work

#

wtf

#

1402371F8

#

ok swine defined that as text something lol

#

press run once
14023727E

#

just kinda switches between those two a bunch

#

yeah i can't gleam anything from this, can you?

graceful pawn
#

Okay so if you got a hit on the text you should ret some times until you see in ghidra something that could look like a function that draws some stuff

#

Since print functions tend to have some other functions called before

graceful pawn
#

I'll take a look into those later, I'm gonna take a shower

hot cliff
#

alright

#

i placed a breakpoint on access to the name of the enemy in the memory viewer

#

and it just took me to a bunch of text writing functions

hot cliff
#

ok i got to here: 140236BB0

#

which has an xref to text something

#

and it's more text stuff

#

awesome

#

to here: 140422148

#

to here: 140248800

#

ok that should be all the addresses that the text moves throughout

#

one of them has to have something about rendering

graceful pawn
# hot cliff you mean step into?

Actually for these cases might be better step out right?? Since it will take you out of the current function, could be useful for finding these references without having to look for the ret statement

hot cliff
#

true

#

lemme try that

#

14023727E

#

ok back to the same spot as before

#

1402323EB

#

hmmmmmmmmm this one seems important

#

1400B03E7

#

same with that one

graceful pawn
#

Huh, the step out of this one might bring us to the general function

graceful pawn
#

YES

#

IT IS

hot cliff
#

yeah seems like this is the one

graceful pawn
#

You can see some colors defined

hot cliff
#

where lol

graceful pawn
#

Lmao

#

In RenderUiSprite the last arguments

#

0x69, 0xdf, 0xff, 0xff

#

For example

hot cliff
#

oh those are rgb values huh

graceful pawn
#

They completely look like it right??

#

You can double click the render function and Swine might have commented that as arguments

hot cliff
#

yeah he did lol

#

nice

graceful pawn
#

Hehe nice

#

This project tho is crazy, has a lot of stuff already discovered, Swine did an amazing job

hot cliff
#

which one would be the blue part?

#

i know right

#

half this stuff wouldn't be possible without swines little labels

graceful pawn
#

Like it could be infered, but we would be spending much more time trying to figure out what stuff is

hot cliff
#

oh i found the blue part lol

#

it's the top part

#

0x69, 0xdf, 0xff, 0xff

#

105, 223, 255, 255

#

exactly the same

graceful pawn
#

Oh is it the one I first saw?? lmao

hot cliff
#

yeah

#

now i just gotta figure out how to change it

graceful pawn
#

Very nice then, that was quick

graceful pawn
hot cliff
#

255 107 146 255 is what we want instead

graceful pawn
#

Ok so 0xff, 0x92, 0xff

hot cliff
#

how would i go about changing that

#

yeah

#

in cheat engine though

#

i think you're missing a value there

graceful pawn
#

Well alpha must be already 0xff

hot cliff
#

0xff, 0x6b, 0x92

graceful pawn
#

So probably we just need to change the other 3

hot cliff
#

yeah

graceful pawn
#

If we take a look at the code we can see how it works

hot cliff
#

sorta kinda!

graceful pawn
#

LFGO nice

#

Lol now that I take a look this function was already discovered by Swine

hot cliff
#

damn

graceful pawn
#

What a beast

hot cliff
#

and i thought i was smart

#

crazy though

#

progress

graceful pawn
#

I'm gonna have some dinner, so will be back later, good luck with the menus femc

hot cliff
#

oh my lord every part has it's own color

#

im gonna lose it

graceful pawn
#

The psp config menu was worse I must say dark

#

The draws were more scattered

#

But yeah here there are quite a lot of draws lol

hot cliff
#

EVERY SINGLE PART

#

@nocturne trench please tell me there's an easier sweeping way of patching the same bytes in multiple places ๐Ÿ˜ญ

#

i need to replace
RenderUISprite((longlong)pbVar9,0xb,0x6f,fVar19 + 74.0,67.0,0x69,0xdf,0xff,0xff);
with
RenderUISprite((longlong)pbVar9,0xb,0x6f,fVar19 + 74.0,67.0,0xff,0x6b,0x92,0xff);

#

in all instances of this function

wanton wyvern
#

you could make the whole UI style configurable this way haha

#

you could also do something like this as a code mod instead of an expatch maybe? you could set config options that way

hot cliff
#

yeah iโ€™ll need to make this into a dll eventually

gentle nova
#

funny that the persona status menu is so cbt in p3p too since I know p3r contains many duplicate references to particular colors

gentle nova
hot cliff
#

damn i really gotta do each part one by one then ๐Ÿ˜”

#

how would i even make that into an inaba exe patch

gentle nova
#

I have a couple ideas that could make mass replacing colors easier but it's not something I've ever implemented myself

hot cliff
#

that'd be nice

#

i still have to do the aoa confirmation screen and potentially the player advantage icon

#

probably more, there's definitely other blue stuff i forget about

#

like shop ui probably

hot cliff
#

how the hell are we not done and this help thread is at over 3000+ messages

#

what the hell man

#

guess ill need to get the time limit timer too since that's also blue

wanton wyvern
#

technically the thread topic has been solved AdachiTrue
just leaving it open at this point because this is adjacent anyways

hot cliff
#

counter point

#

Modifying title screen background color using cheat engine + anything else for forever and ever

#

i will never need to make another help thread ever again ๐Ÿ˜Ž

graceful pawn
#

New title quite descriptive adachi_true lmao

nocturne trench
nocturne trench
#

If they aren't loaded from a single place in memory then you're kinda screwed, you'll most likely have to just go through every single one by hand naosmiley

#

I think I saw someone suggest hooking the rendering function and changing the colour in it if it matches the blue colour. I do think that could work fwiw

hot cliff
#

they're the exact same bytes @nocturne trench

#

so i can just sig scan for them all?

nocturne trench
#

Then you could try doing that

hot cliff
nocturne trench
#

makesig

hot cliff
#

whoops

#

thank you

#

start of function or instruction at cursor

nocturne trench
#

current instruction if that's what you're trying to edit

hot cliff
#

alright

#

oof that's a long ass signature

#

do i really need the full thing?

nocturne trench
#

That's because it's not unique

#

Well, the signature is unique but that's why it's so long, what you're trying to scan for isn't really

hot cliff
#

oh :/

nocturne trench
#

You don't want it to be unique though since you want all of them

#

Just write something out by hand

hot cliff
#

is there a way around that then?

#

oh for real

#

like

#

C6 44 24 ?? 69?

nocturne trench
#

Yeah something like that

hot cliff
#

cool cool

#

aw shit it only replaced one part ๐Ÿ˜”

#

does that mean only one part is unique or that it can only replace one part at a time

#

also the color is wrong

nocturne trench
#

What are you doing this in? Still an expatch?

hot cliff
#

yeah

#

i did the patch wrong one second

#

at least i think i did it wrong

nocturne trench
#

You need to add index=all for it to actually replace all of them

hot cliff
#

oh shit fr?

#

ok where do i put that haha

nocturne trench
#

By default it's just the first since the way it's normally used is for something actually unique

#

Just in the replacement, below the pattern or something

hot cliff
#

under the replacement tag?

#

alright

nocturne trench
#

doesn't matter where

hot cliff
#

oof

#

title screen locked up

#

nevermind im dumb

nocturne trench
#

Then it's probably replacing things that make it angry

#

oh

hot cliff
#

yeah i paused the reloaded log by accident

nocturne trench
#

lol

hot cliff
#

hmmmmmmmmmmmmmmmm

nocturne trench
#

woah

hot cliff
#

that's so strange wtf ๐Ÿ˜ญ

nocturne trench
#

funky

hot cliff
#

that is so funky oml

nocturne trench
#

you've changed some alpha value ig

hot cliff
#

oh shit did i?

nocturne trench
#

I've never seen something like that

#

kinda cool

hot cliff
#

wait a second i totally did one second

#

aw shit yeah i did

#

look

#

top one is alpha value

#

ok so make the ff patch the actual address instead of the ??

#

[replacement Pink Everything Analysis PT 3]
index=all
pattern = C6 44 24 38 FF

offset = 4
replacement = bytes(92)

#

wonder why not all of the pink was replaced

#

might mean the HP and SP + the outline is a different value?

#

hmmmmmmmmmmmmmmm

#

is this coming across on your monitor too?

nocturne trench
#

yeah

hot cliff
#

ok there we go

#

the little sweat icon above the shadows was also colored that way too >.>

#

is analysis usually yellow femcmad

#

this is green now???????????????????????

#

is there a way to limit the range of the scan to the beginning and end of a funtion?

#

ok i will have to manually add the rest of the colors in

#

because replacing the text draw also replaces the text draw of the skills

#

and we don't want that

#

ok there seems to be way more PT 3 patches than anything else

#

so i have to make it more specific

#

what happened ๐Ÿ˜ญ

#

ok i managed to fix all the weird coloring issues everywhere else but now this happens ๐Ÿ˜ญ

#

what the hell man

#

im trying to understand why this is happening and coming up blank

#

i added a few more lines to PT 3 and now this?

#

wait a second

#

is it replacing what's in the PT 1?

#

with 92?

#

ok i figured it out

#

it's too specific

#

PT 1 patches 21 and PT 2 patch 21 addresses

#

PT 3 patches 10

#

ok i think i'm boned

#

i think i have to manually replace each C6 44 24 38 FF pattern by hand

#

because if i just do that as the scan, there's hundreds

#

if i add one letter extra, there's less than 21

#

ok that won't work either since there's also functions outside of this we need to replace

#

gah this shit sucks man

#

why does the second to last digit have to be FF too ๐Ÿ˜”

#

ugh this is impossible i think ๐Ÿ˜”

#

i did a signature scan for the 1st address i had to manually replace and it overlaps with the next address i have to replace

#

@nocturne trench any way around this? i'm completely stumped

hot cliff
#

but only at the same 21 locations the other PT 1 and PT 2 addresses do

#

generating a sig scan at the first address does this

#

C6 44 24 ?? FF BA 0B 00 00 00 C6 44 24 ?? DF 48 8B CF C6 44 24 ?? 69 F3 0F 11 74 24 ?? 44 8D 42 ?? E8 ?? ?? ?? ?? C6 44 24 ?? FF

#

which overlaps with the next ff i have to replace

nocturne trench
#

Idk, I'm sure you could but it sounds like it'll be a pain

#

I think you're just better off hooking the sprite drawing function and doing it that way

hot cliff
#

do you have a code example for that to jump off from?

#

swine....

#

i can choose what to replace

#

ok mostly solved

#

shoutout to indexes!

#

time to figure out these last few things

nocturne trench
hot cliff
#

oh

#

my bad lol

nocturne trench
#

Also, if you are going to use that be sure to test it on every version of the game

hot cliff
#

i should've explained more

#

oh

#

that's a good point

nocturne trench
#

Code can move around so doing that isn't really safe.

hot cliff
#

i mean they're all next to each other so it should be fine

nocturne trench
#

Ah ok, if it's in the same function then it's probably fine

hot cliff
#

they're all next to each other in the same function

nocturne trench
#

It'd just be the functions themself that move, not stuff in them

hot cliff
#

oh

#

then i need to move the final out into it's own thing then

#

actually nevermind it's part of the same function

nocturne trench
#

I mean, if it works then just go with it

#

I really doubt this game is ever getting another update

hot cliff
#

true lol

#

ok so there is a bit of stuff not colored

#

but there's a hex code reference to the colors

#

that i just realized is wrong

#

one second

#

ok i need to find out how to color the rest of this stuff

#

the name, outline, and MAX HP/SP don't get colored when they should

#

i'm confused as to why MAX HP and MAX SP don't get changed because they're also a sprite femcmad

#

otherwise the text should be findable, there's a function for drawing text

#

the outline though i got no idea

#

ignore the 52 and 24, it needed to be 23 not 22

#

ok what the hell handles the outline

#

im so confused

#

or the max hp and max sp

#

ima need you for this next part brother @graceful pawn

hot cliff
#

Naofacepalm that's embarrassing

#

hmmmmm

#

why is it doing that

#

[replacement Pink Everything Analysis PT 4]
index=all
pattern = 41 B9 FF FF DF 69

offset = 3
replacement = bytes(FF 6B 92)

#

oh it's backwards

#

there we go

#

oooooooooooooooh it's coming together

#

is it possible i just missed one femcmad

#

but how

#

ok maybe the outline isn't rendertext or rendersprite because it really isn't either

#

it might be this drawsomething function

#

im just surprised that the RenderUISprite didn't take care of the max hp / max sp stuff

#

or how it affected the text for the health and sp considering those would be text like the title, no?

#

yeah im stuck

#

i can't gleam anything else from this one function

#

but it's definitely this function that handles everything

#

and there's really only one mention of the FF FF DF 69 bytes

#

which is what handles the hex code

hot cliff
#

yeah ive been at this for a bit too long

#

i can't find any other references to color

#

i can sort of understand the outline being somewhere else

#

but not the max hp and max sp

#

those are actual ui textures so how tf

#

shit is it not a texture?

#

shit it might not be a texture femcmad

#

i can't find the MAX texture but i can find the PLV and HP/SP texture

hot cliff
#

i guess i could look for the health value

#

and what sprite that is

#

ok so as it turns out the health sprite draw is in a different function

hot cliff
#

i replaced every instance of that pattern and it didn't adjust MAX HP / MAX SP

#

so that means the outline and that text aren't handled by the 0x69, 0xdf, 0xff, 0xff pattern

graceful pawn
hot cliff
#

thanks lol

hot cliff
#

i just need to get those last two and i'm struggling so hard

#

like i said since i replaced every reference to the 1st 0xff in that pattern in the 1st one i replied to, then it can't be using that as the color

#

it might be using the hex code

#

which is 0x69dfffff

#

ok it is not ๐Ÿ˜”

#

um are there any other ways stuff can be colored besides rgb and hex

#

or hex as rgb

graceful pawn
#

Ic, what if it's using a slightly different color??

#

For some weird reason lol

hot cliff
#

that'd be so fucked up

#

but id believe it

#

this game is a poison

graceful pawn
#

From Atlus I believe everything lmao

hot cliff
#

nope it's the exact same color according to gimp

#

67dfff

#

wait no

#

it's using 67ddff

#

what the fuck

graceful pawn
#

Eeeh you cannot 100% trust grabbing the color from making a screenshot

#

At least in my experience

hot cliff
#

yeah true

#

especially that small of a difference

#

yeah no matches found for that different hex code

graceful pawn
#

Yeah, most likely It is using the original color to render

hot cliff
#

hmmmmmmmmmmmmmmmmmmmmmmmm

#

yeah but how

graceful pawn
#

I'll turn on my computer to try and find It as well

hot cliff
#

do a hex search for

c6 44 24 30 df

graceful pawn
hot cliff
#

the annoying part is that it can't be that though

#

since i was able to safely replace every instance of c6 44 24 28 69 without issue

#

which is part of the color

#

so idk femcmad

graceful pawn
#

Might be printed by other function or something

#

Might found one??

#

It's suspicious, using the same colour

hot cliff
#

what the

#

howd you find that so quickly

#

ugh time to patch that too

graceful pawn
#

I opened the project and it was just at the middle of the project when I opened it lmao

#

Quite lucky

hot cliff
#

damn

#

that's a little embarrassing

#

[replacement Pink Everything Analysis PT 5]
pattern = B0 69 B1 DF 41 B1 FF

replacement = bytes(B0 FF B1 6B 41 B1 82)

graceful pawn
#

Oh just that one was doing everything??

#

Well everything left I mean

hot cliff
#

nah im testing now

#

i doubt that's everything haha

#

oh it did nothing

#

weird

#

weird

#

inaba exe patch didn't write the bytes

#

actually wait

graceful pawn
#

Oh weird

hot cliff
#

[Inaba Exe Patcher] Wrote bytes B0 FF B1 6B 41 B1 82 as value of Pink Everything Analysis PT 5 at 0x1400B0612
[Inaba Exe Patcher] Applied replacement Pink Everything Analysis PT 5 from omegaultracheat.expatch at 0x1400B0612
Patched BindFile mov ecx, 1 -> mov ecx,-1

#

i guess it did?

#

nothings different though

graceful pawn
#

The code did change??

hot cliff
#

can't tell

#

don't think so

graceful pawn
#

Well with the debugger you can go to that address right??

hot cliff
#

yeah i'm looking at it

#

doesn't seem like it changed

#

i can't tell

#

cheat engine changes the values

#

gimme a second

graceful pawn
#

Hmm try to live change it and see what changes tho

hot cliff
#

yeah it did apply

#

but nothings different?

graceful pawn
#

But if code didnt change then something must be wrong

hot cliff
#

either that or i'm blind haha

graceful pawn
#

Can you change the instruction with cheat engine??

hot cliff
#

yeah i did

#

changed the hex values in real time and nothing

#

lemme try doing that without the patch

graceful pawn
#

All right if nothing changed then it must not be it I guess

graceful pawn
hot cliff
#

nope nada

#

no difference

#

must be for something else

graceful pawn
#

Okay then it's def something else

#

Ugh so close

hot cliff
#

yeah

#

it's a little triggering seeing just two little blue bits

#

like we're right there

#

how else can colors be stored anyways?

graceful pawn
#

I guess in floats

#

Or something like that

hot cliff
#

0x69 as all options

graceful pawn
#

Well the float/double is kinda b0rked

hot cliff
#

rip

#

is it possible it's just not in this function

#

the HP and SP text is in a different function

#

like maybe because that texture is reused and not found anywhere else, it's in a different rendering function?

#

we just have to look at the other rendering functions

#

or find out where else a similar menu like this is used?

graceful pawn
#

If you remember a similar one it could be useful yeah

hot cliff
#

nothing specific comes to mind

#

there's hella rendering functions swine labeled

#

any idea where the MAX HP and MAX SP textures are stored btw?

#

maybe adding a break point to their access could help with this

#

i tried checking init_free.bin but couldn't find em

hot cliff
# hot cliff

seems like this might be em but i can't find the word MAX

graceful pawn
#

Yeah, cant find Max

#

Maybe it's in another spr along with the lines left??

hot cliff
#

maybe

#

but i feel like it'd be dumb if it were in a different function because of the SPR files

#

i think the theory of it being called in multiple places puts it in a different function

#

it's seen here

#

so maybe in the part that handles rendering this

#

there's an if else that handles coloring it differently in battles?

graceful pawn
hot cliff
#

oh true

#

weird

graceful pawn
#

Which makes me think it's in another spr right

hot cliff
#

yeah

#

but LV is in that SPR

#

and LV is called in the analysis screen

graceful pawn
#

True...

#

Can you send the file you where inspecting??

#

To check the stuff in Amicitia

hot cliff
#

PC file, sorry for the size, but it's better to see the HD textures

graceful pawn
hot cliff
#

it's in camp

graceful pawn
#

Does It use lvl??

#

Lv

hot cliff
graceful pawn
#

Or whatever XDD

hot cliff
#

hmmmmmmmmmmmmmmmm

#

doesn't use HP or SP though

graceful pawn
hot cliff
#

yeah it does

#

is it possible the MAX SP and MAX HP is just text?

#

like using the font?

graceful pawn
#

Doesnt look like text but we never know??

#

Because what about the other line that's drawing in blue

#

That must be a spr

hot cliff
#

yeah that's probably one of the many line textures

#

i think what we need to focus on instead

#

is finding all the ways the color can be called

#

and looking for that color

#

sorry not texture

#

all the ways color can be called

#

have you encountered any weird color ways while working on the PSP ports

graceful pawn
#

And then later used in the program like the config menu

hot cliff
#

mmmmmmmmmmm

graceful pawn
#

But dont think this would be the case

hot cliff
#

yeah probably not

graceful pawn
#

Because I don't find the color in memory

#

I can try to work on the psp coloring and let you know if I find the color in there

hot cliff
#

yeah if you wanna

graceful pawn
#

Might be similar-ish

hot cliff
#

i should probably be getting to bed considering it's 2 am

graceful pawn
#

I'll let you know if I find It then, gn femc

hot cliff
#

cool cool

#

i might be up for a bit while winding down so just ping me

#

thanks for all the help with this

#

i really appreciate you and swine both teaching me all of this

#

eventually ill get the hang of it and do it on my own

#

once i fully understand all of this i wanna make the antique shop returns weapons instantly

#

since that whole entire shop is handled directly in code

graceful pawn
#

Haha I'm Happy you are learning, I enjoy this kind of modding a lot ๐Ÿ˜

hot cliff
#

but i wanna do that on my own since it seems relatively simple

#

alright time to get ready forbed

graceful pawn
graceful pawn
#

Found the function in psp, it is so similar lol

#

The draw_color_element I had already named it because of the title screen coloring

#

But following Swine naming it should be RenderUISprite

#

I'll change it so we have same namings for stuff

#

Seems skipping the whole function leaves these lines drawn, so they might be drawn elsewhere ๐Ÿค”

graceful pawn
#

@hot cliff make sure you change this one as well, it seems to have a different handling to draw just this one

#

I looked in the pc port decomp and it is drawn different as well

graceful pawn
#

Found everything!!

#

Now that I know where it was in psp I'll find it in the pc port

#

It was a bit hidden so that's why we were not finding it lol, was inside a function call in psp

hot cliff
graceful pawn
#

It's in here

hot cliff
#

if it is then i definitely got it just haven't set a screenshot

#

oh wait lol

#

then that's what i changed that didn't appear

graceful pawn
graceful pawn
graceful pawn
#

It is very possible

hot cliff
#

oh wait i guess not

#

that might be something else

#

ok then ill have to change that one too in the morning

graceful pawn
#

Yeah, it is better you apply it as well just in case it's other thing

graceful pawn
#

One thing to take into account

#

Is, the code is drawing R_00, G, B, B

#

Why it is duplicating the B? Because it wants the alpha to be 0xff and blue happens to be 0xff so it uses the same value two times

#

In our case what can we do??

#

Well we use 0xff, 0x6b, 0x92

#

Since our red is 0xff we can do the RenderUISprite

#

With R_00, G, B, R_00 as the color arguments

hot cliff
#

huh interesting

#

do you think you can write out what that replacement bytes would look like

#

not sure im exactly following

graceful pawn
#

I don't know how to do that ๐Ÿ˜…

graceful pawn
hot cliff
#

oh that's all

#

ok sorry i thought there was more

graceful pawn
#

That'd be the first part

hot cliff
#

oh

graceful pawn
#

Then you'd have to change the parameters

graceful pawn
hot cliff
#

to what though haha

graceful pawn
#

Okay by default its using R_00, G, B, B

#

Since B -> 0xff

#

But since our color has R_00 -> 0xff

#

You should change it to R_00, G, B, R_00

hot cliff
#

oh that's super interesting

graceful pawn
#

Yeah we can take advantage of our color in this particular case ๐Ÿ˜…

#

To reuse it for alpha

hot cliff
#

wow

#

ok that's really weird

#

i wonder why the game did that

#

just to hardcode the values by assigning them to a variable

graceful pawn
#

I guess to save up registers, like they were using these colors a lot through the function

hot cliff
#

weird

graceful pawn
#

So the compiler saves them first to use them later

#

But interestingly enough for the numbers of max hp and max sp later its not using the ones in the registers but it's rather loading them again lol

hot cliff
#

this game is so strange

graceful pawn
#

Here it just loads them lmao

hot cliff
#

weird

#

any idea about the outline?

#

and can you send me the addresses for all of these locations so i can insta jump to em

graceful pawn
#

Yeah the outline probably gonna be tough since it's not in this function ๐Ÿ˜ญ

hot cliff
#

sad

graceful pawn
#

R_00, G, B location -> 1400b12f8

#

Function call that uses those values -> 1400b13a0

#

To keep it here R15B = R_00, R14B = G, BPL = B

#

Just so you can know when you want to change it in the function

#

Probably the B you have to change into R_00 in the function -> 1400b1382

#

Found the lines femc

#

I'm changing the other one as well

#

We cooked femc

#

To find it, since we know the actual color, I used the Search Instruction patterns

#

And looked for places where it was loading a 0x69, 0xdf, 0xff

#

Can try to do the same for the pc port

#

All right finally found it comparing the pc/psp decomps

#

1400afe38, 1400afe57, 1400afe6c, 1400afe81

#

Its written the other way around like this with: 0xffffdf69

#

So in our case it should be: 0xff926bff

graceful pawn
#

I'm struggling to find this blue strip, it's kinda hard

#

I suspect It might be a .epl I have no idea how to edit ๐Ÿ˜…

#

I'll stop for now

hot cliff
#

i can double check that

#

i know the portrait itself is part of an EPL

graceful pawn
#

Ic... Then it might be kinda together

hot cliff
#

you got the pc function for the button prompts?

graceful pawn
#

Not really

#

Can try to look it up

#

But in psp i found it with a read breakpoint in the "Here's our chance..." and steping out until I got to the function

hot cliff
#

i can try that

wanton wyvern
#

I finally had a look at the PR after several days (oops) - I wanted to change the title screen color to a different hex (currently it's 7D 00 00 FF, I want it to be B2 31 46 FF) but I get this error. this is where my limited programming knowledge fucks me over but I have no idea how to properly fix this ๐Ÿ˜†

hot cliff
#

i think you need to reverse it

#

what was it before

wanton wyvern
#

0x7D0000FF

#

(the original red color)

wicked wagon
# wanton wyvern I finally had a look at the PR after several days (oops) - I wanted to change th...

I can't tell for sure since you've cropped out the name and type of the variable you're setting there but I'm guessing what's happening here is that the number you're trying to set (0xB23146FF) is within the range of what would be negative values in an int (0x0 to 0x7FFFFFFF are positive and 0x80000000 are negative) and either a) the variable is a uint meaning that it's only positive numbers so visual studio gets confused by trying to set a negative value to it or b) the variable is an int it's interpreting your hex as a uint and thus the value is too high to fit in that positive range of an int

Tldr: just put either (uint) or (int) right next to the hex number, whichever one matches the variables type/gets the error to go away lol

wanton wyvern
#

uncropped

#

well

#

slightly less cropped

#

lol

wicked wagon
#

Ah yeah so visual studio is interpreting the number youre trying to put as if it were a uint so the number doesn't fit inside the range it expects for a int (in terms of positive numbers)

It should work fine if you just do (int)0xB23146FF instead

wanton wyvern
#

it did not like that

wicked wagon
#

thonk odd

wanton wyvern
#

indeed lol

#

i did some experimentation and accidentally brought the just a phase mod to p3p

wicked wagon
#

Apparently if you did unchecked((int)0xB23146FF) that would make it work?

#

(or at least make visual studio happy lol)

#

Really for this case it seems like the variable there should just be a uint but I assume changing that would just break stuff elsewhere in the code lmao

#

(hopefully you can get it sorted it since I gotta get to work here now so I won't be available to help at all for a few hours lol)

wanton wyvern
#

lets give it a shot

#

it does make vs happy

#

shows up as the original red ๐Ÿค”

hot cliff
#

@graceful pawn hmmmmmmmmmmmm

#

ok wtf

#

it didn't even replace the outline properly

#

[replacement Pink Everything Analysis PT 5]
index=1, 2, 3, 4
pattern = 69 DF FF FF

replacement = bytes(FF 92 6B FF)

#

not correct?

#

[Inaba Exe Patcher] Wrote bytes FF 92 6B FF as value of Pink Everything Analysis PT 5 at 0x1400AFE3B
[Inaba Exe Patcher] Applied replacement Pink Everything Analysis PT 5 from omegaultracheat.expatch at 0x1400AFE3B
[Inaba Exe Patcher] Wrote bytes FF 92 6B FF as value of Pink Everything Analysis PT 5 at 0x1400AFE5A
[Inaba Exe Patcher] Applied replacement Pink Everything Analysis PT 5 from omegaultracheat.expatch at 0x1400AFE5A
[Inaba Exe Patcher] Wrote bytes FF 92 6B FF as value of Pink Everything Analysis PT 5 at 0x1400AFE6F
[Inaba Exe Patcher] Applied replacement Pink Everything Analysis PT 5 from omegaultracheat.expatch at 0x1400AFE6F
[Inaba Exe Patcher] Wrote bytes FF 92 6B FF as value of Pink Everything Analysis PT 5 at 0x1400AFE84

#

ok now im regressing wtf

graceful pawn
#

Huh now you only changing the left part of the upper part

#

Not sure why is not the same pink tho??

hot cliff
#

yeah me neither

#

maybe im doing the patches wrong

#

no idea why the background behind it is white either

#

yeah no i'm lost

#

i can't get the outline to color right and i can't get the MAX HP / MAX SP texture to look right

graceful pawn
#

Well at least we know It is those colors tho

#

I'll check the project later

#

You can try changing the ordering of the colors for the two lines

hot cliff
#

quick question

#

what did you change the R value too

#

because the R value is also used in a different function and it expects 0xFF

#

ok there we go

#

i got everything except the background on MAX HP and MAX SP

#

had a couple values backwards slightly

graceful pawn
hot cliff
#

what do we do about this though

#

seems like this handles the background of the MAX HP and MAX SP thing

#

did you not encounter that issue?

graceful pawn
#

Oh that actually makes a lot of sense, guess I didnt see It naotroll

graceful pawn
hot cliff
#

oh so it's just a PC issue

#

sad

#

can i just make the R's into the exact value

graceful pawn
#

What was the R original value??

hot cliff
#

0x39

#

it's now FF in my hex code

graceful pawn
#

Damn, like how the color is so specific

hot cliff
#

i just need to turn these DIL's into 0x39

graceful pawn
#

Because the whole ui uses 0x39, 0x39, 0x39 for black

hot cliff
#

i think at least

#

no idea how to do that safely

graceful pawn
#

In mips it's not possible but knowing x86 has a lot of stuff It might be possible

hot cliff
#

mmmm maybe

#

lemme see

#

how would that look again

#

mov, 0x39?

#

i think i need to assign the value don't i?

graceful pawn
#

Yeah mov original_addr, 0x39 hopefully

hot cliff
#

oh do i actually put original_addr?

graceful pawn
hot cliff
#

1400b1318?

graceful pawn
#

Like the [RSP +... Stuff

hot cliff
#

oh

#

mov [RSP + local_118], 0x39?

graceful pawn
#

That's an address because It is between [] in x86

graceful pawn
hot cliff
graceful pawn
#

Lol whats dil??

hot cliff
#

damn game crash ๐Ÿ˜”

#

ok so assigning it directly to 39 doesn't work

graceful pawn
#

But it's not doing It right??

hot cliff
#

yeah no

graceful pawn
#

Its assigning whatever dil is

hot cliff
#

game crash before the screen even came up

#

yeah it's assigning this value to DIL

#

so i guess mov 39, dil?

#

or how do you write it out?

#

mov 0x39, dil?

graceful pawn
#

I guess?? Don't know whats dil

#

Thought It was inverted tho

#

Like It should be I think

hot cliff
#

DIL is the variable name for the B's in the background rendering sprite

#

inverted?

graceful pawn
#

Like it's moving the dil into the address I mean

hot cliff
#

yeah?

graceful pawn
#

Yeah, It puts the dil value into the address

hot cliff
#

oh so i'm modifying the wrong thing?

graceful pawn
#

Because the address is what the Game Will use to colour

hot cliff
#

oh

graceful pawn
hot cliff
#

well how do i make it not call the B variable and instead put 0x39?

#

i did that and the game crashed

#

but i can try again

graceful pawn
#

Can I see the opcode??

#

Like before executing it

hot cliff
#

oh wait did you mean before before

graceful pawn
#

Looks good I think????

hot cliff
#

game will crash when i bring up the analysis screen

#

yup game crash

#

so not that

graceful pawn
#

Wait wait

hot cliff
#

the weird part is that should be what you do

graceful pawn
#

Maybe we need to specify like the type of mov??

hot cliff
#

you just change the DIL

graceful pawn
#

Like just move a byte

hot cliff
#

the 0xff looks like this

graceful pawn
#

Uuuh that's it

#

Should be mov byte ptr

#

Because it's just moving a byte

#

Lets test It out

hot cliff
#

oh hey there we go

#

nice

#

one of em

graceful pawn
#

Lfgo

#

But wait

#

Think theres a better way knowing this

#

Instead of changing r_00, g, b

#

We should only specify the Pink colors to the function that colors Max HP/sp

graceful pawn
#

We can instead of using R_00, G, B specify our own specific values there

hot cliff
#

oh that's smart

graceful pawn
#

Doing that would only change what we want

hot cliff
#

true true

hot cliff
#

FINALLY

#

look at that beautiful ass ui

graceful pawn
#

Finally peak analysis screen ๐Ÿฅบ

hot cliff
#

ok time to find that epl

#

how do you enable print file log again haha

#

ok one more time

#

it's under CRI V2 HOOK btw

graceful pawn
wanton wyvern
#

yay

hot cliff
#

uh it's not printing

#

am i doing something wrong?

#

it is CRI V2 Hook right brawler?

wanton wyvern
#

yes

hot cliff
#

not printing anything

#

weirdly

wanton wyvern
#

weird...

#

clear cache?

#

either that or its something that just doesnt get printed idk

hot cliff
#

cache was ity

#

thank you

graceful pawn
#

Nicee

wanton wyvern
#

yayyy

hot cliff
#

yeah seems like the little slice thing is a gmo

#

mdl2\battle\cutin\syoudaku\BOKO_SD_2\000.GMO

graceful pawn
#

Jeez that's good, at least we know where it is now

#

Can be changed??

hot cliff
#

probably

#

not sure how though

#

there's no color texture

#

or material data implying color

graceful pawn
#

Ugh unlucky

hot cliff
#

there is color in this next one

#

i might have bad news

#

i gotta check something though

graceful pawn
hot cliff
#

ok i got bad news

#

it seems like this color isn't hardcoded

#

but decided by the EPL itself

#

you need to hex edit the EPL itself to get it to change colors

#

i know nothing about this process

graceful pawn
#

Hmmm oh well

hot cliff
#

so we might be screwed

#

if you wanna look into you can

#

i can even direct you to the guy who knows about the process

#

maybe they can teach you

graceful pawn
#

Can try to find the value, have done that for fes for .anm file which were quite unknown

#

Would be good to know the specific color tho but I know that's hard to know ๐Ÿ˜…

#

Do you have the file close??

hot cliff
#

yeah im zipping em up for you

#

just know that MDL2 doesn't work for you

#

and you're gonna need the tool called BedTools by Pio to extract the EPL files

graceful pawn
#

Ic, I'll take a look into that then thanks!

hot cliff
#

mhm

#

good luck

#

lemme know if you find anything

graceful pawn
#

Right naothumbsup

hot cliff
#

there might be a template for 010

#

atlus epl

hot cliff
#

ok actually

#

there's a chance it's pulling from somewhere else

#

a lot of gmos are reused in different places

wanton wyvern
nocturne trench
#

Oh, just change it to a uint

wanton wyvern
#

I tried that and it just left the screen red or made it black (I don't remember which)

#

do I need to clear the cache for something like that??

nocturne trench
#

Nah

#

I'll have a look

wanton wyvern
#

ty risepray

#

I was trying to figure it out for a bit but kinda got nowhere with it ๐Ÿ˜”

nocturne trench
#

This what you expected?

wanton wyvern
#

no, should be more like this

nocturne trench
#

This right?

wanton wyvern
#

that looks more right, yeah

#

what did you change?

#

I'm doing a few changes as is so I'll probably just add it into my local version
also thanks

nocturne trench
#

Turns out it needs to be like this if it's a uint, opposite order to what you'd expect. It never should've been a signed int in the first place, that would've been changing the bytes.

// Colour is ABGR (opposite of what you'd expect)
private static readonly uint TITLE_SCREEN_COLOUR = 0xFF4631B2;
wanton wyvern
#

ahhh so bonq was right after all

#

should've listened </3

#

thank you

nocturne trench
#

all good

hot cliff
#

@wanton wyvern you gonna include the pink loading card and config screen?

#

is that already part of the dll?

#

you just need this

[replacement FEMC Title Screen]
pattern = C7 45 ?? 00 01 25 FF

offset = 3
replacement = bytes(B2 31 46 FF)

[replacement Fix My MISTAKES]
pattern = 75 ?? F6 83 ?? ?? ?? ?? 02 74 ?? E8 ?? ?? ?? ??
replacement = bytes(90 90)

[replacement Pink Everything Else]
pattern = 0F BA F0 07 48 8D 1D ?? ?? ?? ??

offset = 2
replacement = bytes(E8)

wanton wyvern
#

oh that is not in there right now

#

I'll do my best but I may need further help haha

hot cliff
#

ok so the aoa prompt is genuinely the last thing needed for this mod

#

based on my understanding

#

there's also the timer found in the first full moon boss but that can come later

#

any ideas on how to recolor it?

#

i decompiled the EPL and modified the gmos material data to make em pink and nothing

#

ivan was able to recolor the button prompts which aren't part of the epl i believe

#

im honestly surprised ivan wasn't able to find what colors it

#

that definitely means it isn't handled in code

wanton wyvern
#

it's not a texture, is it?

hot cliff
#

nah i checked that

#

C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\00>gmoconv C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\01\embedded.gms
load "C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\01\embedded.gms"
save "C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\01\embedded.gmo"
2 bones : 240 bytes ( 10 % )
1 parts : 448 bytes ( 19 % )
2 materials : 160 bytes ( 6 % )
0 textures : 0 bytes ( 0 % )
1 motions : 1272 bytes ( 54 % )
filesize : 2316 bytes ( 100 % )

C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\00>gmoconv C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\00\embedded.gms
load "C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\00\embedded.gms"
save "C:\Users\airin\Downloads\BOKO_SD_2_extracted\ep\00\embedded.gmo"
2 bones : 240 bytes ( 13 % )
1 parts : 440 bytes ( 24 % )
2 materials : 160 bytes ( 9 % )
0 textures : 0 bytes ( 0 % )
1 motions : 728 bytes ( 41 % )
filesize : 1764 bytes ( 100 % )

#

just materials

#

i got a hex script to compare two modified bed files of the same skill

#

because pioziom recolored mamudoon to be red for signature skills+

#

i can compare the two, the original and the red version

#

only problem is that i can't make any sense of the changed differences ๐Ÿ˜”

#

somehow there's 90 differences?

wanton wyvern
# wanton wyvern I'll do my best but I may need further help haha

yeah some of this code doesn't make much sense to me haha
it looks like the current code only accounts for the title screen, not the fixed mistakes or pink everything else

main thing I'm trying to figure out right now is how offsets are applied and what the heck the use64/mov dword lines do

wanton wyvern
#

what is the "fix my mistakes" bit about?

#

and the pink everything else?

hot cliff
#

oh there's a crash with the pink card on load

#

the fix the mistakes thing fixes that and stops the crash

#

pink everything else is the loading card and config menu

wanton wyvern
#

gotcha

hot cliff
#

i'm sure swine could explain how to update it

wanton wyvern
#

I think I've gotten most of it figured out so far, it's just the function itself I don't understand

#

incredible I know

hot cliff
#

oh

#

weird

#

i think that's telling the game to decode the instructions

wanton wyvern
#

this is how the pink title screen is handled in VS

hot cliff
#

oh wait

#

do you not have cheat engine or ghidra

wanton wyvern
#

I do but I'm just trying to convert the rest of your expatch into code for the mod dll

#

basically eliminate the need for the expatch altogether

hot cliff
#

well i'm pretty sure the fix my mistakes one is two "nop"s lol

wanton wyvern
#

(also because expatches don't allow for config stuff)

hot cliff
#

hence the 90 90

#

the pink everything else is also technically that

#

instead of a BTR

#

it's a BTS

#

gah i wish i could help more but i also hardly understand this stuff

wanton wyvern
#

yeah haha ill be honest none of what you said made sense to me LMAO

#

this is like assembly or adjacent i'm pretty sure

#

no wonder it's so troublesome

hot cliff
#

yeah it's basically assembly

#

i'm pretty sure you just put the assembly instructions into the quotation marks

#

which you can get from opening up cheat engine and finding the addresses

wanton wyvern
#

and it seems I can't just do this as well, I was hoping to just have it in here so 1 config option would control all the different changes

#

there's probably a correct way to do it...

wanton wyvern
hot cliff
#

uhhhhh

wanton wyvern
#

fair enough lol

hot cliff
#

hahaha sorry

#

brains a little fried\

#

gimme a second

wanton wyvern
#

no its okay

hot cliff
#

lemme think

wanton wyvern
#

this stuff is frying my brain too none of it makes sense lmao

hot cliff
#

it would be a helluva lot easier if you had the addresses i had

#

so you could just insta jump to where i'm at

#

but i didn't keep track of those so i only have the memory

#

hm

wanton wyvern
#

all of that just to do this lol

#

this clearly won't work but it's a start

#

I don't know if this is actually the right way to do things though ๐Ÿค”

#

i wonder if I even need to specify separate hooks or if I can just use the title screen hook?

hot cliff
#

calling in the 2nd big guns

#

@novel crane any idea?

#

trying to update the dll to feature the new expatch stuff

wanton wyvern
#

2nd big guns ๐Ÿ˜†

hot cliff
#

mainly the fix my mistakes and everything else

wanton wyvern
#

yeah im gonna put this aside for now because my brain hurts

novel crane
hot cliff
wanton wyvern
hot cliff
#

link your github brawler

#

ignore the analysis screen stuff that's something else and not part of the mod

#

just everything else and fix my mistakes

wanton wyvern
hot cliff
#

also ignore how much of a mess my expatch is

#

it's beautiful and i am proud

novel crane
#

idk what im supposed to be looking at, and im not reading 100+ messages ๐Ÿ˜ญ

hot cliff
#

we need to take this code

#

[replacement FEMC Title Screen]

pattern = C7 45 ?? 00 01 25 FF

offset = 3
replacement = bytes(B2 31 46 FF)

[replacement Fix My MISTAKES]
pattern = 75 ?? F6 83 ?? ?? ?? ?? 02 74 ?? E8 ?? ?? ?? ??
replacement = bytes(90 90)

[replacement Pink Everything Else]

pattern = 0F BA F0 07 48 8D 1D ?? ?? ?? ??

offset = 2
replacement = bytes(E8)

#

from the expatch

#

and apply it to the titlescreen.cs

wanton wyvern
#

first one is already done

novel crane
hot cliff
#

so it can be configured on and off

wanton wyvern
#

(i am coping rn)

hot cliff
#

we just need to turn the expatch into a configurable on and off option

wanton wyvern
#

it's already been merged

hot cliff
#

yeah that's the commit difference shower

novel crane
hot cliff
#

oh

#

so do we have to translate the changed bytes into the actual assembly code or nah

#

or can we also do a SigScan and directly replace the bytes

#

like this here

novel crane
#

you don't have to, you can just write to memory manually

hot cliff
#

oh neat

#

so we can get the address from a sigscan, pass it to that, then get the bytes

#

how would you write the bytes as an int value? just like 0xE0 or whatever?

novel crane
#

BitConverter will handle converting it to bytes