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 - picklejar

Pages: 1 2 3 [4] 5 6
76
Okay, I finally have a nice URL for the site. Hopefully the URL won't change much from now on. The new location is:

http://kujatas.com/learn-japanese-from-final-fantasy-7

77
DLPB: Sure, when it's ready, just send me a private message, then I can work with you to integrate with it.

78
The URL has changed yet again to: http://35.170.174.231/kujatas/home

It will change at least one more time, but then it will be a much nicer looking URL.

79
Update: I have moved this tool from RedHat OpenShift to Amazon AWS. For now, the new URL is:

http://ec2-52-207-42-130.compute-1.amazonaws.com/kujatas/home

I'm working on making the URL a little more "pretty", but at least the site is back up again.

80
This was neat, thanks for sharing the vid!

81
Looks like at least one person had already discovered it, as early as 2013: https://steamcommunity.com/app/39140/discussions/0/846959520905317771

However, you might be the first (or one of the first) to actually discover the mechanics details, i.e. the "materia born function", confirming that it's deliberate, etc.

And I'm sure many people would be interested to know how the game decides exactly which materia gets thrown away first. Myself included. :)

82
Why rewrite them?

I believe that was a joke

Of course.

Lolcode isn't new...

Technically, it was created in 2007, so I guess it's not that new, but I never heard of it until this year. /shrug

83
Dividing all character and enemy stats by N is an interesting idea, but it would only effectively increase the cap, and it wouldn't actually fix the "game breaks if I go over the cap" issue (it only delays it), and it would introduce other problems related to the resulting loss of granularity (especially in the lower ranges), and you might have to re-balance various formulas in the game.

james_c, it sounds like you're trying to "temporarily" change a "stat" to accomplish "some change in damage, speed, etc.", without violating the 255 stat caps. In order to accomplish something like this successfully, on a "global" scale (i.e. where you don't have to modify tons of scripts in the game), I'd recommend that you first read Terence Fergusson's FF7 Battle Mechanics FAQ:
https://www.gamefaqs.com/ps/197341-final-fantasy-vii/faqs/22395

This explains things like "Primary Stats" vs. "Derived Stats", "Before Damage Effect" and "After Damage Effect", a hundred other factors, and all the math formulas for calculating damage, etc., in general. It will also explain the (very complicated) system that governs speed and timing.

The other thing I'd recommend looking at is to find out how the game does similar things to what you're wanting to do. For example, what happens when a character drinks a Source potion during battle, which normally raises a stat by 1? Does it permanently affect their stat after the battle has ended? How does Berserk accomplish a temporary hit% decrease? How does Haste accomplish a temporary speed increase?

You might find that you'll need to invent new stats and modify existing formulas to accomplish what you want? Not sure, depending on how creative you get.

Good luck!

84
Completely Unrelated / A new esoteric programming language
« on: 2017-12-17 15:13:16 »
There's a breaking new programming language:
http://lolcode.org/

Some basic examples:
http://leyarotheconquerer.github.io/lolcode-reference/basic/reference/2016/04/12/basic-reference.html

Q-Gears and all FF Tools in general should be immediately re-written in this new language.

85
There can be duplicates because of the way the voiced syllables work. I can double check those specific letters though. I think one form is usually much more common than the other. Try clicking on them to see where they are used in FF7 (if at all).

86
DLPB: Thanks, that clears up a lot!

All: I've added some new features to my worldmap script disassembler:
  • Now shows friendly var names for known model IDs: $Cloud, $Tifa, $Cid, $UltimateWeapon, $Highwind, $Submarine, $Chocobo, etc.
  • Now shows friendly var names for known system functions: $OnWorldMapLoad, $OnFrameTick, $OnEnterHighwind, $OnTouchMidgarZolom
  • Now shows friendly var names for known model functions: $OnModelLoad, etc.
  • Now shows friendly var names for known chocobo types: $YellowChocobo, $GreenChocobo, etc.
  • Now shows friendly var names for known submarine types: $BlueSubmarine, $RedSubmarine
  • Now shows the full "call table" (list of system functions, model functions, and walkmesh functions)
  • Now shows which "call table" entries invoke which sections of code. Sometimes multiple functions point to the same code. For example, System function 25 and Highwind function 25 both point to the same address.

So, the World Map script is becoming much easier to understand now.

I've updated the example I posted earlier:
http://kujatas-picklejar.rhcloud.com/wm0.html

87
Thanks sithlord, I didn't know a lot of that stuff. Good point about playing with Black Chocobo, you can just edit your save game and put whatever coordinates you want, and experiment that way. Also, I bet Ochu can be used in a similar way, and in fact it has a lot of pre-defined locations for you to choose from.

