News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: The Console Tool (by Low Lines)  (Read 252378 times)

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #400 on: January 21, 2012, 11:42:13 pm »
Visual appeal means nothing, when you are trying to parse binary data :p Though I do wish they had made more games like DW1 as the game mechanics are really what defines Digimon, not all this turn-based RPG crap which all the sequels do :/

Moving on, here's what I've got on MMDs so far...
Code: [Select]
Monster MoDel (*.mmd)

TMD Header {
u32 TMD Start Offset,
u32 TMD End Offset
}

TMD file follows straight after...

Unknown Block

The rest of the file then starts with what looks like a bunch of offsets relative to the end of the TMD file (in other words a separate file and MMDs are container formats), however there's some ambiguous values that prevent it from being just a straight table...
It's worth noting that all Digimon models seem to be rotated +180 degrees on the Y axis, unless its some kind of error on my part of course, but I'm pretty sure it isn't...
Given the large amount of data left over after taking the TMD file out, it's very likely that MMDs hold animations as well.

[edit]

There does seem to be a pattern when comparing multiple MMD files.
For one, off0 and off33 always seem to be the same, and also point to the end of the offsets header. This is sort of an assumption, but my guess is that each offset points to an animation block and when the offset is null(00) then there's no animation for it. Each offset is for a specific animation (ie walk, attack, sleep, poop, etc), with some animations pointing to the same data.
« Last Edit: January 22, 2012, 12:32:46 am by Low Lines »

Romsstar

  • Full Member
  • ***
  • Posts: 129
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #401 on: January 22, 2012, 08:05:10 am »
After comparing Agumon and Shogungekomons data I can confirm that your assumptions are completely right Low Lines.
Shogungekomon has 8 defined animations for it and they all are in the MMD file.
Agumon has a lot more and the parts where shogungekomon has no animation for are blanks (00)
while Agumons is filled with data.

We can take for given that the animation indeed is in the MMD file.
Although it seems to be an usual format and not the standard TOD format animations are usually in.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #402 on: January 22, 2012, 03:30:08 pm »
Could you provide a list of which model files are which Digimon?
ie /CHDAT/MMD1/AGUM.MMD Agumon

So far the only thing I can gather is that the first byte in these animation pointers appears to be the number of keyframes in the animation. Each keyframe can also be of varying length as I've seen several files with the same number of keyframes but with varying file lengths.

Romsstar

  • Full Member
  • ***
  • Posts: 129
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #403 on: January 22, 2012, 04:06:38 pm »
MMD0:

/CHDAT/MMD0/AGUM.MMD   AGUMON
/CHDAT/MMD0/AIRD.MMD    AIRDRAMON
/CHDAT/MMD0/ANGE.MMD   ANGEMON
/CHDAT/MMD0/BETA.MMD   BETAMON
/CHDAT/MMD0/BIRD.MMD    BIRDRAMON
/CHDAT/MMD0/BOTA.MMD   BOTAMON
/CHDAT/MMD0/BOYS.MMD   PLAYER (HIRO)
/CHDAT/MMD0/DEVI.MMD    DEVIMON
/CHDAT/MMD0/ELEC.MMD    ELECMON
/CHDAT/MMD0/GABU.MMD   GABUMON
/CHDAT/MMD0/GARU.MMD   GARURUMON
/CHDAT/MMD0/GREY.MMD   GREYMON
/CHDAT/MMD0/HOEE.MMD   WHAMON
/CHDAT/MMD0/KABU.MMD   KABUTERIMON
/CHDAT/MMD0/KORO.MMD   KOROMON
/CHDAT/MMD0/MAME.MMD   MAMEMON
/CHDAT/MMD0/MERA.MMD   MERAMON
/CHDAT/MMD0/MONZ.MMD   MONZAEMON
/CHDAT/MMD0/MTGR.MMD   METALGREYMON
/CHDAT/MMD0/MTMA.MMD  METALMAMEMON
/CHDAT/MMD0/NUME.MMD   NUMEMON
/CHDAT/MMD0/POYO.MMD   POYOMON
/CHDAT/MMD0/PUNI.MMD    PUNIMON
/CHDAT/MMD0/SEAD.MMD   SEADRAMON
/CHDAT/MMD0/SKUL.MMD   SKULLGREYMON
/CHDAT/MMD0/TUNO.MMD   TSUNOMON
/CHDAT/MMD0/TYRA.MMD   TYRANNOMON
/CHDAT/MMD0/VEDA.MMD   VADEMON
/CHDAT/MMD0/VEGI.MMD    VEGIEMON
/CHDAT/MMD0/YUKI.MMD    FRIGIMON

