Page 1 of 1

Legend of Edda

Posted: Thu Mar 01, 2012 11:24 pm
by pixellegolas
Legend of Edda archive is .pak but I tried both signsrch and offzip but could not get anywhere :)

The game has quite simple models, but look at them! They have so much cuteness that its just plain cool

Image

Image

Archive with 2 .pak
http://www.2shared.com/file/coeMmyWc/Graphic.html

actually I get this in signsrch:

padding used in hashing
libavcodec ff_mjpeg_val_ac_luminance
libavcodec ff_mjpeg_val_ac_chrominance
DMC compression [32.le.16&]

Re: Legend of Edda

Posted: Fri Mar 02, 2012 4:40 am
by CriticalError
ummm well looking files I get this files.

*anm (animations)
*chx & mod (think models)
*dds (textures)

ImageImage
ImageImage
ImageImage

Legend of Edda 2D-3D Samples

Re: Legend of Edda

Posted: Fri Mar 02, 2012 4:50 am
by iaw

Re: Legend of Edda

Posted: Sun Jan 12, 2014 3:09 am
by pixellegolas
sorry for necro but could someone upload the script from progamer?

Re: Legend of Edda

Posted: Mon Jan 21, 2019 11:50 pm
by wolfen
hi im spanish member
Legend of Edda is same luna online reborn

I started a little while ago I start to analyze this structure

.chx is load from client. it only contains data of models and animation that the client will load
.anm most likely bone structure and animation
.mod model, bone information, collision and other things that have not been found out

try my script

Image

Code: Select all

