SoftMax Resource File Format

From ModdingWiki
Jump to navigation Jump to search
SoftMax Resource File Format
Format typeArchive
Max filesSet by FAT length
File Allocation Table (FAT)External
Filenames?No
Metadata?None
Supports compression?No
Supports encryption?No
Supports subdirectories?No
Hidden data?No
Games

The SoftMax Resource File Format is used by games of the Korean developer Softmax. The format itself stores no offsets and/or file names. Instead, potential file tables are stored in the game EXE files or are even calculated using formulas.

The format is very similar to ArtCraft Resource File Format, which is used in the earlier released game Lychnis.

File format

Signature

Sky & Rica uses the following signature:

Data type Name Description
BYTE[0x20] cSignature "(C) SoftMax Resource File" 0x1A 0x00*6

FAT

The File Allocation Table, if available, is stored in the game executables.

Sky & Rica (unlike Lychnis) stores only very few information about the resource files. For most of the files, there is only a list of UINT32LE file offsets. For the sound effects, there is an additional UINT32LE list of file sizes. For some files, offsets are calculated by the game. S&R.EXE and SETUP.EXE don't use resource files.

EXE File Resource file Number of files File offsets File sizes File type
FRAME.EXE s&r4.res 135* 0x011A84 -- Sprites
s&r1.res 10* 0x01242C -- Cutscene Data?
s&r2.res 10* 0x012454 -- Cutscene Data?
s&r5.res 44* 0x012700 -- Music
s&r5.res 33 0x012806 0x01288A Sound Effects
STAGE1.EXE s&r4.res 120 0x012F9C -- Sprites
s&r5.res 42 0x013DAA -- Music
s&r5.res 34* 0x013EA8 0x013F34 Sound Effects
STAGE2.EXE s&r4.res 132 0x01305C -- Sprites
s&r5.res 34 0x013E6A -- Music
s&r5.res 34* 0x013FBC 0x014048 Sound Effects
STAGE3.EXE s&r4.res 120 0x012224 -- Sprites
s&r5.res 42 0x013028 -- Music
s&r5.res 34* 0x013126 0x0131B2 Sound Effects
STAGE4.EXE s&r4.res 120 0x013994 -- Sprites
s&r5.res 34 0x0147D2 -- Music
s&r5.res 34* 0x014924 0x0149B0 Sound Effects
STAGE5.EXE s&r4.res 133 0x0138C4 -- Sprites
s&r5.res 34 0x0146D8 -- Music
s&r5.res 34* 0x01482A 0x0148B6 Sound Effects
STAGE6.EXE s&r4.res 120 0x0121B4 -- Sprites
s&r5.res 44* 0x012FCC -- Music
s&r5.res 34* 0x0130CA 0x013156 Sound Effects
STAGE7.EXE s&r4.res 120 0x013754 -- Sprites
s&r5.res 34 0x014558 -- Music
s&r5.res 34* 0x0146AA 0x014736 Sound Effects
STAGE9.EXE s&r4.res 134 0x011CE4 -- Sprites
s&r5.res 34 0x012AFA -- Music
s&r5.res 34* 0x012C4C 0x012CD8 Sound Effects
TITLE.EXE s&r4.res 120 0x0088A6 -- Sprites
s&r5.res 34 0x008F2A -- Music
s&r5.res 34* 0x00907C 0x009108 Sound Effects

It should be noted that not all executables have full file tables. For example, TITLE.EXE doesn't have all music offsets, but the SFX list is complete. FRAME.EXE has all music offsets, but lacks one sound effect. All complete tables are marked with a *.

Sound Effects are raw 8-bit unsigned PCM. Music consists of IMS and BNK files.

List of files

The following table lists the contents of S&R1.RES.

File # Offset Size Format Notes
0 0x000020 887935 unknown
1 0x0D8C9F 333482 unknown
2 0x12A349 27524 unknown
3 0x130ECD 22472 unknown
4 0x136695 402640 unknown
5 0x198B65 137224 unknown
6 0x1BA36D 296062 unknown
7 0x2027EB 126749 unknown
8 0x221708 183262 unknown
9 0x24E2E6 143358 unknown

The following table lists the contents of S&R2.RES.

