I think So and Yes.
Quote: "Is there anyway to take a .x object that has no texture and give it both a texture and a detail"
Yes. I think you need the correct FVF format, thats how the model vertex data is stored under the hood. The reason? You can have just points, points and normals (for lighting), Points, Normals, UV (for one texture), or points + normals + uv for texture 0 + uv for texture 1 etc.
There are numeric codes that are used to build the right FVF format value. I'm not sure if all combinations (which will typically work fine in DirectX) will work in DarkGDK.
//----------------------------------------------------------------------------
// FVF Flags - DIRECT X Brand
//----------------------------------------------------------------------------
#define FVF_XYZ 0x002
#define FVF_XYZRHW 0x004
#define FVF_XYZB1 0x006
#define FVF_XYZB2 0x008
#define FVF_XYZB3 0x00a
#define FVF_XYZB4 0x00c
#define FVF_XYZB5 0x00e
#define FVF_NORMAL 0x010
#define FVF_PSIZE 0x020
#define FVF_DIFFUSE 0x040
#define FVF_SPECULAR 0x080
#define FVF_TEX0 0x000
#define FVF_TEX1 0x100
#define FVF_TEX2 0x200
#define FVF_TEX3 0x300
#define FVF_TEX4 0x400
#define FVF_TEX5 0x500
#define FVF_TEX6 0x600
#define FVF_TEX7 0x700
#define FVF_TEX8 0x800
//FORMAT HEX DEC
//FVF_XYZ => 0x002 => 2
//FVF_XYZRHW => 0x004 => 4
//FVF_XYZB1 => 0x006 => 6
//FVF_XYZB2 => 0x008 => 8
//FVF_XYZB3 => 0x00a => 10
//FVF_XYZB4 => 0x00c => 12
//FVF_XYZB5 => 0x00e => 14
//FVF_NORMAL => 0x010 => 16
//FVF_PSIZE => 0x020 => 32
//FVF_DIFFUSE => 0x040 => 64
//FVF_SPECULAR => 0x080 => 128
//FVF_TEX0 => 0x000 => 0
//FVF_TEX1 => 0x100 => 256
//FVF_TEX2 => 0x200 => 512
//FVF_TEX3 => 0x300 => 768
//FVF_TEX4 => 0x400 => 1024
//FVF_TEX5 => 0x500 => 1280
//FVF_TEX6 => 0x600 => 1536
//FVF_TEX7 => 0x700 => 1792
//FVF_TEX8 => 0x800 => 2048
//----------------------------------------------------------------------------
There is a call called dbSetFVFFormat or something in DarkGDK. I'm pretty sure you call this on existing Objects and it handles things you you.
THEN I THINK you apply your base texture to TEXTURE 0 (Like you normally would apply a texture to an object) Then I think you apply your "detail" texture to TEXTURE 1 (Note this is assuming you selected an FVF format with Points + Normals + TEX0 + TEX1 and applied it to the object first)... then I think you call dbSetDetailShading on or something like that.
I haven't personally tried this - but I'm pretty certain it uses a "built" in shader inside DarkGDK to perform its magic. I do remember having a conversation via forums or something where someone disagreed with me about this "built in shader" being the way it works under the hood - and although we disagreed - I think you should be aware of both of these points of view to better help you work something out hopefully.
Good Luck,
sorry I couldn't be of more help.