[Scummvm-cvs-logs] CVS: tools extract_mm_nes.c,1.10,1.11

Eugene Sandulenko sev at users.sourceforge.net
Tue Apr 12 14:49:21 CEST 2005


Update of /cvsroot/scummvm/tools
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14870

Modified Files:
	extract_mm_nes.c 
Log Message:
Sync with scumm/util.cpp


Index: extract_mm_nes.c
===================================================================
RCS file: /cvsroot/scummvm/tools/extract_mm_nes.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- extract_mm_nes.c	27 Mar 2005 21:07:12 -0000	1.10
+++ extract_mm_nes.c	12 Apr 2005 21:48:42 -0000	1.11
@@ -96,7 +96,7 @@
 	fwrite(&val,2,1,output);
 }
 
-typedef enum _res_type { RES_UNKNOWN, RES_GLOBDATA, RES_ROOM, RES_SCRIPT, RES_SOUND, RES_COSTUME, RES_ROOMGFX, RES_COSTUMEGFX, RES_SPRPALS, RES_SPRDESC, RES_SPRLENS, RES_SPROFFS , RES_SPRDATA } res_type;
+typedef enum _res_type { RES_UNKNOWN, RES_GLOBDATA, RES_ROOM, RES_SCRIPT, RES_SOUND, RES_COSTUME, RES_ROOMGFX, RES_COSTUMEGFX, RES_SPRPALS, RES_SPRDESC, RES_SPRLENS, RES_SPROFFS , RES_SPRDATA, RES_CHARSET, RES_PREPLIST } res_type;
 
 typedef	enum _romset { ROMSET_USA, ROMSET_EUROPE, ROMSET_SWEDEN, ROMSET_FRANCE, NUM_ROMSETS } t_romset;
 
@@ -525,6 +525,11 @@
 	{ {0x2CE11,0x2CE11,0x2C401,0x2CA28}, {0x2BE0,0x2BE0,0x2BE0,0x2BE0}, RES_SPRDATA },
 	{ {0x07F6B,0x0BE28,0x0FE6B,0x07E48}, {0x008A,0x008A,0x008A,0x008A}, RES_SPRDATA }
 };
+t_resource res_charset =
+	{ {0x3F6EE,0x3F724,0x3F739,0x3F739}, {0x0090,0x0090,0x0090,0x0090}, RES_CHARSET };
+t_resource res_preplist =
+	{ {0x3FB5A,0x3FB90,0x3FBA9,0x3FBAF}, {0x000E,0x000E,0x000E,0x0010}, RES_PREPLIST };
+
 
 unsigned long r_offset (p_resource res)
 {
@@ -587,6 +592,12 @@
 			write_word(output,len);
 			write_byte(output,val);
 			write_byte(output,cnt);
+			cnt = read_byte(input);
+			write_byte(output,cnt);
+			for (i = 0; i < cnt; i++)
+				write_byte(output,read_byte(input));
+			for (i = 0; i < cnt; i++)
+				write_byte(output,read_byte(input));
 			while (1)
 			{
 				write_byte(output,val = read_byte(input));
@@ -624,11 +635,27 @@
 	case RES_SPRLENS:
 	case RES_SPROFFS:
 	case RES_SPRDATA:
+	case RES_CHARSET:
 		len = r_length(res);
 		write_word(output,(unsigned short)(len + 2));
 		for (i = 0; i < len; i++)
 			write_byte(output,read_byte(input));
 		break;
+	case RES_PREPLIST:
+		len = r_length(res);
+		write_word(output,0x002A);
+		write_byte(output,' ');
+		for (i = 1; i < 8; i++)
+			write_byte(output,0);
+		for (j = 0; j < 4; j++)
+		{
+			write_byte(output,' ');
+			for (i = 1; val = read_byte(input); i++)
+				write_byte(output,val);
+			for (; i < 8; i++)
+				write_byte(output,0);
+		}
+		break;
 	default:
 		error("extract_resource - unknown resource type %d specified!",res->type);
 	}
@@ -691,7 +718,7 @@
 /*	remaining 'standard' resources (not used by any of the original LFL files) */
 p_resource lfl_53[] = { &res_rooms[53], &res_scripts[177], &res_scripts[178], &res_sounds[70], &res_sounds[71], &res_sounds[72], &res_sounds[73], &res_sounds[74], &res_sounds[75], &res_sounds[76], &res_sounds[77], &res_sounds[78], &res_sounds[79], &res_sounds[80], &res_sounds[81], NULL };
 /*	all 'non-standard' resources (the costume-related stuff) */
-p_resource lfl_54[] = { &res_rooms[54], &res_sprdesc[0], &res_sprdesc[1], &res_sprlens[0], &res_sprlens[1], &res_sproffs[0], &res_sproffs[1], &res_sprdata[0], &res_sprdata[1], &res_costumegfx[0], &res_costumegfx[1], &res_sprpals[0], &res_sprpals[1], NULL };
+p_resource lfl_54[] = { &res_rooms[54], &res_sprdesc[0], &res_sprdesc[1], &res_sprlens[0], &res_sprlens[1], &res_sproffs[0], &res_sproffs[1], &res_sprdata[0], &res_sprdata[1], &res_costumegfx[0], &res_costumegfx[1], &res_sprpals[0], &res_sprpals[1], &res_charset, &res_preplist, NULL };
 
 typedef	struct	_lfl
 {
@@ -769,8 +796,8 @@
 {
 	unsigned char	room_lfl[55];
 	unsigned short	room_addr[55];
-	unsigned char	costume_lfl[77];
-	unsigned short	costume_addr[77];
+	unsigned char	costume_lfl[80];
+	unsigned short	costume_addr[80];
 	unsigned char	script_lfl[200];
 	unsigned short	script_addr[200];
 	unsigned char	sound_lfl[100];
@@ -923,6 +950,14 @@
 				lfl_index.sound_lfl[entry - res_sounds] = lfl->num;
 				lfl_index.sound_addr[entry - res_sounds] = (unsigned short)ftell(output);
 				break;
+			case RES_CHARSET:
+				lfl_index.costume_lfl[77] = lfl->num;
+				lfl_index.costume_addr[77] = (unsigned short)ftell(output);
+				break;
+			case RES_PREPLIST:
+				lfl_index.costume_lfl[78] = lfl->num;
+				lfl_index.costume_addr[78] = (unsigned short)ftell(output);
+				break;
 			default:
 				error("Unindexed entry found!");
 				break;
@@ -937,8 +972,6 @@
 	debug("Creating 00.LFL...");
 	write_word(output,0x4643);
 	extract_resource(input,output,&res_globdata);
-	for (i = res_globdata.length[ROMset]; i < 775; i++)
-		write_byte(output,0);
 	for (i = 0; i < (int)sizeof(lfl_index); i++)
 		write_byte(output,((unsigned char *)&lfl_index)[i]);
 	fclose(output);





More information about the Scummvm-git-logs mailing list