/* READ FIXING STRING */
FUNCTION RFS FSTREAM NCHAR =
(
	TXT = ""
	NULL = FALSE
	FOR I = 1 TO NCHAR DO 
	(
		CHR = READBYTE FSTREAM #UNSIGNED 
		IF CHR == 0 THEN
		(
			NULL = TRUE
		)
		IF NULL == TRUE THEN
		(
			CONTINUE
		)
		TXT += BIT.INTASCHAR(CHR)
	)
	RETURN TXT
)
/* READ MATRIX 4X4 */
FUNCTION READ_MTX44 FSTREAM =
(
	M11 = READFLOAT FSTREAM; M12 = READFLOAT FSTREAM; M13 = READFLOAT FSTREAM;M14 = READFLOAT FSTREAM
	M21 = READFLOAT FSTREAM; M22 = READFLOAT FSTREAM; M23 = READFLOAT FSTREAM;M24 = READFLOAT FSTREAM
	M31 = READFLOAT FSTREAM; M32 = READFLOAT FSTREAM; M33 = READFLOAT FSTREAM;M34 = READFLOAT FSTREAM
	M41 = READFLOAT FSTREAM; M42 = READFLOAT FSTREAM; M43 = READFLOAT FSTREAM;M44 = READFLOAT FSTREAM
	MTX = MATRIX3 [M11, M12, M13] [M21, M22, M23] [M31, M32, M33] ([M41, M42, M43]) 
	RETURN MTX
)
/* READ NODE INFO */
FUNCTION READ_NODE F =
(
	N_ANGLE = READFLOAT F
	N_POSITION = [READFLOAT F,READFLOAT F,READFLOAT F]
	N_AXIS = [READFLOAT F,READFLOAT F,READFLOAT F]
	N_SCALE = [READFLOAT F,READFLOAT F,READFLOAT F]
	N_SCALEAXIS = [READFLOAT F,READFLOAT F,READFLOAT F]
	N_SCALEANGLE = READFLOAT F
	N_MTX = READ_MTX44 F
	N_MTXINVERSE = READ_MTX44 F
)
/* READ BASE INFO */
FUNCTION READ_BASE F =
(
	INDEX = READLONG F
	READ_NODE F
	CHILDNUM = READLONG F
	PARENTINDEX = READLONG F
	OBJNAME = RFS F 128
	FOR K = 1 TO CHILDNUM DO
	(
		CHILDID = READLONG F
	)
)
/* READ COLLITION INFO */
FUNCTION READ_COL F =
(
	/* BOUNDING BOX */
	BBOX1 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX2 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX3 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX4 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX5 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX6 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX7 = [READFLOAT F,READFLOAT F,READFLOAT F]
	BBOX8 = [READFLOAT F,READFLOAT F,READFLOAT F]
	/* BOUNDING SPHERE */
	BS_POINT = [READFLOAT F,READFLOAT F,READFLOAT F]
	BS_UNK = READFLOAT F
	/* BOUNDING CYLINDER */
	BC_POINT = [READFLOAT F,READFLOAT F,READFLOAT F]
	BC_UNK1 = READFLOAT F
	BC_UNK2 = READFLOAT F
	/* DATA INFO */
	COL_INDEX = READLONG F
	COL_NAME = RFS F 128
)
/* READ MESH INFO */
VERT = #()
TVERT = #()
FACE = #()
FUNCTION READ_MESH F VER =
(
	FREE VERT;FREE TVERT;FREE FACE
	MAXVERTNUM = READLONG F
	VERTNUM = READLONG F
	OVERTNUM = READLONG F
	EVERTNUM = READLONG F
	TVERTNUM = READLONG F
	MTLINDEX = READLONG F
	FACEGROUP = READLONG F
	FLAG = READLONG F
	GRIDINDEX = READLONG F
	DIR = [READFLOAT F,READFLOAT F,READFLOAT F]
	/* VERTEX */
	FOR K = 1 TO VERTNUM DO
	(
		APPEND VERT [READFLOAT F,READFLOAT F,READFLOAT F]
	)
	/* TEXTURE VERTEX */
	FOR K = 1 TO TVERTNUM DO
	(
		APPEND TVERT [READFLOAT F,-READFLOAT F,0.0]
	)
	/* UNK */
	FOR K = 1 TO EVERTNUM DO
	(
		READLONG F
	)
	/* READ FACES */
	FOR K = 1 TO FACEGROUP DO
	(
		MTLINDEX = READLONG F
		INDEX = READLONG F
		FACENUM = READLONG F
		MAXFACENUM = READLONG F
		VERTINDEXNUM = READLONG F
		LIGHTUV1 = READLONG F
		LIGHTUV2 = READLONG F
		FOR J = 1 TO FACENUM DO
		(
			APPEND FACE [READSHORT F + 1,READSHORT F + 1,READSHORT F + 1]
		)
		FOR J = 1 TO LIGHTUV1 DO
		(
			[READSHORT F,READSHORT F]
		)
		FOR J = 1 TO LIGHTUV2 DO
		(
			[READSHORT F,READSHORT F]
		)
	)
	/* PHYSIQUE BONE */
	IF(VER == 0X00000002) THEN
	(
		-- HEADER
		PVERT = READLONG F
		PBONES = READLONG F
		PBONES2 = READLONG F
		FOR K = 1 TO PVERT DO
		(
			PBONES_NUM = READBYTE F
			PBONES_ID = READLONG F
		)
		FOR K = 1 TO PBONES DO
		(
			B_ID = READLONG F
			B_WEIGHT = READFLOAT F
			B_OFFSET = [READFLOAT F,READFLOAT F,READFLOAT F]
			B_NORMAL = [READFLOAT F,READFLOAT F,READFLOAT F]
			B_TAGEN = [READFLOAT F,READFLOAT F,READFLOAT F]
		)
	)
	/* NORMAL VERTEX */
	IF(FLAG == 0X00000000) THEN -- NEED FIX
	(
		-- HEADER
		PL_NUM = READLONG F
		PL_WIDTH = READLONG F
		PL_HEIGHT = READLONG F
		FOR K = 1 TO PL_NUM DO
		(

		)
	)
	ELSE
	(
		IF(FLAG != 0X00000030) THEN
		(
			FOR K = 1 TO TVERTNUM DO
			(
				[READFLOAT F,READFLOAT F,READFLOAT F]
			)
		)
	)
	MSH = MESH VERTICES:VERT FACES:FACE TVERTS:TVERT
	BUILDTVFACES MSH
	FOR I = 1 TO MSH.NUMFACES DO
	(
		SETTVFACE MSH I (GETFACE MSH I)
	)
)
/* READ MOD FILE INFO */
FUNCTION READ_MOD F =
(
	-- MOD HEADER
	VERSION	= READLONG F
	OBJNUM		= READLONG F
	MTLNUM		= READLONG F
	MSHNUM	= READLONG F
	LGTNUM		= READLONG F
	CAMNUM	= READLONG F
	BONENUM	= READLONG F
	FORMAT "DATA: VER:% [%][%][%][%][%][%]\n" VERSION OBJNUM MTLNUM MSHNUM LGTNUM CAMNUM BONENUM
	-- READ MTL
	IF(MTLNUM >= 1) THEN
	(
		FOR K = 1 TO MTLNUM DO
		(
			FORMAT "MATERIAL #%\n" K
			MTL_TYPE = READLONG F
			MTL_SIZE = READLONG F
			IF(MTL_TYPE == 0X00F00000) THEN
			(
				TEX_NUM = READLONG F
				TEX_DIFFUSE = READLONG F 
				TEX_AMBIENT = READLONG F 
				TEX_SPECULAR = READLONG F 
				TEX_TRANSPARENCI = READFLOAT F 
				TEX_SHINE = READFLOAT F 
				TEX_SHINESTRENG = READFLOAT F 
				FOR K = 1 TO 10 DO
				(
					TEX_NAME = RFS F 128
					IF(TEX_NAME != "") THEN
					(
						FORMAT "TEXTURE:%\n" TEX_NAME
					)
				)
				TEX_MTL = RFS F 128
				TEX_INDEX = READLONG F
				TEX_FLAG = READLONG F
			)
		)	
	)	
	-- READ OBJ
	IF(OBJNUM >= 1) THEN
	(
		FOR K = 1 TO OBJNUM DO
		(
			--FORMAT "OBJECT #%\n" K
			MSH_TYPE = READLONG F
			MSH_SIZE = READLONG F
			--FORMAT "TYPE:%\n" (BIT.INTASHEX(MSH_TYPE))
			IF(MSH_TYPE == 0XF4000000) THEN
			(
				READ_BASE F
				READ_MESH F VERSION
			)
			ELSE IF(MSH_TYPE == 0XF5000000) THEN
			(
				READ_BASE F
				READ_COL F
			)
			ELSE
			(
				FORMAT "NEW TYPE FOUND [%]\n" (BIT.INTASHEX(MSH_TYPE))
			)
		)
	)
)
-- START OPEN FILE
FILE = GETOPENFILENAME CAPTION:"IMPORT MODEL" TYPES:"LUNA PLUS MOD|*.mod"
IF(FILE != UNDEFINED) THEN
(
	CLEARLISTENER()
	F	= FOPEN FILE "rb"
	READ_MOD F
	FCLOSE F
)