MMD1:

/CHDAT/MMD1/ANDR.MMD ANDROMON
/CHDAT/MMD1/BAKE.MMD BAKEMON
/CHDAT/MMD1/CENT.MMD CENTARUMON
/CHDAT/MMD1/COCA.MMD KOKATORIMON
/CHDAT/MMD1/DIGI.MMD DIGITAMAMON
/CHDAT/MMD1/DORI.MMD DRIMOGEMON
/CHDAT/MMD1/ETEM.MMD ETEMON
/CHDAT/MMD1/GIRO.MMD GIROMON
/CHDAT/MMD1/HOUO.MMD PHOENIXMON
/CHDAT/MMD1/IGAM.MMD  ???
/CHDAT/MMD1/KUNE.MMD KUNEMON
/CHDAT/MMD1/KUWA.MMD KUWAGAMON
/CHDAT/MMD1/LEOM.MMD LEOMON
/CHDAT/MMD1/MGDR.MMD MEGADRAMON
/CHDAT/MMD1/MOJA.MMD MOJAMON
/CHDAT/MMD1/MONO.MMD MONOCHROMON
/CHDAT/MMD1/NANI.MMD NANIMON
/CHDAT/MMD1/OGRE.MMD OGREMON
/CHDAT/MMD1/PALM.MMD PALMON
/CHDAT/MMD1/PATA.MMD PATAMON
/CHDAT/MMD1/PENM.MMD PENGUINMON
/CHDAT/MMD1/PICC.MMD  PIXIMON
/CHDAT/MMD1/PIYO.MMD BIYOMON
/CHDAT/MMD1/SCUM.MMD SUKAMON
/CHDAT/MMD1/SHEL.MMD SHELLMON
/CHDAT/MMD1/SIRA.MMD  ???
/CHDAT/MMD1/TANE.MMD TANEMON
/CHDAT/MMD1/TOKO.MMD TOKOMON
/CHDAT/MMD1/UNIM.MMD UNIMON
/CHDAT/MMD1/YURA.MMD YURAMON

