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.

Topics - DLPB

Pages: [1] 2 3 ... 7
First to fall over when the atmosphere is less than perfect
Your sensibilities are shaken by the slightest defect.

Now, if I tell you that you suffer from delusions
You pay your analyst to reach the same conclusions.

Troubleshooting / FF8 - What's the deal with the textures?
« on: 2017-09-07 23:30:14 »
I don't come to this section often... but what's with the boxes around the textures?  Those should not be visible.

I worked with JWP to solve this issue for user Giud, and eventually we got there.  FF8 is a NIGHTMARE to debug.  The optimizer being on without stack frames is only the start.  This may be useful to those with epilepsy.  Use HextEdit (or other hex editor) with the following:

Code: [Select]

{For certain flashes like critical attacks
{1067BC = 90:5

{Disable all battle flashes
1712C0 = C3

When using HextLaunch (memory addresses), it is

Code: [Select]
{For certain flashes like critical attacks
{5067BC = 90:5

{Disable all battle flashes
5712C0 = C3

If you only want specific critical flashes to be disabled, move the curly bracket { over the second entry and remove it from the first.

This is for the English Steam version.  Other versions will need new addresses.

I seem to be missing them, and I need them if I am to work on Raw.dll

Anyone have a nice tidy package?  All languages, all versions. If so, let me know and I'll open PM for you.  If you already can PM me, then do so.  :)


Any GoT fans around?  Well, here are my thoughts - posted on imdb.

Contains spoilers.

Season 1 to 4 = 10/10.

TVW = TV writers.

Since the TV show left the books behind (around S5 on), the show's writing has gotten worse and worse. I think the first poor episode was probably the one where Arya is being pursued by the T- 1000. It was utterly absurd. But this season (s7) has been by far the worst.

Aside from the odd decent moment, and the awesome spectacle of the dragons, it has been average at best. Melodrama has replaced a proper narrative. Contrivances have replaced logic. Let me give you some examples:

1. Daenerys has spent her entire time planning to invade Westeros. And when it was finally time to do so, the dumb TVW threw a spoke in the wheel. Out of nowhere, she suddenly can't hurt any bystanders, so holds off the attack on King's Landing (Yeah, 'cause she hasn't had to hurt any innocent people in order to get to the position she is in now, has she!?) This silly little contrivance is designed to prolong Cersei on the throne (itself a really dumb idea) as long as possible in the most artificial way possible. The TVW are completely strawberriesting on logic in order to force this demented Mexican standoff. The latest episode goes even further... A proposed alliance between Cersei and Daenerys and Jon - to defeat the Army of the Dead. Jon and co have to prove to Cersei that the army is real by capturing one of the living dead. Just think about how DUMB that sounds. As if Tyrion, or Daenerys, would be entertaining anything of the sort, especially at this moment in time. Tyrion would never even advise it, because he isn't stupid enough to trust his sister for ANY REASON.

2. The long awaited reunion of characters was handled in a really clumsy way. It was dreadful. Where was the real emotion with Sansa- Arya or Bran-Sansa? It was non existent. It was like these people were just ordinary buddies who chanced upon a meeting. I was really looking forward to seeing the reunions, because we have been waiting since SEASON 1 for it. What a complete let down that was.

3. Characters are everywhere at any time, as if they have a teleportation device. Daenerys hears that the Lannisters have taken Highgarden - and the next minute, her army is right there with Jaime in the thick of it. The continuity has gone out of the window. Whatever the writers want to happen happens. Magic wand, LAZY writing.

4. Melodrama / soap opera nonsense. In the last episode (S7E4), I had to suffer watching jaime being saved by Bronn in the most ridiculous way there is. The cliché and brainless 'last second save'. And then, as I fully expected, we open episode 5 to discover they haven't been captured and have miraculously managed to escape unscathed, floating in deep water while WEARING ARMOUR and A SWORD! Holy crap. That's what happens when you run out of actual genius (Martin's work) and have to work on your own crappy, limited brain (TVW).

5. Characters aren't behaving like they should be. I've already mentioned Daenerys in regards to this, but it extends across the board. Bran "OOooo I am suddenly not Bran anymore... but I can feel who he was" or some slop. He still hasn't explained ANYTHING to anyone, even though the world is about to do battle with a mortal threat that he understands better than any other person on the planet. Sansa's turned into some awful caricature, totally alien to who she is as a person. And don't give me the Ramsay bullstrawberries, since that was a dumb TV move in the first place and never happens in the books. Cersei is somehow queen and ultimate ruler, and making logical tactical decisions. But, here's the thing, it's already been established long before now that she is a useless tactician, and a naive, childish brat, who has no leadership qualities. But that's all out now, because they need her to be a main antagonist on the show. Speaking of Cersei, her one remaining child died and her emotion to it was zero. That's after it being well established that her only reason for carrying on with life was her children. Oh, but let's just switch off our brains again. The TVW said it's all OK! Whoopi-doo.

6. Contrivances. For example, Jorah Mormont needs a cure. Suddenly, he's managed to trek to some sort of hostel hundreds and hundreds of miles away, seemingly to just die - where he meets up with Sam - who not only finds a cure in a random book, but manages to pull off the delicate procedure, explained within, at the first time of asking. Then Jorah is back with Daenerys super-quick time. It's just so damn lazy and transparent.

7. Dialogue. This has taken a big hit as well. It's always been the case that the writers think swearing is uber-cool and shoehorned it into as many places as possible - but now they are out of Martin's material, a lot of the meat is gone. Tyrion stands out the most. The TVW are in over their heads. They are out of their depth.

Does anyone think Martin will be remotely THIS incompetent? The TVW have always made a mess when changing things (very often for no sane reason) from the books. For example, army numbers and population numbers being exaggerated to absurd levels; ridiculous and unrealistic events, like Sansa marrying Ramsay; over the top swearing, sex, nudity - for no other reason than to appeal to the mindless, lowest common denominator. But this is worse.

It's still entertaining, but the quality slide after S1-4 is larger than people are admitting. Some cool scenes with dragons isn't making me blind and dumb to all these issues.

also see


It's my birthday today, but I seem to do things backwards... so I am the one handing out presents.

Supports LoopStart and LoopEnd tags (as will my FF7 dll - and the next version of RaW for ff8).  Any issues, let me know.

I created FixLoop to help me create the audio files for FF7 - which required precise loops. With this, you can use "GoTo" and see how your loops sound - whether there is any popping/clicking and so on. It will also play audio files perfectly, something most players fail at with small audio files.  Many formats can be played- but only OGG loops can be saved from the program. It isn't recommended (as far as I am aware) to use MP3 for loops anyway.

See the help file for more information.

Download 1.3 here

Completely unrelated / Carmina Burana
« on: 2017-06-03 00:54:06 »

The opera that was used to form the lyrics of A One Winged Angel. Clearly a favourite of Uematsu's as well as mine. This performance is one of the best I have heard. 

Were diu werlt alle min
von deme mere unze an den Rin
des wolt ih mih darben,
daz diu chunegin von Engellant
lege an minen armen.

Were all the world mine
from the sea to the Rhine,
I would starve myself of it
so that the queen of England
might lie in my arms.

FF7 The Big Bad Bug Database

Final Fantasy VII suffers from a very large number of bugs, across all modules. Some are small and insignificant, and some can hang or crash the game. White Wind and I are attempting to log all known bugs with Final Fantasy VII PC (1.02 English with Aali's Driver/Steam English version) and then find a solution. 

We can't possibly find and fix all the bugs, so if you see a bug that isn't in the database above, or you think you can fix a bug, please don't hesitate to post here.


Audio Mods / Automatic Loop Point Detection
« on: 2017-04-16 03:54:28 »
I've been killing myself for nothing. Learn from my mistake.

This can find the loop point usually to a perfect sample (the search will take time - but it's worth the wait). I am using it to find loop points for sound effects that are too tricky to do by ear and eye.

Edit.  Hmm then again, it's still not great with music.  Still, it can be used as a guide.

Completely unrelated / Megaman Music Fans?
« on: 2017-04-02 14:30:47 »
Well, Megaman 3 haha.  I think that was the best of all - certainly music wise. It's uncanny how well 8 bit game music works on piano.


Intro again

Snake Man

Proto Man

Spark Man

Wiley Stage 2

Top Man

Magnet Man

Orchestra MM1-3.

I know I can cheat using something like dxwnd, but I want to do this properly.  I have spent a lot of time looking at the apis (like destroy / createwindow, which aali seems to use), setwindowpos, setwindowlong... you name it. But I clearly have no idea what I am doing. It's like the blind leading the blind.

The game starts full screen and I have no idea how to make the game work in a window. Aali's driver seems to destroy the initial window, and recreate it - but it's not as simple as that, since that alone just leaves a black window. So how is it done?

If anyone can help, then please do.  Set ff7config to software mode (using nvidia tnt seems to work ok for me) or hardware nvidia tnt - and have a look at 6786bf.

Yeah, I don't use it - and I disabled it.  But, still, a huge file remained on Drive C.  I didn't know about it until I decided to look at hidden system files.

So, if you want to save some GB of space...

powercfg -h off

Use that inside the command window (cmd).

Scripting and Reverse Engineering / [FF7] FF7ddraw - WIP
« on: 2016-12-20 08:34:11 »
WIP. See latest post.

I will add to this if I do more work on it.  Suffice to say, this stuff is really irritating. As I mentioned before, the code is a joke.  You have numerous functions doing mostly the same thing - calling one another after numerous checks to decide everything from loops to which channel to dump the effect on.  The field module does this by script, which is fair enough, but the battle module doesn't have a set standard.  Take a look at the following paths that the processor took to initiate a sound effect from dsound:

Path for enemy attack (just one I chose at random)
call 005BFFF3 
call 00745606
call 00745160
call 0074A795

Path for menu cursor (menu outside of battle also)
call 0074580A
call 00745160
call 0074A795

Path for Summon effects
call 005BFFF3
call 00749404
call 00748D69
call 0074A795

path for disappearing characters
call 00748F8F
call 0074A795

As you can see, this isn't a case of a sane, or rational, or well coded function. It's a giant mess. Some effects, like the sound used when characters disappear before a Summon, use a dedicated function, like 00748F8F. This function is ONLY called for this ONE effect.  Despite the fact they could have just used 00745160 - or any other function that eventually calls 0074A795. And there's the first problem.  Even if you do hijack the functions that do most of the work:   005BFFF3  and 0074580A , you are still left with these oddities.  There are others out there too.

It's like the programmers lost track entirely of what was going on. There is a ton of duplicate checking code.

005BFFF3: This has 3 parameters.

1: Pushes identification to decide how to proceed.
Code: [Select]
21 to 23: Calls 00749404
24 to 27: call 745606 and let it decide the channel.
28:Channel 1, call 745160
29:Channel 2, call 745160
30:Channel 3, call 745160
31:Channel 4, call 745160
Else call 745606 and let's it decide the channel.

Yeah, you aren't going to believe how these silly ID numbers come into being either.  They seem to be plucked from someone's brown end. When the function is called, it deducts 21 from the ID.  So if the value is less than 21, you get 20 - 21 = -1 (sigh which is then seen as HIGHER than 10 using a "Ja" - so it ends up calling 745606. It also has a silly table to decide the jump positions and even that isn't logical.  I have solved this above (as you can see).

2. L/R Balance of the sound effect (where 00 is left, 64 is centre and 127 is right).

3. Effect ID (0-750, but some of these don't even exist past a certain number). Note that a check is done in numerous functions to make sure that the range is correct.

So as you can see, 005BFFF3 doesn't know what to do until the programmer tells it. It is sent a balance value and the effect to play, but what path it takes from there depends on the stupid ID it is given.

0074580A: Haven't really gone into this one much but it ultimately ends up either playing the effect with centred panning on channel 5 (4) using 745160, or it calls 00745CF3 with the effect ID and does another raft of checking.  It's bizarre.

Then we have akao/akao2 from field script.  At least we know exactly how this works and it is guaranteed that one of these is going to be called in order to play an effect from the field.  So, unlike battle, you aren't running around trying to disassemble the universe. The field code effects probably won't take me long to code.  But the battle side of things is tougher if we want  to completely replace the original engine. Unless someone can shed some light on how call 0074A795 actually uses all the data it is given to produce the effect using dsound.

But even then it may still need multiple changes elsewhere.

I am not going to go into this in any detail. Firstly, because I haven't myself that much; secondly, because it's boring. But a no-frills explanation is this:

There are numerous and chaotic functions that make the simplest idea the most convoluted. Functions calling functions where, if proper communication, time, and better coding had been deployed, much of the bloat would not exist.  But, hey ho... that's where we are. I'd love to tell you that one function takes in a few parameters and then just works with them... but no. Some effects, like the Summon effects use a completely different function to set audio compared to the field version. And there are others.  In fact, I think it's even possible to call the main function (74A795)  directly, which I am sure a few areas do. 

But let's keep it simple.  The field module, as some will know, uses akao and akao2. The difference between these is that akao is 8 bit and akao2 is 16 bit.  These field functions then call another function... which passes on to another function (745160).

Most normal menu and field effects use 745160 eventually. I haven't checked if any of the other functions do this, but 745160 does:

All audio effects have an associated record of 28 bytes. I don't know what all of them do, but the only thing I needed to know was - how does the game know when to loop sounds and when to play once?

In code you can see at 7452EA, the "does this sound effect loop" flag (where 00 = no).

To work out where in memory the "loop flag" for each effect is, you just do this:

( (EffectID - 1) * 1C) + 00DE0E8C.  For example, the cursor ID is 01, so:

( (1 - 1) * 1C) +  00DE0E8C = 00DE0E8C :P  [Well, it's the first effect and the minus above makes it 0].

So look at 00DE0E8C and set it to 01. You should then get a looping cursor.

And that's how it's done.


The mov eax,[edx+00DE0E9C] at 745479 is actually retrieving an address for sample rate for the effect.  In this case, 44100.


Watch this first.

Americans have a choice. The choice is between a successful businessman who says what he thinks - however politically incorrect - and genuinely wants to end corruption, or a family who have lied, and cheated, and broken the law all their lives. It really is that simple.

Hillary is back under investigation by the FBI for her flagrant disregard for even the most basic of security laws. Hillary lied about a 12 year old rape victim, claiming that she was a fantasist who pursued older men. Hillary did this knowing the victim was in a coma for 5 days, and knowing the accused was guilty. She has even lied about her whereabouts on 9/11, claiming she was in New York. Her campaign knew about - and orchestrated - riots at Trump rallies. The list of laws she has broken is incredible—and she is running to be your leader.

So what will you get from her, other than lies and corruption?  Well, she thinks Merkel is a genius and wants to ape her European model. This means that you can forget your borders. She wants to grant amnesty for illegal immigrants (because they will then vote Dem), and citizenship for Syrians, knowing full well they can't be properly vetted (because they will then vote Dem). She won't be held accountable personally when one of them kills or destroys. France, Germany, Belgium, and Sweden have all paid a heavy price for the retarded leftist agenda.

Fine. Trump said some naughty things.  Boo hoo.  Hillary and the left have DONE some truly awful things.  Trump didn't need to run for president - and he isn't blackmailed by people offering money, like Hillary.  If you want to join Europe as a failing, dying, Islamic hell-hole... VOTE HILLARY.  If Not... and you have any sanity... VOTE TRUMP.

This election is more significant than most because two or more Supreme Court judges need replacing. Trump has already made his choice for who will replace them, and they are a sane choice. They will uphold the constitution. Hillary will stack the deck with far left judges who will implement her crazy Leftie dream. Ask Germany how things are working out.

A message I sent to someone else:


Hillary and her camp:
Mexicans are "Taco Bowls"
Bernie Sanders voters are "Basement dwellers".
Trump supporters are "Deplorables".
Women Bill abused are "Bimbos / Trailer trash"
Black people are "Super predators"
Latinos are "Needy"
Catholics are "Severely backwards" [notice no mention of that other protected religion anywhere]
Child rapist's victim is an attention seeker who sought out older men.
Laughs at getting child rapist off the hook and knowing he was guilty.
Deleted 33,000 emails and broke one of the country's most serious laws.
says that Breibart has "no right to exist" and that she will shut the website down.
"We came, we saw, he died"  Laughing her head off like a little child over a murder and over an extremely serious matter.
Wrecked Libya
Wrecked Syria and is now trying to start a war with Russia.
Repeated lies.

Yeah, how could we ever vote for Trump?

I am trying to add a new field to flevel and jump to it in the game.  I've successfully added it (edited maplist too), but when I try to jump to it, the game crashes. Clearly there seems to be something going on in the exe too - but so far I can't find anything.  Actually, I had to disable one part that defaults to chocobo farm if the ID is 787 (the newly added script). Unless there is something more at work here.

Completely unrelated / Random Old Topic. Very funny.
« on: 2016-09-29 03:25:18 »

I sometimes check out the online users of this forum, and it never ceases to amaze me what topics are being read. Maybe most of the guest users are just bots or something, but some of this strawberries is hilarious.  This one is probably the best one I've seen.   :-D

The Butcher hates Chocobos, and will chop them up whenever he sees them. Take him to the Chocobo farm, it's pretty funny!

Hahaha!  I never even heard of all these whacky rumours. This guy dealt with it using humour :)

It's only a matter of time before I end up smacking my monitor, so please help me not do that.  Here's the issue - some games (FF7 Steam, and FF8 original and Steam, and I think EPSXE emulator too) show "Not responding" for very brief and random(?) intervals. When this happens, the game window jumps a bit or flashes. It seems to happen on FF7 and 8 a whole lot more when the window is not in focus.  I am not sure if this happens in full screen mode.

I've tried different graphic card drivers. This is a very good system using i7 processor and GTX760. Perhaps this is some silly bios setting for the CPU? Because that's all I can narrow it down to.  I do not have an antivirus software installed - and this issue happens from a Fresh Windows installation. I am using Win 7.

New Frame Limiters

Download L02 HERE
Donate HERE

The Reunion comes with new frame limiters and 60FPS Battles. Since some people do not want to install The Reunion, I have generously (:-P) branched these modifications off into this installer.

This mod should fix the frame limiter on the following modules: Menu, Battle, Field, World, Chocobo Races Minigame, Fort Condor Minigame, Submarine Minigame.

You can speed up the game (up to 8x) by holding Select and pressing R2, or slow it down by holding Select and pressing R1. If VSync is enabled, the upper-limit will be your monitor refresh rate (60 for most people). The maximum speed will also be dependent on the performance of your computer.

FMVs can be skipped by holding Select and pressing Start. Please be aware that skipping a small number of FMVs will cause the game to hang. So be careful.

Finally, Game Over can be forced from a battle or from a field by holding L1, L2, R1, R2, Select, and Start.

To find out which key or control is linked to the above, see the game's Config menu.

This mod will also make any timers that were previously based on Windows internal timer (using TimeGetTime / GetTickCount) frame-based. These are: Countdown/Up Timer, Main Game Timer, Submarine Timer. This means that timers are now accurate to what is happening on-screen, which is fair. Originally, any slowdown of the game would not affect the timers. The Snowboard Minigame's timer is still time-based and is only modified in The Reunion (R05+).

Additionally, the pause function on all modules now properly halts the Main Game Timer. 

Finally, I have also included the 60fps Battles mod in this installer as an option.

Please see the "Limiters - Help.rtf" file for more information.

OK - so here's the issue. As most us know by now, FF7 is a glorious mess. Glorious in the literal meaning, because it is obviously a great game, but a mess because you can clearly see how slap dash it was all thrown together. It reminds me of the first programs I wrote - where I just heaped on code to fix crap code - and kept coming up with workarounds because I was too lazy, or too far down the rabbit hole, or wanted it done and dusted.

FF7's engine suffers with this all over the place. One such place is the ridiculous specialist menu opcode in the field module. It's where the programmers realized "strawberries... our engine doesn't support that - Let's just add another operation to fix it. We'll shoehorn it into the Menu function."  When, really, the game should have been thought out in advance, so that no slap dash fix was even needed.

That brings me to the field 'bugin1b', where mastered materia can be fused into a Master Command, Master Magic, or Master Summon. One operation checks whether the relevant materias are present and mastered - and if this check is successful, the next adds a Master materia and removes the mastered materias that were 'fused'.  The problem is, this function tries to add the Master materia BEFORE removing the mastered materias that were fused.  So, if your inventory is full, you will lose all your individual mastered materias and gain absolutely nothing for it.  Clearly a huge oversight.

How to fix?  That's why I am here. One operation that exists is "amount of materia".  I haven't checked if this is working, but if it is, then it should be possible to manually check for each materia.  This would be a bit annoying and time consuming.

The other operation seems to be broken.  I first add a materia (let's say MP plus) to see if the inventory is full.  If it is, the materia is not added and I don't proceed.  But if it isn't, the first thing that is done is to remove an MP Plus.  Sadly, this operation is yet another that is broken in the PC version.

Maybe I am just here to hope that I don't have to manually check for each bloody materia.


Oh, it's absent in PC.

So there we have it... I think I am screwwwwed haha.

General discussion / FF8 Retranslation Project.
« on: 2016-06-05 13:39:13 »
No, I'm not really going to do it.

But this is interesting. Seems FF8 was here and there too.  Not as bad as FF7 by any means (Alexander O Smith isn't a slouch) - but not great either.

General discussion / Where is this played?
« on: 2016-06-05 00:54:09 »

It is a variation of the Galbadia GARDEN theme.  It has a slightly longer intro.

Is it played? If so - when and where?  It's bound to be played at Galbadia Garden if it is played at all.

Pages: [1] 2 3 ... 7