File # Offset Size Format Notes
0 0x000020 204805 unknown
1 0x032025 665605 unknown
2 0x0D482A 65413 unknown
3 0x0E47AF 422061 unknown
4 0x14B85C 363058 unknown
5 0x1A428E 237377 unknown
6 0x1DE1CF 446701 unknown
7 0x24B2BC 447507 unknown
8 0x2B86CF 66560 unknown
9 0x2C8ACF 189980 unknown

The following table lists the contents of S&R3.RES.

File # Offset Size Format Notes
0 0x000020 6752 Map Data Title Screen
1 0x001A80 16128 Map Data Stage 1
2 0x005980 16128 Map Data Stage 2
3 0x009880 14528 Map Data Stage 3
4 0x00D140 16128 Map Data Stage 4
5 0x011040 16128 Map Data Stage 5
6 0x014F40 16128 Map Data Stage 6
7 0x018E40 14368 Map Data Stage 7
8 0x01C660 75904 Tile Data Title Screen
9 0x02EEE0 216192 Tile Data Stage 1
10 0x063B60 252032 Tile Data Stage 2
11 0x0A13E0 400768 Tile Data Stage 3
12 0x103160 232064 Tile Data Stage 4
13 0x13BBE0 173440 Tile Data Stage 5
14 0x166160 236928 Tile Data Stage 6
15 0x19FEE0 330368 Tile Data Stage 7
16 0x1F0960 16896 Map Data Stage 9
17 0x1F4B60 252032 Tile Data Stage 9

Since all of the offsets are hardcoded into the game executables, I searched for magic bytes. Those were "Map File" and "Tile File" for map and tile data respectively. Both file types also contain the string "Innovation! 1994". In the STAGE#.EXE files the offsets can be located by searching for the following magic bytes:
Map Data (4-byte offset): F8 89 46 F6 6A 00 66 68 xx xx xx xx
Map Data (1-byte offset): F8 89 46 F6 6A 00 66 6A xx
Tile Data (4-byte offset): FA 89 46 F8 6A 00 66 68 xx xx xx xx

The following table lists the contents of S&R4.RES.