I will try to provide a whole list later.
So far this is something I guess.
« Last Edit: January 22, 2012, 04:18:48 pm by Romsstar »

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #404 on: January 22, 2012, 11:21:09 pm »
Also you mentioned TOD animations? I can not seem to find any documentation on Google (and seriously I've tried...) that's of use. If I could look at how the standard format works, it might shed a bit of light on the MMD format.

If anyone could send me a link to the docs, and some sample files (or at least name a game that uses them), that would be great :p

Romsstar

  • Full Member
  • ***
  • Posts: 129
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #405 on: January 23, 2012, 01:15:34 am »
http://www.sendspace.com/file/bjvmi4
Taken from the PSX SDK.
The program TOD_View with source code and samples.

http://www.sendspace.com/file/q5lafr
Some more samples. Also from the PSX SDK.

http://consolecopyworld.com/cgi-bin/dl.cgi?id=psx&file=tod_info!zip
The program TOD_INFO.
You can try to use that one on the MMD but it found nothing.

http://consolecopyworld.com/cgi-bin/dl.cgi?id=psx&file=tod_rip!zip
The same as TOD_INFO but it rips TOD files.

You could use like um any 3D based PSX game for testing I guess.
Right out of the top of my head I can't think of a game that uses TOD right now. But I most certainly encountered some of them. It is a standardized format
after all which means: It's been used, but as you know, developers tend to "create" their own formats in order to protect their precious little games.

(Seriously for games that are older than 10 years the source code should be public...)

Hope I could help you, I will try to dig for more information, but I hope this is something you can already work with.

PS: Some more information I took from the documentation of the SDK:


[1.1.7.]: I would like to know about the formats of the
rotation parameters (Rx, Ry, Rz), the translation parameters
(Tx, Ty, Tz), and the scaling parameters (Sx, Sy, Sz) in the
TOD data packet.
See the following.
* Rotation
32-bit signed integer. (1,31,0) 4096 represents 1 degree.
* Transfer
32-bit signed integer. (1,31,0)
* Scale
16-bit fixed decimal point number. (1,3,12)


Celice

  • Hero Member
  • *****
  • Posts: 644
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #406 on: January 24, 2012, 12:55:42 am »
Good question! It only supports the formats that are currently supported in BTI files, which are formats I have test files to check against. If people can send me files (basically anything with a generic texture in it, bmd/bti/tpl etc) of any texture formats I don't have, that would be awesome :)

I'll have to check this but for one I know I definitely don't have format type 10 (CI14X2).

http://www.mediafire.com/?a2rm8upmn5v57m9

I don't know if this is what you meant, but my normal tpl viewer doesn't display tpl files from this game.  I've found one or two which are, but every other one just appears to be an unsupported format to my viewer (P3d0 Explorer).

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #407 on: January 24, 2012, 01:31:36 am »
@Celice
All textures in that file are S3TC (or rather the Gamecube variant), which all display fine.


@TOD/MMD Stuff
TOD File Format, extract from SDK sources provided by Romsstar.
It's actually a rather nice little block format. It basically creates the bone/skeleton like struct on the first frame and then runs from there :p I haven't checked yet but I'm sort of hopeful that the MMD animations follow this struct just missing the headers :p
Spoiler:
Code: [Select]
Packet Types
0=TOD_ATTR
1=TOD_COORD
2=TOD_TMDID
3=TOD_PARENT
4=TOD_MATRIX
5=TOD_TMDDATA
6=TOD_LIGHT
7=TOD_CAMERA
8=TOD_OBJCTL
9=TOD_USER0
10=TOD_USER1
11=TOD_USER2
12=TOD_USER3
13=TOD_USER4
15=TOD_SYSFUNC

header {
u32 magic (0x50),
u32 numframes,
}

frame {
u16 ?,
u16 numpackets,
u32 frame/time
}

packet {
u16 id,
u4 type,
u4 flag,
u8 length
}

tod_attr(0) {
u32 attr,
u32 pad
}

tod_coord(1) {
// if flag.b0 differencial else immediate
//Rotation if flag.b1
s32 rx, // divide by 360
s32 ry, // divide by 360
s32 rz, // divide by 360
//Scale if flag.b2
s16 sx, // if flag.b0 divide by 4096
s16 sy, // if flag.b0 divide by 4096
s16 sz, // if flag.b0 divide by 4096
s16 pad,
//Transfer if flag.b3
s32 tx,
s32 ty,
s32 tz
}

tod_matrix(4) {
s32 matrix*8
}

tod_tmdid(2) {
u32 tmd_id
}

tod_parent(3) {
u32 parent_id
}

tod_objctl(8) {
//if flag==0 Create New Object
//if flag==1 Delete Object
}

tod_light(6) {
//if flag.b0 differencial else immediate
//if flag.b1
s32 lx,
s32 ly,
s32 lz
//if flag.b2
u8 r,
u8 g,
u8 b
u8 pad
}

[edit]

Nope, MMD animations are completely custom :/
« Last Edit: January 24, 2012, 06:59:34 am by Low Lines »

Romsstar

  • Full Member
  • ***
  • Posts: 129
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #408 on: January 24, 2012, 08:46:11 am »
Shit, this was to be expected.
Is there anything I can help you with Low Lines that we can actually crack down that format?
the PSX SDK has some documentation on TMD as well.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #409 on: January 24, 2012, 04:21:42 pm »
I think I've found something...
Spoiler:
Code: [Select]
PUNI.MMD | Animation #1
15
00
00000000
00000000
D3FF0000
00000000
00000000
00000000
FF10
0100013000341808040201000130201818042800010081F4
0200330300F8330300001700
030081F00100500031FF50000200
040081F40100E5FF3D00E5FFD4FFFFFF
050081F40100CBFF9200CBFF4B00FFFF
060081F40100B3FF0001B3FFB6FFFDFF
070081F40100B2FF0A01B2FF2B00FEFF
080081F40100DCFF7E00DCFF0000FFFF
090081F001009B005FFE9B000400
0A0081F00100240019FF24000200
0B0081F0010007FDD60407FDEBFF
0C0081F401002AFC73062AFCD1FFE5FF
0D0081F4010035FDB70435FDC000EDFF
0E0081F4010089FFB70089FFB4FEFDFF
0F0081F40100E2FF1D00E2FF9001FFFF
100081F40100FDFFF4FFFDFFBBFE0000
110081F40100980038FF9800AF000400
120081F4010047022DFD470297FF1100
130081F401009602CEFC96022A001300
140081F401008A0105FE8A0100000800
152001000000
As you can see, the latter part of the file can be broken up into blocks because each block starts with an index. The last block index also matches up with the first byte in the file. The data at the start of the file appears to be base values (ie D3FF0000 as s32/360 equals approx 180 degrees, the amount needed to turn models up the right way), however I'm still seeing a bit of variation with it. Also the indexed blocks are likely to hold information for each polygon, so far I've only been only able to see the pattern in smaller models (ie with 1 polygon :p) as it's possible the index is only u8 thus can be mixed up with data easily without knowing the proper block lengths/distribution.

[edit]

It also appears that the numbering doesn't have to be sequential...Logically making blocks keyframes, and the first byte in the file being total time (in frames)

Spoiler:
Code: [Select]
TUNO.MMD | Animation #1
15
00
00000000
00000000
B9FF0000
00000000
00000000
00000000FF10010001300036180808020100013020181806200001000080
010001A001001A00
020081A001003500FFFF
030081A00500D601F9FF
080081A001002E000000
090081A001001300FFFF
0A0081A0010000000000
0B0081A00100EDFF0100
0C0081A00100D2FF0000
0D0081A005002AFE0700
120081A00100CBFF0100
130081A00100E6FF0000
140001A001000000
152001000000

[edit 2]

Here's another breakdown...I think I've got block section figured out (at least visually), I now just have to figure out how its done programatically :/

Note the block structure is brokendown as so..
Code: [Select]
FRAME#, ENDFLAG {
ID, FLAG, TIME, DATA
}
// ENDFLAG is 0x20 when last frame
// ID is & 0x3F (max 64 objects which matches with SDK notes I think...)
// ID.b6-7 are part of FLAG
// FLAG is what data is included
// TIME the number of frames this lasts for or transitions to?
Spoiler:
Code: [Select]
AGUM.MMD | Animation #1
11
00
000000FC
00000000
9CFF0000
00000000
3BFB
050000000000000000001EFF
2200000000000000000042FD
320000000000000000040000
220000000000D4FF730297FF
180000000000B3FF69FF99FD
340000000000F8FFC5FF3DFF
2D0000000000000000FC0000
2200000000002C008DFD97FF
1800000000004D00970099FD
34000000000008003B003DFF
2D0000000000000000004A03
050000000000000000040000
24000000000068FD2EFD2200
190000000000E6FE48FFEFFA
21000000000002FFA5001B06
180000000000000000FC0000
2400000000009802D2022200
1900000000001A01B800EFFA
210000000000FE005BFF1B06
180000000000FF1001000130
20201808200001000080

