Final Fantasy VII
Role-playing game by Squaresoft on three discs.
| Serial | SCUS-94163, SCUS-94164, SCUS-94165 |
|---|---|
| Region | NTSC-U |
| Developer | Squaresoft |
| Publisher | Sony / Squaresoft |
| Release date | 7 September 1997 |
| Discs | 3 |
| Players | 1 |
| Memory card blocks | 1 |
| Controllers | Standard Controller |
| Vibration | No |
| Multitap | No |
This is an old revision of this page, as edited by RemmyLee at 00:54, 2 November 2026. Edit this revision | Latest revision
Releases
Final Fantasy VII was released in North America on 7 September 1997 as a set of three discs, SCUS-94163, SCUS-94164 and SCUS-94165, and each disc carries a single data track.12 PlayStation DataCenter gives 15 August 1997 as the release date; however, the date given by Square Enix is used here. The serials and sizes of the discs are shown below.2
| Disc | Serial | Serial in disc | Tracks | Size on disc |
|---|---|---|---|---|
| 1 | SCUS-94163 | SCUS-94163-1 | 1 data track | 620 MB |
| 2 | SCUS-94164 | SCUS-94163-2 | 1 data track | 608 MB |
| 3 | SCUS-94165 | SCUS-94163-3 | 1 data track | 547 MB |
Disc data
The volume ID of disc 1 is FINALFANTASY7, and the disc holds 3377 files. Its SYSTEM.CNF names SCUS_941.63 as the file to be started, with 4 tasks (TCB), 16 events (EVENT) and the stack pointer (STACK) at 801FFF00.3 The task and event counts are the defaults given in the PlayStation Operating System manual, so the game changes only the stack pointer from the default configuration.4
The main program loads the parts of the game as modules into the memory area that starts at 800A0000h. FIELD/FIELD.BIN and BATTLE/BROM.X are stored compressed: each file consists of an 8-byte header followed by gzip data, and the first word of the header gives the unpacked size. The field module therefore occupies 264008 bytes in memory, and BROM.X grows from 1142 bytes on the disc to 1740 bytes when it is unpacked.3
The menus are separate files in the MENU directory, and the main program loads each of them to 801D0000h by its number. Each entry of the table at 80048F60h gives the sector and size of one menu file; entry 11 is PATYMENU.MNU and entry 12 is BGINMENU.MNU.3
Development
Square left part of its development code in the retail program. The routines and their text are still on the disc; however, the calls, flags or menu entries that would start them are missing or held at zero, and the player therefore cannot reach them. The largest is the event debugger of the field module, which is described in Field Script Debugger. The others are described below, together with the GameShark codes that open them.3
Battle-Test Screen (BROM.X)
The main program selects the module to run next from a mode word at 8009C560h. The code at 800146A4h tests this word for 2 and for 4, and a value of 4 loads battle file 3, BATTLE/BROM.X, and starts it at 800A00CCh. However, no store of 4 to the mode word was found in the main program or in any module, so the battle-test screen cannot be opened in the retail game.35
BROM.X shows the word SCENE and a battle number over the title logo. The number starts from the last battle of the field (800707BCh) and is held between 0 and 1023. When a button is held for 9 frames, it repeats every frame. The buttons are read through the main program's controller routine at 8001C808h. This routine places the first data byte of the controller in bits 8 to 15 and the second in bits 0 to 7, and the buttons of the screen are shown below.36
| Button | Action |
|---|---|
| Up, Down | Battle number +1, -1 |
| Left, Right | Battle number +10, -10 |
| Start or Circle | Fight the selected battle |
| Triangle | Menu test launcher |
| Select | Return to the field |
The Triangle button calls the main program function at 80025174h from 800A0328h, and no other module calls this function. The button that is held on controller 1 determines whether it opens the main menu, a shop, the naming screen, party formation or the save menu. When it opens the save menu, it also fills the last 30 inventory slots with 99 of each Source item.35
The two lists below open the screen from the field. List 2 places a routine in the unused main program code at 8001CDA4h that corrects the texture page of the SCENE text, holds the number to 0 to 999 and skips the scenes 16 to 19, which hold no enemies. List 3 needs list 2; when L2 and R2 are held on the field, it changes the field's battle request from mode 2 to mode 4 and starts a battle. In the StationX emulator on 1 November 2026, L2 and R2 opened the screen with SCENE 0000, Up gave SCENE 0001, and Circle started the battle.57
List 2:
8001CDA4 800A
8001CDA6 3C09
8001CDA8 3403
8001CDAA 3C08
8001CDAC 003F
8001CDAE 3508
8001CDB0 0090
8001CDB2 AD28
8001CDB4 A423
8001CDB6 3C08
8001CDB8 06E0
8001CDBA 3508
8001CDBC 0098
8001CDBE AD28
8001CDC0 0C00
8001CDC2 3C08
8001CDC4 7383
8001CDC6 3508
8001CDC8 03C0
8001CDCA AD28
8001CDCC 03C4
8001CDCE AD20
8001CDD0 0802
8001CDD2 3C08
8001CDD4 80F7
8001CDD6 3508
8001CDD8 03C8
8001CDDA AD28
8001CDDC 03CC
8001CDDE AD20
8001CDE0 5821
8001CDE2 0260
8001CDE4 6021
8001CDE6 03E0
8001CDE8 8007
8001CDEA 3C0A
8001CDEC 07BC
8001CDEE 9553
8001CDF0 7383
8001CDF2 0C00
8001CDF4 0000
8001CDF6 0000
8001CDF8 07BC
8001CDFA A553
8001CDFC F821
8001CDFE 0180
8001CE00 9821
8001CE02 0160
8001CE04 8033
8001CE06 0802
8001CE08 0000
8001CE0A 0000
8001CE0C 0002
8001CE0E 0661
8001CE10 0000
8001CE12 0000
8001CE14 0000
8001CE16 3413
8001CE18 03E8
8001CE1A 2A62
8001CE1C 0002
8001CE1E 1440
8001CE20 0000
8001CE22 0000
8001CE24 03E7
8001CE26 3413
8001CE28 0010
8001CE2A 2A62
8001CE2C 000A
8001CE2E 1440
8001CE30 0000
8001CE32 0000
8001CE34 0014
8001CE36 2A62
8001CE38 0007
8001CE3A 1040
8001CE3C 0000
8001CE3E 0000
8001CE40 0012
8001CE42 2A62
8001CE44 0003
8001CE46 1040
8001CE48 0000
8001CE4A 0000
8001CE4C 0008
8001CE4E 03E0
8001CE50 0014
8001CE52 3413
8001CE54 000F
8001CE56 3413
8001CE58 0008
8001CE5A 03E0
8001CE5C 0000
8001CE5E 0000
800146F0 8002
800146F2 3C05
800146F4 CDA4
800146F6 24A5
List 3:
8001CEF0 800A
8001CEF2 3C08
8001CEF4 2F88
8001CEF6 3509
8001CEF8 DD8A
8001CEFA 17E9
8001CEFC 0003
8001CEFE 3049
8001CF00 0003
8001CF02 340A
8001CF04 DD87
8001CF06 152A
8001CF08 C560
8001CF0A 9509
8001CF0C 0001
8001CF0E 340A
8001CF10 DD84
8001CF12 152A
8001CF14 3402
8001CF16 3C0A
8001CF18 292C
8001CF1A 8D09
8001CF1C 0002
8001CF1E 354B
8001CF20 0002
8001CF22 152B
8001CF24 0004
8001CF26 354B
8001CF28 292C
8001CF2A AD0B
8001CF2C 5144
8001CF2E 0800
8001CF30 0000
8001CF32 0000
80014510 0002
80014512 3409
80014514 ABF5
80014516 A109
80014518 8008
8001451A 3C0B
8001451C 0001
8001451E 3409
80014520 EBC8
80014522 A169
80014524 0008
80014526 03E0
80014528 0000
8001452A 0000
8001C8CC 73BC
8001C8CE 0800
Unused Main Menu Commands
The names of the main menu commands are stored as a table at 80049248h in SCUS_941.63. The table begins with the 10 commands of the retail menu, from Item to Save, and continues with four more names: Uso, Beginner, Uso and Uso. The routine at 8002368Ch builds the menu cursor with 10 rows, so the retail menu stops at Save.3
A command opens the menu file whose number is stored for its row in the table at 80049450h. Rows 0 to 9 hold 1 to 10, row 10 (Uso) holds 11, which is PATYMENU, and row 11 (Beginner) holds 0, which opens no file. When the row count at 800236ACh and the cursor limit at 80023378h are raised from 10 to 11, an eleventh row named Uso appears under Save and opens PATYMENU. This was done in the StationX emulator on 31 October and 1 November 2026.37
PATYMENU is a party editor that reads the main program's button word at 80062D7Eh. Up and Down move between the three party slots; Right and Left step the character number of the slot at 8009CBDCh through 0 to 10 and FFh, which marks an empty slot. Circle reverses bit 0 of byte 20h of the character record, which moves the portrait 24 pixels to the right, and Cross returns to the main menu. The file begins with Square's development file paths, and the first of them is x:\master\menu\data\choco.tim.37
Bugenhagen Materia Menu (BGINMENU)
BGINMENU.MNU is the menu file of the master materia trades with Bugenhagen. The field script command menu (49h) stores its type to 8009ABF5h and its parameter to 8009ABF6h, and the main program loads BGINMENU for types 15h, 16h and 17h. Types 16h and 17h, with parameters 0 to 3, are used only in room BUGIN1B; type 16h checks whether the materia of a set are held and mastered, and type 17h takes them and gives the master materia.3
| Parameter | Materia taken | Materia given |
|---|---|---|
| 0 | 21 magic materia | Master Magic |
| 1 | 16 summon materia | Master Summon |
| 2 | 7 command materia | Master Command |
| 3 | None | Bahamut ZERO |
Type 15h calls a third BGINMENU routine at 801D027Ch. Only the debug room BLACKBGB uses this type.3
Masamune
Weapon 127 of the KERNEL.BIN weapon table is the Masamune, and its description is empty. The main program loads this table to 800738A0h, 2Ch bytes per weapon. The halfword at offset 0Eh of a weapon holds one bit for each character, and the Equip menu lists the weapon only for the characters whose bits are 1. The Masamune is the only weapon whose bit 10 (Sephiroth) is 1, which gives 0400h, while all 16 of Cloud's weapons carry 0201h. No field script gives item FFh, which is weapon 127, and no shop in SHOPMENU.MNU sells it.3
The two codes below give Cloud's bit to the Masamune and place one in the last inventory slot. In the StationX emulator on 1 November 2026, the Masamune then appeared in Cloud's weapon list, and when equipped it showed Attack 99 and Attack% 255.7
80074E82 0601
8009CE5E 02FF
Old Character Records
NAMEMENU.MNU holds 11 character records of 84h bytes from offset 904Ch on, and their character numbers run from 0 to 10. They name Cloud "Ex-SOLDIER" and spell Cait Sith as "Cait Seith", while the list that the naming screen shows, at 8EB4h in the same file, spells "Cait Sith". Record 10 is Sephiroth and record 9 has no name.3
Test Enemies
The first scenes of BATTLE/SCENE.BIN contain enemies 0 to 9 (without 3). Their names begin with the bytes 70h, 7Ch and 79h followed by the enemy number, and these bytes do not form English text in the US character table.35
Chocobo Race Editor
CHOCOBO.BIN, the chocobo race module, contains a routine at 800A9A94h that reads controller 1 and works on the bytes at 8009D488h. No jal instruction, pointer or address load in the module refers to it. The word at 800A03ECh is jal 800A9D94h, and the bench notes give 0C02A6A5h (jal 800A9A94h) as the change that would call the editor.35
Unused Dialogue
Every room script of the three discs was walked command by command, and a line of text was counted as shown when the mes (40h), ask (48h) or mpnam (43h) command uses it in any room. The 2325 room files hold 12329 distinct lines, of which 643 are never shown, and 554 of these are outside the debug rooms. Of the 554, 345 are close variants of lines that are shown, and 209 have no close variant. Text shown by other routes, such as battle or the menus, would also be counted as never shown.8
Among the lines that are never shown are "This is the end of the Test Play." in TIN_1, a document search in the Shinra Mansion in MTNVL6 ("Look, this letter could be in invisible ink"), and the counters "scenario =" and "number of defeats =" of the Fort Condor battles in CONVIL_2.8
References
-
^ Square Enix. "Square Enix Announces Release Date of Final Fantasy VII: Advent Children." 15 May 2005. http://release.square-enix.com/na/2005/05/square_enix_announces_release.html (archived 28 March 2016, https://web.archive.org/web/20160328231448/http://release.square-enix.com/na/2005/05/square_enix_announces_release.html)
-
^ a b PlayStation DataCenter, Final Fantasy VII (NTSC-U), SCUS-94163. https://psxdatacenter.com/games/U/F/SCUS-94163.html
-
^ a b c d e f g h i j k l m n o p Final Fantasy VII (USA) discs 1 to 3, read 1 November 2026: SYSTEM.CNF, SCUS_941.63, INIT/KERNEL.BIN, FIELD/FIELD.BIN, FIELD/*.DAT, BATTLE/BROM.X, BATTLE/SCENE.BIN, MINI/CHOCOBO.BIN, MENU/PATYMENU.MNU, MENU/BGINMENU.MNU, MENU/NAMEMENU.MNU and MENU/SHOPMENU.MNU.
-
^ Sony Computer Entertainment Inc. PlayStation Operating System. Table 2-1, System Designation File Keyword List.
-
^ a b c d e psx.wiki bench notes, Final Fantasy VII hidden and unused code, 31 October and 1 November 2026.
-
^ Controller Protocol, the table of digital pad data.
-
^ a b c d StationX emulator runs, 31 October and 1 November 2026: the codes through the bench cart's cheat engine, and the Uso rows through monitor writes.
-
^ a b Script walk of the room files of the three discs (unused3.py), run 1 November 2026.