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

Pages: 1 2 3 [4] 5
Oh yeah, I forgot about that one bit. :p

And by Break I do mean Petrify. Break is the name of the spell. I did the same with Annoy: the status is actually "Trouble" but at the time my main source for status name was ability name.

Also I think I've very likely found the value that stores the card. Dendrobium and Fang both store "01" (both holding the Fang card, the second card) in the byte, and Goblin stores "00" (Goblin card, the first), Beatrix stores "FF" (no card), and Ironite stores 08 and Basilisk stores 05, which match up.

Code: [Select]
16 bytes  Unknown
2 bytes   Shadow Gap Y (didn't investigate it...)
7 bytes   Unknown
1 byte    Card drop (00 to 63, FF is none)
9 bytes   Unknown

I'll confirm this in an edit later (EDIT: Confirmed. I had a Fang drop an Airship card).

Above you may notice that I dropped a byte from what you originally wrote. The total I wrote would be 35 bytes in this section, but you have 36.

So take the Goblin/Fang one for example: After Goblin, there are 36 bytes in this section, then Fang's enemy-block starts. For Fang, there are 35 bytes in this section before the Attacks/Abilities block starts.

So there is an additional byte here between two enemies in the same scene? Or am I missing something?

FF9 Tools / Re: [FF-IX] Hades Workshop
« on: 2013-06-14 16:16:11 »
The third set of status bytes do not have anything to do with immunity, they are just initial cast, and the status can be removed by standard means (like Remedy).

The fifth byte (first unknown byte, after number of attacks) of the data:
- 01 = When the battle ends in a non-standard way, do not continue battle.(used for bosses and friendly enemies--allows to continue fighting boss after death sequence if turned off)
- 02 = Always back attack
- 04 = [Unknown]
- 08 = [Unknown]
- 10 = no victory pose/no fanfare.
- 20 = cannot escape
- 40 = enemies are out of reach? (Masked Man could still hit me for full damage, i could not hit him)
- 80 = Cannot use magic (greyed out in menu, party members at least)
Sixth byte:
- 01 = Attacks take off a lot: I assume this is the Ipsen effect- weak weapons do more damage
- 02 = [Unknown]
- 04 = [Unknown]
- 08 = prevents the battle results screen.
- 10 = [Unknown]
- 20 = [Unknown]
- 40 = [Unknown]
- 80 = [Unknown]

Since my tests were against Masked Man I could have missed things, like if the unknowns were to effect EXP or Drop, or if the victory poses of some of the characters played or not (although it wouldn't make sense to decide that in the battle data- i thought the same about Magic block and the reverse weapons though).

For the first unknown (byte5) in Attack stats, you state it can only be 1F, but I have seen 5F frequently.

And I am using the PAL UK version and it seems to match up to the US version quite well. I've seen some differences, but most are translation.

FF9 Tools / Re: [FF-IX] Hades Workshop
« on: 2013-06-11 20:35:38 »
Oh, that makes a lot more sense. ^_^

Death is tied to this, as both worked on Parasite Cage when I set it to 00. It also allowed Scan to work (it just seems to Miss otherwise), which allowed me to see the true HP. Everything else was Guarded (but I didn't test Venom (no player ability natively has it) or Vanish (which natively targets only allies)).

I don't understand Eat's relationship to it. I could Eat Parasite Cage (well, i didn't (i don't think i could given its HP), but it said "I can no eat until weaker"), but for Garnet it just plain said "I no can eat".

Edit: Oh wait, Garnet gets immunity from Eat because she is of the Humanoid class. Remove the class and she can be Eaten.

So I did some more digging.

Part of the enemy file:
00 00 00 00 [first-status-set. Status immunity]
00 00 00 00 [second-status-set. Status evasion, and sometimes auto-status]
00 00 00 00 [third-status-set. Status at beginning of battle/sort-of auto-status]
00 00 [HP]
00 00 [MP]

Now, with regards to the status immunities:
Byte1 (01=Break, 02=Venom, 04=Virus. 08=Silence, 10=Blind. 20=Annoy, 40=Zombie, 80=??)
Byte2 (01=Death (but not Eat), 02[messes up targetting?], 04=Confuse, 08=Berserk, 10=Stop, 20=Auto-Life, 40=??, 80=Defend)
Byte3 (01=Poison, 02=Sleep, 04=Regen, 08=Haste, 10=Slow, 20=Float, 40=Shell, 80=Protect)
Byte4 (01=Heat, 02=Freeze, 04=Vanish, 08=Doom, 10=Mini,20=Reflect, 40=???, 80=Gradual Petrify)

It's the same statuses with all three sets of status thingies. 80000000 seems to do nothing, but the third-status-set uses 80000000 as a Death immunity. 00020000 is odd as an immunity. I'm not sure I could actually hit the enemy with it on.

So the first-status-set is Guard immunities.

The second-status-set work the same as immunities, but instead of saying "Guard" it says "Miss". Its other benefit is auto-statuses. The ones I've noted are Auto-Float, Auto-Haste, Auto-Reflect, Auto-Slow, Auto-Berserk, Auto-Poison, and Auto-Regen. I didn't go through each one individually, since I got the gist, so there may be more. However, I think Auto-Poison may be purely cosmetic. Unless I've forgotten how Poison worked, I sat waiting for the enemy to take damage but never did. I also suspect Auto-Slow may be cosmetic. I do know that Auto-Reflect works though.

There is also something interesting about Auto-Haste and Auto-Slow. When both are on, both the Haste and Slow indicators will appear next to the enemy. If one is on, and the one that is not on is inflicted on the enemy, both indicators appear then also. This could just be evidence that both are cosmetic and do not function as Auto-Statuses. But I don't know for sure.

The third-status-set inflicts the status at the start of the battle, however the effectiveness of this changes:
-If Stop is a selected status, then it can be removed. Unlike the second-status-set, there's no forced Miss.
-If a status is a temporary status (is removed after a duration) then the status does not stick. A graphic will be seen on start-up but that's it.
-For the countdown statuses, the countdowns are removed. If Doom is a selected status, the enemy will get Death instantly.
-00400000 seems to be Trance. The Masked Man was glowing, but it didn't do anything.
-00010000 and 00000040 have the enemy disappear and commands are never completed.
I also looked at other unknowns in an attempt to find out what they were. The two-bytes after the Animation IDs: Only of the bits in these bytes seems to do anything. "01" makes Prison Cave (the enemy I was testing on at the time) invisible.
-80000000 is the oddest. As discussed before, this is what bosses have. It Guards Instant Death, it makes Scan Miss, it makes Eat Miss (No can  eat), and a new revelation is that it makes Demi Miss too.

Also, after the Steal data, there are two unknown bytes, and then another set of two unknown bytes. For that second set of two unknown bytes, I set it to FF and it meant that when my characters attacked, they actually passed through the Prison Cage and attacked behind it. So these bytes may decide which part of a model the characters should attack.

Additionally, further down, the seventh and eighth bytes after the bytes deciding Blue Magic: These dictate where the cursor appears in relation to the enemy. I switched it to FF and it made the cursor jump all over the screen, but I also set it to a more stable figure that moved the cursor a couple feet upward from its original position. Additionally, my characters attacks towards the cursor. So this is like the bytes I mentioned before, except the offset effects the cursor too, which is not the case for the other ones.

Sorry if any of that wasn't clear, I'm not good with explaining things or words.

FF9 Tools / Re: [FF-IX] Hades Workshop
« on: 2013-06-11 17:36:02 »
I've noticed something strange with some bosses. They are displayed as having 10000 HP more than they actually have in the game. This explains why I couldn't find Ozma in the data when searching for his HP, and it also explains why Ozma has 55545, 10000 less than the upper limit.

There obviously is a flag that does this. Friendly Yan proves that 65535 HP is possible. So a flag removes 10000 HP from the given amount, which I can't think of any good reason for.

Edit: Well I think I might have found it. Before the HP value there is a string of 0s (in hex). But I noticed that both Beatrix and Prison Cage had an 80 (so 80 00 00 00 before the HP value). So I changed the 08 to 00 for Prison Cage, and used Death. And Death killed it. I didn't see its HP count though. So that might have just been some statuses that I changed. (additional note: Using Death on Prison Cage causes a game hang).

Edit2: Doesn't effect HP, but does effect some status immunities.

FF9 Tools / Re: [FF-IX] Hades Workshop
« on: 2013-06-07 14:47:42 »
Well, this saves me time trying to make my own program with my very limited knowledge on reading from files.

You may want to look at this. I noticed you are missing some of the stats.

Also I haven't figured out the statuses yet. I know some relate to class (Aerial enemies are immune to Float, for example). And I haven't found where the Card is stored. But I imagine the Card drop might be based on the encounter/formation and not just individual enemies. I don't know where the formation data is so I haven't looked around. Also I see where the attack data is probably stored (after the enemy stat data) so this guide may prove useful if you plan on figuring that out.

I assume what the program calls CP is actually AP?

I also think it would be useful if you still gave the number of the formation. So on Disc 1, the Beatrix battle is file0, so having it say "0: Beatrix" would be a help.

But anyway, I love you for doing this. This is extremely useful.

? It is? I thought it was just the whole sharing thing that was illegal. I thought if you extracted from a game you own and put it in another game you own, that was fine.

Edit: Oh, I see.

... the point is that it was recently released in Japan and that there are new features to the Japanese version.

In the NES version it continues as if you lost. I would assume the PS version is the same as the NES, and the PSP is the same as the GBA.

General Discussion / Re: Unused jump map
« on: 2013-05-10 15:26:19 »
In the game, if you could get past those guards, then you would go to that area.

I think there are a number of unused gateways that makes sense, but I don't recall them. Like the Battle Arena colosseum linking to the Gateway to Heaven room and the lobby. Area with Seto has a gateway back to the Gi Nattak-boss-fight area of the Cave of the Gi.

Although this one is more interesting because it is less obvious, and an area that is always blocked off.

Once again UK desides to get involed in sh*t the need to just stay out of. DLPB Wtf is with your country?
lolwut? You're talking about an article that highlights ESRB content warnings.

And an article that means nothing in the scheme of things.

General Discussion / Re: FFWiki
« on: 2013-03-28 15:13:40 »
WHAT is the point in those being there? I mean really, who gives a f*ck?
lolwut? The wiki covers all information. Whether people care or not, the idea is to be a fully-comprehensive Final Fantasy database.

General Discussion / Re: FFWiki
« on: 2013-03-26 16:47:19 »
Oh yeah, that happened.

Okay, most members of FFWiki are a bunch of thieves.

General Discussion / Re: FFWiki
« on: 2013-03-26 16:14:12 »
They stole a lot of my research without so much as a credit or link, I know that.  :evil:
AFAIK, that only happened in one instance. I was reading through the project translations page at one time, I saw the comment about Gighee and thought that was interesting and strange the wiki did not have it. When I added it I had no idea it was so little-known (in fact, not at all). As for no credit being given, one person was really against it and most people were apathetic. That's how things generally go down on the wiki.

I am a member of the wiki but I do not partake in the LPs.

What will you be missing?
The International content. Which might not be a lot for some, but for the Japanese it is worth buying the same game twice, even without updated graphics.

FF7 Tools / Re: Official Proud Clod 1.5.0.α_4!
« on: 2013-03-15 13:51:30 »
Mine says Reflect double damage for Palmer too.

Troubleshooting / Re: Chocobo patch for android?
« on: 2013-03-13 20:44:20 »
Do not interperite this as a hostile tone, but double posting things like that will usually get you less answers.
Bumping a thread after not getting a response is far more likely to get you answers than letting a thread fall into the archives. : )

Scripting and Reverse Engineering / Re: Mini-game Fixes
« on: 2013-02-18 23:42:12 »
Compiling a list of models. I'll add some images another time. Also many of them don't seem to appear/can't be seen when changing the Welcome scene so a lot state "Nothing".

Scripting and Reverse Engineering / Re: Mini-game Fixes
« on: 2013-02-18 16:41:17 »
I just decided to investigate. Forgive me if I'm saying something we already know.

Code: [Select]
            5b 00 00 00 C7 00 00 00 30 75 00 00
E8 03 00 00 01 00 00 00 52 07 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00
00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00

I don't know how big each object block in the Coaster minigame is or where they start, but the "5b" in the example above changes what the object looks like-- the model it uses. So above is the block for the big UFO.

I edited the "Welcome" sign's model from its original "60" to "5b". And this changed the Welcome sign to the big UFO model.

From what I gather, each key item in the menu is attached to a bit, however they often use /another/ bit for figuring out whether the player has obtained it or not. They could use the key item in most circumstances, but they don't.

I'm fairly sure that's how it is.

(Which was probably found from Qhimm's anyway)
I went through all the HRC files, then screened them in Kimera. <-- Use Ctrl+F and you can see where each model appears

HVJF should appear in md8_5.

And EGHE (the Masamune) is used when President Shinra is stabbed and Tifa's Father is stabbed.

Releases / Re: Unshaded characters
« on: 2013-01-16 15:31:20 »
The mouth is different because the person who uploaded those images removed the ellipse mouths and drew the new ones on ;)

I originally extracted files using Noesis, and just put random files into my program to see if they would return text. I wouldn't know how to repack the data, I was mainly interested in what I could find in the files.

The program read two bytes as hex, then split the data into two separate bytes, converted values of A through F to a value of 10 through 15, and then used a jagged array to output a character. I also had it output the hex values into another textbox (which itself could be used to copy hex into and then convert).

And because my file-reading method wasn't any good and would freeze for ages if the file was of any length, so I made it stop reading a file after it had encountered 5 "FF"s, and then I would click a button that took it onto the next.

The visual parts of the program aren't worth looking at since I just developed it to get something working. And I haven't commented any of the code either, but I'll post it anyway: you can probably tell what's going on in some places. I'm also not a very good programmer so it's really just not that good.
Code: [Select]
Public Class Form1

    Dim strSome As String
    Dim strThing As String
    Dim chrChar As Char
    Dim strArray As String
    Dim c, cc As Integer
    Dim Zidane As String = "Zidane"
    Dim Vivi As String = "Vivi"
    Dim Dagger As String = "Dagger"
    Dim Steiner As String = "Steiner"
    Dim offset As Long = 0
    Dim i As Integer = 0
    Public table = New Object(15) {}
    Dim cElse As Char = "█"

    Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        table(0) = New Char(15) {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "=", "*", "%", " "}
        table(1) = New Char(15) {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"}
        table(2) = New Char(15) {"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "(", "!", "?", Chr(147), ":", "."} '147 is open double quotes
        table(3) = New Char(15) {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}
        table(4) = New Char(15) {"q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ")", ",", "/", "・", "~", "&"}
        table(5) = New Char(15) {"Á", "À", "Â", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Ï", "Ï", "Ó", "Ò", "Ô", "Ö"}
        table(6) = New Char(15) {"Ú", "Ù", "Û", "Ü", "á", "à", "â", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï"}
        table(7) = New Char(15) {"ó", "ò", "ô", "ö", "ú", "ù", "û", "ü", "Ç", "Ñ", "ç", "ñ", "Œ", "ß", "’", Chr(148)} '148 is close double-quotes
        table(8) = New Char(15) {cElse, Chr(148), cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(9) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(10) = New Char(15) {"‘", cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(11) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(12) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(13) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(14) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
        table(15) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, vbNewLine, cElse, "$", cElse, cElse, cElse, cElse, cElse, "@"} '$ is variable
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = ""
        strSome = Replace(Replace(TextBox1.Text, " ", vbNullString), vbNewLine, vbNullString)
        strSome = strSome.ToUpper()
        TextBox1.Text = ""
        Do Until strSome = "" Or strSome = " "
            strThing = strSome.Substring(0, 2)
            TextBox1.Text += strThing
            strArray = strThing.ToCharArray()
            Select Case strArray(0)
                Case Is = "A"
                    c = 10
                Case Is = "B"
                    c = 11
                Case Is = "C"
                    c = 12
                Case Is = "D"
                    c = 13
                Case Is = "E"
                    c = 14
                Case Is = "F"
                    c = 15
                Case Else
                    c = Int32.Parse(strArray(0))
            End Select
            Select Case strArray(1)
                Case Is = "A"
                    cc = 10
                Case Is = "B"
                    cc = 11
                Case Is = "C"
                    cc = 12
                Case Is = "D"
                    cc = 13
                Case Is = "E"
                    cc = 14
                Case Is = "F"
                    cc = 15
                Case Else
                    cc = Int32.Parse(strArray(1))
            End Select
            chrChar = table(c)(cc)
            If chrChar = "@" Then
                TextBox1.Text += vbNewLine
            End If
            Label1.Text += chrChar
            strSome = strSome.Substring(2)
        Label1.Text = Replace(Label1.Text, "$A", Zidane) 'Zidane's name
        Label1.Text = Replace(Label1.Text, "$B", Vivi) 'Vivi's name
        Label1.Text = Replace(Label1.Text, "$D", Steiner) 'Steiner's name
        Label1.Text = Replace(Label1.Text, "$8", "") 'cursor/choice menu
        Label1.Text = Replace(Label1.Text, "[email protected]", "  ") 'indent/choice
        Label1.Text = Replace(Label1.Text, "$q0", "cHP") 'current HP value
        Label1.Text = Replace(Label1.Text, "$q1", "mHP") 'maximum HP value
        Label1.Text = Replace(Label1.Text, "@", vbNewLine) 'next box

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text = ""
    End Sub

    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        If Not i = -1 Then
            offset = 0
            txtOffset.Text = offset
        End If

        TextBox1.Text = ""
        Using file As New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
            Dim value As Integer = file.ReadByte
            file.Seek(offset, 0)
            Do Until value = -1 Or i = 5
                offset += 1
                If (value.ToString("X2") = "FF") Then
                    i += 1
                End If
                TextBox1.Text += value.ToString("X2")
                value = file.ReadByte()
        End Using
        txtOffset.Text = offset
        lblFileName.Text = OpenFileDialog1.FileName
        i = 0
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        OpenFileDialog1_FileOk(sender, Nothing)
        offset -= 1
        i -= 1
    End Sub

    Private Sub txtOffset_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOffset.TextChanged
        offset = txtOffset.Text
    End Sub
End Class

From tests I did with Makou Reactor, FFVII character names work like normal letters. EA is Cloud, for example.

I did some work on IX's character table, and it worked but obviously the way I programmed it was far from the most efficient way. I'm an amateur programmer.

Here's what I got:

Code: [Select]
0{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "=", "*", "%", " "}
1{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"}
2{"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "(", "!", "?", Chr(147), ":", "."} '147 is open double quotes
3{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}
4{"q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ")", ",", "/", "・", "~", "&"}
5{"Á", "À", "Â", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Ï", "Ï", "Ó", "Ò", "Ô", "Ö"}
6{"Ú", "Ù", "Û", "Ü", "á", "à", "â", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï"}
7{"ó", "ò", "ô", "ö", "ú", "ù", "û", "ü", "Ç", "Ñ", "ç", "ñ", "Œ", "ß", "’", Chr(148)} '148 is close double-quotes
8{█, Chr(148), █, █, █, █, █, █, █, █, █, █, █, █, █, █}
9{█, █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
A{"‘", █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
B{█, █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
C{█, █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
D{█, █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
E{█, █, █, █, █, █, █, █, █, █, █, █, █, █, █, █}
F{█, █, █, █, █, █, █, vbNewLine, █, "$", █, █, █, █, █, "@"} '$ is variable and other stuff

I did it in VB. I don't know why I had two close double quotes down, one may be wrong. @ = END textbox, or end line, or whatever.

The "$" signifies a variable so I could replace it later ($A = Zidane, $B=Vivi, $D=Steiner)

"$8" is used for selection options (I replace it with a choice indicator), and $q0 as current HP, and $q1 as max HP -- probably relating to battle Scan info.

And here are the characters I couldn't place but exist:

Code: [Select]







General Discussion / Re: New to this modification business
« on: 2013-01-08 18:41:36 »
Didn't someone make the FMVs for the PS1 version available for the PC? FMV Restoration or something.

I use MSE. AVG is too bloated for me, while MSE is much cleaner, easier to use, and stays out of my way more. I briefly ran AVG and MSE at the same time (bad idea) and MSE was faster at catching.

Since MSE isn't also a Firewall, and Windows's Firewall has never worked well for me, I use the free Comodo Firewall.

Pages: 1 2 3 [4] 5