guParseGbiDL

guParseGbiDL [Function]

Function

guParseGbiDL

Outputs a GBI display list

Syntax

#include <ultra64.h>        /* gu.h */
void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags);

Arguments

gbi_dl
Pointer to the GBI display list in DRAM
nbytes
Byte size of the GBI display list (0 shows the entire list)
flags
Additional information flags
GU_PARSEGBI_ROWMAJOR (Enables output by order of rows)
GU_PARSEGBI_NONEST (Disables output of nests)
GU_PARSEGBI_FLTMTX (Enables output in floating point)
GU_PARSEGBI_SHOWDMA (Enables showing of DMA data)
GU_PARSEGBI_ALLMTX (Enables output of matrices)
GU_PARSEGBI_DUMPONLY (Enables showing in hexadecimal)

Returned value

None.

Description

This function interprets commands and data in the GBI display list and outputs them in a readable format. The GBI display list is processed by graphics microcode running on the RSP in order to create an RDP-format display list. Depending on which microcode is used in the graphics task, this output from the RSP can be either sent directly to the RDP or passed via DRAM. If this RSP output (RDP display list) has been stored in DRAM, it can be output in a readable format using the guParseRdpDL function. See osSpTaskLoad to read about the OSTask structure.

Regarding the flags argument:
The following flags can be ORed to make multiple specifications.
GU_PARSEGBI_ROWMAJOR
Outputs the matrix in order of rows (when not specified, the matrix is output in order of columns).
GU_PARSEGBI_NONEST
Nested display lists are not output.
GU_PARSEGBI_FLTMTX
Matrix is output in floating point.
GU_PARSEGBI_SHOWDMA
DMA-processed data are also output.
GU_PARSEGBI_ALLMTX
Modeling matrices and projection matrices are also output.
GU_PARSEGBI_DUMPONLY
Dumped in hexadecimal.

Note

To use this function you must run dlprint on the Indy. gbi_dl and nbytes correspond to the data_ptr field and the data_size field of the OSTask structure. Normally you set nbytes to 0 in order to output the entire list.

Comment

The OSTask looks like this:

typedef struct {
     u32  type;              // Task type
     u32  flags;             // Task state bit type
     u64  *ucode_boot;       // Pointer to boot microcode
     u32  ucode_boot_size;   // Size of this
     u64  *ucode;            // Pointer to task microcode
     u32  ucode_size;        // Size of this
     u64  *ucode_data;       // Pointer to microcode data
     u32  ucode_data_size;   // Size of this
     u64  *dram_stack;       // Pointer to DRAM matrix stack
     u32  dram_stack_size;   // Size of this
     u64  *output_buff;      // Pointer to output buffer
     u64  *output_buff_size; // Size of this
     u64  *data_ptr;         // Pointer to SP command list
     u32  data_size;         // Size of this
     u64  *yield_data_ptr;   // Pointer to yield buffer
     u32  yield_data_size;   // Size of this
} OSTask_t;
typedef union {
    OSTask_t       t;
    long long int  force_structure_alignment;
} OSTask;

See Also

alParseAbiCL, dlprint, guParseRdpDL, and osSpTaskLoad

Revision History

03/01/99 Completely rewritten.