Difference between revisions of "Nintendo OpenGL"

From 3dbrew
Jump to navigation Jump to search
(added some known registers)
(added some dmp_FragmentLightSource register info)
Line 531: Line 531:
 
| dmp_FragmentLightSource[0].enabled
 
| dmp_FragmentLightSource[0].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+0*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3A
 
| 0x3A
Line 538: Line 538:
 
| dmp_FragmentLightSource[1].enabled
 
| dmp_FragmentLightSource[1].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+1*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3B
 
| 0x3B
Line 545: Line 545:
 
| dmp_FragmentLightSource[2].enabled
 
| dmp_FragmentLightSource[2].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+2*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3C
 
| 0x3C
Line 552: Line 552:
 
| dmp_FragmentLightSource[3].enabled
 
| dmp_FragmentLightSource[3].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+3*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3D
 
| 0x3D
Line 559: Line 559:
 
| dmp_FragmentLightSource[4].enabled
 
| dmp_FragmentLightSource[4].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+4*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3E
 
| 0x3E
Line 566: Line 566:
 
| dmp_FragmentLightSource[5].enabled
 
| dmp_FragmentLightSource[5].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+5*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x3F
 
| 0x3F
Line 573: Line 573:
 
| dmp_FragmentLightSource[6].enabled
 
| dmp_FragmentLightSource[6].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+6*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x40
 
| 0x40
Line 580: Line 580:
 
| dmp_FragmentLightSource[7].enabled
 
| dmp_FragmentLightSource[7].enabled
 
| 0x0012BD24
 
| 0x0012BD24
| ?
+
| 0xA20+7*0x70+0x00
| ?
+
| 0x01C5
 
|-  
 
|-  
 
| 0x41
 
| 0x41
Line 587: Line 587:
 
| dmp_FragmentLightSource[0].ambient
 
| dmp_FragmentLightSource[0].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+0*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x42
 
| 0x42
Line 594: Line 594:
 
| dmp_FragmentLightSource[1].ambient
 
| dmp_FragmentLightSource[1].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+1*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x43
 
| 0x43
Line 601: Line 601:
 
| dmp_FragmentLightSource[2].ambient
 
| dmp_FragmentLightSource[2].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+2*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x44
 
| 0x44
Line 608: Line 608:
 
| dmp_FragmentLightSource[3].ambient
 
| dmp_FragmentLightSource[3].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+3*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x45
 
| 0x45
Line 615: Line 615:
 
| dmp_FragmentLightSource[4].ambient
 
| dmp_FragmentLightSource[4].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+4*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x46
 
| 0x46
Line 622: Line 622:
 
| dmp_FragmentLightSource[5].ambient
 
| dmp_FragmentLightSource[5].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+5*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x47
 
| 0x47
Line 629: Line 629:
 
| dmp_FragmentLightSource[6].ambient
 
| dmp_FragmentLightSource[6].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+6*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x48
 
| 0x48
Line 636: Line 636:
 
| dmp_FragmentLightSource[7].ambient
 
| dmp_FragmentLightSource[7].ambient
 
| 0x001579CC
 
| 0x001579CC
| ?
+
| 0xA20+7*0x70+0x04
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x49
 
| 0x49
Line 643: Line 643:
 
| dmp_FragmentLightSource[0].diffuse
 
| dmp_FragmentLightSource[0].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+0*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4A
 
| 0x4A
Line 650: Line 650:
 
| dmp_FragmentLightSource[1].diffuse
 
| dmp_FragmentLightSource[1].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+1*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4B
 
| 0x4B
Line 657: Line 657:
 
| dmp_FragmentLightSource[2].diffuse
 
| dmp_FragmentLightSource[2].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+2*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4C
 
| 0x4C
Line 664: Line 664:
 
| dmp_FragmentLightSource[3].diffuse
 
| dmp_FragmentLightSource[3].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+3*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4D
 
| 0x4D
Line 671: Line 671:
 
| dmp_FragmentLightSource[4].diffuse
 
| dmp_FragmentLightSource[4].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+4*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4E
 
| 0x4E
Line 678: Line 678:
 
| dmp_FragmentLightSource[5].diffuse
 
| dmp_FragmentLightSource[5].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+5*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x4F
 
| 0x4F
Line 685: Line 685:
 
| dmp_FragmentLightSource[6].diffuse
 
| dmp_FragmentLightSource[6].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+6*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x50
 
| 0x50
Line 692: Line 692:
 
| dmp_FragmentLightSource[7].diffuse
 
| dmp_FragmentLightSource[7].diffuse
 
| 0x00157C10
 
| 0x00157C10
| ?
+
| 0xA20+7*0x70+0x14
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x51
 
| 0x51
Line 699: Line 699:
 
| dmp_FragmentLightSource[0].specular0
 
| dmp_FragmentLightSource[0].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+0*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x52
 
| 0x52
Line 706: Line 706:
 
| dmp_FragmentLightSource[1].specular0
 
| dmp_FragmentLightSource[1].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+1*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x53
 
| 0x53
Line 713: Line 713:
 
| dmp_FragmentLightSource[2].specular0
 
| dmp_FragmentLightSource[2].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+2*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x54
 
| 0x54
Line 720: Line 720:
 
| dmp_FragmentLightSource[3].specular0
 
| dmp_FragmentLightSource[3].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+3*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x55
 
| 0x55
Line 727: Line 727:
 
| dmp_FragmentLightSource[4].specular0
 
| dmp_FragmentLightSource[4].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+4*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x56
 
| 0x56
Line 734: Line 734:
 
| dmp_FragmentLightSource[5].specular0
 
| dmp_FragmentLightSource[5].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+5*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x57
 
| 0x57
Line 741: Line 741:
 
| dmp_FragmentLightSource[6].specular0
 
| dmp_FragmentLightSource[6].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+6*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x58
 
| 0x58
Line 748: Line 748:
 
| dmp_FragmentLightSource[7].specular0
 
| dmp_FragmentLightSource[7].specular0
 
| 0x00157E5C
 
| 0x00157E5C
| ?
+
| 0xA20+7*0x70+0x24
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x59
 
| 0x59
Line 755: Line 755:
 
| dmp_FragmentLightSource[0].specular1
 
| dmp_FragmentLightSource[0].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+0*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5A
 
| 0x5A
Line 762: Line 762:
 
| dmp_FragmentLightSource[1].specular1
 
| dmp_FragmentLightSource[1].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+1*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5B
 
| 0x5B
Line 769: Line 769:
 
| dmp_FragmentLightSource[2].specular1
 
| dmp_FragmentLightSource[2].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+2*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5C
 
| 0x5C
Line 776: Line 776:
 
| dmp_FragmentLightSource[3].specular1
 
| dmp_FragmentLightSource[3].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+3*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5D
 
| 0x5D
Line 783: Line 783:
 
| dmp_FragmentLightSource[4].specular1
 
| dmp_FragmentLightSource[4].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+4*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5E
 
| 0x5E
Line 790: Line 790:
 
| dmp_FragmentLightSource[5].specular1
 
| dmp_FragmentLightSource[5].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+5*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x5F
 
| 0x5F
Line 797: Line 797:
 
| dmp_FragmentLightSource[6].specular1
 
| dmp_FragmentLightSource[6].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+6*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x60
 
| 0x60
Line 804: Line 804:
 
| dmp_FragmentLightSource[7].specular1
 
| dmp_FragmentLightSource[7].specular1
 
| 0x001580B4
 
| 0x001580B4
| ?
+
| 0xA20+7*0x70+0x34
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x61
 
| 0x61
Line 811: Line 811:
 
| dmp_FragmentLightSource[0].position
 
| dmp_FragmentLightSource[0].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+0*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x62
 
| 0x62
Line 818: Line 818:
 
| dmp_FragmentLightSource[1].position
 
| dmp_FragmentLightSource[1].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+1*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x63
 
| 0x63
Line 825: Line 825:
 
| dmp_FragmentLightSource[2].position
 
| dmp_FragmentLightSource[2].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+2*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x64
 
