typedef struct header { int signature; int filecount; int toplink; } HEADER; typedef struct fileindex { int structsize; int filename_length; int prev_index; int next_index; int constant;//14h char filename[filename_length]; } FILEINDEX; typedef struct filedata { int datasize; int unk1; int unk2; int structsize; byte bindata[datasize]; } FILEDATA; typedef struct dfile { FILEINDEX fileidx; FILEDATA filedat; } DFILE; void recursefile(int link) { if(link>0) { FSeek(link); DFILE files; recursefile(files.fileidx.prev_index);//this gets jumped in until link == 0 recursefile(files.fileidx.next_index);//this never gets executed } } HEADER head; if( head.toplink > 0 ) recursefile(head.toplink);