File # Offset Size Format Notes
0 0x000020 11367 Sprite Data
1 0x002C87 9268 Sprite Data
2 0x0050BB 34823 Sprite Data
3 0x00D8C2 25280 Sprite Data
4 0x013B82 7640 Sprite Data
5 0x01595A 14302 Sprite Data
6 0x019138 28980 Sprite Data
7 0x02026C 14448 Sprite Data
8 0x023ADC 4435 Sprite Data
9 0x024C2F 13515 Sprite Data
10 0x0280FA 10548 Sprite Data
11 0x02AA2E 13956 Sprite Data
12 0x02E0B2 5752 Sprite Data
13 0x02F72A 10245 Sprite Data
14 0x031F2F 3846 Sprite Data
15 0x032E35 16144 Sprite Data
16 0x036D45 11848 Sprite Data
17 0x039B8D 7194 Sprite Data
18 0x03B7A7 8642 Sprite Data
19 0x03D969 13390 Sprite Data
20 0x040DB7 12972 Sprite Data
21 0x044063 6822 Sprite Data
22 0x045B09 7216 Sprite Data
23 0x047739 15168 Sprite Data
24 0x04B279 40454 Sprite Data
25 0x05507F 10136 Sprite Data
26 0x057817 7347 Sprite Data
27 0x0594CA 7566 Sprite Data
28 0x05B258 5436 Sprite Data
29 0x05C794 8796 Sprite Data
30 0x05E9F0 9283 Sprite Data
31 0x060E33 3717 Sprite Data
32 0x061CB8 11706 Sprite Data
33 0x064A72 13298 Sprite Data
34 0x067E64 11108 Sprite Data
35 0x06A9C8 3417 Sprite Data
36 0x06B721 39070 Sprite Data
37 0x074FBF 5588 Sprite Data
38 0x076593 8923 Sprite Data
39 0x07886E 5450 Sprite Data
40 0x079DB8 11653 Sprite Data
41 0x07CB3D 53464 Sprite Data
42 0x089C15 11620 Sprite Data
43 0x08C979 6494 Sprite Data
44 0x08E2D7 3146 Sprite Data
45 0x08EF21 20656 Sprite Data
46 0x093FD1 1922 Sprite Data
47 0x094753 17723 Sprite Data
48 0x098C8E 8592 Sprite Data
49 0x09AE1E 5013 Sprite Data
50 0x09C1B3 34029 Sprite Data
51 0x0A46A0 26605 Sprite Data
52 0x0AAE8D 4276 Sprite Data
53 0x0ABF41 35885 Sprite Data
54 0x0B4B6E 47021 Sprite Data
55 0x0C031B 7005 Sprite Data
56 0x0C1E78 26605 Sprite Data
57 0x0C8665 26605 Sprite Data
58 0x0CEE52 34029 Sprite Data
59 0x0D733F 1958 Sprite Data
60 0x0D7AE5 3584 Sprite Data
61 0x0D88E5 2789 Sprite Data
62 0x0D93CA 7121 Sprite Data
63 0x0DAF9B 13715 Sprite Data
64 0x0DE52E 21591 Sprite Data
65 0x0E3985 9948 Sprite Data
66 0x0E6061 7054 Sprite Data
67 0x0E7BEF 4680 Sprite Data
68 0x0E8E37 3378 Sprite Data
69 0x0E9B69 5103 Sprite Data
70 0x0EAF58 6835 Sprite Data
71 0x0ECA0B 9360 Sprite Data
72 0x0EEE9B 172253 Sprite Data
73 0x118F78 147305 Sprite Data
74 0x13CEE1 19053 Sprite Data
75 0x14194E 1787 Sprite Data
76 0x142049 1513 Sprite Data
77 0x142632 4962 Sprite Data
78 0x143994 10437 Sprite Data
79 0x146259 6622 Sprite Data
80 0x147C37 3464 Sprite Data
81 0x1489BF 4085 Sprite Data
82 0x1499B4 27629 Sprite Data
83 0x1505A1 19785 Sprite Data
84 0x1552EA 4164 Sprite Data
85 0x15632E 17084 Sprite Data
86 0x15A5EA 13467 Sprite Data
87 0x15DA85 7184 Sprite Data
88 0x15F695 44831 Sprite Data
89 0x16A5B4 8968 Sprite Data
90 0x16C8BC 63467 Sprite Data
91 0x17C0A7 8856 Sprite Data
92 0x17E33F 6715 Sprite Data
93 0x17FD7A 4050 Sprite Data
94 0x180D4C 1355 Sprite Data
95 0x181297 12398 Sprite Data
96 0x184305 16593 Sprite Data
97 0x1883D6 108061 Sprite Data
98 0x1A29F3 3604 Sprite Data
99 0x1A3807 33899 Sprite Data
100 0x1ABC72 16701 Sprite Data
101 0x1AFDAF 63112 Sprite Data
102 0x1BF437 9400 Sprite Data
103 0x1C18EF 4269 Sprite Data
104 0x1C299C 6613 Sprite Data
105 0x1C4371 44437 Sprite Data
106 0x1CF106 3259 Sprite Data
107 0x1CFDC1 7243 Sprite Data
108 0x1D1A0C 11166 Sprite Data
109 0x1D45AA 48331 Sprite Data
110 0x1E0275 3010 Sprite Data
111 0x1E0E37 83755 Sprite Data
112 0x1F5562 10248 Sprite Data
113 0x1F7D6A 3729 Sprite Data
114 0x1F8BFB 7018 Sprite Data
115 0x1FA765 14275 Sprite Data
116 0x1FDF28 3192 Sprite Data
117 0x1FEBA0 8064 Sprite Data
118 0x200B20 7931 Sprite Data
119 0x202A1B 6108 Sprite Data
120 0x2041F7 18091 Sprite Data
121 0x2088A2 118034 Sprite Data
122 0x2255B4 31292 Sprite Data
123 0x22CFF0 1484 Sprite Data
124 0x22D5BC 4637 Sprite Data
125 0x22E7D9 7771 Sprite Data
126 0x230634 3980 Sprite Data
127 0x2315C0 27329 Sprite Data
128 0x238081 11086 Sprite Data
129 0x23ABCF 4631 Sprite Data
130 0x23BDE6 1417 Sprite Data
131 0x23C36F 16593 Sprite Data
132 0x240440 33899 Sprite Data
133 0x2488AB 39938 Sprite Data
134 0x2524AD 8222 Sprite Data

The following table lists the contents of S&R5.RES.