Anyway, thanks again, I plan to use this info and to keep playing around with it...


88
Thanks for the info but field.tbl file Its for world to field. For example if I change some values,  when I enter to midgar the model appears in kalmĀ“s entrance. I want to find otherwise, if I leave a town the model appears in other world coordinates. You know what I mean?

Yes. When you go from worldmap to field, the worldmap script uses field.tbl to determine which field to go into. But when you go from field to worldmap, how does it know where to place the character?

I think I know the answer, or at least part of it. There's a large section of code in the worldmap script that does a series of checks like this: "If GetSpecial(6) = 1, put the character at this coordinate facing this way; If GetSpecial(6) = 2, put the character at that coordinate facing that direction; etc." So, I'm assuming that when you exit a field, either the kernel or the field will populate that special variable with an ID that the worldmap can use to determine where they came from.

I don't know if this is fully understood yet by anyone on this board. Our Wiki for that worldmap script opcode says that the purpose of Special address 6 is "Unknown":
http://wiki.qhimm.com/view/FF7/WorldMap_Module/Script/Opcodes/117

So, what I just said above might be an important discovery for this community? :) However, the complete answer is definitely more complex. There are a lot of other factors that come into play.

woo and with your program could I make the changes I need? Any release date? xD

Showing script data is one thing; editing script data is something completely different. There are a few things that will make this difficult in the short term:
  • The data is compressed, so you can't just use a simple hex editor tool to change a single byte; you need to "extract section of file, unzip, change, rezip section, recreate file"
  • If you want to change worldmap coordinates, you probably need a visual tool to pick the location you want. The world map is divided into large square sections (meshes), and basically you have to set which mesh you want (Mesh X and Mesh Z), then set coordinates within that mesh (X within mesh, Z within mesh). I'm not sure if such a visual tool exists. The only thing I'm aware of that's even remotely close to that is, Ficedula has a tool called "Reeve" that can display world maps. But, I can't remember if it shows coordinates, and I'm not sure if we have the source code to be able to edit it.
  • Also, note that the world map itself changes depending on how the story progresses. A few of the meshes have multiple versions of itself.
  • If you want to know which fields you're affecting, this requires more understanding of what I was talking about above, about how the data is passed between field and worldmap. Perhaps it's just as simple as the special variable 6, but there's probably a little more to it than that.
  • All of the above just assumes you just want to edit a single value of a single constant. If you want to add or remove things (behavior, fields, meshes, etc.), it makes things much more difficult because you have to adjust IDs and addresses and stuff all over the place, potentially on both the field side and the worldmap side.

    So, long story short... sorry, but you probably shouldn't expect anything anytime soon.

89
Now I'm confused. Are you trying to get Aali's newest driver to work, or 7th Heaven, or both?

If "both", I would recommend changing only one thing at a time, otherwise it's going to be too difficult to troubleshoot anything. In other words, verify whether 1.02 works first, THEN apply Aali's driver and verify it works, THEN try 7th Heaven, etc. If you need help, describe exactly the history of things you did and at which "step" it failed.

If 1.02 worked, then it broke after applying Aali's driver (without any other changes like 7th Heaven), then this is the right thread.

If 1.02 + Aali's driver worked, but 7th Heaven fails, then your question probably belongs in the 7th Heaven thread:
http://forums.qhimm.com/index.php?topic=15520.0

By the way, I'm not sure if 7th Heaven supports the latest Aali's driver. I don't have much experience with 7H but I seem to remember some incompatibility issues around textures. If you want to use 7th Heaven, you might to use the older version of Aali's driver, 0.7.x.

90
Are you trying with a fresh install of FF7 with the 1.02 patch applied? Did you install any other mods?

Also:

Quote
If you find any issues, please post screenshots, relevant information from app.log and if possible, a savegame.
If you get a crash, provide a copy of crash.dmp and app.log (preferably in a zip archive, this will make it 10x smaller)

91
I wrote a program that decodes the World Map script assembly and displays it in a format very similar to how Makou Reactor will probably do it.

Here is a sample output result from Final Fantasy VII International PSX version World Map 0:

http://kujatas-picklejar.rhcloud.com/wm0.html

92
Hmm, I just found a tool to dump WorldMap script, maybe I'll just try this:
https://github.com/cebix/ff7tools/blob/master/worldinfo