| 0x64
Line 832: Line 832:
 
| dmp_FragmentLightSource[3].position
 
| dmp_FragmentLightSource[3].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+3*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x65
 
| 0x65
Line 839: Line 839:
 
| dmp_FragmentLightSource[4].position
 
| dmp_FragmentLightSource[4].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+4*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x66
 
| 0x66
Line 846: Line 846:
 
| dmp_FragmentLightSource[5].position
 
| dmp_FragmentLightSource[5].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+5*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x67
 
| 0x67
Line 853: Line 853:
 
| dmp_FragmentLightSource[6].position
 
| dmp_FragmentLightSource[6].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+6*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x68
 
| 0x68
Line 860: Line 860:
 
| dmp_FragmentLightSource[7].position
 
| dmp_FragmentLightSource[7].position
 
| 0x001584B0
 
| 0x001584B0
| ?
+
| 0xA20+7*0x70+0x44
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x69
 
| 0x69
Line 867: Line 867:
 
| dmp_FragmentLightSource[0].spotDirection
 
| dmp_FragmentLightSource[0].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+0*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6A
 
| 0x6A
Line 874: Line 874:
 
| dmp_FragmentLightSource[1].spotDirection
 
| dmp_FragmentLightSource[1].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+1*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6B
 
| 0x6B
Line 881: Line 881:
 
| dmp_FragmentLightSource[2].spotDirection
 
| dmp_FragmentLightSource[2].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+2*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6C
 
| 0x6C
Line 888: Line 888:
 
| dmp_FragmentLightSource[3].spotDirection
 
| dmp_FragmentLightSource[3].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+3*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6D
 
| 0x6D
Line 895: Line 895:
 
| dmp_FragmentLightSource[4].spotDirection
 
| dmp_FragmentLightSource[4].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+4*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6E
 
| 0x6E
Line 902: Line 902:
 
| dmp_FragmentLightSource[5].spotDirection
 
| dmp_FragmentLightSource[5].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+5*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x6F
 
| 0x6F
Line 909: Line 909:
 
| dmp_FragmentLightSource[6].spotDirection
 
| dmp_FragmentLightSource[6].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+6*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x70
 
| 0x70
Line 916: Line 916:
 
| dmp_FragmentLightSource[7].spotDirection
 
| dmp_FragmentLightSource[7].spotDirection
 
| 0x001587E4
 
| 0x001587E4
| ?
+
| 0xA20+7*0x70+0x54
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x71
 
| 0x71
Line 923: Line 923:
 
| dmp_FragmentLightSource[0].shadowed
 
| dmp_FragmentLightSource[0].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x72
 
| 0x72
Line 930: Line 930:
 
| dmp_FragmentLightSource[1].shadowed
 
| dmp_FragmentLightSource[1].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x73
 
| 0x73
Line 937: Line 937:
 
| dmp_FragmentLightSource[2].shadowed
 
| dmp_FragmentLightSource[2].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x74
 
| 0x74
Line 944: Line 944:
 
| dmp_FragmentLightSource[3].shadowed
 
| dmp_FragmentLightSource[3].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x75
 
| 0x75
Line 951: Line 951:
 
| dmp_FragmentLightSource[4].shadowed
 
| dmp_FragmentLightSource[4].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x76
 
| 0x76
Line 958: Line 958:
 
| dmp_FragmentLightSource[5].shadowed
 
| dmp_FragmentLightSource[5].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x77
 
| 0x77
Line 965: Line 965:
 
| dmp_FragmentLightSource[6].shadowed
 
| dmp_FragmentLightSource[6].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x78
 
| 0x78
Line 972: Line 972:
 
| dmp_FragmentLightSource[7].shadowed
 
| dmp_FragmentLightSource[7].shadowed
 
| 0x0012C20C
 
| 0x0012C20C
| ?
+
| 0x7C0
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x79
 
| 0x79
Line 979: Line 979:
 
| dmp_FragmentLightSource[0].geomFactor0
 
| dmp_FragmentLightSource[0].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7A
 
| 0x7A
Line 986: Line 986:
 
| dmp_FragmentLightSource[1].geomFactor0
 
| dmp_FragmentLightSource[1].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7B
 
| 0x7B
Line 993: Line 993:
 
| dmp_FragmentLightSource[2].geomFactor0
 
| dmp_FragmentLightSource[2].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7C
 
| 0x7C
Line 1,000: Line 1,000:
 
| dmp_FragmentLightSource[3].geomFactor0
 
| dmp_FragmentLightSource[3].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7D
 
| 0x7D
Line 1,007: Line 1,007:
 
| dmp_FragmentLightSource[4].geomFactor0
 
| dmp_FragmentLightSource[4].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7E
 
| 0x7E
Line 1,014: Line 1,014:
 
| dmp_FragmentLightSource[5].geomFactor0
 
| dmp_FragmentLightSource[5].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x7F
 
| 0x7F
Line 1,021: Line 1,021:
 
| dmp_FragmentLightSource[6].geomFactor0
 
| dmp_FragmentLightSource[6].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x80
 
| 0x80
Line 1,028: Line 1,028:
 
| dmp_FragmentLightSource[7].geomFactor0
 
| dmp_FragmentLightSource[7].geomFactor0
 
| 0x0012C018
 
| 0x0012C018
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x81
 
| 0x81
Line 1,035: Line 1,035:
 
| dmp_FragmentLightSource[0].geomFactor1
 
| dmp_FragmentLightSource[0].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x82
 
| 0x82
Line 1,042: Line 1,042:
 
| dmp_FragmentLightSource[1].geomFactor1
 
| dmp_FragmentLightSource[1].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x83
 
| 0x83
Line 1,049: Line 1,049:
 
| dmp_FragmentLightSource[2].geomFactor1
 
| dmp_FragmentLightSource[2].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x84
 
| 0x84
Line 1,056: Line 1,056:
 
| dmp_FragmentLightSource[3].geomFactor1
 
| dmp_FragmentLightSource[3].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x85
 
| 0x85
Line 1,063: Line 1,063:
 
| dmp_FragmentLightSource[4].geomFactor1
 
| dmp_FragmentLightSource[4].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x86
 
| 0x86
Line 1,070: Line 1,070:
 
| dmp_FragmentLightSource[5].geomFactor1
 
| dmp_FragmentLightSource[5].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x87
 
| 0x87
Line 1,077: Line 1,077:
 
| dmp_FragmentLightSource[6].geomFactor1
 
| dmp_FragmentLightSource[6].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x88
 
| 0x88
Line 1,084: Line 1,084:
 
| dmp_FragmentLightSource[7].geomFactor1
 
| dmp_FragmentLightSource[7].geomFactor1
 
| 0x0012C114
 
| 0x0012C114
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x89
 
| 0x89
Line 1,091: Line 1,091:
 
| dmp_FragmentLightSource[0].twoSideDiffuse
 
| dmp_FragmentLightSource[0].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8A
 
| 0x8A
Line 1,098: Line 1,098:
 
| dmp_FragmentLightSource[1].twoSideDiffuse
 
| dmp_FragmentLightSource[1].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8B
 
| 0x8B
Line 1,105: Line 1,105:
 
| dmp_FragmentLightSource[2].twoSideDiffuse
 
| dmp_FragmentLightSource[2].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8C
 
| 0x8C
Line 1,112: Line 1,112:
 
| dmp_FragmentLightSource[3].twoSideDiffuse
 
| dmp_FragmentLightSource[3].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8D
 
| 0x8D
Line 1,119: Line 1,119:
 
| dmp_FragmentLightSource[4].twoSideDiffuse
 
| dmp_FragmentLightSource[4].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8E
 
| 0x8E
Line 1,126: Line 1,126:
 
| dmp_FragmentLightSource[5].twoSideDiffuse
 
| dmp_FragmentLightSource[5].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x8F
 
| 0x8F
Line 1,133: Line 1,133:
 
| dmp_FragmentLightSource[6].twoSideDiffuse
 
| dmp_FragmentLightSource[6].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x90
 
