[Scummvm-cvs-logs] SF.net SVN: scummvm:[44778] tools/trunk/extract_loom_tg16.cpp
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Thu Oct 8 11:29:42 CEST 2009
Revision: 44778
http://scummvm.svn.sourceforge.net/scummvm/?rev=44778&view=rev
Author: Kirben
Date: 2009-10-08 09:29:42 +0000 (Thu, 08 Oct 2009)
Log Message:
-----------
Update code, with information from Tobias.
Modified Paths:
--------------
tools/trunk/extract_loom_tg16.cpp
Modified: tools/trunk/extract_loom_tg16.cpp
===================================================================
--- tools/trunk/extract_loom_tg16.cpp 2009-10-08 09:29:14 UTC (rev 44777)
+++ tools/trunk/extract_loom_tg16.cpp 2009-10-08 09:29:42 UTC (rev 44778)
@@ -680,97 +680,6 @@
{ {0x2B4000, 0x2B4000}, {0x0155, 0x0155}, RES_COSTUME } /* Duplicate of Costume 155 */
};
-static const uint16 roomHeader[88 * 4] = {
- 0, 0, 0, 0,
- 1, 320, 144, 61, /* Difference */
- 2, 960, 144, 7,
- 3, 320, 144, 7,
- 4, 640, 144, 32,
- 5, 704, 144, 5,
- 6, 320, 144, 47,
- 7, 448, 144, 2,
- 8, 912, 144, 14,
- 9, 320, 144, 17,
- 10, 320, 144, 27,
- 11, 456, 144, 9,
- 12, 320, 144, 3,
- 13, 320, 144, 15,
- 14, 320, 144, 0,
- 15, 424, 144, 6,
- 16, 624, 144, 8,
- 17, 320, 144, 15,
- 18, 320, 144, 12,
- 19, 320, 144, 7,
- 20, 320, 144, 14,
- 21, 0, 0, 0,
- 22, 320, 144, 18,
- 23, 480, 144, 11,
- 24, 768, 144, 17,
- 25, 320, 144, 3,
- 26, 320, 144, 16,
- 27, 320, 144, 0,
- 28, 640, 144, 35,
- 29, 320, 144, 3,
- 30, 960, 144, 18,
- 31, 448, 144, 16,
- 32, 464, 144, 5,
- 33, 320, 144, 15,
- 34, 624, 144, 30,
- 35, 320, 144, 11,
- 36, 480, 144, 3,
- 37, 320, 144, 8,
- 38, 320, 144, 15,
- 39, 320, 144, 0,
- 40, 320, 144, 6,
- 41, 336, 144, 7,
- 42, 320, 144, 2,
- 43, 320, 144, 13,
- 44, 320, 144, 3,
- 45, 320, 144, 26,
- 46, 960, 144, 14,
- 47, 640, 144, 9,
- 48, 0, 0, 0,
- 49, 320, 144, 17,
- 50, 320, 144, 20,
- 51, 320, 144, 23,
- 52, 320, 144, 0,
- 53, 320, 144, 6,
- 54, 320, 144, 3,
- 55, 320, 144, 6,
- 56, 320, 144, 6,
- 57, 320, 144, 5,
- 58, 320, 144, 6,
- 59, 320, 144, 6,
- 60, 320, 144, 5,
- 61, 320, 144, 0,
- 62, 320, 144, 12,
- 63, 320, 144, 6,
- 64, 320, 144, 2,
- 65, 320, 144, 6,
- 66, 320, 144, 33,
- 67, 320, 144, 4,
- 68, 320, 144, 6,
- 69, 320, 144, 23,
- 70, 320, 144, 0, /* Difference */
- 71, 0, 0, 0,
- 72, 0, 0, 0,
- 73, 0, 0, 0,
- 74, 0, 0, 0,
- 75, 0, 0, 0,
- 76, 0, 0, 0,
- 77, 0, 0, 0,
- 78, 0, 0, 0,
- 79, 320, 144, 6,
- 80, 0, 0, 0,
- 81, 320, 144, 0,
- 82, 0, 0, 0,
- 83, 0, 0, 0,
- 84, 0, 0, 0,
- 85, 0, 0, 0,
- 86, 320, 144, 11,
- 87, 320, 144, 3,
-};
-
uint32 r_offset (p_resource res) {
return res->offset[ISO];
}
@@ -842,13 +751,40 @@
write_clong(output, 0, &rlen);
write_cword(output, 'OR', &rlen); /* RO - Room */
- /* Hard code room header for now */
+ uint32 roomOffs = ftell(input);
+ uint16 numObjects = 0, roomWidth = 0, roomHeight = 0;
+ while (1) {
+ uint16 slen;
+ uint8 stype;
+
+ slen = read_cword(input, &i);
+ if (slen == 0xFFFF) {
+ break;
+ }
+ stype = read_cbyte(input, &i);
+ slen -= 3;
+ switch (stype) {
+ case 0x07:
+ read_cbyte(input, &i);
+ roomWidth = read_cbyte(input, &i) * 8;
+ roomHeight = read_cbyte(input, &i) * 8;
+ slen -= 3;
+ break;
+ case 0x0E:
+ numObjects += 1;
+ break;
+ default:
+ break;
+ }
+ fseek(input, slen, SEEK_CUR);
+ }
write_clong(output, 0xC, &rlen);
write_cword(output, 'DH', &rlen);
- write_cword(output, roomHeader[rid * 4 + 1], &rlen);
- write_cword(output, roomHeader[rid * 4 + 2], &rlen);
- write_cword(output, roomHeader[rid * 4 + 3], &rlen);
+ write_cword(output, roomWidth, &rlen);
+ write_cword(output, roomHeight, &rlen);
+ write_cword(output, numObjects, &rlen);
+ fseek(input, roomOffs, SEEK_SET);
while (1) {
uint16 slen;
uint8 stype;
@@ -859,18 +795,16 @@
stype = read_cbyte(input, &i);
slen -= 3;
switch (stype) {
- /* HD, SL, NL, PA - are current unknowns */
+ /* SL, NL - are current unknowns */
case 0x06:
- /* Resource type exists in all rooms */
write_clong(output, slen + 6, &rlen);
- write_cword(output, '6U', &rlen); /* Unknown */
+ write_cword(output, 'AP', &rlen); /* PA - palettes */
for (j = 0; j < slen; j++)
write_cbyte(output, read_cbyte(input, &i), &rlen);
break;
case 0x07:
- /* Resource type exists in all rooms */
write_clong(output, slen + 6, &rlen);
- write_cword(output, '7U', &rlen); /* Unknown */
+ write_cword(output, 'MB', &rlen); /* BM - bitmap */
for (j = 0; j < slen; j++)
write_cbyte(output, read_cbyte(input, &i), &rlen);
break;
@@ -890,7 +824,7 @@
break;
case 0x08:
write_clong(output, slen + 6, &rlen);
- write_cword(output, 'MB', &rlen); /* BM - bitmap */
+ write_cword(output, 'LT', &rlen); /* TL - tiles */
for (j = 0; j < slen; j++)
write_cbyte(output, read_cbyte(input, &i), &rlen);
break;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list