1919class dDlst_blo_c : public dDlst_base_c {
2020public:
2121 /* 80053B64 */ virtual void draw ();
22+ bool create (JKRArchive* param_1, char * param_2) {
23+ return mScreen .setPriority (param_2,0x20000 ,param_1) != 0 ;
24+ }
25+
26+ J2DPane* getPane (u64 i_tag) {
27+ return mScreen .search (i_tag);
28+ }
29+
30+ J2DPicture* getPicture (u64 i_tag) {
31+ J2DPane* pane = getPane (i_tag);
32+ JUT_ASSERT (1553 , pane != 0 );
33+ if (pane->getTypeID () != 0x12 ) {
34+ return NULL ;
35+ }
36+ return (J2DPicture*)pane;
37+ }
2238
2339 /* 0x004 */ int field_0x4;
2440 /* 0x008 */ J2DScreen mScreen ;
@@ -99,7 +115,7 @@ class dDlst_2DMt_tex_c {
99115 int getCI () { return mCI ; }
100116 GXTexObj* getTexObj () { return &mTexObj ; }
101117 GXTlutObj* getTlutObj () { return &mTlutObj ; }
102- GXColor getColor () { return mColor ; }
118+ GXColor* getColor () { return & mColor ; }
103119 f32 getS () { return mS ; }
104120 f32 getT () { return mT ; }
105121 f32 getSw () { return mSw ; }
@@ -190,14 +206,16 @@ void dDlst_window_c::setScissor(f32 xOrig, f32 yOrig, f32 width, f32 height) {
190206
191207/* 80051AF0-80051CF0 04C430 0200+00 1/0 0/0 0/0 .text draw__13dDlst_2DTri_cFv */
192208void dDlst_2DTri_c::draw () {
209+ f32 f4;
210+ f32 f5;
193211 f32 f2 = cM_scos (field_0xc);
194212 f32 f3 = cM_ssin (field_0xc);
195213 s16 x[3 ];
196214 s16 y[3 ];
197215 int r8 = 0 ;
198216 for (int i = 0 ; i < 3 ; i++) {
199- f32 f4 = field_0x10 * cM_ssin (r8);
200- f32 f5 = field_0x14 * cM_scos (r8);
217+ f4 = field_0x10 * cM_ssin (r8);
218+ f5 = field_0x14 * cM_scos (r8);
201219 x[i] = field_0x4 + s16 (f4 * f2 + f5 * f3);
202220 y[i] = field_0x6 + s16 (f5 * f2 - f4 * f3);
203221 r8 -= 0x5555 ;
@@ -213,7 +231,7 @@ void dDlst_2DTri_c::draw() {
213231 GXSetTevOrder (GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
214232 GXSetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
215233 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
216- GXLoadPosMtxImm (mDoMtx_getIdentity (), GX_PNMTX0);
234+ GXLoadPosMtxImm (cMtx_getIdentity (), GX_PNMTX0);
217235 GXSetCurrentMtx (GX_PNMTX0);
218236 GXBegin (GX_TRIANGLES, GX_VTXFMT0, 3 );
219237 GXPosition3s16 (x[0 ], y[0 ], 0 );
@@ -236,7 +254,7 @@ void dDlst_2DQuad_c::draw() {
236254 GXSetTevOrder (GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
237255 GXSetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
238256 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
239- GXLoadPosMtxImm (mDoMtx_getIdentity (), GX_PNMTX0);
257+ GXLoadPosMtxImm (cMtx_getIdentity (), GX_PNMTX0);
240258 GXSetCurrentMtx (GX_PNMTX0);
241259 GXBegin (GX_QUADS, GX_VTXFMT0, 4 );
242260 GXPosition3s16 ((s32)mPosX , (s32)mPosY , 0 );
@@ -261,7 +279,7 @@ void dDlst_2DPoint_c::draw() {
261279 GXSetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
262280 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
263281 GXSetPointSize (field_0xc, GX_TO_ZERO);
264- GXLoadPosMtxImm (mDoMtx_getIdentity (), GX_PNMTX0);
282+ GXLoadPosMtxImm (cMtx_getIdentity (), GX_PNMTX0);
265283 GXSetCurrentMtx (GX_PNMTX0);
266284 GXBegin (GX_POINTS, GX_VTXFMT0, 1 );
267285 GXPosition3s16 (field_0x4, field_0x6, 0 );
@@ -306,7 +324,7 @@ void dDlst_2DT_c::draw() {
306324 GXSetFog (GX_FOG_NONE, 0 .0f , 0 .0f , 0 .0f , 0 .0f , g_clearColor);
307325 GXSetCullMode (GX_CULL_NONE);
308326 GXSetDither (GX_TRUE);
309- GXLoadPosMtxImm (mDoMtx_getIdentity (), GX_PNMTX0);
327+ GXLoadPosMtxImm (cMtx_getIdentity (), GX_PNMTX0);
310328 GXSetChanMatColor (GX_COLOR0A0, l_color);
311329 GXSetClipMode (GX_CLIP_DISABLE);
312330 GXSetCurrentMtx (GX_PNMTX0);
@@ -358,7 +376,7 @@ void dDlst_2DT2_c::draw() {
358376 GXSetFog (GX_FOG_NONE, 0 .0f , 0 .0f , 0 .0f , 0 .0f , g_clearColor);
359377 GXSetCullMode (GX_CULL_NONE);
360378 GXSetDither (GX_TRUE);
361- GXLoadPosMtxImm (mDoMtx_getIdentity (), GX_PNMTX0);
379+ GXLoadPosMtxImm (cMtx_getIdentity (), GX_PNMTX0);
362380 GXSetClipMode (GX_CLIP_DISABLE);
363381 GXSetCurrentMtx (GX_PNMTX0);
364382 f32 f31 = field_0x24 + field_0x2c;
@@ -430,10 +448,13 @@ void dDlst_2DT2_c::draw() {
430448 f27 = 1 .0f ;
431449 }
432450 f32 f24;
451+ f32 stack_38;
433452 if (mScaleY == 0 .0f ) {
434453 f24 = 1 .0f ;
454+ stack_38 = 1 .0f ;
435455 } else {
436456 f24 = 0 .5f - (1 .0f / mScaleY ) * 0 .5f ;
457+ stack_38 = (1 .0f / mScaleY ) * 0 .5f + 0 .5f ;
437458 }
438459 GXBegin (GX_QUADS, GX_VTXFMT0, 8 );
439460 GXPosition2f32 (field_0x24, field_0x28);
@@ -700,6 +721,7 @@ void dDlst_2DM_c::draw() {
700721 s16 r25 = r27 + s16 (field_0x1e * f4);
701722 s16 r24 = r26 + s16 (field_0x20 * f3);
702723 GXTexObj tex[2 ];
724+ void ** stack_1c = &field_0x18;
703725 GXInitTexObj (&tex[0 ], field_0x18, field_0x1e, field_0x20, GXTexFmt (field_0x1c), GX_CLAMP, GX_CLAMP, 0 );
704726 GXInitTexObjLOD (&tex[0 ], GX_LINEAR, GX_LINEAR, 0.0 , 0.0 , 0.0 , 0 , 0 , GX_ANISO_1);
705727 GXTexWrapMode wrap = field_0xc ? GX_REPEAT : GX_CLAMP;
@@ -762,6 +784,7 @@ void dDlst_2Dm_c::draw() {
762784 int r26 = field_0x7e * f30;
763785 s16 r25 = r27 + s16 (f31 * GXGetTexObjWidth (&field_0x1c));
764786 s16 r24 = r26 + s16 (f30 * GXGetTexObjHeight (&field_0x1c));
787+ GXTexObj* stack_18 = &field_0x1c;
765788 GXSetVtxAttrFmt (GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0 );
766789 GXSetVtxAttrFmt (GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8 );
767790 GXSetVtxAttrFmt (GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 8 );
@@ -796,7 +819,7 @@ void dDlst_2Dm_c::draw() {
796819 GXSetTevAlphaOp (GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1 , GX_TEVPREV);
797820 GXSetAlphaCompare (GX_GREATER, 0 , GX_AOP_OR, GX_GREATER, 0 );
798821 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
799- GXLoadPosMtxImm (g_mDoMtx_identity , GX_PNMTX0);
822+ GXLoadPosMtxImm (cMtx_getIdentity () , GX_PNMTX0);
800823 GXSetCurrentMtx (0 );
801824 GXBegin (GX_QUADS, GX_VTXFMT0, 4 );
802825 GXPosition3s16 ((s32)field_0x4, (s32)field_0x6, 0 );
@@ -831,7 +854,7 @@ void dDlst_2DMt_c::draw() {
831854 GXLoadTexObj (r27->getTexObj (), GXTexMapID (r28));
832855 GXSetVtxAttrFmt (GX_VTXFMT0, GXAttr (GX_VA_TEX0 + r28), GX_CLR_RGBA, GX_RGBA6, 0 );
833856 GXSetVtxDesc (GXAttr (GX_VA_TEX0 + r28), GX_DIRECT);
834- GXSetTevColor (GXTevRegID (GX_TEVREG0 + r28), r27->mColor );
857+ GXSetTevColor (GXTevRegID (GX_TEVREG0 + r28), * r27->getColor () );
835858 GXSetTexCoordGen (GXTexCoordID (r28), GX_TG_MTX2x4, GXTexGenSrc (GX_TG_TEX0 + r28), GX_IDENTITY);
836859 GXSetTevOrder (GXTevStageID (r28), GXTexCoordID (r28), GXTexMapID (r28), GX_COLOR_NULL);
837860 GXSetTevColorIn (GXTevStageID (r28), GX_CC_ZERO, GXTevColorArg (GX_CC_C0 + r28*2 ), GX_CC_TEXC, r28 ? GX_CC_CPREV : GX_CC_ZERO);
@@ -852,51 +875,42 @@ void dDlst_2DMt_c::draw() {
852875 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
853876 GXBegin (GX_QUADS, GX_VTXFMT0, 4 );
854877 GXPosition3s16 (field_0xc, field_0xe, 0 );
855- dDlst_2DMt_tex_c* tmp = field_0x8;
878+ r27 = field_0x8;
856879 for (int i = 0 ; i < field_0x4; i++) {
857- if (tmp ->check ()) {
858- GXTexCoord2f32 (tmp ->getS (), tmp ->getT ());
880+ if (r27 ->check ()) {
881+ GXTexCoord2f32 (r27 ->getS (), r27 ->getT ());
859882 }
860- tmp ++;
883+ r27 ++;
861884 }
862885 GXPosition3s16 (field_0x10, field_0xe, 0 );
863- tmp = field_0x8;
886+ r27 = field_0x8;
864887 for (int i = 0 ; i < field_0x4; i++) {
865- if (tmp ->check ()) {
866- GXTexCoord2f32 (tmp ->getS () + tmp ->getSw (), tmp ->getT ());
888+ if (r27 ->check ()) {
889+ GXTexCoord2f32 (r27 ->getS () + r27 ->getSw (), r27 ->getT ());
867890 }
868- tmp ++;
891+ r27 ++;
869892 }
870893 GXPosition3s16 (field_0x10, field_0x12, 0 );
871- tmp = field_0x8;
894+ r27 = field_0x8;
872895 for (int i = 0 ; i < field_0x4; i++) {
873- if (tmp ->check ()) {
874- GXTexCoord2f32 (tmp ->getS () + tmp ->getSw (), tmp ->getT () + tmp ->getTw ());
896+ if (r27 ->check ()) {
897+ GXTexCoord2f32 (r27 ->getS () + r27 ->getSw (), r27 ->getT () + r27 ->getTw ());
875898 }
876- tmp ++;
899+ r27 ++;
877900 }
878901 GXPosition3s16 (field_0xc, field_0x12, 0 );
879- tmp = field_0x8;
902+ r27 = field_0x8;
880903 for (int i = 0 ; i < field_0x4; i++) {
881- if (tmp ->check ()) {
882- GXTexCoord2f32 (tmp ->getS (), tmp ->getT () + tmp ->getTw ());
904+ if (r27 ->check ()) {
905+ GXTexCoord2f32 (r27 ->getS (), r27 ->getT () + r27 ->getTw ());
883906 }
884- tmp ++;
907+ r27 ++;
885908 }
886909 GXEnd ();
887910 dComIfGp_getCurrentGrafPort ()->setup2D ();
888911 }
889912}
890913
891- /* 800539DC-80053A00 04E31C 0024+00 0/0 1/0 0/0 .text getTexture__10J2DPictureCFUc */
892- // Should be inline
893- JUTTexture* J2DPicture::getTexture (u8 param_0) const {
894- if (param_0 < 2 ) {
895- return mTexture [param_0];
896- }
897- return NULL ;
898- }
899-
900914/* 80053A00-80053A9C 04E340 009C+00 0/0 1/1 0/0 .text __ct__10dDlst_2D_cFP7ResTIMGssssUc
901915 */
902916dDlst_2D_c::dDlst_2D_c (ResTIMG* i_timg, s16 i_posX, s16 i_posY, s16 i_sizeX, s16 i_sizeY,
@@ -932,9 +946,9 @@ f32 cM_rnd_c::get() {
932946 seed0 = seed0 * 171 % 30269 ;
933947 seed1 = seed1 * 172 % 30307 ;
934948 seed2 = seed2 * 170 % 30323 ;
935- f32 rm = fmodf (( seed0 / 30269 .0f ) + (seed1 / 30307 .0f ) + (seed2 / 30323 .0f ), 1.0 );
949+ f32 newSeed = ( seed0 / 30269 .0f ) + (seed1 / 30307 .0f ) + (seed2 / 30323 .0f );
936950
937- return fabsf (rm );
951+ return fabsf (fmodf (newSeed, 1.0 ) );
938952}
939953
940954/* 80053DE0-80053E18 04E720 0038+00 1/1 0/0 0/0 .text getF__8cM_rnd_cFf */
@@ -971,7 +985,7 @@ void dDlst_effectLine_c::draw() {
971985 GXSetBlendMode (GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
972986 GXSetAlphaCompare (GX_ALWAYS, 0 , GX_AOP_OR, GX_ALWAYS, 0 );
973987 GXSetCullMode (GX_CULL_NONE);
974- GXLoadPosMtxImm (j3dSys.mViewMtx , GX_PNMTX0);
988+ GXLoadPosMtxImm (j3dSys.getViewMtx () , GX_PNMTX0);
975989 GXSetClipMode (GX_CLIP_ENABLE);
976990 GXSetCurrentMtx (0 );
977991 int r31 = getRndValue (field_0x20, field_0x22);
@@ -989,7 +1003,8 @@ void dDlst_effectLine_c::draw() {
9891003 local_74.z = field_0x10.z ;
9901004 cMtx_multVec (dComIfGd_getInvViewMtx (), &local_68, &local_68);
9911005 cMtx_multVec (dComIfGd_getInvViewMtx (), &local_74, &local_74);
992- GXSetLineWidth (getRndValue (field_0x24, field_0x26), GX_TO_ZERO);
1006+ tmp = getRndValue (field_0x24, field_0x26);
1007+ GXSetLineWidth (tmp, GX_TO_ZERO);
9931008 GXBegin (GX_LINES, GX_VTXFMT0, 2 );
9941009 GXPosition3f32 (local_68.x , local_68.y , local_68.z );
9951010 GXPosition3f32 (local_74.x , local_74.y , local_74.z );
@@ -1026,6 +1041,7 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
10261041
10271042 dDlst_shadowTri_c* dst = getTri () + mCount ;
10281043
1044+ cBgD_Vtx_t* vtx = i_vtx;
10291045 cXyz b (*i_plane->GetNP ());
10301046 f32 temp_f3 = (1 .0f - fabsf (b.y ));
10311047 temp_f3 *= temp_f3;
@@ -1034,9 +1050,9 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
10341050 b.z *= temp_f3;
10351051 b *= 2 .0f ;
10361052
1037- VECAdd (&i_vtx [param_1], &b, &dst->mPos [0 ]);
1038- VECAdd (&i_vtx [param_2], &b, &dst->mPos [1 ]);
1039- VECAdd (&i_vtx [param_3], &b, &dst->mPos [2 ]);
1053+ PSVECAdd (&vtx [param_1], &b, &dst->mPos [0 ]);
1054+ PSVECAdd (&vtx [param_2], &b, &dst->mPos [1 ]);
1055+ PSVECAdd (&vtx [param_3], &b, &dst->mPos [2 ]);
10401056 mCount ++;
10411057 return 1 ;
10421058}
@@ -1062,7 +1078,8 @@ static J3DDrawBuffer* J3DDrawBuffer__create(u32 size) {
10621078 J3DDrawBuffer* buffer = new J3DDrawBuffer ();
10631079
10641080 if (buffer) {
1065- if (buffer->allocBuffer (size) == kJ3DError_Success ) {
1081+ J3DError error = buffer->allocBuffer (size);
1082+ if (error == kJ3DError_Success ) {
10661083 return buffer;
10671084 }
10681085 delete buffer;
@@ -1079,15 +1096,18 @@ void dDlst_shadowReal_c::reset() {
10791096/* 80054500-800545D4 04EE40 00D4+00 1/1 0/0 0/0 .text imageDraw__18dDlst_shadowReal_cFPA4_f */
10801097void dDlst_shadowReal_c::imageDraw (Mtx param_0) {
10811098 GXSetProjection (mRenderProjMtx , GX_ORTHOGRAPHIC);
1099+ JUT_ASSERT (1916 , mModelNum );
1100+ J3DModelData* model_data;
10821101 J3DModel** models = mpModels;
1102+ J3DShapePacket* shape_pkt;
10831103
10841104 for (u8 i = 0 ; i < mModelNum ; i++) {
1085- J3DModelData* model_data = (*models)->getModelData ();
1105+ model_data = (*models)->getModelData ();
10861106 model_data->getShapeNodePointer (0 )->loadPreDrawSetting ();
10871107
10881108 for (u16 j = 0 ; j < model_data->getShapeNum (); j++) {
10891109 if (!model_data->getShapeNodePointer (j)->checkFlag (1 )) {
1090- J3DShapePacket* shape_pkt = (*models)->getShapePacket (j);
1110+ shape_pkt = (*models)->getShapePacket (j);
10911111 shape_pkt->setBaseMtxPtr (&mViewMtx );
10921112 shape_pkt->drawFast ();
10931113 shape_pkt->setBaseMtxPtr ((Mtx*)param_0);
0 commit comments