01 00
C1 80 0900 0300FEFF
02 82 0900 97FF
03 82 0200 2900
04 82 0900 D0FF
06 8E 0900 FCFFF9FFFEFF
07 8E 0900 040004000300
11 00
08 8E 0900 EBFFC5FF6EFF
0A 8E 0900 04000700FEFF
0B 8E 0900 FCFFFDFF1100
0C 8E 0900 15003B006EFF
0F 8E 0900 2F0010001C00
10 8E 0900 E8FF0C00A7FF
11 8E 0900 F8FFF4FF6400
13 8E 0900 D1FFF0FF1C00
14 8E 0900 1800F4FFA7FF
15 8E 0900 08000C006400
03 00
03 82 0800 AEFF
0A 00
C1 80 0700 FDFF
02 00
02 82 0700 6900
04 82 0700 3000
06 8E 0700 040007000200
07 8E 0700 FCFFFDFFEFFF
08 8E 0700 15003B009200
0A 8E 0700 FCFFF9FF0200
0B 8E 0700 04000300EFFF
0C 8E 0700 EBFFC5FF9200
0F 8E 0700 D1FFF0FFE4FF
10 8E 0700 1800F4FF5900
11 8E 0700 08000C009CFF
13 8E 0700 2F001000E4FF
14 8E 0700 E8FF0C005900
15 8E 0700 F8FFF4FF9CFF
0B 00
03 82 0600 2900
11 20
01 00 0000

