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 - Fleet Command

Pages: [1] 2 3 4 5 6
1
The bad news: Square Enix has made it clear that there won't be a remake before they succeed in making something that surpass Final Fantasy VII. In all the fairness, a remake will cost them eight to sixteen times more trouble than the original game and won't have a fraction of the original sale.

The good(?) news: A remake is in progress, nevertheless. Not by Square Enix but by the fans. I'm not talking about the various "remake" projects the flash across the Internet from time to time and disappear in a matter of a month. I am seeing the community at Qhimm has remade almost every bit and piece of FF7 individually. The last piece of the puzzle was a remake of an FF7 engine which is now in progress over at SourceForge. So, are we going to have a community remake after all? God knows. Maybe yes, maybe no.

2
Hello, guys.

I'd like to ask a question that I am sure is answered somewhere, only I haven't found it so far. (To make matter worse, "Due to high stress on the server, the search function has been automatically and temporarily disabled.") First, excellent work! The configurator was a great idea. Now, my question is: What can the configurator alone, all by itself do? In other words, I know that it looks for mod packages that need separate download, but I also know that  Bootleg.exe is 324 MB and there are bits and pieces of other mods in it.

Thanks in advance.

EDIT: Never mind. I think I know the answer.

3
General Discussion / What is "......"
« on: 2012-05-06 18:32:56 »
Hi.

I've played both Final Fantasy VII and VIII but I am still at a loss: When a character says "......", what does it mean and what is the vocal equivalent of it?

4
Aali, I hope you forgive me for not reading the 16 pages to see if my issue is already posted. (I searched though, and I found nothing.) I have messy Final Fantasy VIII screens. (See screenshots below.)

Things that I tried and didn't work:
  • Swithing from my NVIDIA card to my on-board Intel iGPU
  • Switching from NVIDIA patch to non-NVIDIA patch
  • Toggling these parameters: Shader, fancy transparency, vsync, full screen, linear filter, pbo

I have no mods installed, just plain FF8

Everything is okay at first:


But then:


Here is my log:
Code: [Select]
INFO: FF7/FF8 OpenGL driver version 0.7.11b
INFO: Auto-detected version: FF8 1.2 US English
INFO: Intel Intel(R) HD Graphics Family 3.1.0 - Build 8.15.10.2509
INFO: OpenGL 2.0 support detected
INFO: Found swap_control extension
INFO: Max texture size: 8192x8192
INFO: Number of texture units: 8
INFO: Original resolution 640x480, window size 640x480, output resolution 640x480, internal resolution 640x480
INFO: Shader limits: varying 41, vert uniform 512, frag uniform 1024
INFO: vertex shader compile log:
No errors.

INFO: fragment shader compile log:
No errors.

INFO: main program link log:
No errors.

MATRIX INITIALIZE
INITIALIZING SOUND...
  initializing direct sound
  EAXDirectSoundCreate
  creating primary buffer
  initializing audio data
  OK
  initializing streaming
SOUND INITIALIZED
DIRECT MUSIC - Enumerating Ports...
PORT 0: Microsoft MIDI Mapper [Emulated]
GUID={0x35946e27,0xb16e,0x46f1,0xa2,0x1,0x5d,0x30,0x4e,0xa6,0xc1,0x5b}
PORT 1: Microsoft GS Wavetable Synth [Emulated]
GUID={0xbf32868f,0x8e5c,0x4240,0xaa,0x3d,0xf5,0xeb,0xc8,0x43,0xd7,0x72}
PORT 2: Microsoft Synthesizer
GUID={0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x0,0xa0,0xc9,0x5,0x41,0x29}
Creating Port1...
    Microsoft Synthesizer
  Port1 supports XG data
