08-21-2016, 08:34 PM
hi! this is my first post and i want to know how i can dump/rip/export 3d models from the game sunday vs magazine white comics for nintendo ds, mkds can not open the files because are in .bin format, i just want to know how to rip the models, i know how to rip the textures, ninjariper doesn't respont, the same thing with 3d reaper dx , i tried to rip from the emulators desmume and no$gba but nothing happen, just export 3 vertex with out form, i tried with ogle but nothing happen, i think that is for the 2 screens, i know that there is a script to export the geometry from desmume in a 3d format but i don't know how to use the script
anyways, if somebody can help me, will be great! and thanks
this is the script but i don't know how works
//texcache.cpp
//only dump this from ogl renderer. for now, softrasterizer creates things in an incompatible pixel format
//#define DEBUG_DUMP_TEXTURE//szfzafa
//gfx3d.h
//szfzafa
extern unsigned char szfzafadumpmodelmark;
void gfx3d_szfzafadumpmodels();
//gfx3d.cpp
unsigned char szfzafadumpmodelmark=0;//szfzafa
static void gfx3d_doFlush()
{
//szfzafa
if(szfzafadumpmodelmark)
gfx3d_szfzafadumpmodels();
//szfzafa
gfx3d.frameCtr++;
……
//szfzafa:dump models!
//-------------savestate
void gfx3d_szfzafadumpmodels()
{
if(gfx3d.vertlist->count>4&&gfx3d.polylist->count>1)
szfzafadumpmodelmark=0;
else
{
printf("szfzafa ripping failed~\n");
return;
}
FILE *file;
if ((file = fopen("c:\\dump\\szfzafa.obj","wb")) == NULL)
return;
//dump the render lists
printf("szfzafa ripping %d verts %d polys~\n",gfx3d.vertlist->count,gfx3d.polylist->count);
for(int i=0;i<gfx3d.vertlist->count;i++)
{
//fprintf(file,"v\t%f\t%f\t%f\t%f\n",gfx3d.vertlist->list[i].x,gfx3d.vertlist->list[i].y,gfx3d.vertlist->list[i].z,gfx3d.vertlist->list[i].w);
fprintf(file,"v\t%f\t%f\t%f\t%f\n",
gfx3d.vertlist->list[i].y*3.0/-32.0,
gfx3d.vertlist->list[i].x/8.0,
gfx3d.vertlist->list[i].z/-2.0,
gfx3d.vertlist->list[i].w);
//fprintf(file,"vt\t%f\t%f\n",gfx3d.vertlist->list[i].u,gfx3d.vertlist->list[i].v);
fprintf(file,"vt\t%f\t%f\n",gfx3d.vertlist->list[i].u,-gfx3d.vertlist->list[i].v);
}
//char szfzafatex[32];
u32 szfzafapa1=gfx3d.polylist->list[0].polyAttr;
u32 szfzafapa2=gfx3d.polylist->list[0].texPalette;
u32 szfzafapa3=gfx3d.polylist->list[0].texParam;
fprintf(file,"g\t%x_%x_%x\n",szfzafapa1,szfzafapa2,szfzafapa3);
//printf("usemtl\t%x\n",szfzafapa);
for(int i=0;i<gfx3d.polylist->count;i++)
{
if(szfzafapa1!=gfx3d.polylist->list[i].polyAttr||
szfzafapa2!=gfx3d.polylist->list[i].texPalette||
szfzafapa3!=gfx3d.polylist->list[i].texParam)
{
szfzafapa1=gfx3d.polylist->list[i].polyAttr;
szfzafapa2=gfx3d.polylist->list[i].texPalette;
szfzafapa3=gfx3d.polylist->list[i].texParam;
fprintf(file,"g\t%x_%x_%x\n",szfzafapa1,szfzafapa2,szfzafapa3);
}
switch(gfx3d.polylist->list[i].type)
{
case 4: fprintf(file,"f\t%d/%d\t%d/%d\t%d/%d\t%d/%d\n",
1+gfx3d.polylist->list[i].vertIndexes[0],1+gfx3d.polylist->list[i].vertIndexes[0],
1+gfx3d.polylist->list[i].vertIndexes[1],1+gfx3d.polylist->list[i].vertIndexes[1],
1+gfx3d.polylist->list[i].vertIndexes[2],1+gfx3d.polylist->list[i].vertIndexes[2],
1+gfx3d.polylist->list[i].vertIndexes[3],1+gfx3d.polylist->list[i].vertIndexes[3]);
break;
case 3: fprintf(file,"f\t%d/%d\t%d/%d\t%d/%d\n",
1+gfx3d.polylist->list[i].vertIndexes[0],1+gfx3d.polylist->list[i].vertIndexes[0],
1+gfx3d.polylist->list[i].vertIndexes[1],1+gfx3d.polylist->list[i].vertIndexes[1],
1+gfx3d.polylist->list[i].vertIndexes[2],1+gfx3d.polylist->list[i].vertIndexes[2]);
break;
default:;
}
}
fclose(file);
}
anyways, if somebody can help me, will be great! and thanks
this is the script but i don't know how works
//texcache.cpp
//only dump this from ogl renderer. for now, softrasterizer creates things in an incompatible pixel format
//#define DEBUG_DUMP_TEXTURE//szfzafa
//gfx3d.h
//szfzafa
extern unsigned char szfzafadumpmodelmark;
void gfx3d_szfzafadumpmodels();
//gfx3d.cpp
unsigned char szfzafadumpmodelmark=0;//szfzafa
static void gfx3d_doFlush()
{
//szfzafa
if(szfzafadumpmodelmark)
gfx3d_szfzafadumpmodels();
//szfzafa
gfx3d.frameCtr++;
……
//szfzafa:dump models!
//-------------savestate
void gfx3d_szfzafadumpmodels()
{
if(gfx3d.vertlist->count>4&&gfx3d.polylist->count>1)
szfzafadumpmodelmark=0;
else
{
printf("szfzafa ripping failed~\n");
return;
}
FILE *file;
if ((file = fopen("c:\\dump\\szfzafa.obj","wb")) == NULL)
return;
//dump the render lists
printf("szfzafa ripping %d verts %d polys~\n",gfx3d.vertlist->count,gfx3d.polylist->count);
for(int i=0;i<gfx3d.vertlist->count;i++)
{
//fprintf(file,"v\t%f\t%f\t%f\t%f\n",gfx3d.vertlist->list[i].x,gfx3d.vertlist->list[i].y,gfx3d.vertlist->list[i].z,gfx3d.vertlist->list[i].w);
fprintf(file,"v\t%f\t%f\t%f\t%f\n",
gfx3d.vertlist->list[i].y*3.0/-32.0,
gfx3d.vertlist->list[i].x/8.0,
gfx3d.vertlist->list[i].z/-2.0,
gfx3d.vertlist->list[i].w);
//fprintf(file,"vt\t%f\t%f\n",gfx3d.vertlist->list[i].u,gfx3d.vertlist->list[i].v);
fprintf(file,"vt\t%f\t%f\n",gfx3d.vertlist->list[i].u,-gfx3d.vertlist->list[i].v);
}
//char szfzafatex[32];
u32 szfzafapa1=gfx3d.polylist->list[0].polyAttr;
u32 szfzafapa2=gfx3d.polylist->list[0].texPalette;
u32 szfzafapa3=gfx3d.polylist->list[0].texParam;
fprintf(file,"g\t%x_%x_%x\n",szfzafapa1,szfzafapa2,szfzafapa3);
//printf("usemtl\t%x\n",szfzafapa);
for(int i=0;i<gfx3d.polylist->count;i++)
{
if(szfzafapa1!=gfx3d.polylist->list[i].polyAttr||
szfzafapa2!=gfx3d.polylist->list[i].texPalette||
szfzafapa3!=gfx3d.polylist->list[i].texParam)
{
szfzafapa1=gfx3d.polylist->list[i].polyAttr;
szfzafapa2=gfx3d.polylist->list[i].texPalette;
szfzafapa3=gfx3d.polylist->list[i].texParam;
fprintf(file,"g\t%x_%x_%x\n",szfzafapa1,szfzafapa2,szfzafapa3);
}
switch(gfx3d.polylist->list[i].type)
{
case 4: fprintf(file,"f\t%d/%d\t%d/%d\t%d/%d\t%d/%d\n",
1+gfx3d.polylist->list[i].vertIndexes[0],1+gfx3d.polylist->list[i].vertIndexes[0],
1+gfx3d.polylist->list[i].vertIndexes[1],1+gfx3d.polylist->list[i].vertIndexes[1],
1+gfx3d.polylist->list[i].vertIndexes[2],1+gfx3d.polylist->list[i].vertIndexes[2],
1+gfx3d.polylist->list[i].vertIndexes[3],1+gfx3d.polylist->list[i].vertIndexes[3]);
break;
case 3: fprintf(file,"f\t%d/%d\t%d/%d\t%d/%d\n",
1+gfx3d.polylist->list[i].vertIndexes[0],1+gfx3d.polylist->list[i].vertIndexes[0],
1+gfx3d.polylist->list[i].vertIndexes[1],1+gfx3d.polylist->list[i].vertIndexes[1],
1+gfx3d.polylist->list[i].vertIndexes[2],1+gfx3d.polylist->list[i].vertIndexes[2]);
break;
default:;
}
}
fclose(file);
}