Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - DLPB

Pages: [1] 2 3 ... 363
You're such a doof Dan ::) The encoding of that particular file has been flipped up, if you look at the original on github you can tell what's supposed to happen there.

Yeah I had a feeling that it was an altered line somehow.  I'm not sure where it went wrong because I downloaded it from the other link you sent.  I'll have a look. ;)

What did you originally compile the source in?


Code: [Select]
font_map['í'] = 114;
I figured it was that from the code in a hex editor...  but why is this one being assigned and the other specials are not? Was this originally a problem?

In the coming days, I will be releasing a new version of the driver - though it will likely have a few hiccups, given Luksy has had to rebuild it for VScode. I'll try to iron those out with him before that day.

Meanwhile, I noticed a slight bug in the code that I am awaiting Aali's input on.

I have added my screen centring code for field and FMV already.  I intend to modify the driver for use with Steam versions of FF7 (albeit with a check for proper install / non-pirate game).  It may be the case that, in the future, I decide to create my own fork that supports FF7 English only (it would be working with my own DLL too - to allow anyone to use 1.02 English for modding purposes)  - but for now I am adding some fixes for all - and will try to fix the odd issue we had with FF8 (like controllers losing focus). 

I will have to make a decision on how much work I am willing to do for FF8 and non English FF7.   Of course, Aali has now released his source and I am willing to work with any programmer who wishes to maintain the driver (minus any way to bypass buying the game).

Ultimately, I want to create a way for people to be able to use FF7 1.02 English as the sole exe. I have a great deal of thinking to do.

ujunon1 example

The unknown bytes in walkmesh > misc.

At least some of these are to do with the starting offsets X and Y for field.

I am currently adding field centring to Aali's driver and I had to look at the asm.  When I traced back what values were involved in the main screen offset X Y for field, this data is used.  For example, Y offset (or one of the ones involved) is at MainFieldOffset + 0x24

006443F9 - 0FBF 48 24            - movsx ecx,word ptr [eax+24]

Code: [Select]
75 6A 75 6E 6F 6E 31 00 00 A0 40 00 00 FF 00 FF 00 01 00 01 00 00 00 00 00 04 00 04 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 02 78 00 00 00 4A 02
You can see here the A0 (Movement orientation)  and 40 (Camera focus)  - but  the 0x24 byte is offsetY of the  screen.

In fact a lot of those values marked 00 in misc are set in the function involved with the address above.   I have successfully changed global Y offset without interfering with this data.  I was going to force the change by bypassing this, but some fields are relying on this data.

From the 3rd byte on of misc data (zeroed part), it seems to conform to MainFieldOffset + 0x22 onwards.  I am unsure what the preceding 2 bytes do at this time but they don't match 0x20 and 0x21.

For example, in bwhlin2  misc unknown data is

00 f7 80 f6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Yet we see in asm

62 77 68 6C 69 6E 32 00 00 80 00 00 60 FF 88 FF A0 00 78 00 00 00 01 00 00 04 00 04 00 04 00 04 88 FA 80 F6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Above in red, the main Y offset of screen.  Chances are that changing this word to 10 (or perhaps 8) will centre the field (or at least move it down)- but will need some testing.

thanks for all the hard work you put in this mod

Also, editing your posts in an obvious and feeble attempt at covering up what you originally wrote really doesn't work, Zara.

But I suppose that's something.

I don't know R3000 mips.  All I'd say is, the code you have there looks about right and you need to set her default attack power to 1.  Probably by setting one of those zeroes to 1/

Also, when I get round to releasing Reunion.... the new musics have had loop points fixed by a program - cause a few were slightly out. 

ha. i got confused. yeah thats pretty decent proof it was deliberate id say. i think it was a delib action. It's a tough one to call.

DLPB - Today at 11:05 PM
ok well im gonna go for deliberate
on basis that she is the thief
and the timing of it aboard that ship

I spoke with DynamicDJ in Discord last night and looked into this.  I don't think the Morph issue is a bug.  Like DynamicDJ  said to me, the Conformer and Morph are conveniently in the same place - and the developers may have known that the weapon Power value would be used rather than the Morph Power.

Oh yeah I get that :)  It's just the game splits up the two, as you have in Wallmarket - and then assigns flags and functions based on one part and the other.

I also saw the look up table at 8FF1F8, but the function that contains the Ultimate Weapon formulas seems to hold a lot more besides.  Haven't looked into what other stuff it has.

8FF238  seems to hold the Special formula (not Ultimate Weapons)

Damage formula is split into 2 parts [Use tool Wallmarket to have a better idea].  Let's use Conformer as an example.

First, the type of attack. Conformer uses A

A is Physical.  Check accuracy, Critical, and Ultimate Weapon formula (only used for the 9 ally Ultimate Weapons)

Next, the sub type.  Conformer uses 3.

3 sets the power value to be the average of enemy level.
3 is a subtype of A - so it HAS to be used with A.

The byte in full is thus A3, in the game, at Attacker's Data (99E308) + 40.

The game actually splits this back up into A and 3 in function 5D17C7 and places these values in Attacker's Data (99E308) + A0 and Attacker's Data (99E308) + A4.

From here, for some reason, it assigns another value for the type and subtype based on these values.

Conformer ends up with a Type of 5 (from table 8FF068) and a Subtype of D (from table 7B7720).

From here, 5 and D (for Conformer) are also used for other functions and to set certain conditions.

The alternate SubType value is placed in Attacker's Data (99E308) + BC

The alternate Type value is used (in function 5D17C7) to set other conditions (3 total).