BinkClose
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfnt00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl03_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/icon_00.png, failed
SdMusicPlay ()
sd_music_play (number=0, song_id=79, volume=0)
midi_play...
Stopping Performance
Loading DLS...
Playing Segment
midi_play successful
MIDI stop
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfnt00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl03_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/icon_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/Face_b00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/Face_b01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/Gf_big00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/Gf_big01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/start00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/start01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_02.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_07.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_07.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_01.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_02.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_01.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_05.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_23.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_23.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_02.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_23.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl03_23.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl03_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_07.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfnt00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl02_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl03_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/icon_00.png, failed
Can't open file: h:\DISK1
SdMusicPlay ()
sd_music_play (number=0, song_id=80, volume=127)
midi_play...
Stopping Performance
Playing Segment
midi_play successful
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_01.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_01.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_07.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld00_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_07.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/sysfld01_00.png, failed
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/icon_01.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/icon_00.png, failed
SdMusicPlay ()
sd_music_play (number=0, song_id=80, volume=127)
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_02.png, falling back to palette 0
INFO: tried to load C:\Legacy\Final Fantasy VIII/mods/none/data/eng/menu/hires/iconfl01_00.png, failed
SdMusicPlay ()
sd_music_play (number=0, song_id=80, volume=127)
SdMusicPlay ()
sd_music_play (number=0, song_id=80, volume=127)
WM_CLOSE

Releasing Performance...


Releasing Loader...


Releasing Port1...


Releasing DirectMusic interface...

Releasing COM...


And my config:
Code: [Select]
# ff7_opengl-0.7.10b config file



## USER OPTIONS ##
## If you just want to play the game, these are the only options you'll want to change.

# set the window size (or fullscreen resolution) of FF8
# 0 means use original resolution (whatever ff7.exe provides)
# preserve_aspect adds black borders as needed to preserve a 4:3 aspect ratio
window_size_x = 0
window_size_y = 0
preserve_aspect = yes
fullscreen = no

# mod directory
# subdirectroy of mods/ where textures will be loaded from
# does not affect the old external textures feature, those should still go in textures/
mod_path = none

# check your driver settings if this option doesn't seem to work
enable_vsync = yes

# allow FF8 to use linear filtering for its textures
# some things look slightly better with this option on, but alot of textures just lose their detail
linear_filter = off



## ENHANCEMENTS ##
## All the little extras that weren't part of the original game, default options include only trivial bug fixes.

# post-processing shader, used to apply fullscreen effects
post_source = shaders/bloom2.post
enable_postprocessing = no



## ADVANCED OPTIONS ##
## Don't fiddle with these unless you know what you're doing.

# use shaders, if available and supported
# turn shaders off to use the OpenGL 1.1 backend
use_shaders = yes

# prevent glitches due to rounding errors by rendering in the nearest (larger, if supported)
# multiple of the original resolution and up/down-scaling
prevent_rounding_errors = yes

# enable alpha blending for textures without an existing blending effect
fancy_transparency = on

# display frames per second counter in upper right corner
show_fps = no

# display some real-time debug information
show_stats = no

# store external textures in a compressed cache for increased performance
# compression is not lossless, some artifacts may appear when this option is in use
# texture cache does NOT update automatically if the source image changes, however, deleting anything from the cache
# will cause that file to be recreated from the source
compress_textures = yes

# use pixel buffer objects to speed up texture loading
# will probably crash horribly on ATI cards but should work for NVIDIA users
use_pbo = no



## MODDER OPTIONS ##
## These options are mostly useful to modders and should not be enabled during normal play.

# show every failed attempt at loading a .png texture
show_missing_textures = yes

5
FF7 Tools / Re: Palmer - Field background editor
« on: 2010-08-11 10:16:25 »
Well, I wouldn't know which date you could have checked because before merger, on my screen, the date read: "Yesterday".

EDIT: Right now it reads "2009-05-20".

6
FF7 Tools / Re: Palmer - Field background editor
« on: 2010-08-10 20:21:51 »
So, this topic moved here, eh? I guess those who are new here need to know Aali no longer needs a name anymore. "Palmer" has been already selected. More than year ago, am I right?