File # Offset Size Format Notes
0 0x000020 4609 PCM Sound Effect
1 0x001221 4609 PCM Sound Effect
2 0x002422 7759 PCM Sound Effect
3 0x004271 7759 PCM Sound Effect
4 0x0060C0 3735 PCM Sound Effect
5 0x006F57 11387 PCM Sound Effect
6 0x009BD2 6244 PCM Sound Effect
7 0x00B436 12243 PCM Sound Effect
8 0x00E409 7532 PCM Sound Effect
9 0x010175 14259 PCM Sound Effect
10 0x013928 6203 PCM Sound Effect
11 0x015163 19699 PCM Sound Effect
12 0x019E56 42261 PCM Sound Effect
13 0x02436B 6169 PCM Sound Effect
14 0x025B84 4318 PCM Sound Effect
15 0x026C62 3702 PCM Sound Effect
16 0x027AD8 7944 PCM Sound Effect
17 0x0299E0 2167 PCM Sound Effect
18 0x02A257 3006 PCM Sound Effect
19 0x02AE15 4667 PCM Sound Effect
20 0x02C050 7901 PCM Sound Effect
21 0x02DF2D 5982 PCM Sound Effect
22 0x02F68B 9396 PCM Sound Effect
23 0x031B3F 156577 PCM Sound Effect
24 0x057EE0 2715 PCM Sound Effect
25 0x05897B 2608 PCM Sound Effect
26 0x0593AB 3480 PCM Sound Effect
27 0x05A143 6480 PCM Sound Effect
28 0x05BA93 9771 PCM Sound Effect
29 0x05E0BE 2284 PCM Sound Effect
30 0x05E9AA 1435 PCM Sound Effect
31 0x05EF45 39331 PCM Sound Effect
32 0x0688E8 2177 PCM Sound Effect
33 0x069169 12701 PCM Sound Effect
34 0x06C306 1372 AdLib Instrument Bank Format
35 0x06C862 1372 AdLib Instrument Bank Format
36 0x06CDBE 1372 AdLib Instrument Bank Format
37 0x06D31A 1372 AdLib Instrument Bank Format
38 0x06D876 1372 AdLib Instrument Bank Format
39 0x06DDD2 1372 AdLib Instrument Bank Format
40 0x06E32E 1372 AdLib Instrument Bank Format
41 0x06E88A 1372 AdLib Instrument Bank Format
42 0x06EDE6 1372 AdLib Instrument Bank Format
43 0x06F342 1372 AdLib Instrument Bank Format
44 0x06F89E 1372 AdLib Instrument Bank Format
45 0x06FDFA 1372 AdLib Instrument Bank Format
46 0x070356 1372 AdLib Instrument Bank Format
47 0x0708B2 1372 AdLib Instrument Bank Format
48 0x070E0E 1372 AdLib Instrument Bank Format
49 0x07136A 1372 AdLib Instrument Bank Format
50 0x0718C6 1372 AdLib Instrument Bank Format
51 0x071E22 14491 IMS Format
52 0x0756BD 2179 IMS Format
53 0x075F40 2416 IMS Format
54 0x0768B0 438 IMS Format
55 0x076A66 2836 IMS Format
56 0x07757A 9280 IMS Format
57 0x0799BA 4833 IMS Format
58 0x07AC9B 4013 IMS Format
59 0x07BC48 651 IMS Format
60 0x07BED3 9877 IMS Format
61 0x07E568 5364 IMS Format
62 0x07FA5C 6790 IMS Format
63 0x0814E2 8586 IMS Format
64 0x08366C 7699 IMS Format
65 0x08547F 15395 IMS Format
66 0x0890A2 9218 IMS Format
67 0x08B4A4 2843 IMS Format
68 0x08BFBF 6790 IMS Format
69 0x08DA45 15386 IMS Format
70 0x09165F 3413 IMS Format
71 0x0923B4 9087 IMS Format
72 0x094733 7158 IMS Format
73 0x096329 1372 AdLib Instrument Bank Format
74 0x096885 1372 AdLib Instrument Bank Format
75 0x096DE1 1372 AdLib Instrument Bank Format
76 0x09733D 4837 IMS Format
77 0x098622 1372 AdLib Instrument Bank Format
78 0x098B7E 210650 unknown

PCM Sound Effects are raw 8-bit unsigned, but end with a 00 byte like VOC Files. There is one Instrument Bank (BNK) file for each IMS song. The first BNK belongs to the first IMS, the second BNK to the second IMS, etc.

Credits

This file format was reverse engineered by Valley Bell. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)