GME Games - entropia/tip-toi-reveng GitHub Wiki

header

Example (Bauernhof, 6th game):

0x00018EE0:                      06 00 05 00 05 00 04 00 03
                                 aa aa bb bb rr rr cc cc ss
0x00018EF0: 00 05 00 00 00 04 00 03 00 49 06 00 00 6F 00 DE
            ss tt tt ii ii zz zz qq qq yy yy xx xx ww ww vv
0x00018F00: 00 F7 93 01 00 03 94 01 00 05 94 01 00 07 94 01
            vv dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd
0x00018F10: 00 13 94 01 00 1F 94 01 00 2B 94 01 00 7B 91 01
            dd dd dd dd dd hh hh hh hh hh hh hh hh ee ee ee
0x00018F20: 00 81 8F 01 00 FF 8F 01 00 7D 90 01 00 FB 90 01
            ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee
0x00018F30: 00 FD 91 01 00 7D 92 01 00 FB 92 01 00 79 93 01
            ee ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x00018F40: 00 03 00 00 00 03 00 00 00 00 00 00 00 00 00 00
            ff uu uu uu uu uu uu uu uu uu uu uu uu uu uu uu
0x00018F50: 00 00 00 00 00 37 94 01 00 49 94 01 00 57 94 01
            uu uu uu uu uu gg gg gg gg gg gg gg gg gg gg gg
0x00018F60: 00 65 94 01 00 73 94 01 00 75 94 01 00 77 94 01
            gg gg gg gg gg gg gg gg gg gg gg gg gg gg gg gg
0x00018F70: 00 79 94 01 00 7B 94 01 00 7D 94 01 00 7F 94 01
            gg gg gg gg gg gg gg gg gg gg gg gg gg jj jj jj
0x00018F80: 00
            jj
  • a: 16bit, gametype
  • b: 16bit, count: number of subgames
  • r: 16bit, number of rounds to play in this game
  • c: 16bit, for gametype 6: number of subgames of the bonusgame; possible values for other gametypes are 0 and 1
  • s (exists only for gametype 6): 16bit, number of rounds to play in the bonusgame
  • t (exists only for gametype 6): 16bit, number of correct answers in the main game to access the bonusgame
  • i (exists only for gametype 6): 16bit, unknown
  • z: 16bit: number of rounds to start with the "pre next round" sound, after that play the "pre last round" sound
  • q (exists only for gametype 6): 16bit, unknown
  • y: 16bit: this defines the OID that triggers the "repeat last media" action
  • x: 16bit, unknown (3151 in "Englisch Detektive")
    3151 is an empty script in "Englisch Detektive"
  • w: 16bit, unknown (111 in all "Bauernhof" games, 3152 in "Englisch Detektive")
    111 is not a valid OID for "Bauernhof"
    3152 is an empty script in "Englisch Detektive"
  • v: 16bit, unknown (222 in all Bauernhof games, 3150 in "Englisch Detektive")
    222 is not a valid OID for "Bauernhof", 3150 is an empty script in "Englisch Detektive"
  • d: 5 (seems hardcoded) * 32bit pointers to playlistlist
  • playlistlist 1:
    played when the game starts
  • playlistlist 2:
    played at the end of round 1 to r (from left to right)
  • playlistlist 3:
    played after the game is finished (one playlist is selected randomly)
  • playlistlist 4:
    played at the beginning of round 2 to z
  • playlistlist 5:
    played at beginning of round z+1
  • h (exists only for gametype 6): 2 * 32bit pointers to playlistlist. Judging from the referenced media found here in some products these playlists seem to be ignored. Sometimes the playlists are identical to the last two of the d.
  • playlistlist 1:
    played at the beginning of a round
  • playlistlist 2:
    played at beginning to the last round
  • e: b * 32bit pointers to subgames
  • f (exists only for gametype 6): c * 32bit pointers to second set of subgames
  • u: 10 (seems hardcoded) * 16bit
    For each playlist in the playlistlist g u contains a 16bit value. At the end of the game u is checked from left to right. Each number in u is compared against the number of correct answers. The first number in u that is <= the number of correct answers defines the playlist to be played. u must be ordered in descending order.
    Example: u contains [5,3,1,0,0,0,0,0,0,0].
    This means: If the player has 5 or more correct answers, the first playlist of g is played, when the player has 3 or 4 correct answers, the second playlist is played, if he has at least one correct answer, playlist 3 is played else playlist 4.
    For gametype 6 the behaviour is different:
    The first two values are about the main game, the others about the bonus game.
    Example: u contains [8,0,1,0,0,0,0,0,0,0].
    This means: If the player has 8 or more correct answers in the main game, the 1st playlist of g is played, else the 2nd playlist is played.
    If the player has 1 or more correct answers in the bonus game, the 3rd playlist of g is played, else the 4th.
  • g: 10 (seems hardcoded) * 32bit pointer to playlistlist

now it differs on gametype
gametype 6

  • j: 1 * 32bit pointer to subgamelist
    Contains the subgame-id of the bonus-subgames.

gametype 7

  • j: 1 * 32bit pointer to subgamelistlist
    Contains subsets of subgames, e.g. [1,2][3,4,5][6,7,8,9].
    The subsets may be chosen randomly, but the subgames in a subset are always played from left to right.

gametype 8

  • j: 1 * 32bit pointer to oidlist
    A list of valid OIDs to select a game from k.
  • k: 1 * 32bit pointer to gameidlist
    A list of games that can be startet by pointing to the corresponding OID of j.
  • l: 2 * 32bit pointer to playlistlist
    The first playlists is always emtpy, the second playlist is played when the stick points to an OID on the wrong page.
    As a game of type 8 doesn't define a valid range, it seems to take the valid range from one or all of the linked games.

gametype 9

  • j: 75 * 32bit pointer to playlistlist

gametype 10

  • j: 1 * 32bit pointer to playlistlist

gametype 16

  • j: 1 * 32bit pointer to oidlist
  • k: 3 * 32bit pointer to playlistlist

other gametypes

  • nothing

playlistlist

Example:

000176f1 01 00 f7 76 01 00
         aa aa bb bb bb bb
  • a: 16bit count (can be zero than no b is present)
  • b: a * 32bit pointer to playlist

playlist

Example:

000176f7 02 00 b3 01 ba 01
         aa aa bb bb bb bb
  • a: 16bit count
  • b: a * 16bit id of media to be played

oidlist

Example:

0x00019FA0:                            03 00 96 06 97 06 98
                                       aa aa bb bb bb bb bb
0x00019FB0: 06
            bb
  • a: 16bit count
  • b: a * 16bit oids

gameidlist

Example:

0x00019FB0:    03 00 09 00 0A 00 0B 00
               aa aa bb bb bb bb bb bb
  • a: 16bit count
  • b: a * 16bit game ids