If a Physical attack is set, it will set an unknown flag to Attacker's Data (99E308) + 6C.

If Special Formula (Type 7) is set, it does a meaningless(?) check to make sure that the Subtype lies within a range.

If Ultimate Weapon formula is set (A), it will assign a Subtype flag to Attacker's Data (99E308) + BC. As stated above, for Conformer, this is D.

The Ultimate Weapon power is calculated from hardcoded data at function 5DC880.
Since Yuffie's Conformer is set to use Subtype  03 (changed by engine, remember, to 0D) the jump at 5DC901 will be to 5DCD83 [Set power value to Enemy average level].

And there you go.  Funnily enough, the engine does something strange there and sets eax to 1 and then tests if it is 0.  lmao. Not sure why? 

So, the function 5DC880 deals with the 9 Ultimate Weapon calcs. It uses jumps 0A, 0B, 0C, 0D, 1E, 1F, 20, 21, 22.

It's likely many more of the core calculations are done in this same function, and I will be testing that soon.

And it is a bug that the Conformer power can be 0 leading to no animation / sound but 1 HP deduction.

Programmer simply forgot that allies being targeted would result in 0 power.  He either should have done what I have above - or added 1 when ally targeted.  OR added in ability for ally levels to also be used.

Scripting and Reverse Engineering / Yuffie Conformer Bug
« on: 2018-05-13 12:17:09 »
If the flag added when Power is 0 at

is skipped, the Conformer will then correctly show damage and effects when targeting allies (damage 1).  But this check may be needed for other effects to disable damage and normal effects, like sound.

With Yuffie's conformer, there are three possibilities to what the developers wanted:

1. That when targeting allies, the damage will be 1 and that this damage be displayed.

2. That when targeting allies, the damage will be 0 and that this damage is not displayed.

3. That when targeting allies, the power rating be 1 - and thus damage will be at its minimum for allies.

I suspect that there was a miscommunication.  The normal minimum for any physical attack that lands a hit is 1.  The reason Yuffie's weapon takes 1 off is that the variance formula does it's job and makes it 1. 

But because of the power check being 0 (since allies' level isn't checked), the damage display and other effects are disabled by the flag at the address above.

The two possible fixes are:

Disable the ability to skip damage and effects when power is 0 (might break other effects)

Force Yuffie's conformer formula to have a minimum power rating of 1 (which would then affect allies with damage greater than developers intended)

It would be a lot of work to make a workaround that made her attack = 1 and display 1 when her power alone is 0.  Because then you'd be checking if her conformer is equipped.  That's possible,  but i'd prefer to not go down that route.

Could also add an additional line to variance to skip adding 1 when power is 0.

Question first is how many things are affected if 5DA71D = EB 1A

Too many are.  Frog Song, for example, will show damage being 0 instead of just doing the effect.

I think best way to fix this now is to just make the Conformer take off the minimum when targeting allies (power = 1).

Code: [Select]
5DCD8C = C7 45 E0 01000000
Will fix it.

If using 7th heaven, bug reports here are as useful as a fart in a Jacuzzi.  I don't support other mods.  It says so on the first post.

Even in the PSX version, the sound test is the same.  So if it's mixing, each ID is still its own ID 0 but mixed from 2 sources?

This is super impressive stuff.

Considering effect 120 is this (I assume)

Perhaps C6 changes pitch somehow?

Effect 144 is missing final note:

Also, since 117 seems to be alarm sound..  pitch slide might be pan slide?  Alarm has stereo difference.

Another note:  There are only 1-731 effects in the game.

My way of doing it allows for a degree of leniency but is more catered to entire mods that are self contained - because I think that's the best way of doing it.  7H is nice but it adds so many issues and will never manage to work out all the inconsistencies.

My way will be open source if using aali's driver code.  It's a fairly simple system that makes use of whole lgp reads and directmode.

I am also currently making my own mod manager integrated into Aali's driver.  But I don't know C very well so it's proving a hassle.

Looking forward to latest release.

Also, certain effects like the alarm in reactor 1 are stereo.

Very likely C2 is reverb.

I know that cursor and error don't have it, but cancel and menu do (before looking at code).  And so far that is indeed how it looks in your program.


Do you think the sound will ever get v. close to the actual PSX sound?

The thing to remember also is PSX adds its own variety of reverb - but I've noticed that only on certain effects.  I don't remember cursor sfx having it - but many effects do.  You can always tell because a no reverb effect always shows a hard stop in wave form... and a reverb doesnt.

So one of the ops will be reverb maybe?

Bug:  See effect 617.  If you play more than once, the pitch isnt being reset.  Other things may not be being reset to default on new start.

Vanilla does not have that interface. I created it.

Vanilla has 3 columns and not 1.  So you see the gaps in the same row.

I tried to locate - but I couldn't work out if the IDs are in order.  The first ones appear to be.  If in order, I will get you a list tonight.

The looping section doesnt have to be from start...  often I see what seems to be a flange effect that decays and then a looping section that can last up to a few seconds.  Loops can last much longer.

Also, you should be aware that there is a random effect operation too.  For example, birds will cheep looped, but never in a fixed pattern. It may be that it can play more channels at same time?  Though I find that unlikely.

This is normal. Those spaces are filled by higher level effects such as Blizzara and Blizzard.  The engine doesnt support neat commands.  It would have to be added.

This is seriously impressive....  you can make out exactly what sounds they are.  It's taken over 20 years for someone to tackle it.


Should be noted that some effects should loop indefinitely and perhaps thats what one of the missing opcodes does?

Pages: [1] 2 3 ... 363