7
FF7 Tools / Re: Palmer
« on: 2009-08-31 23:13:18 »
^ Still, it is a high-quality work. I like it. I'll keep it in my archive under the title "Midgar station after WEAPON attack". I'll add your info to the file.

8
FF7 Tools / Re: Palmer
« on: 2009-08-30 13:11:01 »
^ It is high-quality but definitely not true to the theme of the game: This example shows an upper-level Midgar station in disrepair. In the game, it is dirty but surly not in the state of disrepair.

9
Troubleshooting / Re: VB.NET
« on: 2009-08-28 21:29:06 »
FINALLY! I'm free! :-D I broke free from the tangle of the code, LeeHiOoO. I feel I'm out of jail! (Although I don't know how it feels being in a jail. Anyway...) :lol:

Now, I know what is wrong with the code and why offsets are wrong. But no time for the lecture now. I have to go. I'll upload the new code after 24 hours (or so I hope) along with two pages of notes. You should have no problem running it.

10
To extracts 1.lgp, which resides in "c:\lgp", into "c:\lgp\1\", you must have entered the following commands:

In Command Prompt:
Code: [Select]
cd /d "c:\lgp\1"
"c:\lgp\unlgp.exe" "c:\lgp\1.lgp"

Windows PowerShell:
Code: [Select]
set-location 'c:\lgp\1'
& 'c:\lgp\unlgp.exe' 'c:\lgp\1.lgp'


unlgp will extract the files into whatever folder unlgp is in
so put unlgp and the lgp into C:\lgp\1
I'm afraid that's wrong. (See above.) It is possible to have UnLGP.exe write files to a folder in which unlgp.exe does not exist. All you have to do is to specify the full path to UnLGP.exe. UnLGP.exe writes the contents into current folder.

11
I have created some documentation for LGP Tools v0.5. I hope you guys find it useful.

Here it is:

You are going to need Microsoft Word or Microsoft Word Viewer (free) to view the documentation. But I guess 90% of people should have no problem opening it. But for the other 10%, I've prepared the documentation in alternative formats:

12
As a side note, UAC and admin privileges have nothing to do with UnLGP.exe. UnLGP.exe only needs read permission for the LGP file which it opens and write permission for the folder into which it extracts. (which means almost any folder on your computer except Program Files or Windows is OK for extraction.)

However, if you wish to reduce the amount of alerts that UAC triggers when copying into your Final Fantasy VII folder, I advise you to edit file permissions on "data" folder and give Full Access to Authenticated Users. Now, you can use your Standard (non-admin) User Account to manipulate your LGP files without UAC ever bothering you. No need to worry about security either because viruses never infect data files.

EDIT: The pronoun "you" in the above paragraph refers to general public.

13
"Exe" is the short form of "executable". Exe is another name for computer program.

You specify the file you'd like to extract by giving its full address to UnLGP.exe. That is, by typing it in front of the UnLGP.EXE in Command Prompt. UnLGP.exe does not accept any other parameter. It extracts the LGP archive, which you specified, into the "Current Folder", also known as "Working Folder".

14
Troubleshooting / Re: VB.NET
« on: 2009-08-24 07:25:01 »
Sorry for the delay, but my tests aren't finished yet. Some of your offsets are wrong and I'm looking for the reason.

15
"Binaries" here means "computer software" or "computer program".

The discussion here is about LGP Tools called "LGP.exe" and "UnLGP.exe" that Aali and Kranmer have created. Now, Aali didn't give us something that can be called a "computer program". Aali just give us their "source codes", instructions for the computer that if undergo a process called "compile", they will become a program, but are otherwise don't do anything. Kranmer finished Aali's work by compiling those source codes and producing "binaries" or the computer programs that you can run.

"UnLGP.exe" and "LGP.exe" (that Kranmer have produced from Aali's source codes) are "command-line" programs, meaning that they can only be run from within Command Prompt (a Windows program) or other such programs, by typing text commands. They are not like normal Windows programs (such as WinZip) that have graphic windows and menus and you can use with mouse.

So, LeeHiOoO decided to change Aali's source code into a normal Windows program. Its a tough job but it is almost finished.

16
Aali's driver aside, Aali himself/herself has been missing for three days now. Now, I know I shouldn't worry about people who are missing on Friday, Saturday or Sunday but somehow I cannot force my sentements to submit.

Let's just hope Aali and his/her server are both on a well-deserved vacation.

17
Yes. For all intents and purposes, his server IS down. No response to HTTP requests, no response to ping... but domain name is fine.

18
FF7 Tools / Re: Palmer
« on: 2009-08-20 12:16:12 »
^ When I said "But there is no point for a remake already!" I meant the programs have already reached considerable success.

Anyways, you don't have to be that aggressive.  :-(

19
FF7 Tools / Re: Palmer
« on: 2009-08-20 11:29:12 »
But there is no point for a remake already!

20
Troubleshooting / Re: VB.NET
« on: 2009-08-20 08:05:03 »
Just downloaded it. I don't have my Visual Basic Express with me here but I'll be analyzing it soon.

Currently, I'm taking a not very deep look at the code. Your work is excellent, always remember that.  :-) But like any programmer (including me and Bill Gates) you work has some errors. I spotted some in the first look.

First, I told you to separate the I/O logic from User Interface but you didn't do it completely. Your User-interface code (frmMain.vb) opens registry keys and file streams. It shouldn't. You User Interface code should do none of these. It is the duty of LGP Stream class or DeLGP class. (Hey, I don't see a DeLGP class yet.) The only duty is be an interface between user and LGP Stream/DeLGP classes. Be warned: If you deviate from this rule, you'll end up being entangled with bugs that you cannot easily find its source. (Besides, you won't be able to easily extend your program to support drag-and-drop, command-line parameters and shortcuts. But this not as important as strange bugs.)

Second, you must not use any form of Unicode in your file I/O, not even UTF-7 and UTF-8. The reason is: a single Unicode character can occupy more than one byte. You are developing a software for a game that is created in 1995-1998, so you should only use ASCII encoding in file I/O. Windows 1252 can also be a temporary encoding solution. Meanwhile, your user interface must use Unicode format to work well on all computers will all languages all over the world. You need to constantly convert between ASCII and UFT-8 but that's easy and convenient.

Third, do not cause unnecessary inconvenience for your users. For example, your Open dialog box should always remember that last folder. Try opening mulltiple LGP files outside Final Fantasy VII folder in a row and you'll know what I mean. If you wish, you can add a shortcut to Final Fantasy VII folder in the Open dialog box (in its shortcut bar) but always remember the last folder that is opened.

I'll start analyzing the code soon. I'll test your code with all the LGP files in FF7 and then I'll report in.

EDIT: In the mean time, you'd better take a look at this:
http://www.joelonsoftware.com/articles/Unicode.html

21
^ I see. So, you'll have to boost your knowledge about Unicode. Let's see if I can find anything...

We can continue our dicsussion wherever you wish, even in that thread but I don't think halkun is going to like us doing this. You see, we're not off-topic here. And besides, we're not going to receive much feedback in there. But if you wish so... so be it.

22
Well, I'm almost through and there are a few issues to resolve.

First and foremost, reading the count of objects in an LGP archive. Your code reads:
Code: [Select]
        Dim fs As FileStream = New FileStream(OpenedFile, FileMode.Open, FileAccess.Read)
        Dim stream As New StreamReader(fs)
        Dim b As Integer
        stream.BaseStream.Seek(12, SeekOrigin.Begin)
        For i = 0 To 3
            Select Case i
                Case 0
                    b += stream.Read()
                Case 1
                    b += (stream.Read() * 256)
                Case 2
                    b += (stream.Read() * 65536)
                Case 3
                    b += (stream.Read() * 16777216)
            End Select
        Next
        stream.Close()
        fs.Close()
        MsgBox("This file Contains " & b & " objects!")
Are you kidding, LeeHiOoO? Why have you added these redundant For...Next and Select...Case statements? There will be absolutely no difference if you delete them, like this:
Code: [Select]
        Dim fs As FileStream = New FileStream(OpenedFile, FileMode.Open, FileAccess.Read)
        Dim stream As New StreamReader(fs)
        Dim b As Integer
        stream.BaseStream.Seek(12, SeekOrigin.Begin)
                    b += stream.Read()
                    b += (stream.Read() * 256)
                    b += (stream.Read() * 65536)
                    b += (stream.Read() * 16777216)
        stream.Close()
        fs.Close()
        MsgBox("This file Contains " & b & " objects!")
However, both codes are inherently erroneous. Check this out: http://rapidshare.com/files/268451194/Counts_of_objects_in_LGP_archives__as_reported_by_various_LGP_Tools.xlsx

This is a report that compares the count of objects inside various FF7 LGP Archives as reported by Aali/Kranmer UnLGP.exe v0.5 and your LGP_VBNET. As you can see, there are inconsistencies. Your LGP_VBNET reports wrong number of items for magic.lgp, flevel.lgp, chocobo.lgp, condor.lgp and world_us.lgp.

Basically, you are calculating the number of items in an unaligned self-composed Little-Endian manner. What's more is that you use a Text File Stream Reader to read bytes from a binary file, while you should have used a Binary Stream Reader to do so. Meanwhile, be careful not to read "Char" in UTF-8 formats.

The correct code to read the number of items is:
Code: [Select]
        Dim fs As FileStream = New FileStream(OpenedFile, FileMode.Open, FileAccess.Read)
        Dim TheLGPFile As BinaryReader = New BinaryReader(fs, Encoding.GetEncoding(1252))
        Dim tmp(12) As Byte
        TheLGPFile.Read(tmp, 0, 12)
        Dim LGPObjectsNum As Integer = TheLGPFile.ReadInt32()
        TheLGPFile.Close()
        fs.Close()
        Return LGPObjectsNum
Here, try this update. I've implemented a debug routine to quickly read and compare the number of items in standard LGP archives of FF7 v1.02: http://rapidshare.com/files/268455952/LGP_VBNET_update_2_Fleet_Command.zip

There is also issues with user-interface too. Consider setting Tab Order properties appropriately. Also add shortcut for the most frequently used menu items (the way I did in case of Open...) but not all menu items need shortcuts. Try to use shortcuts which are familiar for Windows users. (Notepad is a good example that you can use)

And now:
Now, fix the structs and being implementing LGP_Stream class, DeLGP class, their file I/O methods and exception-catching code. Remember: LGP_Stream will have two descendants: DeLGP and EnLGP classes. While LGP_Stream performs generic functions, DeLGP and EnLGP classes will be variants of this class that perform specialized I/O, i.e. DeLGP class opens LGP files that already exist as read only. Meanwhile EnLGP class creates nonexistent empty LGP files with write access.

Currently, focus on DeLGP class and leave implementing EnLGP class for a later time. (You don't want to be buried under a thick layer of unused codes, do you?) For now, focus on creating an LGP extractor and focus more on creating underlying codes than User Interface. (But don't forget about it either.) Start by moving this count-reader code from your form code into LGP_Stream and DeLGP classes.

Remember: These I/O classes should have no User Interface items like message boxes. Have the methods of these classes to return error codes. Your form, which is currently in charge of user interface, and later, maybe other classes, are the only elements which should generate message boxes.

Let me see the results. If they were done properly, the most time-taking part is finished. (You'll probably need no help building the rest of the program on your own but I'll stick around.)

Oh, and whenever you feel you don't need to experiment with the debug code that I added, you can safely remove it and its Listbox1 and Menu item.

Good luck

23
Man, you are better than me.

Just started to verify it. I'm not yet through, but I've spotted the first flaw: You defined whatever data that was defined as "char" and "unsigned char" in Aali's code as "char" in your own code, which is wrong. In C and C++ "char", "signed char" and "unsigned char" are only 8-bits long while in .NET, they are 16-bits long and store Unicode characters. Consider using "System.SByte" (or its VB.NET equivalent) instead of "char" and "System.Byte" (or its VB.NET equivalent) instead of "unsigned char".

I'm getting busy right now, but don't worry, if I ever died, you're better than me.

EDIT: Oh, forgot to mention: You'll be using either a bit of type-casting (Byte -> Char or vice versa) or unpacked data read/write of bytes in 16-bit aligned manner. I prefer type casting.

24
OUTSTANDING! I didn't expect you to do it in such a short time.

So, now you have complete understanding of this part of code, right?
Code: [Select]
struct toc_entry
{
char name[20];
unsigned int offset;
unsigned char unknown1;
unsigned short conflict;
__attribute__((__packed__));

struct file_header
{
char name[20];
unsigned int size;
} __attribute__((__packed__));

struct lookup_table_entry
{
unsigned short toc_offset;
unsigned short num_files;
} __attribute__((__packed__));

struct conflict_entry
{
char name[128];
unsigned short toc_index;
} __attribute__((__packed__));

Especially, you do know what does __attribute__((__packed__)) actually do, right?

Good, now let's start with building classes. At first, I advise you to initially build an application that only extracts files from LGP, then expand it to one that also archives files into LGP. But a precaution: I know C# and Delphi very well but I don't remember anything about VB.NET anymore. But I'm going to assume VB.NET is only grammatically different from C#. (At least for our purpose.) If it isn't, let me know and we'll try to resolve any conflict.

(I don't know why my eyes hurts...)

Start by building a test program that opens LGP archive, counts the number of files in it and announces the count in a message box. Then, you'll expand it into a full-fledged LGP extractor. For now, download lgp.c, unlgp.c, lgp.h and MinGW. (You'll need some of MinGW source codes, such as stat.h.) Also, start a Visual Basic project (Windows Form) and put a Menu Bar on it with just a File menu and an Open command. Put an Open Dialog Box into the form and set its properties, so it can open "LGP Archive (*.LGP)" and "All files (*.*)".

Create a DeLGP class. (Are classes case-sensitive in VB.NET too? In C#, they are. In Delphi, they aren't.) Class constructor gets one parameter: the whole path to the LGP file. The constructor checks whether the file exists, whether NTFS permissions on it allows read-only access and opens the file as read-only. (Don't implement the opening of the file yet.)

Then, the main job: Build a LGPStream class as a Structured Storage class and add a File Stream plus the structs in LGP.h to it. You are not going to have the benefit of using packed structs, so prepare for extra job when reading and writing structs. There is a reason for that: The precious Unicode! You are going to read non-unicode strings from archive but write Unicode strings to disk, and vice versa. (Aali's LGP Tools read non-unicode and write non-unicode. You don't do this.)

Once you are done, let me see how you've done this critical part. Meanwhile, I'll be downloading a Visual Basic 2008 Express, just in case.

25
I don't know C neither C++.
Some C# i may understand as it's quite like vb.net.
If i can understand lgp tools code? well, some parts yes... some dont. I'll try to figure now..
Then your job is much tougher than that of someone like Kramner but still possible. If you are persistent, then let's get started.

First and foremost, you must start learning a bit of C/C++ so that you at least have a grasp of struct data types and of reading and writing from a structured file the way LGP Tools does. (Otherwise, the only way I can help you will be to embed me into your brain.) Why don't you start with Microsoft Express training material on C++? There are quite a few guides there.

After that, I'll lay out the details of encapsulating the file I/O into appropriate classes (which is the tough part of the work) and help you binding them into a GUI (which should be easy, given the fact you already know VB.NET.)
Quote
If u r willing to help me add @ msn.  :-)
I'm afraid that's not an option. I cannot be disrupted during the work hours. We should keep the discussion in this thread (which is relevant) as much as possible. I'll check it everyday after returning from work.

Pages: [1] 2 3 4 5 6