| 0x90
Line 1,140: Line 1,140:
 
| dmp_FragmentLightSource[7].twoSideDiffuse
 
| dmp_FragmentLightSource[7].twoSideDiffuse
 
| 0x0012BF10
 
| 0x0012BF10
| ?
+
| 0x7D8
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x91
 
| 0x91
Line 1,147: Line 1,147:
 
| dmp_FragmentLightSource[0].samplerSP
 
| dmp_FragmentLightSource[0].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+0*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x92
 
| 0x92
Line 1,154: Line 1,154:
 
| dmp_FragmentLightSource[1].samplerSP
 
| dmp_FragmentLightSource[1].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+1*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x93
 
| 0x93
Line 1,161: Line 1,161:
 
| dmp_FragmentLightSource[2].samplerSP
 
| dmp_FragmentLightSource[2].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+2*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x94
 
| 0x94
Line 1,168: Line 1,168:
 
| dmp_FragmentLightSource[3].samplerSP
 
| dmp_FragmentLightSource[3].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+3*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x95
 
| 0x95
Line 1,175: Line 1,175:
 
| dmp_FragmentLightSource[4].samplerSP
 
| dmp_FragmentLightSource[4].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+4*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x96
 
| 0x96
Line 1,182: Line 1,182:
 
| dmp_FragmentLightSource[5].samplerSP
 
| dmp_FragmentLightSource[5].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+5*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x97
 
| 0x97
Line 1,189: Line 1,189:
 
| dmp_FragmentLightSource[6].samplerSP
 
| dmp_FragmentLightSource[6].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+6*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x98
 
| 0x98
Line 1,196: Line 1,196:
 
| dmp_FragmentLightSource[7].samplerSP
 
| dmp_FragmentLightSource[7].samplerSP
 
| 0x0012C31C
 
| 0x0012C31C
| ?
+
| 0xA20+7*0x70+0x60
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x99
 
| 0x99
Line 1,204: Line 1,204:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9A
 
| 0x9A
Line 1,211: Line 1,211:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9B
 
| 0x9B
Line 1,218: Line 1,218:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9C
 
| 0x9C
Line 1,225: Line 1,225:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9D
 
| 0x9D
Line 1,232: Line 1,232:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9E
 
| 0x9E
Line 1,239: Line 1,239:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0x9F
 
| 0x9F
Line 1,246: Line 1,246:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA0
 
| 0xA0
Line 1,253: Line 1,253:
 
| 0x0012C380
 
| 0x0012C380
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA1
 
| 0xA1
Line 1,259: Line 1,259:
 
| dmp_FragmentLightSource[0].distanceAttenuationBias
 
| dmp_FragmentLightSource[0].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+0*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA2
 
| 0xA2
Line 1,266: Line 1,266:
 
| dmp_FragmentLightSource[1].distanceAttenuationBias
 
| dmp_FragmentLightSource[1].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+1*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA3
 
| 0xA3
Line 1,273: Line 1,273:
 
| dmp_FragmentLightSource[2].distanceAttenuationBias
 
| dmp_FragmentLightSource[2].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+2*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA4
 
| 0xA4
Line 1,280: Line 1,280:
 
| dmp_FragmentLightSource[3].distanceAttenuationBias
 
| dmp_FragmentLightSource[3].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+3*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA5
 
| 0xA5
Line 1,287: Line 1,287:
 
| dmp_FragmentLightSource[4].distanceAttenuationBias
 
| dmp_FragmentLightSource[4].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+4*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA6
 
| 0xA6
Line 1,294: Line 1,294:
 
| dmp_FragmentLightSource[5].distanceAttenuationBias
 
| dmp_FragmentLightSource[5].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+5*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA7
 
| 0xA7
Line 1,301: Line 1,301:
 
| dmp_FragmentLightSource[6].distanceAttenuationBias
 
| dmp_FragmentLightSource[6].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+6*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA8
 
| 0xA8
Line 1,308: Line 1,308:
 
| dmp_FragmentLightSource[7].distanceAttenuationBias
 
| dmp_FragmentLightSource[7].distanceAttenuationBias
 
| 0x00158AE8
 
| 0x00158AE8
| ?
+
| 0xA20+7*0x70+0x64
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xA9
 
| 0xA9
Line 1,315: Line 1,315:
 
| dmp_FragmentLightSource[0].distanceAttenuationScale
 
| dmp_FragmentLightSource[0].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+0*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAA
 
| 0xAA
Line 1,322: Line 1,322:
 
| dmp_FragmentLightSource[1].distanceAttenuationScale
 
| dmp_FragmentLightSource[1].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+1*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAB
 
| 0xAB
Line 1,329: Line 1,329:
 
| dmp_FragmentLightSource[2].distanceAttenuationScale
 
| dmp_FragmentLightSource[2].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+2*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAC
 
| 0xAC
Line 1,336: Line 1,336:
 
| dmp_FragmentLightSource[3].distanceAttenuationScale
 
| dmp_FragmentLightSource[3].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+3*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAD
 
| 0xAD
Line 1,343: Line 1,343:
 
| dmp_FragmentLightSource[4].distanceAttenuationScale
 
| dmp_FragmentLightSource[4].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+4*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAE
 
| 0xAE
Line 1,350: Line 1,350:
 
| dmp_FragmentLightSource[5].distanceAttenuationScale
 
| dmp_FragmentLightSource[5].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+5*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xAF
 
| 0xAF
Line 1,357: Line 1,357:
 
| dmp_FragmentLightSource[6].distanceAttenuationScale
 
| dmp_FragmentLightSource[6].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+6*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB0
 
| 0xB0
Line 1,364: Line 1,364:
 
| dmp_FragmentLightSource[7].distanceAttenuationScale
 
| dmp_FragmentLightSource[7].distanceAttenuationScale
 
| 0x00158C44
 
| 0x00158C44
| ?
+
| 0xA20+7*0x70+0x68
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB1
 
| 0xB1
Line 1,372: Line 1,372:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB2
 
| 0xB2
Line 1,379: Line 1,379:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB3
 
| 0xB3
Line 1,386: Line 1,386:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB4
 
| 0xB4
Line 1,393: Line 1,393:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB5
 
| 0xB5
Line 1,400: Line 1,400:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB6
 
| 0xB6
Line 1,407: Line 1,407:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB7
 
| 0xB7
Line 1,414: Line 1,414:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB8
 
| 0xB8
Line 1,421: Line 1,421:
 
| 0x0012C4A0
 
| 0x0012C4A0
 
| ?
 
| ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xB9
 
| 0xB9
Line 1,427: Line 1,427:
 
| dmp_FragmentLightSource[0].samplerDA
 
| dmp_FragmentLightSource[0].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+0*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBA
 
| 0xBA
Line 1,434: Line 1,434:
 
| dmp_FragmentLightSource[1].samplerDA
 
| dmp_FragmentLightSource[1].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+1*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBB
 
| 0xBB
Line 1,441: Line 1,441:
 
| dmp_FragmentLightSource[2].samplerDA
 
| dmp_FragmentLightSource[2].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+2*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBC
 
| 0xBC
Line 1,448: Line 1,448:
 
| dmp_FragmentLightSource[3].samplerDA
 
| dmp_FragmentLightSource[3].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+3*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBD
 
| 0xBD
Line 1,455: Line 1,455:
 
| dmp_FragmentLightSource[4].samplerDA
 
| dmp_FragmentLightSource[4].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+4*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBE
 
| 0xBE
Line 1,462: Line 1,462:
 
| dmp_FragmentLightSource[5].samplerDA
 
| dmp_FragmentLightSource[5].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+5*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xBF
 
| 0xBF
Line 1,469: Line 1,469:
 
| dmp_FragmentLightSource[6].samplerDA
 
| dmp_FragmentLightSource[6].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+6*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xC0
 
| 0xC0
Line 1,476: Line 1,476:
 
| dmp_FragmentLightSource[7].samplerDA
 
| dmp_FragmentLightSource[7].samplerDA
 
| 0x0012C578
 
