[aquaria] Unofficial PSP port

Andrew Church achurch+aquaria at achurch.org
Thu Jun 17 20:50:45 EDT 2010


>I don't understand the strange effect that is present on the game (see 
>my second screenshot). It seems like there is a "layer" on top of the 
>game screen that avoid to show the game..

There are some "overlay" layers used for things like fadeouts and the
"red-out" effect when Naija is low on health.  It's always possible that
your GL implementation isn't processing alpha correctly for those quads.

>> Beyond that, you'll probably have to dive into the actual rendering code
>> and insert some test GL calls to locate the problem.
>>    
>But where? i'm trying to follow the flow that starts to ::addTexture but 
>is not so simply..

The basic rendering flow goes like this:

Core::render() {  // Called from main loop
   for (r = each render layer) {  // See "enum Layers" in DSQ.h
      for (pass = each pass in r) {  // Some layers have multiple passes
         for (robj = each RenderObject in r) {
            robj->render() {  // May be overridden, e.g. by Quad
               if (this RenderObject is visible) {
                  this->onRender();  // Virtual method for actual rendering
               }
            }
         }
      }
   }
}

Most RenderObjects are also Quads, so you may want to drop some debugging
code into Quad::onRender() and see what's going on.  You could also try
disabling specific layers in Core::render() -- after this line:
    int i = renderObjectLayerOrder[c];
add something like
    if (i == 67) continue;  // 67 == LR_OVERLAY (count lines from LR_ZERO)
to disable a layer and see how that changes the output.

  --Andrew Church
    achurch at achurch.org
    http://achurch.org/


More information about the aquaria mailing list