Strike Witches: Silver Wing: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Create initial page. Dev/Pub might be mixed up, not exactly clear)
 
mNo edit summary
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Bob
{{Bob
| bobscreen = sw_title.png
  | screenwidth= 320px
  | screenwidth= 320px
  | developer= Gulti
  | developer= Gulti
Line 5: Line 6:
  | systems= {{system|Xbox 360}}, {{system|PlayStation Portable}}
  | systems= {{system|Xbox 360}}, {{system|PlayStation Portable}}
  | japan= {{date|2010|July|29}} (360) {{date|2012|June|28}} (PSP)
  | japan= {{date|2010|July|29}} (360) {{date|2012|June|28}} (PSP)
| tcrf=Strike Witches: Silver Wing
}}
}}
{{360
{{360
Line 20: Line 22:
==Textures==
==Textures==


DDS files are used for almost every image in the game, including sprites.  Most appear to use DXT1 format.
[https://learn.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-pguide DDS files] are used for almost every image in the game, including sprites.  Most appear to use DXT1 format.


==Miscellaneous==
==GGXArchiver Unpacking==


===GGXArchive Packed Files===
The following [https://aluigi.altervista.org/quickbms.htm QuickBMS] script can automatically unpack files.


Most of the game's files appear to be archives created with "GGXArchiver v1.00".  These can contain various types of files, including but not limited to models, textures and text.
<pre>
 
getdstring MAGIC 0x10
{| class="wikitable"
get FILES long
|+ GGXArchiver Format
goto 0x20
|-
comtype BPE
! Entry !! Format
for i = 0 < files
|-
getdstring NAME 0x20
| Magic || "GGXArchiver1.00" + 0x00
putarray 0 i NAME
|-
next i
| Unknown (number of files?  more info?) || 16-bytes, ex: '''0x02 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00''' (/media/data/sc_logo.bin)
savepos baseoff
|-
set tmp files
| File List || 32-bytes per file, relative path to file, directories supported
math tmp * 0x18
|-
math baseoff + tmp
| Unknown data || Size seems to scale with number of files in archive
for i = 0 < files
|-
get NID long
| File Data || The actual data for each of the archived files.  Appears to be have some endian weirdness, reversed every 32-bits?  (Xenon is 32-bit BE, makes sense?)
get ONE long
|}
get size long
 
get zsize long
===Text Format===
get COMP long
 
get offset long
Mostly found in '''/media/data/sc_scenario.bin''', uses non-standard formatting
math offset + baseoff
 
getarray NAME 0 NID
* Hiragana, Katakana and Kanji encoded using UTF-16
if COMP == 1
* Some special characters (ex: newline) are encoded with 8-bits, unclear how exactly these work
clog name offset zsize size
* Numbers (possibly other Latin characters?) are encoded with 16-bits.  Their value is '''0xFF''' followed by their UTF-8 value - '''0x20''' (ex: "1939" is '''0xFF 0x11 0xFF 0x19 0xFF 0x13 0xFF 0x19''')
else
log name offset size
endif
next i
</pre>

Latest revision as of 17:15, 22 May 2024

Title Screen

Strike Witches: Silver Wing

Developer: Gulti
Publisher: CyberFront
Platforms: Xbox 360, PlayStation Portable
Released in JP: July 29, 2010 (360) June 28, 2012 (PSP)


ROMIcon.png ROM map
TextIcon.png Text table
NotesIcon.png Notes
TutorialsIcon.png Tutorials
Cactisprite.png TCRF

Sub-pages

Strike Witches: Silver Wing
Mapper Name XGD2
Read about development information and materials for this game.
ROM map
Read about prerelease information and/or media for this game.
Text table
Miscellaneous tidbits that are interesting enough to point out here.
Notes
Notes on the game's internal data.
Tutorials

Textures

DDS files are used for almost every image in the game, including sprites. Most appear to use DXT1 format.

GGXArchiver Unpacking

The following QuickBMS script can automatically unpack files.

getdstring MAGIC 0x10
get FILES long
goto 0x20
comtype BPE
for i = 0 < files
getdstring NAME 0x20
putarray 0 i NAME
next i
savepos baseoff
set tmp files
math tmp * 0x18
math baseoff + tmp
for i = 0 < files
get NID long
get ONE long
get size long
get zsize long
get COMP long
get offset long
math offset + baseoff
getarray NAME 0 NID
if COMP == 1
clog name offset zsize size
else
log name offset size
endif
next i