[edit 3]

From what I can tell, the number of "objects" doesn't match up with the number of polygons, so I'd assume that polygons are attached in-frame (sort of like how TODs work). However I haven't bothered to figure out the flags in the block section yet because I wanted to be able to get there programatically first. With that said, I think I have now figured out the header part of the file...

Code: [Select]
header {
u8 numframes,
u8 flags, /* 0x80 means scale included */
}

init_header {
/* if scale included */
s16 sx,
s16 sy,
s16 sz,
/* endif */
s16 tx?,
s16 ty?,
s16 tz?,
s16 rx,
s16 ry,
s16 rz
/* above could be six s16 values, or three s32 values, I'm not sure however most of the data seems to be in s16/u16 */
}
/* repeats until 0xFF10 is found, call the init-header your base values for objects, numobjects can also be calculated from this */

FF10_section {
/* still needs some figuring out, has varying lengths, normally 16 bytes */
}

frame * numobjects {
u8 frameid,
u8 flag, /* 0x20 means last frame, 0x00 otherwise */
framedata /* repeats until next frame */
}

framedata {
u16 flagid, /* b0-5, objectid, b6-15 flags
u16 time/length (in frames),
data /* depends on flags */
}
« Last Edit: January 25, 2012, 09:09:43 am by Low Lines »

Celice

  • Hero Member
  • *****
  • Posts: 644
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #410 on: January 28, 2012, 12:35:11 am »
@Celice
All textures in that file are S3TC (or rather the Gamecube variant), which all display fine.

Ah, I copied the wrong file :p I could see this one, but some of the other tpl files throw up errors.

http://www.mediafire.com/?o8ki8pl6doxav84

Like this one, I was able to open it with a different viewer, which then showed numerous textures inside like it was a package.

What does your program do with this file?

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #411 on: January 28, 2012, 05:38:32 am »
It likes that one too, formats in it include I8, RGB5A3, IA8, and S3TC.

huckpie

  • Jr. Member
  • **
  • Posts: 15
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #412 on: January 28, 2012, 06:56:43 am »
Low, do you think you can add support for these kinds of archives?

http://www.mediafire.com/?71jx2vdx5q5rfzd

