From: Shamus Hammons Date: Fri, 9 Dec 2011 22:49:06 +0000 (+0000) Subject: Tweaks for OP dumping. Hopefully removing all duplicate entries now. X-Git-Tag: 2.0.2~4 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1aa2a5180362f141ce43b76942952e1f6680347;p=virtualjaguar Tweaks for OP dumping. Hopefully removing all duplicate entries now. --- diff --git a/src/op.cpp b/src/op.cpp index 38322d8..599a3e8 100644 --- a/src/op.cpp +++ b/src/op.cpp @@ -51,7 +51,8 @@ void OPProcessFixedBitmap(uint64 p0, uint64 p1, bool render); void OPProcessScaledBitmap(uint64 p0, uint64 p1, uint64 p2, bool render); -void OPDumpObjectList(uint32 address); +void OPDiscoverObjects(uint32 address); +void OPDumpObjectList(void); void DumpScaledObject(uint64 p0, uint64 p1, uint64 p2); void DumpFixedObject(uint64 p0, uint64 p1); void DumpBitmapCore(uint64 p0, uint64 p1); @@ -137,8 +138,10 @@ static const char * opType[8] = { "(BITMAP)", "(SCALED BITMAP)", "(GPU INT)", "(BRANCH)", "(STOP)", "???", "???", "???" }; static const char * ccType[8] = { "\"==\"", "\"<\"", "\">\"", "(opflag set)", "(second half line)", "?", "?", "?" }; -static uint32 objectLink[8192]; -static uint32 numberOfLinks; +static uint32 object[8192]; +static uint32 numberOfObjects; +//static uint32 objectLink[8192]; +//static uint32 numberOfLinks; void OPDone(void) { @@ -177,24 +180,23 @@ void OPDone(void) WriteLog("\n"); #else - numberOfLinks = 0; - - OPDumpObjectList(olp); + numberOfObjects = 0; + OPDiscoverObjects(olp); + OPDumpObjectList(); #endif } - -// To do this properly, we have to use recursion... -void OPDumpObjectList(uint32 address) +void OPDiscoverObjects(uint32 address) { - // Sanity checking: If we've already visited this link, bail out! - for(uint32 i=0; i> 21)) & 0x3FFFF8; - WriteLog("%08X: %08X %08X %s", address, hi, lo, opType[objectType]); if (objectType == 3) { uint16 ypos = (lo >> 3) & 0x7FF; uint8 cc = (lo >> 14) & 0x07; // Proper # of bits == 3 - WriteLog(" YPOS=%u, CC=%s, link=$%08X", ypos, ccType[cc], link); // Recursion needed to follow all links! - WriteLog("\n"); - OPDumpObjectList(address + 8); - - // Do the sanity check after recursive call: We may have already seen this... - // Sanity checking: If we've already visited this link, bail out! -//disnowok: we added ourself above -// for(uint32 i=0; i> 21)) & 0x3FFFF8; + WriteLog("%08X: %08X %08X %s", address, hi, lo, opType[objectType]); + + if (objectType == 3) + { + uint16 ypos = (lo >> 3) & 0x7FF; + uint8 cc = (lo >> 14) & 0x07; // Proper # of bits == 3 + WriteLog(" YPOS=%u, CC=%s, link=$%08X", ypos, ccType[cc], link); } WriteLog("\n"); @@ -238,19 +273,12 @@ void OPDumpObjectList(uint32 address) { // Runaway recursive link is bad! WriteLog("***** SELF REFERENTIAL LINK *****\n\n"); - return; } - - address = link; - objectLink[numberOfLinks++] = address; } - while (objectType != 4); WriteLog("\n"); } - - // // Object Processor memory access // Memory range: F00010 - F00027