93
Okay, just wanted to make sure nobody has created a tool before re-inventing the wheel. I'm kinda thinking about writing a tool to read the WorldMap script and export the data/opcodes. Might be a nice way to confirm the data that you have. (I'm guessing this is essentially what Aali did.)

BTW, I just discovered that Ficedula created a tool called Reeve (never saw it on this forum, but found it on this Ficedula programs mirror page) that is able to open a FF7 world map file and display it in 3D, similar to what you would see in-game. It even lets you fly around and navigate using the mouse. Pretty slick. The textures looks pretty good with the main world map. It can even open the other 2 maps (underwater map and snowfield map) but doesn't look quite as good. Nice program, but it doesn't do anything with the WorldMap script.

94
(You can't use M for Menu because you're already using M for Minigame, so that's why you're using U for Menu.)

The last thing I was trying to ask you was, how do you know which addresses the WorldMap uses? Is it just based on your intuition/understanding, or are you using some tool?

I just discovered that we have a Wiki page that describes the WorldMap opcodes (and the WorldMap Module in general), but did Tonberry or Ficedula or anybody ever create a tool that actually uses this? I tried Makou Reactor, but it doesn't seem to work, at least not when I try 1.6.5 against the PC version of the worldmap files.

95
DLPB: Regarding your spreadsheet: https://docs.google.com/spreadsheets/d/1u3oNeD2-D8_Js0FhV1nybMBAbzGKD5XUpg2_SdKZ4ik/edit#gid=867617175

You have a column called "Use". For the benefit of sithlord and myself and others, can you let us know (perhaps add a tab!) the meaning of the different letters? Something like:
  • F=Field
  • W=WorldMap
  • B=Battle
  • M=? (Minigame?)
  • U=? (Menu?)
  • H=? (Kernel?)
  • (any others)=?

Also, how are you determining the address usages? I'm assuming for Field you're using Makou Reactor, but what about WorldMap and the other modules? Are you using a tool that does reverse assembly? (And if so, which tool, and is it for PSX or PC version?)

96
Lots of great info, thanks to both of you!

Quote
its not really that much data it since it uses two methods for access one is 8-bit the other 16-bit
Quote
The var manager is vastly improved in makou since i did this kind of mapping and it shows you in makou how its used!

That definitely explains a lot. For example, vars.cfg shows stuff like:
1|3|$AerisLovePoints
...
2|0|$GameMoment
...


But, as the Var Manager helps illustrate, Var{1}{x} and Var{2}{x} really point to the same address.

Also, for example, if I open md1stin, Group 0, script S0 - Main, line 7, I see:
Var{2}{28} = 763 (16-bit)

This is nice and clarifies that Var{2}{x} will be a 16-bit operation.

Also, when I go to Variable Manager, I see a button that says "Addresses Used". If I click this, it highlights in yellow all the addresses that are accessed, and shows whether they are read (r) or written to (w) or both (rw). This is also nice.

This is all fantastic. It seems like we're just one step away from doing something even more fantastic. What would be really cool is if I could go to the Variable Manager, then select a specific Var/address, then click a button, then it could show me specifically which scripts actually use it. Is that possible in Makou Reactor yet?

Yet another idea would be to create separate var names for individual bits, so that we could show something like "if (BITSET $HiPotion_mds7st1_PickedUp) ..."

So much to do, so little time... ;)

97
DLPB, that spreadsheet looks like your Beacause non-dialogue translation. Is that what you intended? (Was hoping it had animations or vars.)

98
Thanks DLPB, that helps

99
I've recently gained a big interest in Makou Reactor again. I'm seriously considering downloading the source code and building it and using it in some closely related projects.

One improvement that I was considering was to annotate animations with friendly names, so that it says "runs" instead of "animation xyz". Similarly, help track down the purpose of all the Var[][]s.

myst6re, if you'd like me to help out in any way, please send me a PM. Maybe I can take a crack at fixing graphical bugs and/or adding features. (I actually have experience with FF7 model files and 3D gfx.)

100
Update: Version 1.1 is released! And actually, there were a couple of other releases before this (1.0 and "Beta 0.11"), but I never updated this thread.

So, there have been lots of changes recently since my last update here. The biggest recent changes are:
  • Added statistics around which kanji strings are the most common in Final Fantasy VII. New as of 1.1
  • Major UI improvements: Much better menu, much cleaner pages in general. (Using Twitter Bootstrap.) New as of 1.1
  • Users can now add comments at the bottom of each page. (Using Disqus.) New as of 1.0

Anyway, see the first post for more info. Or just go see it yourself and play with it: http://kujatas-picklejar.rhcloud.com/

Pages: 1 2 3 [4] 5 6