Most of Webfoot's titles for the NDS store their assets in a single .pak file, and I haven't seen anyone doing their stuff on this.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #413 on: January 29, 2012, 09:04:58 pm »
Low, do you think you can add support for these kinds of archives?

http://www.mediafire.com/?71jx2vdx5q5rfzd

Most of Webfoot's titles for the NDS store their assets in a single .pak file, and I haven't seen anyone doing their stuff on this.

That might be because a lot of their NDS games are targeted at children. I would personally like to hack their DBZ games though...
The Webfoot Package format is rather straight-forward, however the files themselves all appear custom as well, so this might not help you much...
Code: [Select]
Webfoot Package (*.pak)
header {
u32 fileCount, /* shift it left by 1 and that gets you the size of the file table */
file_table
}

file_table_entry {
u32 flags or perhaps a checksum?,
u32 fileOffset,
u32 fileSize,
u32 fileType?
}

huckpie

  • Jr. Member
  • **
  • Posts: 15
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #414 on: January 30, 2012, 07:44:27 pm »
That might be because a lot of their NDS games are targeted at children. I would personally like to hack their DBZ games though...

Yeah I heard they did a good job at the Dragon Ball GBA games. BTW, did the package format use any sort of compression? Aluigi at Xentax told me that it made use of some crazy compression format that he couldn't find out, but i dunno.

And another thing: Does your tool have full (as in read/write) support for Grand Theft Auto archives? Most of them peeps who'd like to mod the OSX port of the game are looking for an IMG tool for Macs besides running the Windows tools under Wine.
« Last Edit: January 30, 2012, 07:49:28 pm by huckpie »

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #415 on: January 31, 2012, 06:42:07 am »
There were a few files that had seemingly valid LZ77 headers, however they won't decompress due to negative offsets. Point is unless you know what data you are looking at, there's no real way of knowing if it actually is or not. If you got Aluigi to look at it, I'd put his word above mine, but the above is what I saw when I looked at it myself.

ctool just reads GTA IMGs, and files can also be exported. Editing support is planned, just not on my to do list atm.

huckpie

  • Jr. Member
  • **
  • Posts: 15
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #416 on: January 31, 2012, 08:23:57 pm »
There were a few files that had seemingly valid LZ77 headers, however they won't decompress due to negative offsets. Point is unless you know what data you are looking at, there's no real way of knowing if it actually is or not. If you got Aluigi to look at it, I'd put his word above mine, but the above is what I saw when I looked at it myself.

ctool just reads GTA IMGs, and files can also be exported. Editing support is planned, just not on my to do list atm.

Oh, and what about the code above? And I hope you won't mind, but I also have an NDS 3D model format that you might like to peek at:
http://www.mediafire.com/?ix1s9i7m03a21ak

I dunno, maybe we can add these just for the sake of completeness.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #417 on: January 31, 2012, 09:09:20 pm »
Just glancing at the data in that file, it looks like it's either compressed or was badly decompressed as the readable strings are in pieces...
What might help is stating what game it is from, and what means did you go through in order to get this file, otherwise its just garbage data atm.

[edit]

Since Google is so efficient I figured out what you are trying to do myself...File is from Strawberry Shortcake: The Four Seasons Cake, and looking at some of the files in the games filesystem, I'd say with confidence that anything with CMPR at the start of the file is compressed. Unless you know how to decompress such files you basically can't figure out what they contain.

[edit 2]

It turns out files are simply LZ77 compressed with a CMPR header to identify files are compressed.
http://www.mediafire.com/?6aefye39k9rseu2
« Last Edit: January 31, 2012, 09:52:44 pm by Low Lines »

huckpie

  • Jr. Member
  • **
  • Posts: 15
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #418 on: January 31, 2012, 10:46:21 pm »
So what kind of model file is it?

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #419 on: January 31, 2012, 10:53:29 pm »
So what kind of model file is it?

A custom model format with the magic id "SCEN", my guess an in-house format for The Game Factory company.