From 7c7d25f911be2b602de9f53da99e1f7a6af39cf6 Mon Sep 17 00:00:00 2001 From: Jordan Rabet Date: Thu, 13 Mar 2014 15:50:43 +0100 Subject: [PATCH] SHDR : SHDR_GetUniformRegister (untested) --- libctru/include/ctr/SHDR.h | 1 + libctru/source/SHDR.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libctru/include/ctr/SHDR.h b/libctru/include/ctr/SHDR.h index 92c4687..e6808f8 100644 --- a/libctru/include/ctr/SHDR.h +++ b/libctru/include/ctr/SHDR.h @@ -60,6 +60,7 @@ typedef struct{ DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize); void SHDR_UseProgram(DVLB_s* dvlb, u8 id); void SHDR_FreeDVLB(DVLB_s* dvlb); +s8 SHDR_GetUniformRegister(DVLB_s* dvlb, char* name, u8 programID); void DVLP_SendCode(DVLP_s* dvlp); void DVLP_SendOpDesc(DVLP_s* dvlp); diff --git a/libctru/source/SHDR.c b/libctru/source/SHDR.c index 446a6ce..95f55dc 100644 --- a/libctru/source/SHDR.c +++ b/libctru/source/SHDR.c @@ -57,6 +57,21 @@ DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize) return ret; } +s8 SHDR_GetUniformRegister(DVLB_s* dvlb, char* name, u8 programID) +{ + if(!dvlb || !name)return -1; + + DVLE_s* dvle=&dvlb->DVLE[programID]; + + int i; DVLE_uniformEntry_s* u=dvle->uniformTableData; + for(i=0;iuniformTableSize;i++) + { + if(!strcmp(dvle->symbolTableData[u->symbolOffset],name))return (s8)u->startReg; + u++; + } + return -1; +} + //hm static inline u8 minu8(u8 a, u8 b) {