Gfx GX Fn GXGetTexObjAll - wowjinxy/libPorpoise GitHub Wiki

GXGetTexObjAll

  • Category: Texture
  • Matrix Status: Implemented
  • Matrix Notes: Implemented full texture-object aggregate getter (data/size/format/wrap/mipmap).
  • Matrix Link: Gfx-GX-API-Matrix

Official SDK (Reference)

  • Manual page: reference/man/gfx/gx/Texture/GXGetTexObjAll.html
  • SDK source: reference/ACGC-PC-Port/src/static/dolphin/gx/GXTexture.c (GXGetTexObjAll)
  • SDK behavior:
    • Returns all core texture-object fields: image pointer, width, height, format, wrap S/T, mipmap flag.
    • No state mutation; pure accessor.
    • SDK debug path asserts non-null texture object pointer, and then writes all output pointers directly.

libPorpoise Implementation

  • Public API declaration: include/dolphin/gx/GXGet.h
  • Runtime implementation: src/gx/pc_gx_texture.c (GXGetTexObjAll)
  • Behavior:
    • Returns the same aggregate fields from PC texture object storage.
    • No side effects.
    • Supports nullable output pointers (fills only pointers that are non-null).

SDK vs Porpoise Diff

  • Signature parity:
    • Manual documents GXTexObj*; SDK source uses const GXTexObj*.
    • Porpoise uses GXTexObj*; call-site semantics are equivalent for reads.
  • Behavioral parity:
    • SDK: aggregate getter for object fields (data/size/format/wrap/mipmap).
    • Porpoise: same aggregate fields.
  • Known divergence:
    • SDK writes all output pointers unconditionally; Porpoise permits null output pointers and skips those writes.

Validation Checklist

  • GX demo coverage checked
  • Pikmin usage path checked
  • Matrix status updated if needed
  • Notes updated with concrete file/function references

Working Notes

  • No runtime code change required in this pass.