| 0x0012C578
| ?
+
| 0xA20+7*0x70+0x6C ?
| ?
+
| 0x01C8 ?
 
|-  
 
|-  
 
| 0xC1
 
| 0xC1

Revision as of 02:15, 11 November 2014

This page's goal is to describe parts of Nintendo's OpenGL implementation for the 3DS as we reverse engineer it to better understand how to use the PICA200. Some of the information on this page is specific to Steeldiver : Sub Wars. The reason for this is that it's a fairly graphics-heavy game that's available on the eShop for free, so it seems like a good target for a community REing effort.

Description

The PICA200 is an opengl ES 1.1 compliant GPU manufactured by DMP. It comes loaded with a number of extensions that make it similar to an openGL ES 2.0 compliant GPU (ability to run programmable vertex/geometry shaders, for instance). Because of this, Nintendo wrapped GPU access into an openGL ES 2.0 implementation with some limitations. As the fragment stage of the pipeline is non-programmable, Nintendo instead gives developers the ability to configure a number of fragment-related values through glGetUniformLocation and glUniformXX. See below for the full list.

Shader program structure

When uniform values are set (in shm_uniformfv/shm_uniformiv), they are attached to the current shader program and stored into the corresponding shader program structure. They are later written to the GPU command buffer in __shv_validateShaderValidator or equivalent.

Shader program struct :

Offset Size Description
0x000 0x04 Value 0x0 ?
0x004 0x04 Program ID
0x008 0x04 Value -1 ?
0x01C 0x04 Pointer to program-specific uniform table
0x020 0x04 Total number of uniforms for program
0x028 0x04 Number of program-specific uniforms
0x64C 0x04 Value for GPU register 0x0104
0x7C0 0x04 Bitfield containing dmp_FragmentLightSource[n].shadowed values
0x7D8 0x04 Bitfield containing dmp_FragmentLightSource[n].geomFactor0 / dmp_FragmentLightSource[n].geomFactor1 / dmp_FragmentLightSource[n].twoSideDiffuse values
0xA20 0x70*8 Table of structs for 8 dmp_FragmentLightSource

dmp_FragmentLightSource struct:

Offset Size Description
0x00 0x01 dmp_FragmentLightSource[k].enabled
0x04 0x10 dmp_FragmentLightSource[k].ambient (float[4])
0x14 0x10 dmp_FragmentLightSource[k].diffuse (float[4])
0x24 0x10 dmp_FragmentLightSource[k].specular0 (float[4])
0x34 0x10 dmp_FragmentLightSource[k].specular1 (float[4])
0x44 0x10 dmp_FragmentLightSource[k].position (float[4])
0x54 0x10 dmp_FragmentLightSource[k].spotDirection (float[3])
0x60 0x04 dmp_FragmentLightSource[k].samplerSP (u32)
0x64 0x04 dmp_FragmentLightSource[k].distanceAttenuationBias (float)
0x68 0x04 dmp_FragmentLightSource[k].distanceAttenuationScale (float)

Proposed REing methodology

1. Choose a "uniform" you want to RE below

2. Take note of its ID and type !

