Difference between revisions of "AppSignature"
From MSX Game Library
(→Known signed applications) |
(→Programming) |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 46: | Line 46: | ||
Keep in mind than MSX store data as Less significant byte first (Little endian). | Keep in mind than MSX store data as Less significant byte first (Little endian). | ||
| − | + | For ROM targets, if a [[ROM type signature]] is present at offset +0010h, then the application signature is placed just after (header +0x0018). | |
| + | |||
| + | To handle all cases, the addresses to check are: 0x4010, 0x4018, 0x8010 and 0x8018. | ||
| + | |||
| + | The MSXgl's {{MOD|tool/sign}} module provides C functions for detecting games in other cartridge ports. | ||
== Creator ID == | == Creator ID == | ||
| Line 75: | Line 79: | ||
| <tt>"FD"</tt> || ✔️ || FutureDisk | | <tt>"FD"</tt> || ✔️ || FutureDisk | ||
|- | |- | ||
| − | | <tt>"FP"</tt> || ✔️ || Fausto | + | | <tt>"FP"</tt> || ✔️ || Fausto Pracek |
|- | |- | ||
| <tt>"JP"</tt> || || Johan de Punder | | <tt>"JP"</tt> || || Johan de Punder | ||
| Line 85: | Line 89: | ||
| <tt>"H_"</tt> || || Peruho | | <tt>"H_"</tt> || || Peruho | ||
|- | |- | ||
| − | | <tt>"HN"</tt> || | + | | <tt>"HN"</tt> || ✔️ || Hando |
|- | |- | ||
| <tt>"MO"</tt> || ✔️ || MO5.com | | <tt>"MO"</tt> || ✔️ || MO5.com | ||
| Line 131: | Line 135: | ||
|- | |- | ||
| <tt>"2NR3"</tt> || 2NICE || ''Super Sokoban'' | | <tt>"2NR3"</tt> || 2NICE || ''Super Sokoban'' | ||
| + | |- | ||
| + | | <tt>"AMCR"</tt> || Associazione MSX Italia || ''Chrono Runner'' | ||
|- | |- | ||
| <tt>"B5EM"</tt> || Bik5 (J. Bikker) || ''Eggy's Maze'' | | <tt>"B5EM"</tt> || Bik5 (J. Bikker) || ''Eggy's Maze'' | ||
| Line 149: | Line 155: | ||
|- | |- | ||
| <tt>"FPSP"</tt> || Fausto Pracek || ''Sam.Pr'' | | <tt>"FPSP"</tt> || Fausto Pracek || ''Sam.Pr'' | ||
| + | |- | ||
| + | | <tt>"HNMG"</tt> || Hando || ''MUGI'' | ||
| + | |- | ||
| + | | <tt>"MOR5"</tt> || MO5.com || ''Room 5'' | ||
|- | |- | ||
| <tt>"NBTC"</tt> || Nicola "8bit" || ''The New Castle'' | | <tt>"NBTC"</tt> || Nicola "8bit" || ''The New Castle'' | ||
| Line 157: | Line 167: | ||
|- | |- | ||
| <tt>"PH",003</tt> || Pixel Phenix || ''Peng Pong'' | | <tt>"PH",003</tt> || Pixel Phenix || ''Peng Pong'' | ||
| + | |- | ||
| + | | <tt>"RGAJ"</tt> || Tiago Tresoldi<br/>Freja Lindgren || ''AstroJump'' | ||
|- | |- | ||
| <tt>"RGTM"</tt> || Rutagames || ''TerMSX Multi'' | | <tt>"RGTM"</tt> || Rutagames || ''TerMSX Multi'' | ||
| Line 164: | Line 176: | ||
| <tt>"RSPE"</tt> || RoboSoft || ''Attack of the Petscii Robots'' | | <tt>"RSPE"</tt> || RoboSoft || ''Attack of the Petscii Robots'' | ||
|- | |- | ||
| − | | <tt>" | + | | <tt>"TT4P"</tt> || Antxiko || ''Tiny Tetris VS'' |
|- | |- | ||
| <tt>"TTDL"</tt> || Thomas "Totta" Lundgren || ''Doomlings'' | | <tt>"TTDL"</tt> || Thomas "Totta" Lundgren || ''Doomlings'' | ||
|- | |- | ||
| − | | <tt>" | + | | <tt>"TTTP"</tt> || Thomas "Totta" Lundgren || ''Tetpuz'' |
|- | |- | ||
| <tt>"GL",...</tt> || MSXgl || (samples) | | <tt>"GL",...</tt> || MSXgl || (samples) | ||
Latest revision as of 13:38, 26 September 2026
This Build tool option allow to add an application signature to binary data (right after the header).
The MSXgl signature format is directly inspired by the meta-data used by Konami to identify their cartridges and add cross-games options.
Definition
Application's signature is 4 bytes long and composed of:
- AppCompany: 2 bytes for the creator ID (reserve yours!),
- AppID: 2 bytes for the product ID (the numbering of the applications is up to each creator).
//-- Add application signature to binary data (boolean) AppSignature = true; //-- Application creator ID. Can be 2 character string or 16-bits integer (0~65535) AppCompany = "GL"; //-- Application product ID. Can be 2 character string or 16-bits integer (0~65535) AppID = 0;
If 2-character string is recommended for creator ID and integer for product ID, in fact, both of those parameters can be any of:
- 2-character string ("MX", "a7" for example),
- 16-bits decimal unsigned number (12345 for example),
- 16-bits hexadecimal number starting with 0x (0x0750 for example).
For example, the header first 2 words of Konami's Penguin Adventure are "CD", 0x4307. "CD" is one of the signature used by Konami to mark there ROM (see next section) and 0x4307 show in binary viewer the number 0743... the serial number of Penguin Adventure (RC743).
You can also add extra data using AppExtra option. 🚧WIP
Programming
If AppSignature is set to TRUE in Build tool configuration, then APPSIGN is defined in your C program.
Application signature is put just after the binary header:
- At ROM header address +0x0010 (should be 0x4010 or 0x8010),
- At Basic binary header address +0x0007 (should be 0x8007),
- At DOS binary start address +0x0002 (should be 0x0102).
Define an external variable as g_AppSignature if you need to access the data from your program. It can be defined in several ways depending on your needs. For example:
extern const u16 g_AppSignature[2];
extern const u8 g_AppSignature[4];
Keep in mind than MSX store data as Less significant byte first (Little endian).
For ROM targets, if a ROM type signature is present at offset +0010h, then the application signature is placed just after (header +0x0018).
To handle all cases, the addresses to check are: 0x4010, 0x4018, 0x8010 and 0x8018.
The MSXgl's tool/sign module provides C functions for detecting games in other cartridge ports.
Creator ID
Some creators' ID are already reserved:
| ID | Rel | Creator's name |
|---|---|---|
| 0x00?? | ➖ | Reserved |
| "2N" | ✔️ | 2NICE |
| "AB" | ✔️ | Konami (Boxing and Football) |
| "AM" | ✔️ | Associazione MSX Italia |
| "AG" | Antxiko Gorjon | |
| "B5" | ✔️ | Bik5 (J. Bikker) |
| "CC" | ✔️ | Casper Croes |
| "CD" | ✔️ | Konami (many games) |
| "CL" | Chien Loco | |
| "EF" | ✔️ | Konami (Pennant Race and Knightmare 3) |
| "FD" | ✔️ | FutureDisk |
| "FP" | ✔️ | Fausto Pracek |
| "JP" | Johan de Punder | |
| "GH" | ➖ | Reserved |
| "GL" | ✔️ | MSXgl (samples) |
| "H_" | Peruho | |
| "HN" | ✔️ | Hando |
| "MO" | ✔️ | MO5.com |
| "NB" | ✔️ | Nicola "8bit" |
| "PH" | ✔️ | Pixel Phenix |
| "PP" | ✔️ | Pixel Phenix (obsolete) |
| "RC" | ➖ | Reserved |
| "RG" | ✔️ | Rutagames (Diogo Patrão) |
| "RO" | ➖ | Reserved for ROM type signature |
| "RS" | ✔️ | RoboSoft |
| "TL" | Tele-Line | |
| "TT" | ✔️ | Thomas ‘Totta’ Lundgren |
| "YZ" | ✔️ | Konami (Game Master 2) |
| "WD" | Wim Dewijngaert | |
| "ZR" | Zdrmonster Productions | |
| "XX" | ➖ | Reserved |
| 0xFF?? | ➖ | Reserved |
Note:
- Come on the MSXgl's Discord Server to reserve your own creator ID.
- Creator ID are only definitively assigned when an application is published with this code.
Known signed applications
List of released applications that contain compatible signature.
| Sign | Author | Application |
|---|---|---|
| "2NEM" | 2NICE | Snake Escape |
| "2NR3" | 2NICE | Super Sokoban |
| "AMCR" | Associazione MSX Italia | Chrono Runner |
| "B5EM" | Bik5 (J. Bikker) | Eggy's Maze |
| "B5R3" | Bik5 (J. Bikker) | DELTA |
| "CCPC" | Casper Croes | Phenix Corrupta |
| "CCTR" | Casper Croes Pixel Phenix |
Soul Trapped |
| "FDLW" | FutureDisk | A Lone Wolf |
| "FPEX" | Fausto Pracek | Sam.Pr Explore |
| "FPMW" | Fausto Pracek | Martian War |
| "FPSL" | Fausto Pracek | Soccer League |
| "FPSP" | Fausto Pracek | Sam.Pr |
| "HNMG" | Hando | MUGI |
| "MOR5" | MO5.com | Room 5 |
| "NBTC" | Nicola "8bit" | The New Castle |
| "PPCR" | Pixel Phenix | Crawlers (MSXdev'23) |
| "PH",001 | Pixel Phenix | Crawlers (cartridge) |
| "PH",003 | Pixel Phenix | Peng Pong |
| "RGAJ" | Tiago Tresoldi Freja Lindgren |
AstroJump |
| "RGTM" | Rutagames | TerMSX Multi |
| "RSP9" | RoboSoft | Planet X9 |
| "RSPE" | RoboSoft | Attack of the Petscii Robots |
| "TT4P" | Antxiko | Tiny Tetris VS |
| "TTDL" | Thomas "Totta" Lundgren | Doomlings |
| "TTTP" | Thomas "Totta" Lundgren | Tetpuz |
| "GL",... | MSXgl | (samples) |
| "AB",... | Konami | (Boxing and Football) |
| "CD",... | Konami | (many games) |
| "EF",... | Konami | (Pennant Race and Knightmare 3) |
| "YZ",... | Konami | (Game Master 2) |