3. Depending on whether its a float or not, go through the gigantic switches in shm_uniformfv or shm_uniformiv (non-float) based on the ID of your uniform (in the case of steeldiver: sub wars you can now just go directly to the handler as it's listed in the table below)

4. Once you find the piece of code specific to your uniform, take note of how the values passed to shm_uniformfv/shm_uniformiv are written to the shader object

5. Go through __shv_validateShaderValidator looking for where those fields written to in shm_uniformfv/shm_uniformiv are used and written to the GPU command buffer either directly or through __cb_writeRegs, __cb_multiWriteReg or __cb_fillRegs.

6. Document findings on 3Dbrew ! (that's the most important step)

Fragment "uniform" list

Uniform ID Type Name Handler address (Steeldiver : Sub Wars) Shader Program struct offset GPU Register
0x0 GL_BOOL dmp_Texture[0].perspectiveShadow 0x0012A504 ? ?
0x1 GL_FLOAT dmp_Texture[0].shadowZBias 0x00155584 ? ?
0x2 GL_FLOAT dmp_Texture[0].shadowZScale 0x001556A0 ? ?
0x3 GL_INT dmp_Texture[0].samplerType 0x0012A5D0 ? ?
0x4 GL_INT dmp_Texture[1].samplerType 0x0012A6F8 ? ?
0x5 GL_INT dmp_Texture[2].samplerType 0x0012A774 ? ?
0x6 GL_INT dmp_Texture[3].samplerType 0x0012A7F0 ? ?
0x7 GL_INT dmp_Texture[2].texcoord 0x0012A8B4 ? ?
0x8 GL_INT dmp_Texture[3].texcoord 0x0012A97C ? ?
0x9 GL_INT dmp_Texture[3].ptRgbMap 0x0012AA54 ? ?
0xA GL_INT dmp_Texture[3].ptAlphaMap 0x0012AB94 ? ?
0xB GL_BOOL dmp_Texture[3].ptAlphaSeparate 0x0012ACD4 ? ?
0xC GL_INT dmp_Texture[3].ptClampU 0x0012ADB8 ? ?
0xD GL_INT dmp_Texture[3].ptClampV 0x0012AEC0 ? ?
0xE GL_INT dmp_Texture[3].ptShiftU 0x0012AFD0 ? ?
0xF GL_INT dmp_Texture[3].ptShiftV 0x0012B0A0 ? ?
0x10 GL_INT dmp_Texture[3].ptMinFilter 0x0012B168 ? ?
0x11 GL_INT dmp_Texture[3].ptTexWidth 0x0012B270 ? ?
0x12 GL_INT dmp_Texture[3].ptTexOffset 0x0012B334 ? ?
0x13 GL_FLOAT dmp_Texture[3].ptTexBias 0x001556B4 ? ?
0x14 GL_BOOL dmp_Texture[3].ptNoiseEnable 0x0012B3E0 ? ?
0x15 GL_FLOAT_VEC3 dmp_Texture[3].ptNoiseU 0x00155878 ? ?
0x16 GL_FLOAT_VEC3 dmp_Texture[3].ptNoiseV 0x00155A7C ? ?
0x17 GL_SAMPLER_1D dmp_Texture[3].ptSamplerRgbMap 0x0012B4B0 ? ?
0x18 GL_SAMPLER_1D dmp_Texture[3].ptSamplerAlphaMap 0x0012B4F4 ? ?
0x19 GL_SAMPLER_1D dmp_Texture[3].ptSamplerNoiseMap 0x0012B540 ? ?
0x1A GL_SAMPLER_1D dmp_Texture[3].ptSamplerR 0x0012B58C ? ?
0x1B GL_SAMPLER_1D dmp_Texture[3].ptSamplerG 0x0012B5D8 ? ?
0x1C GL_SAMPLER_1D dmp_Texture[3].ptSamplerB 0x0012B624 ? ?
0x1D GL_SAMPLER_1D dmp_Texture[3].ptSamplerA 0x0012B670 ? ?
0x1E GL_INT dmp_FragOperation.mode 0x0012B6BC ? ?
0x1F GL_FLOAT dmp_FragOperation.penumbraScale 0x00155C98 ? ?
0x20 GL_FLOAT dmp_FragOperation.penumbraBias 0x00155D8C ? ?
0x21 GL_FLOAT dmp_FragOperation.wScale 0x00155E9C ? ?
0x22 GL_BOOL dmp_FragOperation.enableClippingPlane 0x0012EAEC ? ?
0x23 GL_FLOAT_VEC4 dmp_FragOperation.clippingPlane 0x00159474 ? ?
0x24 GL_BOOL dmp_FragOperation.enableAlphaTest 0x0012EBAC ? ?
0x25 GL_INT dmp_FragOperation.alphaTestFunc 0x0012EC64 ? ?
0x26 GL_FLOAT dmp_FragOperation.alphaRefValue 0x0015971C ? ?
0x27 GL_FLOAT_VEC3 dmp_Gas.lightXY 0x001560EC ? ?
0x28 GL_FLOAT_VEC4 dmp_Gas.lightZ 0x00156268 ? ?
0x29 GL_FLOAT dmp_Gas.deltaZ 0x001564D4 ? ?
0x2A GL_FLOAT dmp_Gas.accMax 0x001565C0 ? ?
0x2B GL_BOOL dmp_Gas.autoAcc 0x0012B790 ? ?
0x2C GL_FLOAT dmp_Gas.attenuation 0x00156684 ? ?
0x2D GL_INT dmp_Gas.colorLutInput 0x0012B7A4 ? ?
0x2E GL_INT dmp_Gas.shadingDensitySrc 0x0012B854 ? ?
0x2F GL_SAMPLER_1D dmp_Gas.samplerTR 0x0012B910 ? ?
0x30 GL_SAMPLER_1D dmp_Gas.samplerTG 0x0012B95C ? ?
0x31 GL_SAMPLER_1D dmp_Gas.samplerTB 0x0012B9A8 ? ?
0x32 GL_BOOL dmp_FragmentLighting.enabled 0x0012B9F4 ? ?
0x33 GL_FLOAT_VEC4 dmp_FragmentLighting.ambient 0x00156744 ? ?
0x34 GL_FLOAT_VEC4 dmp_FragmentMaterial.emission 0x00156E1C ? ?
0x35 GL_FLOAT_VEC4 dmp_FragmentMaterial.ambient 0x0015696C ? ?
0x36 GL_FLOAT_VEC4 dmp_FragmentMaterial.diffuse 0x00157048 ? ?
0x37 GL_FLOAT_VEC4 dmp_FragmentMaterial.specular0 0x001572E0 ? ?
0x38 GL_FLOAT_VEC4 dmp_FragmentMaterial.specular1 0x0015756C ? ?
0x39 GL_BOOL dmp_FragmentLightSource[0].enabled 0x0012BD24 0xA20+0*0x70+0x00 0x01C5
0x3A GL_BOOL dmp_FragmentLightSource[1].enabled 0x0012BD24 0xA20+1*0x70+0x00 0x01C5
0x3B GL_BOOL dmp_FragmentLightSource[2].enabled 0x0012BD24 0xA20+2*0x70+0x00 0x01C5
0x3C GL_BOOL dmp_FragmentLightSource[3].enabled 0x0012BD24 0xA20+3*0x70+0x00 0x01C5
0x3D GL_BOOL dmp_FragmentLightSource[4].enabled 0x0012BD24 0xA20+4*0x70+0x00 0x01C5
0x3E GL_BOOL dmp_FragmentLightSource[5].enabled 0x0012BD24 0xA20+5*0x70+0x00 0x01C5
0x3F GL_BOOL dmp_FragmentLightSource[6].enabled 0x0012BD24 0xA20+6*0x70+0x00 0x01C5
0x40 GL_BOOL dmp_FragmentLightSource[7].enabled 0x0012BD24 0xA20+7*0x70+0x00 0x01C5
0x41 GL_FLOAT_VEC4 dmp_FragmentLightSource[0].ambient 0x001579CC 0xA20+0*0x70+0x04 0x01C8 ?
0x42 GL_FLOAT_VEC4 dmp_FragmentLightSource[1].ambient 0x001579CC 0xA20+1*0x70+0x04 0x01C8 ?
0x43 GL_FLOAT_VEC4 dmp_FragmentLightSource[2].ambient 0x001579CC 0xA20+2*0x70+0x04 0x01C8 ?
0x44 GL_FLOAT_VEC4 dmp_FragmentLightSource[3].ambient 0x001579CC 0xA20+3*0x70+0x04 0x01C8 ?
0x45 GL_FLOAT_VEC4 dmp_FragmentLightSource[4].ambient 0x001579CC 0xA20+4*0x70+0x04 0x01C8 ?
0x46 GL_FLOAT_VEC4 dmp_FragmentLightSource[5].ambient 0x001579CC 0xA20+5*0x70+0x04 0x01C8 ?
0x47 GL_FLOAT_VEC4 dmp_FragmentLightSource[6].ambient 0x001579CC 0xA20+6*0x70+0x04 0x01C8 ?
0x48 GL_FLOAT_VEC4 dmp_FragmentLightSource[7].ambient 0x001579CC 0xA20+7*0x70+0x04 0x01C8 ?
0x49 GL_FLOAT_VEC4 dmp_FragmentLightSource[0].diffuse 0x00157C10 0xA20+0*0x70+0x14 0x01C8 ?
0x4A GL_FLOAT_VEC4 dmp_FragmentLightSource[1].diffuse 0x00157C10 0xA20+1*0x70+0x14 0x01C8 ?
0x4B GL_FLOAT_VEC4 dmp_FragmentLightSource[2].diffuse 0x00157C10 0xA20+2*0x70+0x14 0x01C8 ?
0x4C GL_FLOAT_VEC4 dmp_FragmentLightSource[3].diffuse 0x00157C10 0xA20+3*0x70+0x14 0x01C8 ?
0x4D GL_FLOAT_VEC4 dmp_FragmentLightSource[4].diffuse 0x00157C10 0xA20+4*0x70+0x14 0x01C8 ?
0x4E GL_FLOAT_VEC4 dmp_FragmentLightSource[5].diffuse 0x00157C10 0xA20+5*0x70+0x14 0x01C8 ?
0x4F GL_FLOAT_VEC4 dmp_FragmentLightSource[6].diffuse 0x00157C10 0xA20+6*0x70+0x14 0x01C8 ?
0x50 GL_FLOAT_VEC4 dmp_FragmentLightSource[7].diffuse 0x00157C10 0xA20+7*0x70+0x14 0x01C8 ?
0x51 GL_FLOAT_VEC4 dmp_FragmentLightSource[0].specular0 0x00157E5C 0xA20+0*0x70+0x24 0x01C8 ?
0x52 GL_FLOAT_VEC4 dmp_FragmentLightSource[1].specular0 0x00157E5C 0xA20+1*0x70+0x24 0x01C8 ?
0x53 GL_FLOAT_VEC4 dmp_FragmentLightSource[2].specular0 0x00157E5C 0xA20+2*0x70+0x24 0x01C8 ?
0x54 GL_FLOAT_VEC4 dmp_FragmentLightSource[3].specular0 0x00157E5C 0xA20+3*0x70+0x24 0x01C8 ?
0x55 GL_FLOAT_VEC4 dmp_FragmentLightSource[4].specular0 0x00157E5C 0xA20+4*0x70+0x24 0x01C8 ?
0x56 GL_FLOAT_VEC4 dmp_FragmentLightSource[5].specular0 0x00157E5C 0xA20+5*0x70+0x24 0x01C8 ?
0x57 GL_FLOAT_VEC4 dmp_FragmentLightSource[6].specular0 0x00157E5C 0xA20+6*0x70+0x24 0x01C8 ?
0x58 GL_FLOAT_VEC4 dmp_FragmentLightSource[7].specular0 0x00157E5C 0xA20+7*0x70+0x24 0x01C8 ?
0x59 GL_FLOAT_VEC4 dmp_FragmentLightSource[0].specular1 0x001580B4 0xA20+0*0x70+0x34 0x01C8 ?
0x5A GL_FLOAT_VEC4 dmp_FragmentLightSource[1].specular1 0x001580B4 0xA20+1*0x70+0x34 0x01C8 ?
0x5B GL_FLOAT_VEC4 dmp_FragmentLightSource[2].specular1 0x001580B4 0xA20+2*0x70+0x34 0x01C8 ?
0x5C GL_FLOAT_VEC4 dmp_FragmentLightSource[3].specular1 0x001580B4 0xA20+3*0x70+0x34 0x01C8 ?
0x5D GL_FLOAT_VEC4 dmp_FragmentLightSource[4].specular1 0x001580B4 0xA20+4*0x70+0x34 0x01C8 ?
0x5E GL_FLOAT_VEC4 dmp_FragmentLightSource[5].specular1 0x001580B4 0xA20+5*0x70+0x34 0x01C8 ?
0x5F GL_FLOAT_VEC4 dmp_FragmentLightSource[6].specular1 0x001580B4 0xA20+6*0x70+0x34 0x01C8 ?
0x60 GL_FLOAT_VEC4 dmp_FragmentLightSource[7].specular1 0x001580B4 0xA20+7*0x70+0x34 0x01C8 ?
0x61 GL_FLOAT_VEC4 dmp_FragmentLightSource[0].position 0x001584B0 0xA20+0*0x70+0x44 0x01C8 ?
0x62 GL_FLOAT_VEC4 dmp_FragmentLightSource[1].position 0x001584B0 0xA20+1*0x70+0x44 0x01C8 ?
0x63 GL_FLOAT_VEC4 dmp_FragmentLightSource[2].position 0x001584B0 0xA20+2*0x70+0x44 0x01C8 ?
0x64 GL_FLOAT_VEC4 dmp_FragmentLightSource[3].position 0x001584B0 0xA20+3*0x70+0x44 0x01C8 ?
0x65 GL_FLOAT_VEC4 dmp_FragmentLightSource[4].position 0x001584B0 0xA20+4*0x70+0x44 0x01C8 ?
0x66 GL_FLOAT_VEC4 dmp_FragmentLightSource[5].position 0x001584B0 0xA20+5*0x70+0x44 0x01C8 ?
0x67 GL_FLOAT_VEC4 dmp_FragmentLightSource[6].position 0x001584B0 0xA20+6*0x70+0x44 0x01C8 ?
0x68 GL_FLOAT_VEC4 dmp_FragmentLightSource[7].position 0x001584B0 0xA20+7*0x70+0x44 0x01C8 ?
0x69 GL_FLOAT_VEC3 dmp_FragmentLightSource[0].spotDirection 0x001587E4 0xA20+0*0x70+0x54 0x01C8 ?
0x6A GL_FLOAT_VEC3 dmp_FragmentLightSource[1].spotDirection 0x001587E4 0xA20+1*0x70+0x54 0x01C8 ?
0x6B GL_FLOAT_VEC3 dmp_FragmentLightSource[2].spotDirection 0x001587E4 0xA20+2*0x70+0x54 0x01C8 ?
0x6C GL_FLOAT_VEC3 dmp_FragmentLightSource[3].spotDirection 0x001587E4 0xA20+3*0x70+0x54 0x01C8 ?
0x6D GL_FLOAT_VEC3 dmp_FragmentLightSource[4].spotDirection 0x001587E4 0xA20+4*0x70+0x54 0x01C8 ?
0x6E GL_FLOAT_VEC3 dmp_FragmentLightSource[5].spotDirection 0x001587E4 0xA20+5*0x70+0x54 0x01C8 ?
0x6F GL_FLOAT_VEC3 dmp_FragmentLightSource[6].spotDirection 0x001587E4 0xA20+6*0x70+0x54 0x01C8 ?
0x70 GL_FLOAT_VEC3 dmp_FragmentLightSource[7].spotDirection 0x001587E4 0xA20+7*0x70+0x54 0x01C8 ?
0x71 GL_BOOL dmp_FragmentLightSource[0].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x72 GL_BOOL dmp_FragmentLightSource[1].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x73 GL_BOOL dmp_FragmentLightSource[2].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x74 GL_BOOL dmp_FragmentLightSource[3].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x75 GL_BOOL dmp_FragmentLightSource[4].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x76 GL_BOOL dmp_FragmentLightSource[5].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x77 GL_BOOL dmp_FragmentLightSource[6].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x78 GL_BOOL dmp_FragmentLightSource[7].shadowed 0x0012C20C 0x7C0 0x01C8 ?
0x79 GL_BOOL dmp_FragmentLightSource[0].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7A GL_BOOL dmp_FragmentLightSource[1].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7B GL_BOOL dmp_FragmentLightSource[2].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7C GL_BOOL dmp_FragmentLightSource[3].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7D GL_BOOL dmp_FragmentLightSource[4].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7E GL_BOOL dmp_FragmentLightSource[5].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x7F GL_BOOL dmp_FragmentLightSource[6].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x80 GL_BOOL dmp_FragmentLightSource[7].geomFactor0 0x0012C018 0x7D8 0x01C8 ?
0x81 GL_BOOL dmp_FragmentLightSource[0].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x82 GL_BOOL dmp_FragmentLightSource[1].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x83 GL_BOOL dmp_FragmentLightSource[2].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x84 GL_BOOL dmp_FragmentLightSource[3].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x85 GL_BOOL dmp_FragmentLightSource[4].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x86 GL_BOOL dmp_FragmentLightSource[5].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x87 GL_BOOL dmp_FragmentLightSource[6].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x88 GL_BOOL dmp_FragmentLightSource[7].geomFactor1 0x0012C114 0x7D8 0x01C8 ?
0x89 GL_BOOL dmp_FragmentLightSource[0].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8A GL_BOOL dmp_FragmentLightSource[1].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8B GL_BOOL dmp_FragmentLightSource[2].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8C GL_BOOL dmp_FragmentLightSource[3].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8D GL_BOOL dmp_FragmentLightSource[4].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8E GL_BOOL dmp_FragmentLightSource[5].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x8F GL_BOOL dmp_FragmentLightSource[6].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x90 GL_BOOL dmp_FragmentLightSource[7].twoSideDiffuse 0x0012BF10 0x7D8 0x01C8 ?
0x91 GL_SAMPLER_1D dmp_FragmentLightSource[0].samplerSP 0x0012C31C 0xA20+0*0x70+0x60 0x01C8 ?
0x92 GL_SAMPLER_1D dmp_FragmentLightSource[1].samplerSP 0x0012C31C 0xA20+1*0x70+0x60 0x01C8 ?
0x93 GL_SAMPLER_1D dmp_FragmentLightSource[2].samplerSP 0x0012C31C 0xA20+2*0x70+0x60 0x01C8 ?
0x94 GL_SAMPLER_1D dmp_FragmentLightSource[3].samplerSP 0x0012C31C 0xA20+3*0x70+0x60 0x01C8 ?
0x95 GL_SAMPLER_1D dmp_FragmentLightSource[4].samplerSP 0x0012C31C 0xA20+4*0x70+0x60 0x01C8 ?
0x96 GL_SAMPLER_1D dmp_FragmentLightSource[5].samplerSP 0x0012C31C 0xA20+5*0x70+0x60 0x01C8 ?
0x97 GL_SAMPLER_1D dmp_FragmentLightSource[6].samplerSP 0x0012C31C 0xA20+6*0x70+0x60 0x01C8 ?
0x98 GL_SAMPLER_1D dmp_FragmentLightSource[7].samplerSP 0x0012C31C 0xA20+7*0x70+0x60 0x01C8 ?
0x99 GL_BOOL dmp_FragmentLightSource[0].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9A GL_BOOL dmp_FragmentLightSource[1].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9B GL_BOOL dmp_FragmentLightSource[2].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9C GL_BOOL dmp_FragmentLightSource[3].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9D GL_BOOL dmp_FragmentLightSource[4].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9E GL_BOOL dmp_FragmentLightSource[5].spotEnabled 0x0012C380 ? 0x01C8 ?
0x9F GL_BOOL dmp_FragmentLightSource[6].spotEnabled 0x0012C380 ? 0x01C8 ?
0xA0 GL_BOOL dmp_FragmentLightSource[7].spotEnabled 0x0012C380 ? 0x01C8 ?
0xA1 GL_FLOAT dmp_FragmentLightSource[0].distanceAttenuationBias 0x00158AE8 0xA20+0*0x70+0x64 0x01C8 ?
0xA2 GL_FLOAT dmp_FragmentLightSource[1].distanceAttenuationBias 0x00158AE8 0xA20+1*0x70+0x64 0x01C8 ?
0xA3 GL_FLOAT dmp_FragmentLightSource[2].distanceAttenuationBias 0x00158AE8 0xA20+2*0x70+0x64 0x01C8 ?
0xA4 GL_FLOAT dmp_FragmentLightSource[3].distanceAttenuationBias 0x00158AE8 0xA20+3*0x70+0x64 0x01C8 ?
0xA5 GL_FLOAT dmp_FragmentLightSource[4].distanceAttenuationBias 0x00158AE8 0xA20+4*0x70+0x64 0x01C8 ?
0xA6 GL_FLOAT dmp_FragmentLightSource[5].distanceAttenuationBias 0x00158AE8 0xA20+5*0x70+0x64 0x01C8 ?
0xA7 GL_FLOAT dmp_FragmentLightSource[6].distanceAttenuationBias 0x00158AE8 0xA20+6*0x70+0x64 0x01C8 ?
0xA8 GL_FLOAT dmp_FragmentLightSource[7].distanceAttenuationBias 0x00158AE8 0xA20+7*0x70+0x64 0x01C8 ?
0xA9 GL_FLOAT dmp_FragmentLightSource[0].distanceAttenuationScale 0x00158C44 0xA20+0*0x70+0x68 0x01C8 ?
0xAA GL_FLOAT dmp_FragmentLightSource[1].distanceAttenuationScale 0x00158C44 0xA20+1*0x70+0x68 0x01C8 ?
0xAB GL_FLOAT dmp_FragmentLightSource[2].distanceAttenuationScale 0x00158C44 0xA20+2*0x70+0x68 0x01C8 ?
0xAC GL_FLOAT dmp_FragmentLightSource[3].distanceAttenuationScale 0x00158C44 0xA20+3*0x70+0x68 0x01C8 ?
0xAD GL_FLOAT dmp_FragmentLightSource[4].distanceAttenuationScale 0x00158C44 0xA20+4*0x70+0x68 0x01C8 ?
0xAE GL_FLOAT dmp_FragmentLightSource[5].distanceAttenuationScale 0x00158C44 0xA20+5*0x70+0x68 0x01C8 ?
0xAF GL_FLOAT dmp_FragmentLightSource[6].distanceAttenuationScale 0x00158C44 0xA20+6*0x70+0x68 0x01C8 ?
0xB0 GL_FLOAT dmp_FragmentLightSource[7].distanceAttenuationScale 0x00158C44 0xA20+7*0x70+0x68 0x01C8 ?
0xB1 GL_BOOL dmp_FragmentLightSource[0].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB2 GL_BOOL dmp_FragmentLightSource[1].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB3 GL_BOOL dmp_FragmentLightSource[2].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB4 GL_BOOL dmp_FragmentLightSource[3].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB5 GL_BOOL dmp_FragmentLightSource[4].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB6 GL_BOOL dmp_FragmentLightSource[5].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB7 GL_BOOL dmp_FragmentLightSource[6].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB8 GL_BOOL dmp_FragmentLightSource[7].distanceAttenuationEnabled 0x0012C4A0 ? 0x01C8 ?
0xB9 GL_SAMPLER_1D dmp_FragmentLightSource[0].samplerDA 0x0012C578 0xA20+0*0x70+0x6C ? 0x01C8 ?
0xBA GL_SAMPLER_1D dmp_FragmentLightSource[1].samplerDA 0x0012C578 0xA20+1*0x70+0x6C ? 0x01C8 ?
0xBB GL_SAMPLER_1D dmp_FragmentLightSource[2].samplerDA 0x0012C578 0xA20+2*0x70+0x6C ? 0x01C8 ?
0xBC GL_SAMPLER_1D dmp_FragmentLightSource[3].samplerDA 0x0012C578 0xA20+3*0x70+0x6C ? 0x01C8 ?
0xBD GL_SAMPLER_1D dmp_FragmentLightSource[4].samplerDA 0x0012C578 0xA20+4*0x70+0x6C ? 0x01C8 ?
0xBE GL_SAMPLER_1D dmp_FragmentLightSource[5].samplerDA 0x0012C578 0xA20+5*0x70+0x6C ? 0x01C8 ?
0xBF GL_SAMPLER_1D dmp_FragmentLightSource[6].samplerDA 0x0012C578 0xA20+6*0x70+0x6C ? 0x01C8 ?
0xC0 GL_SAMPLER_1D dmp_FragmentLightSource[7].samplerDA 0x0012C578 0xA20+7*0x70+0x6C ? 0x01C8 ?
0xC1 GL_BOOL dmp_LightEnv.absLutInputD0 0x0012C5D8 ? ?
0xC2 GL_BOOL dmp_LightEnv.absLutInputD1 0x0012C5D8 ? ?
0xC3 GL_BOOL dmp_LightEnv.absLutInputSP 0x0012C5D8 ? ?
0xC4 GL_BOOL dmp_LightEnv.absLutInputFR 0x0012C5D8 ? ?
0xC5 GL_BOOL dmp_LightEnv.absLutInputRB 0x0012C5D8 ? ?
0xC6 GL_BOOL dmp_LightEnv.absLutInputRG 0x0012C5D8 ? ?
0xC7 GL_BOOL dmp_LightEnv.absLutInputRR 0x0012C5D8 ? ?
0xC8 GL_INT dmp_LightEnv.lutInputD0 0x0012C6E8 ? ?
0xC9 GL_INT dmp_LightEnv.lutInputD1 0x0012C6E8 ? ?
0xCA GL_INT dmp_LightEnv.lutInputSP 0x0012C6E8 ? ?
0xCB GL_INT dmp_LightEnv.lutInputFR 0x0012C6E8 ? ?
0xCC GL_INT dmp_LightEnv.lutInputRB 0x0012C6E8 ? ?
0xCD GL_INT dmp_LightEnv.lutInputRG 0x0012C6E8 ? ?
0xCE GL_INT dmp_LightEnv.lutInputRR 0x0012C6E8 ? ?
0xCF GL_FLOAT dmp_LightEnv.lutScaleD0 0x00155404 ? ?
0xD0 GL_FLOAT dmp_LightEnv.lutScaleD1 0x00155404 ? ?
0xD1 GL_FLOAT dmp_LightEnv.lutScaleSP 0x00155404 ? ?
0xD2 GL_FLOAT dmp_LightEnv.lutScaleFR 0x00155404 ? ?
0xD3 GL_FLOAT dmp_LightEnv.lutScaleRB 0x00155404 ? ?
0xD4 GL_FLOAT dmp_LightEnv.lutScaleRG 0x00155404 ? ?
0xD5 GL_FLOAT dmp_LightEnv.lutScaleRR 0x00155404 ? ?
0xD6 GL_SAMPLER_1D dmp_FragmentMaterial.samplerD0 0x0012C7D0 ? ?
0xD7 GL_SAMPLER_1D dmp_FragmentMaterial.samplerD1 0x0012C7D0 ? ?
0xD8 GL_SAMPLER_1D dmp_FragmentMaterial.samplerFR 0x0012C7D0 ? ?
0xD9 GL_SAMPLER_1D dmp_FragmentMaterial.samplerRB 0x0012C7D0 ? ?
0xDA GL_SAMPLER_1D dmp_FragmentMaterial.samplerRG 0x0012C7D0 ? ?
0xDB GL_SAMPLER_1D dmp_FragmentMaterial.samplerRR 0x0012C7D0 ? ?
0xDC GL_INT dmp_LightEnv.shadowSelector 0x0012CE44 ? ?
0xDD GL_INT dmp_LightEnv.bumpSelector 0x0012CD88 ? ?
0xDE GL_INT dmp_LightEnv.bumpMode 0x0012D4B4 ? ?
0xDF GL_BOOL dmp_LightEnv.bumpRenorm 0x0012D8A0 ? ?
0xE0 GL_INT dmp_LightEnv.config 0x0012D5E4 ? ?
0xE1 GL_BOOL dmp_LightEnv.invertShadow 0x0012CF04 ? ?
0xE2 GL_BOOL dmp_LightEnv.shadowPrimary 0x0012CFD4 ? ?
0xE3 GL_BOOL dmp_LightEnv.shadowSecondary 0x0012D1B8 ? ?
0xE4 GL_BOOL dmp_LightEnv.shadowAlpha 0x0012D350 ? ?
0xE5 GL_INT dmp_LightEnv.fresnelSelector 0x0012D720 ? ?
0xE6 GL_BOOL dmp_LightEnv.clampHighlights 0x0012D9B0 ? ?
0xE7 GL_BOOL dmp_LightEnv.lutEnabledD0 0x0012DA80 ? ?
0xE8 GL_BOOL dmp_LightEnv.lutEnabledD1 0x0012DB58 ? ?
0xE9 GL_BOOL dmp_LightEnv.lutEnabledRefl 0x0012C83C ? ?
0xEA GL_INT dmp_TexEnv[0].combineRgb 0x0012DC2C ? 0xC2
0xEB GL_INT dmp_TexEnv[1].combineRgb 0x0012DC2C ? 0xCA
0xEC GL_INT dmp_TexEnv[2].combineRgb 0x0012DC2C ? 0xD2
0xED GL_INT dmp_TexEnv[3].combineRgb 0x0012DC2C ? 0xDA
0xEE GL_INT dmp_TexEnv[4].combineRgb 0x0012DC2C ? 0xF2
0xEF GL_INT dmp_TexEnv[5].combineRgb 0x0012DC2C ? 0xFA
0xF0 GL_INT dmp_TexEnv[0].combineAlpha 0x0012DD9C ? 0xC2
0xF1 GL_INT dmp_TexEnv[1].combineAlpha 0x0012DD9C ? 0xCA
0xF2 GL_INT dmp_TexEnv[2].combineAlpha 0x0012DD9C ? 0xD2
0xF3 GL_INT dmp_TexEnv[3].combineAlpha 0x0012DD9C ? 0xDA
0xF4 GL_INT dmp_TexEnv[4].combineAlpha 0x0012DD9C ? 0xF2
0xF5 GL_INT dmp_TexEnv[5].combineAlpha 0x0012DD9C ? 0xFA
0xF6 GL_INT_VEC3 dmp_TexEnv[0].srcRgb 0x0012DF08 ? 0xC0
0xF7 GL_INT_VEC3 dmp_TexEnv[1].srcRgb 0x0012DF08 ? 0xC8
0xF8 GL_INT_VEC3 dmp_TexEnv[2].srcRgb 0x0012DF08 ? 0xD0
0xF9 GL_INT_VEC3 dmp_TexEnv[3].srcRgb 0x0012DF08 ? 0xD8
0xFA GL_INT_VEC3 dmp_TexEnv[4].srcRgb 0x0012DF08 ? 0xF0
0xFB GL_INT_VEC3 dmp_TexEnv[5].srcRgb 0x0012DF08 ? 0xF8
0xFC GL_INT_VEC3 dmp_TexEnv[0].srcAlpha 0x0012E0FC ? 0xC0
0xFD GL_INT_VEC3 dmp_TexEnv[1].srcAlpha 0x0012E0FC ? 0xC8
0xFE GL_INT_VEC3 dmp_TexEnv[2].srcAlpha 0x0012E0FC ? 0xD0
0xFF GL_INT_VEC3 dmp_TexEnv[3].srcAlpha 0x0012E0FC ? 0xD8
0x100 GL_INT_VEC3 dmp_TexEnv[4].srcAlpha 0x0012E0FC ? 0xF0
0x101 GL_INT_VEC3 dmp_TexEnv[5].srcAlpha 0x0012E0FC ? 0xF8
0x102 GL_INT_VEC3 dmp_TexEnv[0].operandRgb 0x0012E2F0 ? 0xC1
0x103 GL_INT_VEC3 dmp_TexEnv[1].operandRgb 0x0012E2F0 ? 0xC9
0x104 GL_INT_VEC3 dmp_TexEnv[2].operandRgb 0x0012E2F0 ? 0xD1
0x105 GL_INT_VEC3 dmp_TexEnv[3].operandRgb 0x0012E2F0 ? 0xD9
0x106 GL_INT_VEC3 dmp_TexEnv[4].operandRgb 0x0012E2F0 ? 0xF1
0x107 GL_INT_VEC3 dmp_TexEnv[5].operandRgb 0x0012E2F0 ? 0xF9
0x108 GL_INT_VEC3 dmp_TexEnv[0].operandAlpha 0x0012E51C ? 0xC1
0x109 GL_INT_VEC3 dmp_TexEnv[1].operandAlpha 0x0012E51C ? 0xC9
0x10A GL_INT_VEC3 dmp_TexEnv[2].operandAlpha 0x0012E51C ? 0xD1
0x10B GL_INT_VEC3 dmp_TexEnv[3].operandAlpha 0x0012E51C ? 0xD9
0x10C GL_INT_VEC3 dmp_TexEnv[4].operandAlpha 0x0012E51C ? 0xF1
0x10D GL_INT_VEC3 dmp_TexEnv[5].operandAlpha 0x0012E51C ? 0xF9
0x10E GL_FLOAT dmp_TexEnv[0].scaleRgb 0x00155464 ? ?
0x10F GL_FLOAT dmp_TexEnv[1].scaleRgb 0x00155464 ? ?
0x110 GL_FLOAT dmp_TexEnv[2].scaleRgb 0x00155464 ? ?
0x111 GL_FLOAT dmp_TexEnv[3].scaleRgb 0x00155464 ? ?
0x112 GL_FLOAT dmp_TexEnv[4].scaleRgb 0x00155464 ? ?
0x113 GL_FLOAT dmp_TexEnv[5].scaleRgb 0x00155464 ? ?
0x114 GL_FLOAT dmp_TexEnv[0].scaleAlpha 0x00158EDC ? ?
0x115 GL_FLOAT dmp_TexEnv[1].scaleAlpha 0x00158EDC ? ?
0x116 GL_FLOAT dmp_TexEnv[2].scaleAlpha 0x00158EDC ? ?
0x117 GL_FLOAT dmp_TexEnv[3].scaleAlpha 0x00158EDC ? ?
0x118 GL_FLOAT dmp_TexEnv[4].scaleAlpha 0x00158EDC ? ?
0x119 GL_FLOAT dmp_TexEnv[5].scaleAlpha 0x00158EDC ? ?
0x11A GL_FLOAT_VEC4 dmp_TexEnv[0].constRgba 0x00158FF4 ? 0xC3
0x11B GL_FLOAT_VEC4 dmp_TexEnv[1].constRgba 0x00158FF4 ? 0xCB
0x11C GL_FLOAT_VEC4 dmp_TexEnv[2].constRgba 0x00158FF4 ? 0xD3
0x11D GL_FLOAT_VEC4 dmp_TexEnv[3].constRgba 0x00158FF4 ? 0xDB
0x11E GL_FLOAT_VEC4 dmp_TexEnv[4].constRgba 0x00158FF4 ? 0xF3
0x11F GL_FLOAT_VEC4 dmp_TexEnv[5].constRgba 0x00158FF4 ? 0xFB
0x120 GL_FLOAT_VEC4 dmp_TexEnv[0].bufferColor 0x001591C0 ? ?
0x121 GL_INT_VEC2 dmp_TexEnv[1].bufferInput 0x0012E6D0 ? ?
0x122 GL_INT_VEC2 dmp_TexEnv[2].bufferInput 0x0012E6D0 ? ?
0x123 GL_INT_VEC2 dmp_TexEnv[3].bufferInput 0x0012E6D0 ? ?
0x124 GL_INT_VEC2 dmp_TexEnv[4].bufferInput 0x0012E6D0 ? ?
0x125 GL_INT dmp_Fog.mode 0x0012E7F8 ? ?
0x126 GL_FLOAT_VEC3 dmp_Fog.color 0x00159338 ? ?
0x127 GL_BOOL dmp_Fog.zFlip 0x0012E9DC ? ?
0x128 GL_SAMPLER_1D dmp_Fog.sampler 0x0012EAA4 ? ?

On steeldiver's uniform handlers : R1 is a pointer to the current shader program object, R12 is a pointer to the data the uniform is being set to.