diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2025-04-09 16:45:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-09 13:45:30 -0700 |
| commit | c6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch) | |
| tree | bf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem | |
| parent | 6672817e41064e04951ec28d51070b66fc8377ac (diff) | |
Various JSystem work (#2383)
* JKernel and JStudio cleanup
* JMessage cleanup
* JAudio cleanup
* JASBNKParser work
* functionvalue work
* fvb work
* J2D and J3D cleanup
* steal from tww
* J2DPictureEx mostly done
* fix build
Diffstat (limited to 'src/JSystem')
37 files changed, 1227 insertions, 2486 deletions
diff --git a/src/JSystem/J2DGraph/J2DMaterial.cpp b/src/JSystem/J2DGraph/J2DMaterial.cpp index ea9712dff8..3b7165967d 100644 --- a/src/JSystem/J2DGraph/J2DMaterial.cpp +++ b/src/JSystem/J2DGraph/J2DMaterial.cpp @@ -8,7 +8,6 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTPalette.h" #include "JSystem/JUtility/JUTTexture.h" -#include "dol2asm.h" /* 802EA1AC-802EA2CC 2E4AEC 0120+00 0/0 1/1 0/0 .text __ct__11J2DMaterialFv */ J2DMaterial::J2DMaterial() { @@ -305,17 +304,17 @@ void J2DMaterial::animation() { ResTIMG* img = mAnmPointer->mPatternAnm->getResTIMG(idx); if (texture->getTexInfo() != img) { JUTPalette* palette = NULL; - u32 tlut = GX_TLUT0; + GXTlut tlut = GX_TLUT0; if (img->indexTexture != 0) { palette = mAnmPointer->mPatternAnm->getPalette(idx); if (palette->getNumColors() > 256) { - tlut = i % 4 + 16; + tlut = (GXTlut)(i % 4 + 16); } else { - tlut = i; + tlut = (GXTlut)i; } } - texture->storeTIMG(img, palette, (GXTlut)tlut); + texture->storeTIMG(img, palette, tlut); } } } diff --git a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp index ba95fb632c..c2f9f9b7ea 100644 --- a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -9,7 +9,6 @@ #include "JSystem/JSupport/JSupport.h" #include "JSystem/JUtility/JUTResource.h" #include "string.h" -#include "dol2asm.h" #include "dolphin/types.h" /* 802F2AD0-802F2C94 2ED410 01C4+00 0/0 1/1 0/0 .text @@ -108,7 +107,7 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par local_380 = aJStack_12c.getResource(local_37c, 'TIMG', NULL); } if (local_380 == NULL && J2DScreen::getDataManage() != NULL) { - char acStack_230[256]; + char acStack_230[257]; strcpy(acStack_230, param_3->getName(texNo)); local_380 = J2DScreen::getDataManage()->get(acStack_230); } @@ -128,7 +127,7 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par } if (local_388 == NULL && J2DScreen::getDataManage() != NULL) { char* pcVar9 = param_4->getName(param_0->getTevBlock()->getFontNo()); - char acStack_334[256]; + char acStack_334[257]; strcpy(acStack_334, pcVar9); local_388 = J2DScreen::getDataManage()->get(acStack_334); } @@ -294,7 +293,7 @@ J2DTevOrder J2DMaterialFactory::newTevOrder(int param_0, int param_1) const { /* 802F3A1C-802F3AB4 2EE35C 0098+00 1/1 0/0 0/0 .text newTevColor__18J2DMaterialFactoryCFii */ // NONMATCHING - J2DGXColorS10 init issues J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { - GXColorS10 color = {}; + GXColorS10 color = {0, 0, 0, 0}; J2DGXColorS10 rv = J2DGXColorS10(color); J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; if (iVar2->field_0x92[param_1] != 0xffff) { diff --git a/src/JSystem/J2DGraph/J2DPicture.cpp b/src/JSystem/J2DGraph/J2DPicture.cpp index 03c2fff0a0..3c86bcda20 100644 --- a/src/JSystem/J2DGraph/J2DPicture.cpp +++ b/src/JSystem/J2DGraph/J2DPicture.cpp @@ -10,250 +10,8 @@ #include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JUtility/JUTResource.h" #include "JSystem/JSupport/JSURandomInputStream.h" -#include "dol2asm.h" #include "dolphin/gx.h" -// -// Forward References: -// - -extern "C" void __ct__10J2DPictureFv(); -extern "C" void __ct__10J2DPictureFP7J2DPaneP20JSURandomInputStreamP10JKRArchive(); -extern "C" void __ct__10J2DPictureFP7J2DPaneP20JSURandomInputStreamP11J2DMaterial(); -extern "C" void __ct__10J2DPictureFPC7ResTIMG(); -extern "C" void func_802FC800(); -extern "C" void private_readStream__10J2DPictureFP7J2DPaneP20JSURandomInputStreamP10JKRArchive(); -extern "C" void initiate__10J2DPictureFPC7ResTIMGPC7ResTLUT(); -extern "C" void private_initiate__10J2DPictureFPC7ResTIMGPC7ResTLUT(); -extern "C" void initinfo__10J2DPictureFv(); -extern "C" void __dt__10J2DPictureFv(); -extern "C" void prepareTexture__10J2DPictureFUc(); -extern "C" void insert__10J2DPictureFPC7ResTIMGP10JUTPaletteUcf(); -extern "C" void insert__10J2DPictureFPCcP10JUTPaletteUcf(); -extern "C" void insert__10J2DPictureFP10JUTTextureUcf(); -extern "C" void remove__10J2DPictureFUc(); -extern "C" void remove__10J2DPictureFP10JUTTexture(); -extern "C" void changeTexture__10J2DPictureFPC7ResTIMGUc(); -extern "C" void changeTexture__10J2DPictureFPCcUc(); -extern "C" void changeTexture__10J2DPictureFPC7ResTIMGUcP10JUTPalette(); -extern "C" void changeTexture__10J2DPictureFPCcUcP10JUTPalette(); -extern "C" void drawSelf__10J2DPictureFff(); -extern "C" void drawSelf__10J2DPictureFffPA3_A4_f(); -extern "C" void drawFullSet__10J2DPictureFffffPA3_A4_f(); -extern "C" void draw__10J2DPictureFffffbbb(); -extern "C" void func_802FDF88(); -extern "C" void drawTexCoord__10J2DPictureFffffssssssssPA3_A4_f(); -extern "C" void setTevMode__10J2DPictureFv(); -extern "C" void swap__10J2DPictureFRfRf(); -extern "C" void setBlendColorRatio__10J2DPictureFff(); -extern "C" void setBlendAlphaRatio__10J2DPictureFff(); -extern "C" void setBlendKonstColor__10J2DPictureFv(); -extern "C" void setBlendKonstAlpha__10J2DPictureFv(); -extern "C" void getNewColor__10J2DPictureFPQ28JUtility6TColor(); -extern "C" void setTexCoord__10J2DPictureFPC10JUTTexture10J2DBinding9J2DMirrorb(); -extern "C" void func_802FED84(); -extern "C" void isUsed__10J2DPictureFPC7ResTIMG(); -extern "C" void getUsableTlut__10J2DPictureFUc(); -extern "C" void getTlutID__10J2DPictureFPC7ResTIMGUc(); -extern "C" void func_802FF204(void* _this); -extern "C" void append__10J2DPictureFP10JUTTexturef(); -extern "C" void append__10J2DPictureFPC7ResTIMGP10JUTPalettef(); -extern "C" void load__10J2DPictureFUc(); -extern "C" void load__10J2DPictureF11_GXTexMapIDUc(); -extern "C" s32 getTypeID__10J2DPictureCFv(); -extern "C" void append__10J2DPictureFPCcP10JUTPalettef(); -extern "C" void prepend__10J2DPictureFP10JUTTexturef(); -extern "C" void prepend__10J2DPictureFPCcP10JUTPalettef(); -extern "C" void prepend__10J2DPictureFPCcf(); -extern "C" void prepend__10J2DPictureFPC7ResTIMGP10JUTPalettef(); -extern "C" void prepend__10J2DPictureFPC7ResTIMGf(); -extern "C" void remove__10J2DPictureFv(); -extern "C" void draw__10J2DPictureFffUcbbb(); -extern "C" void draw__10J2DPictureFffbbb(); -extern "C" void drawOut__10J2DPictureFffffffff(); -extern "C" void drawOut__10J2DPictureFffffff(); -extern "C" void getTextureCount__10J2DPictureCFv(); -extern "C" void isUsed__10J2DPictureFPC7ResFONT(); -extern "C" void rewriteAlpha__10J2DPictureFv(); - -// -// External References: -// - -extern "C" void setAlpha__7J2DPaneFUc(); -extern "C" void setBlendRatio__10J2DPictureFff(); -extern "C" void append__10J2DPictureFPCcf(); -extern "C" void insert__10J2DPictureFPCcUcf(); -extern "C" void getTexture__10J2DPictureCFUc(); -extern "C" void calcMtx__7J2DPaneFv(); -extern "C" void makeMatrix__7J2DPaneFff(); -extern "C" void setWhite__10J2DPictureFQ28JUtility6TColor(); -extern "C" void setBlack__10J2DPictureFQ28JUtility6TColor(); -extern "C" void setAnimation__7J2DPaneFP15J2DAnmTevRegKey(); -extern "C" void setAnimation__7J2DPaneFP11J2DAnmColor(); -extern "C" void setBlackWhite__10J2DPictureFQ28JUtility6TColorQ28JUtility6TColor(); -extern "C" void setAnimation__7J2DPaneFP19J2DAnmTextureSRTKey(); -extern "C" void __ct__Q28JUtility6TColorFv(); -extern "C" void append__10J2DPictureFPC7ResTIMGf(); -extern "C" void insert__10J2DPictureFPC7ResTIMGUcf(); -extern "C" void getWhite__10J2DPictureCFv(); -extern "C" void getBlack__10J2DPictureCFv(); -extern "C" void setAnimation__7J2DPaneFP14J2DAnmVtxColor(); -extern "C" void setAnimation__7J2DPaneFP20J2DAnmVisibilityFull(); -extern "C" void setAnimation__7J2DPaneFP16J2DAnmTexPattern(); -extern "C" bool getMaterial__10J2DPictureCFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void read__14JSUInputStreamFPvl(); -extern "C" void peek__20JSURandomInputStreamFPvl(); -extern "C" void seek__20JSURandomInputStreamFl17JSUStreamSeekFrom(); -extern "C" void __dt__10JUTTextureFv(); -extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGUc(); -extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette(); -extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette7_GXTlut(); -extern "C" void attachPalette__10JUTTextureFP10JUTPalette(); -extern "C" void load__10JUTTextureF11_GXTexMapID(); -extern "C" void storeTLUT__10JUTPaletteF7_GXTlutP7ResTLUT(); -extern "C" void __ct__7J2DPaneFv(); -extern "C" void func_802F5E88(); -extern "C" void makePaneStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream(); -extern "C" void __dt__7J2DPaneFv(); -extern "C" void func_802F6D18(); -extern "C" void move__7J2DPaneFff(); -extern "C" void add__7J2DPaneFff(); -extern "C" void resize__7J2DPaneFff(); -extern "C" void search__7J2DPaneFUx(); -extern "C" void searchUserInfo__7J2DPaneFUx(); -extern "C" void isUsed__7J2DPaneFPC7ResTIMG(); -extern "C" void isUsed__7J2DPaneFPC7ResFONT(); -extern "C" void makeMatrix__7J2DPaneFffff(); -extern "C" void setCullBack__7J2DPaneF11_GXCullMode(); -extern "C" void makePaneExStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream(); -extern "C" void J2DCast_F32_to_S16__7J2DPaneFfUc(); -extern "C" void getPointer__7J2DPaneFP20JSURandomInputStreamUlP10JKRArchive(); -extern "C" void setAnimation__7J2DPaneFP10J2DAnmBase(); -extern "C" void setAnimation__7J2DPaneFP15J2DAnmTransform(); -extern "C" void clearAnmTransform__7J2DPaneFv(); -extern "C" void animationTransform__7J2DPaneFPC15J2DAnmTransform(); -extern "C" void setVisibileAnimation__7J2DPaneFP20J2DAnmVisibilityFull(); -extern "C" void setVtxColorAnimation__7J2DPaneFP14J2DAnmVtxColor(); -extern "C" void animationPane__7J2DPaneFPC15J2DAnmTransform(); -extern "C" void setAnimationVF__7J2DPaneFP20J2DAnmVisibilityFull(); -extern "C" void setAnimationVC__7J2DPaneFP14J2DAnmVtxColor(); -extern "C" void setCullBack__7J2DPaneFb(); -extern "C" void setConnectParent__7J2DPaneFb(); -extern "C" void update__7J2DPaneFv(); -extern "C" void getNameResource__9J2DScreenFPCc(); -extern "C" void __construct_array(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803CD1D8-803CD328 02A2F8 014C+04 6/6 0/0 0/0 .data __vt__10J2DPicture */ -SECTION_DATA extern void* __vt__10J2DPicture[83 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10J2DPictureFv, - (void*)getTypeID__10J2DPictureCFv, - (void*)move__7J2DPaneFff, - (void*)add__7J2DPaneFff, - (void*)resize__7J2DPaneFff, - (void*)setCullBack__7J2DPaneFb, - (void*)setCullBack__7J2DPaneF11_GXCullMode, - (void*)setAlpha__7J2DPaneFUc, - (void*)setConnectParent__7J2DPaneFb, - (void*)calcMtx__7J2DPaneFv, - (void*)update__7J2DPaneFv, - (void*)drawSelf__10J2DPictureFff, - (void*)drawSelf__10J2DPictureFffPA3_A4_f, - (void*)search__7J2DPaneFUx, - (void*)searchUserInfo__7J2DPaneFUx, - (void*)makeMatrix__7J2DPaneFff, - (void*)makeMatrix__7J2DPaneFffff, - (void*)isUsed__10J2DPictureFPC7ResTIMG, - (void*)isUsed__10J2DPictureFPC7ResFONT, - (void*)clearAnmTransform__7J2DPaneFv, - (void*)rewriteAlpha__10J2DPictureFv, - (void*)setAnimation__7J2DPaneFP10J2DAnmBase, - (void*)setAnimation__7J2DPaneFP15J2DAnmTransform, - (void*)setAnimation__7J2DPaneFP11J2DAnmColor, - (void*)setAnimation__7J2DPaneFP16J2DAnmTexPattern, - (void*)setAnimation__7J2DPaneFP19J2DAnmTextureSRTKey, - (void*)setAnimation__7J2DPaneFP15J2DAnmTevRegKey, - (void*)setAnimation__7J2DPaneFP20J2DAnmVisibilityFull, - (void*)setAnimation__7J2DPaneFP14J2DAnmVtxColor, - (void*)animationTransform__7J2DPaneFPC15J2DAnmTransform, - (void*)setVisibileAnimation__7J2DPaneFP20J2DAnmVisibilityFull, - (void*)setAnimationVF__7J2DPaneFP20J2DAnmVisibilityFull, - (void*)setVtxColorAnimation__7J2DPaneFP14J2DAnmVtxColor, - (void*)setAnimationVC__7J2DPaneFP14J2DAnmVtxColor, - (void*)animationPane__7J2DPaneFPC15J2DAnmTransform, - (void*)initiate__10J2DPictureFPC7ResTIMGPC7ResTLUT, - (void*)prepareTexture__10J2DPictureFUc, - (void*)append__10J2DPictureFPC7ResTIMGf, - (void*)append__10J2DPictureFPC7ResTIMGP10JUTPalettef, - (void*)append__10J2DPictureFPCcf, - (void*)append__10J2DPictureFPCcP10JUTPalettef, - (void*)append__10J2DPictureFP10JUTTexturef, - (void*)prepend__10J2DPictureFPC7ResTIMGf, - (void*)prepend__10J2DPictureFPC7ResTIMGP10JUTPalettef, - (void*)prepend__10J2DPictureFPCcf, - (void*)prepend__10J2DPictureFPCcP10JUTPalettef, - (void*)prepend__10J2DPictureFP10JUTTexturef, - (void*)insert__10J2DPictureFPC7ResTIMGUcf, - (void*)insert__10J2DPictureFPC7ResTIMGP10JUTPaletteUcf, - (void*)insert__10J2DPictureFPCcUcf, - (void*)insert__10J2DPictureFPCcP10JUTPaletteUcf, - (void*)insert__10J2DPictureFP10JUTTextureUcf, - (void*)remove__10J2DPictureFUc, - (void*)remove__10J2DPictureFv, - (void*)remove__10J2DPictureFP10JUTTexture, - (void*)draw__10J2DPictureFffbbb, - (void*)draw__10J2DPictureFffUcbbb, - (void*)draw__10J2DPictureFffffbbb, - (void*)drawOut__10J2DPictureFffffff, - (void*)drawOut__10J2DPictureFffffffff, - (void*)func_802FDF88, - (void*)load__10J2DPictureF11_GXTexMapIDUc, - (void*)load__10J2DPictureFUc, - (void*)setBlendRatio__10J2DPictureFff, - (void*)setBlendColorRatio__10J2DPictureFff, - (void*)setBlendAlphaRatio__10J2DPictureFff, - (void*)changeTexture__10J2DPictureFPC7ResTIMGUc, - (void*)changeTexture__10J2DPictureFPCcUc, - (void*)changeTexture__10J2DPictureFPC7ResTIMGUcP10JUTPalette, - (void*)changeTexture__10J2DPictureFPCcUcP10JUTPalette, - (void*)getTexture__10J2DPictureCFUc, - (void*)getTextureCount__10J2DPictureCFv, - (void*)setBlack__10J2DPictureFQ28JUtility6TColor, - (void*)setWhite__10J2DPictureFQ28JUtility6TColor, - (void*)setBlackWhite__10J2DPictureFQ28JUtility6TColorQ28JUtility6TColor, - (void*)getBlack__10J2DPictureCFv, - (void*)getWhite__10J2DPictureCFv, - (void*)getMaterial__10J2DPictureCFv, - (void*)drawFullSet__10J2DPictureFffffPA3_A4_f, - (void*)drawTexCoord__10J2DPictureFffffssssssssPA3_A4_f, - (void*)getUsableTlut__10J2DPictureFUc, - /* padding */ - NULL, -}; - /* 802FC050-802FC118 2F6990 00C8+00 0/0 2/2 0/0 .text __ct__10J2DPictureFv */ J2DPicture::J2DPicture() : mPalette(NULL) { for (int i = 0; i < 2; i++) { @@ -273,11 +31,6 @@ J2DPicture::J2DPicture(J2DPane* p_pane, JSURandomInputStream* p_stream, JKRArchi private_readStream(p_pane, p_stream, p_archive); } - -/* ############################################################################################## */ -/* 80456260-80456268 004860 0008+00 1/1 0/0 0/0 .sdata2 @1739 */ -SECTION_SDATA2 static f64 lit_1739 = 4503599627370496.0 /* cast u32 to float */; - /* 802FC1D4-802FC708 2F6B14 0534+00 0/0 1/1 0/0 .text * __ct__10J2DPictureFP7J2DPaneP20JSURandomInputStreamP11J2DMaterial */ J2DPicture::J2DPicture(J2DPane* p_pane, JSURandomInputStream* p_stream, J2DMaterial* p_material) @@ -381,11 +134,6 @@ J2DPicture::J2DPicture(J2DPane* p_pane, JSURandomInputStream* p_stream, J2DMater setBlendAlphaRatio(alpha.a, alpha.b); } - -/* ############################################################################################## */ -/* 80456268-8045626C 004868 0004+00 9/9 0/0 0/0 .sdata2 @1767 */ -SECTION_SDATA2 static f32 lit_1767 = 1.0f; - /* 802FC708-802FC800 2F7048 00F8+00 0/0 20/20 1/1 .text __ct__10J2DPictureFPC7ResTIMG */ J2DPicture::J2DPicture(ResTIMG const* p_timg) { for (int i = 0; i < 2; i++) { @@ -419,7 +167,6 @@ J2DPicture::J2DPicture(u64 tag, JGeometry::TBox2<f32> const& bounds, ResTIMG con initinfo(); } - /* 802FC8E8-802FCCDC 2F7228 03F4+00 1/1 0/0 0/0 .text * private_readStream__10J2DPictureFP7J2DPaneP20JSURandomInputStreamP10JKRArchive */ void J2DPicture::private_readStream(J2DPane* parent, JSURandomInputStream* stream, @@ -496,19 +243,6 @@ void J2DPicture::private_readStream(J2DPane* parent, JSURandomInputStream* strea setBlendRatio(1.0f, 1.0f); } - -/* ############################################################################################## */ -/* 8045626C-80456270 00486C 0004+00 9/9 0/0 0/0 .sdata2 @2017 */ -SECTION_SDATA2 static u8 lit_2017[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80456270-80456278 004870 0008+00 7/7 0/0 0/0 .sdata2 @2021 */ -SECTION_SDATA2 static f64 lit_2021 = 4503601774854144.0 /* cast s32 to float */; - /* 802FCCDC-802FCD70 2F761C 0094+00 1/0 0/0 0/0 .text initiate__10J2DPictureFPC7ResTIMGPC7ResTLUT */ void J2DPicture::initiate(const ResTIMG* img, const ResTLUT* lut) { @@ -520,7 +254,6 @@ void J2DPicture::initiate(const ResTIMG* img, const ResTLUT* lut) { place(JGeometry::TBox2<f32>(0.0f, 0.0f, mTexture[0]->getWidth(), mTexture[0]->getHeight())); } - /* 802FCD70-802FCE9C 2F76B0 012C+00 2/2 0/0 0/0 .text * private_initiate__10J2DPictureFPC7ResTIMGPC7ResTLUT */ void J2DPicture::private_initiate(const ResTIMG* timg, const ResTLUT* tlut) { @@ -555,7 +288,7 @@ void J2DPicture::private_initiate(const ResTIMG* timg, const ResTLUT* tlut) { void J2DPicture::initinfo() { mKind = 'PIC1'; setTexCoord(NULL, BIND15, MIRROR0, false); - setBlendRatio(lit_1767, lit_1767); + setBlendRatio(1.0f, 1.0f); mBlack = 0; mWhite = -1; @@ -782,6 +515,11 @@ const ResTIMG* J2DPicture::changeTexture(char const* resName, u8 param_1) { return changeTexture((ResTIMG*)resource, param_1); } +static bool dummy_weak_order(JUTTexture* tex) { + J2DPicture* picture; + return picture->append(tex, 1.0f); +} + /* 802FD9BC-802FDAC8 2F82FC 010C+00 1/0 0/0 0/0 .text * changeTexture__10J2DPictureFPC7ResTIMGUcP10JUTPalette */ const ResTIMG* J2DPicture::changeTexture(ResTIMG const* img, u8 texIndex, JUTPalette* palette) { @@ -1125,10 +863,6 @@ void J2DPicture::setBlendAlphaRatio(f32 param_0, f32 param_1) { setBlendKonstAlpha(); } -/* ############################################################################################## */ -/* 80456278-8045627C 004878 0004+00 2/2 0/0 0/0 .sdata2 @2758 */ -SECTION_SDATA2 static f32 lit_2758 = 255.0f; - /* 802FEAC4-802FEB94 2F9404 00D0+00 4/4 0/0 0/0 .text setBlendKonstColor__10J2DPictureFv */ void J2DPicture::setBlendKonstColor() { @@ -1148,7 +882,6 @@ void J2DPicture::setBlendKonstColor() { mBlendKonstColor = uvar3; } - /* 802FEB94-802FEC64 2F94D4 00D0+00 4/4 0/0 0/0 .text setBlendKonstAlpha__10J2DPictureFv */ void J2DPicture::setBlendKonstAlpha() { @@ -1168,7 +901,6 @@ void J2DPicture::setBlendKonstAlpha() { mBlendKonstAlpha = uvar3; } - /* 802FEC64-802FED44 2F95A4 00E0+00 3/3 0/0 0/0 .text * getNewColor__10J2DPictureFPQ28JUtility6TColor */ void J2DPicture::getNewColor(JUtility::TColor* param_0) { @@ -1192,10 +924,6 @@ void J2DPicture::setTexCoord(JUTTexture const* param_0, J2DBinding param_1, J2DM setTexCoord(&field_0x10a[0], param_0, param_1, param_2, param_3); } -/* ############################################################################################## */ -/* 8045627C-80456280 00487C 0004+00 1/1 0/0 0/0 .sdata2 @2933 */ -SECTION_SDATA2 static f32 lit_2933 = 0.5f; - /* 802FED84-802FF09C 2F96C4 0318+00 2/2 0/0 0/0 .text * setTexCoord__10J2DPictureFPQ29JGeometry8TVec2<s>PC10JUTTexture10J2DBinding9J2DMirrorb */ void J2DPicture::setTexCoord(JGeometry::TVec2<s16>* param_0, JUTTexture const* param_1, @@ -1362,123 +1090,3 @@ GXTlut J2DPicture::getTlutID(ResTIMG const* img, u8 param_1) { return (GXTlut)param_1; } - -/* 802FF204-802FF208 2F9B44 0004+00 5/5 1/1 0/0 .text __ct__Q29JGeometry8TVec2<s>Fv */ -extern "C" void func_802FF204(void* _this) { - /* empty function */ -} - -/* 802FF208-802FF238 2F9B48 0030+00 1/0 0/0 0/0 .text append__10J2DPictureFP10JUTTexturef - */ -bool J2DPicture::append(JUTTexture* param_0, f32 param_1) { - return insert(param_0, mTextureNum, param_1); -} - -/* 802FF238-802FF268 2F9B78 0030+00 1/0 0/0 0/0 .text - * append__10J2DPictureFPC7ResTIMGP10JUTPalettef */ -bool J2DPicture::append(ResTIMG const* param_0, JUTPalette* param_1, f32 param_2) { - return insert(param_0, param_1, mTextureNum, param_2); -} - -/* 802FF268-802FF29C 2F9BA8 0034+00 1/0 0/0 0/0 .text load__10J2DPictureFUc */ -void J2DPicture::load(u8 param_0) { - load((_GXTexMapID)param_0, param_0); -} - -/* 802FF29C-802FF2E8 2F9BDC 004C+00 1/0 0/0 0/0 .text load__10J2DPictureF11_GXTexMapIDUc - */ -void J2DPicture::load(_GXTexMapID param_0, u8 param_1) { - if (param_1 < mTextureNum && param_1 < 2 && mTexture[param_1] != NULL) { - mTexture[param_1]->load(param_0); - } -} - -/* 802FF2E8-802FF2F0 2F9C28 0008+00 1/0 1/0 0/0 .text getTypeID__10J2DPictureCFv */ -u16 J2DPicture::getTypeID() const { - return 18; -} - -/* 802FF2F0-802FF320 2F9C30 0030+00 1/0 0/0 0/0 .text append__10J2DPictureFPCcP10JUTPalettef */ -bool J2DPicture::append(char const* param_0, JUTPalette* param_1, f32 param_2) { - return insert(param_0, param_1, mTextureNum, param_2); -} - -/* 802FF320-802FF350 2F9C60 0030+00 1/0 0/0 0/0 .text prepend__10J2DPictureFP10JUTTexturef */ -void J2DPicture::prepend(JUTTexture* param_0, f32 param_1) { - insert(param_0, 0, param_1); -} - -/* 802FF350-802FF380 2F9C90 0030+00 1/0 0/0 0/0 .text prepend__10J2DPictureFPCcP10JUTPalettef */ -void J2DPicture::prepend(char const* param_0, JUTPalette* param_1, f32 param_2) { - insert(param_0, param_1, 0, param_2); -} - -/* 802FF380-802FF3B0 2F9CC0 0030+00 1/0 0/0 0/0 .text prepend__10J2DPictureFPCcf */ -void J2DPicture::prepend(char const* param_0, f32 param_1) { - insert(param_0, 0, param_1); -} - -/* 802FF3B0-802FF3E0 2F9CF0 0030+00 1/0 0/0 0/0 .text - * prepend__10J2DPictureFPC7ResTIMGP10JUTPalettef */ -void J2DPicture::prepend(ResTIMG const* param_0, JUTPalette* param_1, f32 param_2) { - insert(param_0, param_1, 0, param_2); -} - -/* 802FF3E0-802FF410 2F9D20 0030+00 1/0 0/0 0/0 .text prepend__10J2DPictureFPC7ResTIMGf - */ -void J2DPicture::prepend(ResTIMG const* param_0, f32 param_1) { - insert(param_0, 0, param_1); -} - -/* 802FF410-802FF448 2F9D50 0038+00 1/0 0/0 0/0 .text remove__10J2DPictureFv */ -bool J2DPicture::remove() { - return remove(mTextureNum - 1); -} - -/* 802FF448-802FF4E0 2F9D88 0098+00 1/0 0/0 0/0 .text draw__10J2DPictureFffUcbbb */ -void J2DPicture::draw(f32 param_0, f32 param_1, u8 param_2, bool param_3, bool param_4, - bool param_5) { - if (param_2 < mTextureNum && mTexture[param_2] != NULL) { - draw(param_0, param_1, mTexture[param_2]->getWidth(), mTexture[param_2]->getHeight(), - param_3, param_4, param_5); - } -} - - -/* 802FF4E0-802FF524 2F9E20 0044+00 1/0 0/0 0/0 .text draw__10J2DPictureFffbbb */ -void J2DPicture::draw(f32 param_0, f32 param_1, bool param_2, bool param_3, bool param_4) { - draw(param_0, param_1, 0, param_2, param_3, param_4); -} - -/* 802FF524-802FF588 2F9E64 0064+00 1/0 0/0 0/0 .text drawOut__10J2DPictureFffffffff */ -void J2DPicture::drawOut(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5, f32 param_6, f32 param_7) { - drawOut(JGeometry::TBox2<f32>(param_0, param_1, param_0 + param_2, param_1 + param_3), - JGeometry::TBox2<f32>(param_4, param_5, param_4 + param_6, param_5 + param_7)); -} - -/* 802FF588-802FF634 2F9EC8 00AC+00 1/0 0/0 0/0 .text drawOut__10J2DPictureFffffff */ -void J2DPicture::drawOut(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5) { - if (mTexture[0] != NULL) { - drawOut(JGeometry::TBox2<f32>(param_0, param_1, param_0 + param_2, param_1 + param_3), - JGeometry::TBox2<f32>(param_4, param_5, param_4 + mTexture[0]->getWidth(), - param_5 + mTexture[0]->getHeight())); - } -} - - -/* 802FF634-802FF63C 2F9F74 0008+00 1/0 0/0 0/0 .text getTextureCount__10J2DPictureCFv */ -u8 J2DPicture::getTextureCount() const { - return mTextureNum; -} - -/* 802FF63C-802FF65C 2F9F7C 0020+00 1/0 0/0 0/0 .text isUsed__10J2DPictureFPC7ResFONT */ -bool J2DPicture::isUsed(ResFONT const* param_0) { - return J2DPane::isUsed(param_0); -} - -/* 802FF65C-802FF660 2F9F9C 0004+00 1/0 0/0 0/0 .text rewriteAlpha__10J2DPictureFv */ -void J2DPicture::rewriteAlpha() { - /* empty function */ -} diff --git a/src/JSystem/J2DGraph/J2DPictureEx.cpp b/src/JSystem/J2DGraph/J2DPictureEx.cpp index 4cddb568a7..87a4af54ee 100644 --- a/src/JSystem/J2DGraph/J2DPictureEx.cpp +++ b/src/JSystem/J2DGraph/J2DPictureEx.cpp @@ -226,12 +226,56 @@ bool J2DPictureEx::insert(JUTTexture* param_0, u8 param_1, f32 param_2) { } /* 803040E4-8030437C 2FEA24 0298+00 2/2 0/0 0/0 .text insertCommon__12J2DPictureExFUcf */ -void J2DPictureEx::insertCommon(u8 param_0, f32 param_1) { - // NONMATCHING +void J2DPictureEx::insertCommon(u8 pos, f32 param_1) { + u8 new_tev_stage_num; + u8 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + mMaterial->getTevBlock()->getMaxStage(); + int tev_stage_num = mMaterial->getTevBlock()->getTevStageNum(); + bool bVar1; + if (tex_gen_num <= 1) { + bVar1 = tev_stage_num != 1; + } else { + bVar1 = tev_stage_num != tex_gen_num + 1; + } + + shiftSetBlendRatio(pos, param_1, true, true); + shiftSetBlendRatio(pos, param_1, false, true); + + tex_gen_num++; + mMaterial->getTexGenBlock()->setTexGenNum(tex_gen_num); + + J2DTexCoordInfo tex_coord_info; + tex_coord_info.mTexGenType = GX_TG_MTX2x4; + tex_coord_info.mTexGenSrc = GX_TG_TEX0; + for (int i = tex_gen_num - 1; i >= pos; i--) { + tex_coord_info.mTexGenMtx = i * 3 + 30; + J2DTexCoord tex_coord(tex_coord_info); + mMaterial->getTexGenBlock()->setTexCoord((u8)i, tex_coord); + } + + for (int i = tex_gen_num - 1; i > pos; i--) { + mMaterial->getTexGenBlock()->setTexMtx((u8)i, mMaterial->getTexGenBlock()->getTexMtx((u8)(i - 1))); + } + + J2DTexMtx tex_mtx; + mMaterial->getTexGenBlock()->setTexMtx(pos, tex_mtx); + + if (tex_gen_num == 1) { + new_tev_stage_num = 1; + } else { + new_tev_stage_num = tex_gen_num + (bVar1 ? 2 : 1); + } + mMaterial->getTevBlock()->setTevStageNum(new_tev_stage_num); + + setTevOrder(tex_gen_num, new_tev_stage_num, bVar1); + setTevStage(tex_gen_num, new_tev_stage_num, bVar1); + setTevKColor(tex_gen_num); + setTevKColorSel(tex_gen_num); + setTevKAlphaSel(tex_gen_num); } /* 8030437C-8030446C 2FECBC 00F0+00 2/2 0/0 0/0 .text isInsert__12J2DPictureExCFUc */ -bool J2DPictureEx::isInsert(u8 param_0) const { +bool J2DPictureEx::isInsert(u8 pos) const { if (mMaterial == NULL) { return false; } @@ -240,7 +284,7 @@ bool J2DPictureEx::isInsert(u8 param_0) const { } u8 texGenNum = mMaterial->getTexGenBlock()->getTexGenNum(); - if (texGenNum >= 8 || param_0 >= 8 || param_0 > texGenNum) { + if (texGenNum >= 8 || pos >= 8 || pos > texGenNum) { return false; } u8 bVar5 = mMaterial->getTevBlock()->getMaxStage(); @@ -256,8 +300,36 @@ bool J2DPictureEx::isInsert(u8 param_0) const { } /* 8030446C-80304608 2FEDAC 019C+00 1/0 0/0 0/0 .text remove__12J2DPictureExFUc */ -bool J2DPictureEx::remove(u8 param_0) { - // NONMATCHING +// NONMATCHING regalloc +bool J2DPictureEx::remove(u8 pos) { + if (!isRemove(pos)) { + return false; + } + + u8 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + u8 tev_stage_num = mMaterial->getTevBlock()->getTevStageNum(); + bool bVar1 = tev_stage_num != tex_gen_num + 1; + + shiftSetBlendRatio(pos, 0.0f, true, false); + shiftSetBlendRatio(pos, 0.0f, false, false); + + tex_gen_num--; + mMaterial->getTexGenBlock()->setTexGenNum(tex_gen_num); + mMaterial->getTevBlock()->removeTexture(pos); + + if (tex_gen_num != 1) { + tev_stage_num = tex_gen_num + (bVar1 ? 2 : 1); + } else { + tev_stage_num = bVar1 ? 2 : 1; + } + mMaterial->getTevBlock()->setTevStageNum(tev_stage_num); + + setTevOrder(tex_gen_num, tev_stage_num, bVar1); + setTevStage(tex_gen_num, tev_stage_num, bVar1); + setTevKColor(tex_gen_num); + setTevKColorSel(tex_gen_num); + setTevKAlphaSel(tex_gen_num); + return true; } /* 80304608-8030466C 2FEF48 0064+00 1/0 0/0 0/0 .text remove__12J2DPictureExFv */ @@ -311,28 +383,232 @@ bool J2DPictureEx::isRemove(u8 param_0) const { } /* 8030477C-80304890 2FF0BC 0114+00 1/0 0/0 0/0 .text draw__12J2DPictureExFffUcbbb */ -void J2DPictureEx::draw(f32 param_0, f32 param_1, u8 param_2, bool param_3, bool param_4, - bool param_5) { - // NONMATCHING +void J2DPictureEx::draw(f32 param_0, f32 param_1, u8 texNo, bool param_3, bool param_4, + bool param_5) { + if (mMaterial == NULL) { + return; + } + + if (mMaterial->getTevBlock() == NULL) { + return; + } + + if (!isVisible()) { + return; + } + + if (texNo >= mMaterial->getTexGenBlock()->getTexGenNum()) { + return; + } + + JUTTexture* texture = mMaterial->getTevBlock()->getTexture(texNo); + if (texture != NULL) { + draw(param_0, param_1, texture->getWidth(), texture->getHeight(), + param_3, param_4, param_5); + } } /* 80304890-80304D88 2FF1D0 04F8+00 1/0 0/0 0/0 .text draw__12J2DPictureExFffffbbb */ -void J2DPictureEx::draw(f32 param_0, f32 param_1, f32 param_2, f32 param_3, bool param_4, - bool param_5, bool param_6) { - // NONMATCHING +void J2DPictureEx::draw(f32 param_0, f32 param_1, f32 width, f32 height, bool param_4, + bool param_5, bool param_6) { + if (!isVisible()) { + return; + } + + if (mMaterial == NULL) { + return; + } + + if (mMaterial->getTevBlock() == NULL) { + return; + } + + if (mMaterial->getTexGenBlock()->getTexGenNum() == 0) { + return; + } + + mMaterial->setGX(); + makeMatrix(param_0, param_1, 0.0f, 0.0f); + GXLoadPosMtxImm(mPositionMtx, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + + if (!mMaterial->isVisible()) { + return; + } + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + + mColorAlpha = mAlpha; + + JUtility::TColor corner_color[4]; + for (int i = 0; i < 4; i++) { + corner_color[i] = mCornerColor[i]; + } + + if (mMaterial->getMaterialAlphaCalc() == 1) { + for (int i = 0; i < 4; i++) { + corner_color[i].a = (mColorAlpha * corner_color[i].a) / 0xff; + } + } + + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + + GXPosition3f32(0.0f, 0.0f, 0.0f); + GXColor1u32(corner_color[0]); + if (!param_6) { + GXTexCoord2u16(param_4 ? 0x8000 : 0, param_5 ? 0x8000 : 0); + } else { + GXTexCoord2u16(param_4 ? 0x8000 : 0, param_5 ? 0 : 0x8000); + } + + GXPosition3f32(width, 0.0f, 0.0f); + GXColor1u32(corner_color[1]); + if (!param_6) { + GXTexCoord2u16(param_4 ? 0 : 0x8000, param_5 ? 0x8000 : 0); + } else { + GXTexCoord2u16(param_4 ? 0x8000 : 0, param_5 ? 0x8000 : 0); + } + + GXPosition3f32(width, height, 0.0f); + GXColor1u32(corner_color[3]); + if (!param_6) { + GXTexCoord2u16(param_4 ? 0 : 0x8000, param_5 ? 0 : 0x8000); + } else { + GXTexCoord2u16(param_4 ? 0 : 0x8000, param_5 ? 0x8000 : 0); + } + + GXPosition3f32(0.0f, height, 0.0f); + GXColor1u32(corner_color[2]); + if (!param_6) { + GXTexCoord2u16(param_4 ? 0x8000 : 0, param_5 ? 0 : 0x8000); + } else { + GXTexCoord2u16(param_4 ? 0 : 0x8000, param_5 ? 0 : 0x8000); + } + + GXEnd(); + + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + for (int i = 0; i < 4; i++) { + GXSetTevSwapModeTable((GXTevSwapSel)i, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + } + GXSetNumIndStages(0); + for (int i = 0; i < 16; i++) { + GXSetTevDirect((GXTevStageID)i); + } + Mtx mtx; + MTXIdentity(mtx); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + GXSetVtxDesc(GX_VA_TEX0, GX_NONE); } /* 80304D88-80304EF0 2FF6C8 0168+00 1/0 0/0 0/0 .text drawOut__12J2DPictureExFffffff */ +// NONMATCHING stack ordering void J2DPictureEx::drawOut(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5) { - // NONMATCHING + f32 param_5) { + if (mMaterial == NULL) { + return; + } + + if (mMaterial->getTevBlock() == NULL) { + return; + } + + if (!isVisible()) { + return; + } + + JUTTexture* texture = mMaterial->getTevBlock()->getTexture(0); + if (texture != NULL) { + JGeometry::TBox2<f32> box1(param_4, param_5, param_4 + texture->getWidth(), param_5 + texture->getHeight()); + JGeometry::TBox2<f32> box2(param_0, param_1, param_0 + param_2, param_1 + param_3); + drawOut(box1, box2); + } } /* 80304EF0-80305264 2FF830 0374+00 1/0 0/0 0/0 .text * drawOut__12J2DPictureExFRCQ29JGeometry8TBox2<f>RCQ29JGeometry8TBox2<f> */ void J2DPictureEx::drawOut(JGeometry::TBox2<f32> const& param_0, - JGeometry::TBox2<f32> const& param_1) { - // NONMATCHING + JGeometry::TBox2<f32> const& param_1) { + if (mMaterial == NULL) { + return; + } + + if (mMaterial->getTevBlock() == NULL) { + return; + } + + if (!isVisible()) { + return; + } + + mMaterial->setGX(); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + + if (!mMaterial->isVisible()) { + return; + } + + mColorAlpha = mAlpha; + JUtility::TColor corner_color[4]; + for (int i = 0; i < 4; i++) { + corner_color[i] = mCornerColor[i]; + } + if (mMaterial->getMaterialAlphaCalc() == 1) { + for (int i = 0; i < 4; i++) { + corner_color[i].a = (mColorAlpha * corner_color[i].a) / 0xff; + } + } + + f32 x1 = (param_0.i.x - param_1.i.x) / param_1.getWidth(); + f32 x2 = (param_0.f.x - param_1.f.x) / param_1.getWidth() + 1.0f; + f32 y1 = (param_0.i.y - param_1.i.y) / param_1.getHeight(); + f32 y2 = (param_0.f.y - param_1.f.y) / param_1.getHeight() + 1.0f; + + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + + GXPosition3f32(param_0.i.x, param_0.i.y, 0.0f); + GXColor1u32(corner_color[0]); + GXTexCoord2f32(x1, y1); + GXPosition3f32(param_0.f.x, param_0.i.y, 0.0f); + GXColor1u32(corner_color[1]); + GXTexCoord2f32(x2, y1); + GXPosition3f32(param_0.f.x, param_0.f.y, 0.0f); + GXColor1u32(corner_color[3]); + GXTexCoord2f32(x2, y2); + GXPosition3f32(param_0.i.x, param_0.f.y, 0.0f); + GXColor1u32(corner_color[2]); + GXTexCoord2f32(x1, y2); + + GXEnd(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 15); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + for (int i = 0; i < 4; i++) { + GXSetTevSwapModeTable((GXTevSwapSel)i, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + } + GXSetNumIndStages(0); + for (int i = 0; i < 16; i++) { + GXSetTevDirect((GXTevStageID)i); + } + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + GXSetVtxDesc(GX_VA_TEX0, GX_NONE); } /* 80305264-803052AC 2FFBA4 0048+00 1/0 0/0 0/0 .text load__12J2DPictureExF11_GXTexMapIDUc */ @@ -351,32 +627,171 @@ void J2DPictureEx::load(_GXTexMapID param_0, u8 param_1) { /* 803052AC-803053E0 2FFBEC 0134+00 3/3 0/0 0/0 .text setTevOrder__12J2DPictureExFUcUcb */ void J2DPictureEx::setTevOrder(u8 param_0, u8 param_1, bool param_2) { - // NONMATCHING + u16 local_30[16]; + if (param_0 == 1) { + if (!param_2) { + local_30[0] = 4; + } else { + local_30[0] = 0xff; + local_30[1] = 0xff04; + } + } else { + for (u8 i = 0; i < param_0; i++) { + local_30[i] = (i << 8) | 0xff; + } + if (!param_2) { + local_30[param_0] = 0xff04; + } else { + local_30[param_0] = 0xffff; + local_30[param_0 + 1] = 0xff04; + } + } + + for (u8 i = 0; i < param_1; i++) { + J2DTevOrderInfo info; + info.mTexMap = info.mTexCoord = local_30[i] >> 8; + info.mColor = local_30[i] & 0xff; + J2DTevOrder order(info); + mMaterial->getTevBlock()->setTevOrder(i, order); + } } /* 803053E0-80305688 2FFD20 02A8+00 3/3 0/0 0/0 .text setTevStage__12J2DPictureExFUcUcb */ void J2DPictureEx::setTevStage(u8 param_0, u8 param_1, bool param_2) { - // NONMATCHING + if (param_0 == 1) { + J2DTevStage* stage = mMaterial->getTevBlock()->getTevStage(0); + JUTTexture* texture = mMaterial->getTevBlock()->getTexture(0); + bool bVar1 = false; + if (texture != NULL && texture->getTexInfo() != NULL + && (texture->getFormat() == 0 || texture->getFormat() == 1) + && texture->getTransparency() == 0) + { + bVar1 = true; + } + if (!param_2) { + setStage(stage, bVar1 ? STAGE_1 : STAGE_0); + } else { + setStage(stage, bVar1 ? STAGE_6 : STAGE_5); + stage = mMaterial->getTevBlock()->getTevStage(1); + setStage(stage, STAGE_4); + } + } else if (!param_2) { + J2DTevStage* stage = mMaterial->getTevBlock()->getTevStage(0); + setStage(stage, STAGE_2); + for (u8 i = 1; i < param_0; i++) { + stage = mMaterial->getTevBlock()->getTevStage(i); + setStage(stage, STAGE_3); + } + stage = mMaterial->getTevBlock()->getTevStage(param_0); + setStage(stage, STAGE_4); + } else { + J2DTevStage* stage = mMaterial->getTevBlock()->getTevStage(0); + setStage(stage, STAGE_2); + for (u8 i = 1; i < param_0; i++) { + stage = mMaterial->getTevBlock()->getTevStage(i); + setStage(stage, STAGE_3); + } + stage = mMaterial->getTevBlock()->getTevStage(param_0); + setStage(stage, STAGE_7); + stage = mMaterial->getTevBlock()->getTevStage((u8)(param_0 + 1)); + setStage(stage, STAGE_4); + } } -/* ############################################################################################## */ -/* 803A1D50-803A1D70 02E3B0 0020+00 1/1 0/0 0/0 .rodata @2555 */ -SECTION_RODATA static u8 const lit_2555[32] = { - 0x0F, 0x08, 0x0A, 0x0F, 0x0F, 0x08, 0x0A, 0x0F, 0x0F, 0x08, 0x0E, 0x0F, 0x0F, 0x08, 0x0E, 0x00, - 0x0F, 0x0A, 0x00, 0x0F, 0x02, 0x04, 0x08, 0x0F, 0x02, 0x04, 0x08, 0x0F, 0x02, 0x04, 0x00, 0x0F, -}; -COMPILER_STRIP_GATE(0x803A1D50, &lit_2555); - /* 80305688-80305928 2FFFC8 02A0+00 1/1 0/0 0/0 .text * setStage__12J2DPictureExFP11J2DTevStageQ212J2DPictureEx10stage_enum */ -void J2DPictureEx::setStage(J2DTevStage* param_0, J2DPictureEx::stage_enum param_1) { - // NONMATCHING +void J2DPictureEx::setStage(J2DTevStage* stage, J2DPictureEx::stage_enum idx) { + s8 colorData[8][4] = { + {0x0F, 0x08, 0x0A, 0x0F}, + {0x0F, 0x08, 0x0A, 0x0F}, + {0x0F, 0x08, 0x0E, 0x0F}, + {0x0F, 0x08, 0x0E, 0x00}, + {0x0F, 0x0A, 0x00, 0x0F}, + {0x02, 0x04, 0x08, 0x0F}, + {0x02, 0x04, 0x08, 0x0F}, + {0x02, 0x04, 0x00, 0x0F}, + }; + s8 alphaData[8][4] = { + {0x07, 0x04, 0x05, 0x07}, + {0x05, 0x07, 0x07, 0x07}, + {0x07, 0x04, 0x06, 0x07}, + {0x07, 0x04, 0x06, 0x00}, + {0x07, 0x05, 0x00, 0x07}, + {0x01, 0x02, 0x04, 0x07}, + {0x07, 0x07, 0x07, 0x02}, + {0x01, 0x02, 0x00, 0x07}, + }; + s8 opData[8][5] = { + {0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + stage->setTevColorAB(colorData[idx][0], colorData[idx][1]); + stage->setTevColorCD(colorData[idx][2], colorData[idx][3]); + stage->setTevColorOp(opData[idx][0], opData[idx][1], opData[idx][2], opData[idx][3], opData[idx][4]); + stage->setAlphaABCD(alphaData[idx][0], alphaData[idx][1], alphaData[idx][2], alphaData[idx][3]); + stage->setTevAlphaOp(opData[idx][0], opData[idx][1], opData[idx][2], opData[idx][3], opData[idx][4]); } /* 80305928-80305C70 300268 0348+00 5/5 0/0 0/0 .text setTevKColor__12J2DPictureExFUc */ void J2DPictureEx::setTevKColor(u8 param_0) { - // NONMATCHING + if (param_0 == 1) { + return; + } + + f32 fVar2 = 0.0f; + f32 fVar3 = 0.0f; + + if (param_0 < 2) { + for (u8 i = 0; i < param_0; i++) { + fVar2 += field_0x11c[i]; + fVar3 += field_0x124[i]; + } + } else { + for (u8 i = 0; i < 2; i++) { + fVar2 += field_0x11c[i]; + fVar3 += field_0x124[i]; + } + for (u8 i = 0; i < param_0 - 2; i++) { + fVar2 += field_0x160[i]; + fVar3 += field_0x178[i]; + } + } + + u8 local_3c[8]; + u8 local_44[8]; + + for (u8 i = 0; i < 8; i++) { + local_3c[i] = 0xff; + local_44[i] = 0xff; + } + + for (u8 i = 0; i < param_0; i++) { + if (i < 2) { + local_3c[i] = field_0x11c[i] * 0xff / fVar2; + local_44[i] = field_0x124[i] * 0xff / fVar3; + } else { + local_3c[i] = field_0x160[i - 2] * 0xff / fVar2; + local_44[i] = field_0x178[i - 2] * 0xff / fVar3; + } + } + + JUtility::TColor color[4]; + color[3] = local_3c[3] << 24 | local_3c[2] << 16 | local_3c[1] << 8 | local_3c[0]; + color[2] = local_3c[7] << 24 | local_3c[6] << 16 | local_3c[5] << 8 | local_3c[4]; + color[1] = local_44[3] << 24 | local_44[2] << 16 | local_44[1] << 8 | local_44[0]; + color[0] = local_44[7] << 24 | local_44[6] << 16 | local_44[5] << 8 | local_44[4]; + + for (u8 i = 0; i < 4; i++) { + mMaterial->getTevBlock()->setTevKColor(i, color[i]); + } } /* 80305C70-80305D18 3005B0 00A8+00 3/3 0/0 0/0 .text setTevKColorSel__12J2DPictureExFUc @@ -472,8 +887,35 @@ void J2DPictureEx::setBlendAlphaRatio(f32 param_0, f32 param_1) { /* 80305F94-803060DC 3008D4 0148+00 1/0 0/0 0/0 .text changeTexture__12J2DPictureExFPC7ResTIMGUc */ -const ResTIMG* J2DPictureEx::changeTexture(ResTIMG const* param_0, u8 param_1) { - // NONMATCHING +// NONMATCHING small regalloc +const ResTIMG* J2DPictureEx::changeTexture(ResTIMG const* img, u8 param_1) { + if (mMaterial == NULL || img == NULL) { + return NULL; + } + + u32 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + if (param_1 > tex_gen_num) { + return NULL; + } + + u8 max_stage = mMaterial->getTevBlock()->getMaxStage(); + max_stage = max_stage > 8 ? 8 : max_stage; + if (param_1 >= max_stage) { + return NULL; + } + + if (param_1 < tex_gen_num) { + const ResTIMG* texinfo = getTexture(param_1)->getTexInfo(); + u8 uVar6 = 0; + if (img->indexTexture) { + uVar6 = getUsableTlut(param_1); + } + getTexture(param_1)->storeTIMG(img, uVar6); + return texinfo; + } else { + append(img, 1.0f); + return NULL; + } } /* 803060DC-80306134 300A1C 0058+00 1/0 0/0 0/0 .text changeTexture__12J2DPictureExFPCcUc @@ -485,7 +927,7 @@ const ResTIMG* J2DPictureEx::changeTexture(char const* param_0, u8 param_1) { /* 80306134-80306298 300A74 0164+00 1/0 0/0 0/0 .text * changeTexture__12J2DPictureExFPC7ResTIMGUcP10JUTPalette */ -// Issues with param_1 >= bVar5. Maybe some inline min function. +// NONMATCHING Issues with param_1 >= bVar5. Maybe some inline min function. inline u8 mina(u8 a, u8 b) { return a > b ? b : a; } @@ -620,193 +1062,331 @@ bool J2DPictureEx::setBlackWhite(JUtility::TColor param_0, JUtility::TColor para /* 80306664-80306824 300FA4 01C0+00 4/4 0/0 0/0 .text * getBlackWhite__12J2DPictureExCFPQ28JUtility6TColorPQ28JUtility6TColor */ -bool J2DPictureEx::getBlackWhite(JUtility::TColor* param_0, JUtility::TColor* param_1) const { - // NONMATCHING +// NONMATCHING regswap +bool J2DPictureEx::getBlackWhite(JUtility::TColor* black, JUtility::TColor* white) const { + if (mMaterial == NULL) { + return false; + } + + if (mMaterial->getTevBlock() == NULL) { + return false; + } + + u8 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + u32 tev_stage_num = mMaterial->getTevBlock()->getTevStageNum(); + bool bVar1; + if (tex_gen_num == 1) { + bVar1 = tev_stage_num != 1; + } else { + bVar1 = tev_stage_num != tex_gen_num + 1; + } + + *black = 0x00000000; + *white = 0xffffffff; + + if (bVar1) { + J2DGXColorS10 tevColor0 = *mMaterial->getTevBlock()->getTevColor(0); + J2DGXColorS10 tevColor1 = *mMaterial->getTevBlock()->getTevColor(1); + *black = (u8)tevColor0.r << 24 | (u8)tevColor0.g << 16 | (u8)tevColor0.b << 8 | (u8)tevColor0.a; + *white = (u8)tevColor1.r << 24 | (u8)tevColor1.g << 16 | (u8)tevColor1.b << 8 | (u8)tevColor1.a; + } + + return true; } /* 80306824-803068F8 301164 00D4+00 1/1 0/0 0/0 .text * isSetBlackWhite__12J2DPictureExCFQ28JUtility6TColorQ28JUtility6TColor */ -bool J2DPictureEx::isSetBlackWhite(JUtility::TColor param_0, JUtility::TColor param_1) const { - // NONMATCHING +// NONMATCHING missing clrlwi, regalloc +bool J2DPictureEx::isSetBlackWhite(JUtility::TColor black, JUtility::TColor white) const { + if (black == 0x00000000 && white == 0xffffffff) { + return true; + } + + u8 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + u32 tev_stage_num = mMaterial->getTevBlock()->getTevStageNum(); + u8 max_tev_stage = mMaterial->getTevBlock()->getMaxStage(); + + if (max_tev_stage == 16) { + return true; + } + + if (max_tev_stage == 1) { + return false; + } + + u8 tmp = tex_gen_num == 1 ? 2 : tex_gen_num + 2; + return max_tev_stage <= tmp; } /* 803068F8-80306958 301238 0060+00 1/0 0/0 0/0 .text getBlack__12J2DPictureExCFv */ JUtility::TColor J2DPictureEx::getBlack() const { - // NONMATCHING + JUtility::TColor black, white; + if (!getBlackWhite(&black, &white)) { + return 0x00000000; + } else { + return black; + } } /* 80306958-803069B8 301298 0060+00 1/0 0/0 0/0 .text getWhite__12J2DPictureExCFv */ JUtility::TColor J2DPictureEx::getWhite() const { - // NONMATCHING + JUtility::TColor black, white; + if (!getBlackWhite(&black, &white)) { + return 0xffffffff; + } else { + return white; + } } /* 803069B8-803069D8 3012F8 0020+00 1/0 0/0 0/0 .text setAlpha__12J2DPictureExFUc */ -void J2DPictureEx::setAlpha(u8 param_0) { - // NONMATCHING +void J2DPictureEx::setAlpha(u8 alpha) { + mAlpha = alpha; + if (mMaterial != NULL && mMaterial->getColorBlock()->getMatColor(0) != NULL) { + mMaterial->getColorBlock()->getMatColor(0)->a = alpha; + } } /* 803069D8-80306A0C 301318 0034+00 1/0 0/0 0/0 .text setCullBack__12J2DPictureExF11_GXCullMode */ -void J2DPictureEx::setCullBack(_GXCullMode param_0) { - // NONMATCHING +void J2DPictureEx::setCullBack(GXCullMode cullMode) { + mCullMode = cullMode; + if (mMaterial != NULL) { + mMaterial->getColorBlock()->setCullMode(cullMode); + } + J2DPane::setCullBack(cullMode); } /* 80306A0C-80306A24 30134C 0018+00 1/0 0/0 0/0 .text rewriteAlpha__12J2DPictureExFv */ void J2DPictureEx::rewriteAlpha() { - // NONMATCHING + if (mMaterial != NULL) { + mAlpha = mMaterial->getColorBlock()->getMatColor(0)->a; + } } /* 80306A24-80306AC4 301364 00A0+00 1/0 0/0 0/0 .text isUsed__12J2DPictureExFPC7ResTIMG */ -bool J2DPictureEx::isUsed(ResTIMG const* param_0) { - // NONMATCHING +bool J2DPictureEx::isUsed(ResTIMG const* texInfo) { + if (mMaterial != NULL && mMaterial->getTevBlock() != NULL) { + for (u32 i = 0; i < 8; i++) { + JUTTexture* texture = mMaterial->getTevBlock()->getTexture(i); + if (texture != NULL && texture->getTexInfo() == texInfo) { + return true; + } + } + } + return J2DPane::isUsed(texInfo); } /* 80306AC4-80306AF0 301404 002C+00 1/0 0/0 0/0 .text setAnimation__12J2DPictureExFP11J2DAnmColor */ -void J2DPictureEx::setAnimation(J2DAnmColor* param_0) { - // NONMATCHING +void J2DPictureEx::setAnimation(J2DAnmColor* anm) { + if (mMaterial != NULL) { + mMaterial->setAnimation(anm); + } } /* 80306AF0-80306B1C 301430 002C+00 1/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP19J2DAnmTextureSRTKey */ -void J2DPictureEx::setAnimation(J2DAnmTextureSRTKey* param_0) { - // NONMATCHING +void J2DPictureEx::setAnimation(J2DAnmTextureSRTKey* anm) { + if (mMaterial != NULL) { + mMaterial->setAnimation(anm); + } } /* 80306B1C-80306B48 30145C 002C+00 1/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP16J2DAnmTexPattern */ -void J2DPictureEx::setAnimation(J2DAnmTexPattern* param_0) { - // NONMATCHING +void J2DPictureEx::setAnimation(J2DAnmTexPattern* anm) { + if (mMaterial != NULL) { + mMaterial->setAnimation(anm); + } } /* 80306B48-80306B74 301488 002C+00 1/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP15J2DAnmTevRegKey */ -void J2DPictureEx::setAnimation(J2DAnmTevRegKey* param_0) { - // NONMATCHING +void J2DPictureEx::setAnimation(J2DAnmTevRegKey* anm) { + if (mMaterial != NULL) { + mMaterial->setAnimation(anm); + } } /* 80306B74-80306B7C -00001 0008+00 0/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP20J2DAnmVisibilityFull */ -void J2DPictureEx::setAnimation(J2DAnmVisibilityFull* param_0) { - *(u32*)(((u8*)this) + 404) /* this->field_0x194 */ = (u32)(param_0); +void J2DPictureEx::setAnimation(J2DAnmVisibilityFull* anm) { + field_0x194 = anm; } /* 80306B7C-80306C70 3014BC 00F4+00 1/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP14J2DAnmVtxColor */ -void J2DPictureEx::setAnimation(J2DAnmVtxColor* param_0) { - // NONMATCHING +// NONMATCHING regswap +void J2DPictureEx::setAnimation(J2DAnmVtxColor* anm) { + field_0x198 = anm; + field_0x19c = 0; + + if (anm != NULL) { + u16 anm_table_num = anm->getAnmTableNum(0); + for (u8 i = 0; i < 4; i++) { + if (field_0x158[i] != 0xffff) { + for (u16 j = 0; j < anm_table_num; j++) { + J3DAnmVtxColorIndexData* data = anm->getAnmVtxColorIndexData(0, j); + u16* index = anm->getVtxColorIndexPointer(0) + (u32)data->mpData; + for (u16 k = 0; k < data->mNum; k++) { + if (index[k] == field_0x158[i]) { + field_0x198 = anm; + field_0x19c |= 1 << i; + goto next; + } + } + } + } + next:; + } + } + + if (field_0x19c == 0) { + field_0x198 = NULL; + } } /* 80306C70-80306DC8 3015B0 0158+00 1/0 0/0 0/0 .text * animationPane__12J2DPictureExFPC15J2DAnmTransform */ -const J2DAnmTransform* J2DPictureEx::animationPane(J2DAnmTransform const* param_0) { - // NONMATCHING +const J2DAnmTransform* J2DPictureEx::animationPane(J2DAnmTransform const* anm) { + if (field_0x194 != NULL && field_0x154 != 0xffff) { + u8 tmp; + field_0x194->getVisibility(field_0x154, &tmp); + if (tmp != 0) { + show(); + } else { + hide(); + } + } + + if (field_0x198 != NULL) { + u16 anm_table_num = field_0x198->getAnmTableNum(0); + for (u8 i = 0; i < 4; i++) { + if (field_0x19c & (1 << i)) { + for (u16 j = 0; j < anm_table_num; j++) { + J3DAnmVtxColorIndexData* data = field_0x198->getAnmVtxColorIndexData(0, j); + u16* index = field_0x198->getVtxColorIndexPointer(0) + (u32)data->mpData; + for (u16 k = 0; k < data->mNum; k++) { + if (index[k] == field_0x158[i]) { + field_0x198->getColor(0, j, &mCornerColor[i]); + goto next; + } + } + } + } + next:; + } + } + + return J2DPane::animationPane(anm); } /* 80306DC8-80306ED4 301708 010C+00 1/0 0/0 0/0 .text getUsableTlut__12J2DPictureExFUc */ u8 J2DPictureEx::getUsableTlut(u8 param_0) { - // NONMATCHING + u32 tex_gen_num = mMaterial->getTexGenBlock()->getTexGenNum(); + u8 usedTluts = 0; + + for (u8 i = 0; i < tex_gen_num; i++) { + JUTTexture* texture = mMaterial->getTevBlock()->getTexture(i); + if (i != param_0 && texture != NULL) { + const ResTIMG* texInfo = texture->getTexInfo(); + if (texInfo != NULL && texInfo->indexTexture != 0) { + int tlut_name = texture->getTlutName(); + u8 tlut_index = tlut_name - (tlut_name >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0); + if (tlut_index < 8) { + usedTluts |= 1 << tlut_index; + } + } + } + } + + u8 i = 0; + for (; i < 8; i++) { + if (!(usedTluts & (1 << i))) { + return i; + } + } + return 0; } /* 80306ED4-80306F04 301814 0030+00 1/0 0/0 0/0 .text append__12J2DPictureExFPC7ResTIMGf */ bool J2DPictureEx::append(ResTIMG const* param_0, f32 param_1) { - // NONMATCHING + return append(param_0, NULL, param_1); } /* 80306F04-80306F34 301844 0030+00 1/0 0/0 0/0 .text append__12J2DPictureExFPCcf */ bool J2DPictureEx::append(char const* param_0, f32 param_1) { - // NONMATCHING + return append(param_0, NULL, param_1); } /* 80306F34-80306F64 301874 0030+00 1/0 0/0 0/0 .text prepend__12J2DPictureExFP10JUTTexturef */ void J2DPictureEx::prepend(JUTTexture* param_0, f32 param_1) { - // NONMATCHING + insert(param_0, 0, param_1); } /* 80306F64-80306F94 3018A4 0030+00 1/0 0/0 0/0 .text prepend__12J2DPictureExFPCcP10JUTPalettef */ void J2DPictureEx::prepend(char const* param_0, JUTPalette* param_1, f32 param_2) { - // NONMATCHING + insert(param_0, param_1, 0, param_2); } /* 80306F94-80306FC4 3018D4 0030+00 1/0 0/0 0/0 .text prepend__12J2DPictureExFPCcf */ void J2DPictureEx::prepend(char const* param_0, f32 param_1) { - // NONMATCHING + insert(param_0, 0, param_1); } /* 80306FC4-80306FF4 301904 0030+00 1/0 0/0 0/0 .text * prepend__12J2DPictureExFPC7ResTIMGP10JUTPalettef */ void J2DPictureEx::prepend(ResTIMG const* param_0, JUTPalette* param_1, f32 param_2) { - // NONMATCHING + insert(param_0, param_1, 0, param_2); } /* 80306FF4-80307024 301934 0030+00 1/0 0/0 0/0 .text prepend__12J2DPictureExFPC7ResTIMGf */ void J2DPictureEx::prepend(ResTIMG const* param_0, f32 param_1) { - // NONMATCHING + insert(param_0, 0, param_1); } /* 80307024-80307058 301964 0034+00 1/0 0/0 0/0 .text insert__12J2DPictureExFPCcUcf */ bool J2DPictureEx::insert(char const* param_0, u8 param_1, f32 param_2) { - // NONMATCHING + return insert(param_0, NULL, param_1, param_2); } /* 80307058-8030708C 301998 0034+00 1/0 0/0 0/0 .text insert__12J2DPictureExFPC7ResTIMGUcf */ -void J2DPictureEx::insert(ResTIMG const* param_0, u8 param_1, f32 param_2) { - // NONMATCHING +bool J2DPictureEx::insert(ResTIMG const* param_0, u8 param_1, f32 param_2) { + return insert(param_0, NULL, param_1, param_2); } /* 8030708C-803070D0 3019CC 0044+00 1/0 0/0 0/0 .text draw__12J2DPictureExFffbbb */ void J2DPictureEx::draw(f32 param_0, f32 param_1, bool param_2, bool param_3, bool param_4) { - // NONMATCHING + return draw(param_0, param_1, 0, param_2, param_3, param_4); } /* 803070D0-80307134 301A10 0064+00 1/0 0/0 0/0 .text drawOut__12J2DPictureExFffffffff */ void J2DPictureEx::drawOut(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7) { - // NONMATCHING + drawOut(JGeometry::TBox2<f32>(param_0, param_1, param_0 + param_2, param_1 + param_3), + JGeometry::TBox2<f32>(param_4, param_5, param_4 + param_6, param_5 + param_7)); } /* 80307134-80307168 301A74 0034+00 1/0 0/0 0/0 .text load__12J2DPictureExFUc */ void J2DPictureEx::load(u8 param_0) { - // NONMATCHING + load((GXTexMapID)param_0, param_0); } /* 80307168-803071A4 301AA8 003C+00 1/0 0/0 0/0 .text setCullBack__12J2DPictureExFb */ void J2DPictureEx::setCullBack(bool param_0) { - // NONMATCHING + setCullBack(param_0 ? GX_CULL_BACK : GX_CULL_NONE); } /* 803071A4-803071C4 301AE4 0020+00 1/0 0/0 0/0 .text isUsed__12J2DPictureExFPC7ResFONT */ bool J2DPictureEx::isUsed(ResFONT const* param_0) { - // NONMATCHING + return J2DPane::isUsed(param_0); } /* 803071C4-803071E4 301B04 0020+00 1/0 0/0 0/0 .text setAnimation__12J2DPictureExFP10J2DAnmBase */ void J2DPictureEx::setAnimation(J2DAnmBase* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 803A1D70-803A1D90 02E3D0 0020+00 0/0 0/0 0/0 .rodata @2556 */ -#pragma push -#pragma force_active on -static u8 const lit_2556[32] = { - 0x07, 0x04, 0x05, 0x07, 0x05, 0x07, 0x07, 0x07, 0x07, 0x04, 0x06, 0x07, 0x07, 0x04, 0x06, 0x00, - 0x07, 0x05, 0x00, 0x07, 0x01, 0x02, 0x04, 0x07, 0x07, 0x07, 0x07, 0x02, 0x01, 0x02, 0x00, 0x07, -}; -COMPILER_STRIP_GATE(0x803A1D70, &lit_2556); -#pragma pop - -/* 803A1D90-803A1DB8 02E3F0 0028+00 0/0 0/0 0/0 .rodata @2557 */ -#pragma push -#pragma force_active on -static u8 const lit_2557[40] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1D90, &lit_2557); -#pragma pop + J2DPane::setAnimation(param_0); +} diff --git a/src/JSystem/J2DGraph/J2DScreen.cpp b/src/JSystem/J2DGraph/J2DScreen.cpp index 51772c610b..6772f6fe69 100644 --- a/src/JSystem/J2DGraph/J2DScreen.cpp +++ b/src/JSystem/J2DGraph/J2DScreen.cpp @@ -13,7 +13,6 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JSupport/JSUMemoryStream.h" #include "dolphin/types.h" -#include "global.h" /* 802F8498-802F8540 2F2DD8 00A8+00 0/0 59/59 4/4 .text __ct__9J2DScreenFv */ J2DScreen::J2DScreen() diff --git a/src/JSystem/J2DGraph/J2DWindowEx.cpp b/src/JSystem/J2DGraph/J2DWindowEx.cpp index 16e9f72dd3..7bf755fdd2 100644 --- a/src/JSystem/J2DGraph/J2DWindowEx.cpp +++ b/src/JSystem/J2DGraph/J2DWindowEx.cpp @@ -6,14 +6,6 @@ #include "JSystem/J2DGraph/J2DWindowEx.h" #include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JSupport/JSURandomInputStream.h" -#include "dol2asm.h" - -/* ############################################################################################## */ -/* 803A1C60-803A1C70 02E2C0 0010+00 2/2 0/0 0/0 .rodata @1508 */ -SECTION_RODATA static u8 const lit_1508[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1C60, &lit_1508); struct J2DWindowExDef { u32 field_0x0[4]; @@ -93,7 +85,6 @@ J2DWindowEx::J2DWindowEx(J2DPane* param_0, JSURandomInputStream* param_1, u32 pa setMinSize(); } - /* 80300F80-80301144 2FB8C0 01C4+00 1/1 0/0 0/0 .text setMinSize__11J2DWindowExFv */ void J2DWindowEx::setMinSize() { field_0x140 = 1; @@ -112,8 +103,10 @@ void J2DWindowEx::setMinSize() { if (mFrameMaterial[2]->getTevBlock()->getTexture(0) == NULL) return; if (mFrameMaterial[3]->getTevBlock()->getTexture(0) == NULL) return; - field_0x140 = mFrameMaterial[0]->getTevBlock()->getTexture(0)->getWidth() + mFrameMaterial[1]->getTevBlock()->getTexture(0)->getWidth(); - field_0x142 = mFrameMaterial[0]->getTevBlock()->getTexture(0)->getHeight() + mFrameMaterial[2]->getTevBlock()->getTexture(0)->getHeight(); + field_0x140 = mFrameMaterial[0]->getTevBlock()->getTexture(0)->getWidth() + + mFrameMaterial[1]->getTevBlock()->getTexture(0)->getWidth(); + field_0x142 = mFrameMaterial[0]->getTevBlock()->getTexture(0)->getHeight() + + mFrameMaterial[2]->getTevBlock()->getTexture(0)->getHeight(); } /* 80301144-8030122C 2FBA84 00E8+00 1/0 0/0 0/0 .text __dt__11J2DWindowExFv */ @@ -319,6 +312,10 @@ void J2DWindowEx::draw_private(JGeometry::TBox2<f32> const& param_0, } } +static f32 dummy_literal() { + return 0.0f; +} + /* 80301994-80301D74 2FC2D4 03E0+00 1/0 0/0 0/0 .text * drawContents__11J2DWindowExFRCQ29JGeometry8TBox2<f> */ void J2DWindowEx::drawContents(JGeometry::TBox2<f32> const& param_1) { @@ -447,7 +444,6 @@ void J2DWindowEx::drawFrameTexture(f32 param_1, f32 param_2, f32 param_3, f32 pa } } - /* 80301FC8-80302164 2FC908 019C+00 1/0 0/0 0/0 .text draw__11J2DWindowExFRCQ29JGeometry8TBox2<f> */ void J2DWindowEx::draw(JGeometry::TBox2<f32> const& param_1) { @@ -476,7 +472,6 @@ void J2DWindowEx::draw(JGeometry::TBox2<f32> const& param_1) { draw(param_1, aTStack_78); } - /* 80302164-80302284 2FCAA4 0120+00 1/0 0/0 0/0 .text * draw__11J2DWindowExFRCQ29JGeometry8TBox2<f>RCQ29JGeometry8TBox2<f> */ void J2DWindowEx::draw(JGeometry::TBox2<f32> const& param_1, JGeometry::TBox2<f32> const& param_2) { @@ -499,7 +494,6 @@ void J2DWindowEx::draw(JGeometry::TBox2<f32> const& param_1, JGeometry::TBox2<f3 GXLoadPosMtxImm(auStack_60, 0); } - /* 80302284-80302388 2FCBC4 0104+00 1/1 0/0 0/0 .text setTevOrder__11J2DWindowExFb */ void J2DWindowEx::setTevOrder(bool param_0) { u16 local_28[2]; @@ -551,6 +545,48 @@ void J2DWindowEx::setTevStage(bool param_1) { } } +/* 803A1C70-803A1C80 02E2D0 0010+00 0/0 0/0 0/0 .rodata @1557 */ +static u8 const lit_1557[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1C80-803A1C90 02E2E0 0010+00 0/0 0/0 0/0 .rodata @1566 */ +static u8 const lit_1566[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1C90-803A1CA0 02E2F0 0010+00 0/0 0/0 0/0 .rodata @1575 */ +static u8 const lit_1575[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +/* 803A1CA0-803A1CB0 02E300 0010+00 0/0 0/0 0/0 .rodata @1581 */ +static u8 const lit_1581[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +/* 803A1CB0-803A1CC0 02E310 0010+00 0/0 0/0 0/0 .rodata @1587 */ +static u8 const lit_1587[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1CC0-803A1CD0 02E320 0010+00 0/0 0/0 0/0 .rodata @1596 */ +static u8 const lit_1596[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1CD0-803A1CE0 02E330 0010+00 0/0 0/0 0/0 .rodata @1605 */ +static u8 const lit_1605[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1CE0-803A1CF0 02E340 0010+00 0/0 0/0 0/0 .rodata @1612 */ +static u8 const lit_1612[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + /* 803024B4-80302764 2FCDF4 02B0+00 1/1 0/0 0/0 .text * setStage__11J2DWindowExFP11J2DTevStageQ211J2DWindowEx10stage_enum */ void J2DWindowEx::setStage(J2DTevStage* param_0, J2DWindowEx::stage_enum param_1) { @@ -563,8 +599,8 @@ void J2DWindowEx::setStage(J2DTevStage* param_0, J2DWindowEx::stage_enum param_1 {0x01, 0x02, 0x04, 0x07}, {0x07, 0x07, 0x07, 0x02}, {0x07, 0x07, 0x07, 0x05}, }; s8 local_68[6][5] = { - {1, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 0, 0, 1}, - {0, 0, 1, 0, 0}, {1, 0, 0, 0, 0}, {0, 0, 0, 0, 1}, + {0, 0, 0, 1, 0}, {0, 0, 0, 1, 0}, {0, 0, 0, 1, 0}, + {0, 0, 0, 1, 0}, {0, 0, 0, 1, 0}, {0, 0, 0, 1, 0}, }; param_0->setTevColorAB(local_30[param_1][0], local_30[param_1][1]); @@ -677,8 +713,10 @@ bool J2DWindowEx::getBlackWhite(JUtility::TColor* param_0, JUtility::TColor* par color1.g = color1p->g; color1.b = color1p->b; color1.a = color1p->a; - *param_0 = JUtility::TColor((((u8)color0.r) << 0x18) | (((u8)color0.g) << 0x10) | (((u8)color0.b) << 0x8) | (((u8)color0.a))); - *param_1 = JUtility::TColor((((u8)color1.r) << 0x18) | (((u8)color1.g) << 0x10) | (((u8)color1.b) << 0x8) | (((u8)color1.a))); + *param_0 = JUtility::TColor((((u8)color0.r) << 0x18) | (((u8)color0.g) << 0x10) + | (((u8)color0.b) << 0x8) | (((u8)color0.a))); + *param_1 = JUtility::TColor((((u8)color1.r) << 0x18) | (((u8)color1.g) << 0x10) + | (((u8)color1.b) << 0x8) | (((u8)color1.a))); } return true; } @@ -901,140 +939,6 @@ void J2DWindowEx::setAnimation(J2DAnmVtxColor* param_0) { } } -/* ############################################################################################## */ -/* 803A1C70-803A1C80 02E2D0 0010+00 0/0 0/0 0/0 .rodata @1557 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1557[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1C70, &lit_1557); -#pragma pop - -/* 803A1C80-803A1C90 02E2E0 0010+00 0/0 0/0 0/0 .rodata @1566 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1566[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1C80, &lit_1566); -#pragma pop - -/* 803A1C90-803A1CA0 02E2F0 0010+00 0/0 0/0 0/0 .rodata @1575 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1575[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1C90, &lit_1575); -#pragma pop - -/* 803A1CA0-803A1CB0 02E300 0010+00 0/0 0/0 0/0 .rodata @1581 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1581[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1CA0, &lit_1581); -#pragma pop - -/* 803A1CB0-803A1CC0 02E310 0010+00 0/0 0/0 0/0 .rodata @1587 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1587[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1CB0, &lit_1587); -#pragma pop - -/* 803A1CC0-803A1CD0 02E320 0010+00 0/0 0/0 0/0 .rodata @1596 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1596[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1CC0, &lit_1596); -#pragma pop - -/* 803A1CD0-803A1CE0 02E330 0010+00 0/0 0/0 0/0 .rodata @1605 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1605[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1CD0, &lit_1605); -#pragma pop - -/* 803A1CE0-803A1CF0 02E340 0010+00 0/0 0/0 0/0 .rodata @1612 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_1612[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A1CE0, &lit_1612); -#pragma pop - -/* 803A1CF0-803A1D08 02E350 0018+00 0/0 0/0 0/0 .rodata @2530 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_2530[24] = { - 0x0F, 0x08, 0x0A, 0x0F, 0x0F, 0x08, 0x0A, 0x0F, 0x0F, 0x0A, 0x00, 0x0F, - 0x02, 0x04, 0x08, 0x0F, 0x02, 0x04, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0A, -}; -COMPILER_STRIP_GATE(0x803A1CF0, &lit_2530); -#pragma pop - -/* 803A1D08-803A1D20 02E368 0018+00 0/0 0/0 0/0 .rodata @2531 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_2531[24] = { - 0x07, 0x04, 0x05, 0x07, 0x05, 0x07, 0x07, 0x07, 0x07, 0x05, 0x00, 0x07, - 0x01, 0x02, 0x04, 0x07, 0x07, 0x07, 0x07, 0x02, 0x07, 0x07, 0x07, 0x05, -}; -COMPILER_STRIP_GATE(0x803A1D08, &lit_2531); -#pragma pop - -/* 803A1D20-803A1D40 02E380 001E+02 0/0 0/0 0/0 .rodata @2532 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_2532[30 + 2 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A1D20, &lit_2532); -#pragma pop - /* 80303370-80303510 2FDCB0 01A0+00 1/0 0/0 0/0 .text * animationPane__11J2DWindowExFPC15J2DAnmTransform */ const J2DAnmTransform* J2DWindowEx::animationPane(J2DAnmTransform const* param_0) { diff --git a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp index 6af9f074db..4c0bfc8a43 100644 --- a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -7,7 +7,6 @@ #include "JSystem/J3DGraphBase/J3DGD.h" #include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DTransform.h" -#include "dol2asm.h" #include "dolphin/os.h" #include "string.h" #include "global.h" @@ -359,8 +358,8 @@ void J3DColorBlockLightOff::load() { mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); } @@ -376,8 +375,8 @@ void J3DColorBlockAmbientOn::load() { mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); } @@ -390,8 +389,8 @@ void J3DColorBlockLightOn::load() { mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); for (u32 i = 0; i < 8; i++) { if (mLight[i] != NULL) { @@ -423,8 +422,8 @@ void J3DColorBlockLightOff::patchLight() { GDOverflowCheck(SizeOfLoadColorChans); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); void* end = GDGetCurrPointer(); DCStoreRange(start, (u32)end - (u32)start); @@ -453,8 +452,8 @@ void J3DColorBlockLightOn::patchLight() { GDOverflowCheck(SizeOfLoadColorChans); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); for (u32 i = 0; i < 8; i++) { if (mLight[i] != NULL) { @@ -484,8 +483,8 @@ void J3DColorBlockLightOff::diffColorChan() { GDOverflowCheck(SizeOfLoadColorChans); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); } @@ -521,8 +520,8 @@ void J3DColorBlockLightOn::diffColorChan() { GDOverflowCheck(SizeOfLoadColorChans); J3DGDWriteXFCmdHdr(0x100e, 4); mColorChan[0].load(); - mColorChan[1].load(); mColorChan[2].load(); + mColorChan[1].load(); mColorChan[3].load(); } diff --git a/src/JSystem/J3DGraphBase/J3DMaterial.cpp b/src/JSystem/J3DGraphBase/J3DMaterial.cpp index 491b0d23f3..c2c7674766 100644 --- a/src/JSystem/J3DGraphBase/J3DMaterial.cpp +++ b/src/JSystem/J3DGraphBase/J3DMaterial.cpp @@ -288,7 +288,6 @@ void J3DMaterial::setCurrentMtx() { } /* 80316AC8-80316D68 311408 02A0+00 1/1 0/0 0/0 .text calcCurrentMtx__11J3DMaterialFv */ -// NONMATCHING Issues with setCurrentTexMtx void J3DMaterial::calcCurrentMtx() { if (!j3dSys.checkFlag(0x40000000)) { mCurrentMtx.setCurrentTexMtx( diff --git a/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp index fae878e601..ee7ada7dee 100644 --- a/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp +++ b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -10,16 +10,6 @@ #include <dolphin/os.h> #include "global.h" -// -// External References: -// - -extern "C" void countVertex__12J3DShapeDrawFUl(); -extern "C" void* __nwa__FUli(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_18(); -extern "C" void _restgpr_18(); - /* 80314924-80314974 30F264 0050+00 1/1 0/0 0/0 .text countVertex__12J3DShapeDrawFUl */ u32 J3DShapeDraw::countVertex(u32 stride) { u32 count = 0; @@ -54,18 +44,18 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { // Copy count // regalloc (I suspect there's a way to shove this in a u16 temp without an mr) - u32 vtxNum = *((u16*)(oldDL + 1)); + s32 vtxNum = *((u16*)(oldDL + 1)); *((u16*)newDL) = vtxNum; newDL += 2; - for (s32 i = 0; i < (u16)vtxNum; i++) { + for (s32 i = 0; i < vtxNum; i++) { u8* oldDLVtx = &oldDL[stride * i + 3]; u8 pnmtxidx = *oldDLVtx; memcpy(newDL, oldDLVtx, attrOffs); - u8* newDL1 = &newDL[attrOffs]; - *newDL1++ = valueBase + pnmtxidx; - memcpy(newDL1, oldDLVtx + attrOffs, stride - attrOffs); - newDL = newDL1 + (stride - attrOffs); + newDL += attrOffs; + *newDL++ = valueBase + pnmtxidx; + memcpy(newDL, oldDLVtx + attrOffs, stride - attrOffs); + newDL += (stride - attrOffs); } oldDL += stride * vtxNum; diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index fc06d21ce0..126d898137 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -235,7 +235,7 @@ J3DMaterial* J3DMaterialFactory::createNormalMaterial(J3DMaterial* i_material, i i_material->mIndBlock->setIndTexOrder(i, newIndTexOrder(i_idx, i)); } for (u8 i = 0; i < ind_tex_stage_num; i++) { - i_material->mIndBlock->setIndTexCoordScale(i, &newIndTexCoordScale(i_idx, i)); + i_material->mIndBlock->setIndTexCoordScale(i, newIndTexCoordScale(i_idx, i)); } for (u8 i = 0; i < tev_stage_num_max; i++) { i_material->mTevBlock->setIndTevStage(i, newIndTevStage(i_idx, i)); @@ -328,7 +328,7 @@ J3DMaterial* J3DMaterialFactory::createPatchedMaterial(J3DMaterial* i_material, i_material->mIndBlock->setIndTexOrder(i, newIndTexOrder(i_idx, i)); } for (u8 i = 0; i < ind_tex_stage_num; i++) { - i_material->mIndBlock->setIndTexCoordScale(i, &newIndTexCoordScale(i_idx, i)); + i_material->mIndBlock->setIndTexCoordScale(i, newIndTexCoordScale(i_idx, i)); } for (u8 i = 0; i < tev_stage_num; i++) { i_material->mTevBlock->setIndTevStage(i, newIndTevStage(i_idx, i)); @@ -590,12 +590,9 @@ J3DTevOrder J3DMaterialFactory::newTevOrder(int i_idx, int i_no) const { } } -/* 80456BB8-80456BBC 000058 0004+00 1/1 0/0 0/0 .sbss2 @1897 */ -SECTION_SBSS2 static GXColorS10 defaultTevColor; - /* 803321A0-80332210 32CAE0 0070+00 2/2 0/0 0/0 .text newTevColor__18J3DMaterialFactoryCFii */ J3DGXColorS10 J3DMaterialFactory::newTevColor(int i_idx, int i_no) const { - J3DGXColorS10 dflt = defaultTevColor; + J3DGXColorS10 dflt = (GXColorS10){0, 0, 0, 0}; J3DMaterialInitData* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mTevColorIdx[i_no] != 0xffff) { return mpTevColor[mtl_init_data->mTevColorIdx[i_no]]; diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp index 3926a26753..6fb7e0bc08 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp @@ -112,25 +112,28 @@ u32 J3DModelLoader::calcLoadMaterialTableSize(const void* stream) { return size; } +inline u32 getBdlFlag_MaterialType(u32 flags) { + return flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc); +} + /* 80336A98-80336CD8 3313D8 0240+00 0/0 3/0 0/0 .text * calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl */ // NONMATCHING flags issue u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) { u32 size = 0; + size += sizeof(J3DModelData); const J3DModelFileData* header = (const J3DModelFileData*)stream; const J3DModelBlock* nextBlock = header->mBlocks; - u32 i = 0; - size += sizeof(J3DModelData); - for (; i < header->mBlockNum; i++) { + for (u32 i = 0; i < header->mBlockNum; i++) { switch (nextBlock->mBlockType) { case 'INF1': - size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, flags); + size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, (u32)flags); break; case 'JNT1': size += calcSizeJoint((const J3DJointBlock*)nextBlock); break; case 'SHP1': - size += calcSizeShape((const J3DShapeBlock*)nextBlock, flags); + size += calcSizeShape((const J3DShapeBlock*)nextBlock, (u32)flags); break; case 'TEX1': size += calcSizeTexture((const J3DTextureBlock*)nextBlock); @@ -142,12 +145,13 @@ u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) break; case 'MAT3': { u32 flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn); - flags2 |= flags & (J3DMLF_Material_UseIndirect | J3DMLF_26); + flags2 |= (u32)flags & (J3DMLF_Material_UseIndirect | J3DMLF_26); mpMaterialBlock = (const J3DMaterialBlock*)nextBlock; - if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == 0) { + u32 flag_mtl_type = getBdlFlag_MaterialType(flags); + if (flag_mtl_type == 0) { field_0x18 = 1; size += calcSizeMaterial((const J3DMaterialBlock*)nextBlock, flags2); - } else if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == J3DMLF_DoBdlMaterialCalc) { + } else if (flag_mtl_type == J3DMLF_DoBdlMaterialCalc) { field_0x18 = 1; size += calcSizePatchedMaterial((const J3DMaterialBlock*)nextBlock, flags2); } diff --git a/src/JSystem/JAudio2/JASAiCtrl.cpp b/src/JSystem/JAudio2/JASAiCtrl.cpp index cb5a76edd9..25141ceb35 100644 --- a/src/JSystem/JAudio2/JASAiCtrl.cpp +++ b/src/JSystem/JAudio2/JASAiCtrl.cpp @@ -16,10 +16,8 @@ #include "JSystem/JAudio2/JASReport.h" #include "JSystem/JAudio2/JASLfo.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dol2asm.h" #include "dolphin/ai.h" #include <dolphin/os.h> -#include <dolphin/os.h> /* 80431C58-80431C68 05E978 000C+04 2/2 0/0 0/0 .bss sDmaDacBuffer__9JASDriver */ s16* JASDriver::sDmaDacBuffer[3]; diff --git a/src/JSystem/JAudio2/JASAramStream.cpp b/src/JSystem/JAudio2/JASAramStream.cpp index 4a56d47436..9f2596f5e9 100644 --- a/src/JSystem/JAudio2/JASAramStream.cpp +++ b/src/JSystem/JAudio2/JASAramStream.cpp @@ -29,8 +29,6 @@ u32 JASAramStream::sChannelMax; /* 80451260 0001+00 data_80451260 None */ /* 80451261 0001+00 data_80451261 None */ /* 80451262 0006+00 data_80451262 None */ -extern bool struct_80451260; -extern bool struct_80451261; bool struct_80451260; bool struct_80451261; @@ -331,7 +329,7 @@ bool JASAramStream::load() { } field_0x10c++; if (field_0x10c >= field_0x108) { - u32 uvar8 = mBlock - 1 + field_0x108; + u32 uvar8 = field_0x108 - 1 + mBlock; if (mLoop) { while (uvar8 > loop_end_block) { uvar8 -= loop_end_block; @@ -364,7 +362,6 @@ s32 JASAramStream::channelProcCallback(void* i_this) { /* 80296D94-80296DF0 2916D4 005C+00 2/1 0/0 0/0 .text dvdErrorCheck__13JASAramStreamFPv */ -// NONMATCHING supposed to use a switch table s32 JASAramStream::dvdErrorCheck(void* param_0) { switch (DVDGetDriveStatus()) { case DVD_STATE_END: @@ -375,7 +372,6 @@ s32 JASAramStream::dvdErrorCheck(void* param_0) { case DVD_STATE_WAITING: case DVD_STATE_COVER_CLOSED: case DVD_STATE_NO_DISK: - case DVD_STATE_COVER_OPEN: case DVD_STATE_WRONG_DISK: case DVD_STATE_MOTOR_STOPPED: case DVD_STATE_IGNORED: @@ -436,7 +432,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, i_dspChannel->field_0x110 = 0; field_0x120 = 0; field_0x12c |= 2; - if (field_0x0c4 < -1) { + if (field_0x0c4 < 0xffffffff) { field_0x0c4++; } field_0x0c0 = false; @@ -447,7 +443,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, } f32 fvar1 = field_0x0c4; fvar1 *= mLoopEnd - mLoopStart; - if (field_0x0c4 < -1) { + if (field_0x0c4 < 0xffffffff) { fvar1 += field_0x0b8; } fvar1 /= field_0x164; @@ -579,7 +575,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, } /* 802974AC-80297658 291DEC 01AC+00 1/1 0/0 0/0 .text channelProc__13JASAramStreamFv */ -// NONMATCHING instruction ordering +// NONMATCHING instruction ordering / regalloc s32 JASAramStream::channelProc() { OSMessage msg; while (OSReceiveMessage(&field_0x020, &msg, OS_MESSAGE_NOBLOCK)) { diff --git a/src/JSystem/JAudio2/JASBNKParser.cpp b/src/JSystem/JAudio2/JASBNKParser.cpp index 273112059f..0fe6b9b6eb 100644 --- a/src/JSystem/JAudio2/JASBNKParser.cpp +++ b/src/JSystem/JAudio2/JASBNKParser.cpp @@ -59,7 +59,6 @@ JASBNKParser::Ver1::TChunk* JASBNKParser::Ver1::findChunk(void const* stream, u3 /* 8029963C-80299A3C 293F7C 0400+00 1/1 0/0 0/0 .text * createBasicBank__Q212JASBNKParser4Ver1FPCvP7JKRHeap */ -// NONMATCHING instruction ordering, regalloc JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* heap) { if (heap == NULL) { heap = JASDram; @@ -74,44 +73,40 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h TOscChunk* osc_chunk = (TOscChunk*)findChunk(stream, 'OSCT'); TListChunk* list_chunk = (TListChunk*)findChunk(stream, 'LIST'); - void* envt = new (heap, 2) u8[envt_chunk->mSize]; + u8* envt = new (heap, 2) u8[envt_chunk->mSize]; JASCalc::bcopy(envt_chunk->mData, envt, envt_chunk->mSize); - u32 count = osc_chunk->mCount; - TOsc* osc = osc_chunk->mOsc; + u32* ptr = &osc_chunk->mCount; + u32 count = *ptr++; JASOscillator::Data* osc_data = new (heap, 0) JASOscillator::Data[count]; - for (int i = 0; i < count; i++, osc++) { + for (int i = 0; i < count; i++, ptr += sizeof(TOsc) >> 2) { + TOsc* osc = (TOsc*)ptr; JASOscillator::Data* data = &osc_data[i]; data->mTarget = osc->mTarget; data->_04 = osc->_08; data->mScale = osc->mScale; data->_14 = osc->_18; - data->mTable = (JASOscillator::Point*)((int)envt + osc->mTableOffset); - data->_0C = (JASOscillator::Point*)((int)envt + osc->_10); + data->mTable = (JASOscillator::Point*)(envt + osc->mTableOffset); + data->_0C = (JASOscillator::Point*)(envt + osc->_10); } bank->newInstTable(list_chunk->mCount, heap); for (int i = 0; i < list_chunk->mCount; i++) { if (list_chunk->mOffsets[i] != 0) { - u32* ptr = (u32*)((int)stream + list_chunk->mOffsets[i]); - u32* data = ptr + 1; - switch (*ptr) { + u32* data = (u32*)((int)stream + list_chunk->mOffsets[i]); + switch (*data++) { case 'Inst': { JASBasicInst* inst = new (heap, 0) JASBasicInst(); - u32 count = *data; - data++; + u32 count = *data++; for (int j = 0; j < count; j++) { - u32 index = *data; - data++; + u32 index = *data++; inst->setOsc(j, &osc_data[index]); } - count = *data; - data++; + count = *data++; for (int j = 0; j < count; j++) { data++; } - count = *data; - data++; + count = *data++; inst->setKeyRegionCount(count, heap); for (int j = 0; j < count; j++) { JASBasicInst::TKeymap* keymap = inst->getKeyRegion(j); @@ -133,12 +128,10 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h case 'Perc': { JASDrumSet* drum = new (heap, 0) JASDrumSet(); - u32 count = *data; - data++; + u32 count = *data++; drum->newPercArray(count, heap); for (int j = 0; j < count; j++) { - u32 offset = *data; - data++; + u32 offset = *data++; if (offset != 0) { JASDrumSet::TPerc* perc = new (heap, 0) JASDrumSet::TPerc(); u32* ptr = (u32*)((int)stream + offset); @@ -148,8 +141,7 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h perc->setPan((f32)perc_data->mPan / 127.0f); perc->setRelease(perc_data->mRelease); ptr = (u32*)&perc_data->field_0xc; - u32 count2 = *ptr; - ptr++; + u32 count2 = *ptr++; for (int k = 0; k < count2; k++) { ptr++; } @@ -173,20 +165,150 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h /* 80299A3C-80299E68 29437C 042C+00 1/1 0/0 0/0 .text * createBasicBank__Q212JASBNKParser4Ver0FPCvP7JKRHeap */ +// NONMATCHING JASBasicBank* JASBNKParser::Ver0::createBasicBank(void const* stream, JKRHeap* heap) { - // NONMATCHING + THeader const* header = (THeader*)stream; + + if (heap == NULL) { + heap = JASDram; + } + + JASBasicBank* bank = new (heap, 0) JASBasicBank(); + if (bank == NULL) { + return NULL; + } + + bank->newInstTable(0x80, heap); + + for (int i = 0; i < 0x80; i++) { + TInst* tinst = header->mOffsets.mInstOffset[i].ptr(stream); + if (tinst != NULL) { + JASBasicInst* inst = new (heap, 0) JASBasicInst(); + inst->setVolume(tinst->mVolume); + inst->setPitch(tinst->mPitch); + + int osc_idx = 0; + for (int j = 0; j < 2; j++) { + TOsc* tosc = tinst->mOscOffset[j].ptr(stream); + if (tosc != NULL) { + JASOscillator::Data* osc_data = findOscPtr(bank, header, tosc); + if (osc_data != NULL) { + inst->setOsc(osc_idx, osc_data); + } else { + osc_data = new (heap, 0) JASOscillator::Data(); + osc_data->mTarget = tosc->mTarget; + osc_data->_04 = tosc->field_0x4; + u32 size; + + JASOscillator::Point* points = tosc->mPointOffset.ptr(stream); + if (points != NULL) { + size = getOscTableEndPtr(points) - points; + JASOscillator::Point* table = new (heap, 0) JASOscillator::Point[size]; + JASCalc::bcopy(points, table, size * sizeof(JASOscillator::Point)); + osc_data->mTable = table; + } else { + osc_data->mTable = NULL; + } + + points = tosc->field_0xc.ptr(stream); + if (points != NULL) { + size = getOscTableEndPtr(points) - points; + JASOscillator::Point* table = new (heap, 0) JASOscillator::Point[size]; + JASCalc::bcopy(points, table, size * sizeof(JASOscillator::Point)); + osc_data->_0C = table; + } else { + osc_data->_0C = NULL; + } + + osc_data->mScale = tosc->mScale; + osc_data->_14 = tosc->field_0x14; + inst->setOsc(osc_idx, osc_data); + } + + osc_idx++; + } + } + + inst->setKeyRegionCount(tinst->mKeyRegionCount, heap); + for (int j = 0; j < tinst->mKeyRegionCount; j++) { + JASBasicInst::TKeymap* keymap = inst->getKeyRegion(j); + TKeymap* tkeymap = tinst->mKeymapOffset[j].ptr(stream); + keymap->setHighKey(tkeymap->mHighKey); + TVmap* tvmap = tkeymap->mVmapOffset.ptr(stream); + keymap->field_0x4 = JSULoHalf(tvmap->field_0x4); + keymap->field_0x8 = tvmap->field_0x8; + keymap->field_0xc = tvmap->field_0xc; + } + + bank->setInst(i, inst); + } + } + + for (int i = 0; i < 12; i++) { + TPerc* tperc = header->mOffsets.mPercOffset[i].ptr(stream); + if (tperc != NULL) { + JASDrumSet* drumset = new (heap, 0) JASDrumSet(); + drumset->newPercArray(0x80, heap); + + for (int j = 0; j < 0x80; j++) { + TPmap* tpmap = tperc->mPmapOffset[j].ptr(stream); + if (tpmap != NULL) { + JASDrumSet::TPerc* perc = new (heap, 0) JASDrumSet::TPerc(); + perc->setVolume(tpmap->mVolume); + perc->setPitch(tpmap->mPitch); + if (tperc->mMagic == 'PER2') { + perc->setPan(tperc->mPan[j] / 127.0f); + perc->setRelease(tperc->mRelease[j]); + } + TVmap* vmap = tpmap->mVmapOffset.ptr(stream); + perc->field_0xe = JSULoHalf(vmap->field_0x4); + perc->field_0x10 = vmap->field_0x8; + perc->field_0x14 = vmap->field_0xc; + drumset->setPerc(j, perc); + } + } + + bank->setInst(i + 0xe4, drumset); + } + } + + return bank; } /* 80299E68-80299F8C 2947A8 0124+00 1/1 0/0 0/0 .text * findOscPtr__Q212JASBNKParser4Ver0FP12JASBasicBankPCQ312JASBNKParser4Ver07THeaderPCQ312JASBNKParser4Ver04TOsc */ -void JASBNKParser::Ver0::findOscPtr(JASBasicBank* param_0, THeader const* param_1, - TOsc const* param_2) { - // NONMATCHING +JASOscillator::Data* JASBNKParser::Ver0::findOscPtr(JASBasicBank* bank, THeader const* header, + TOsc const* osc) { + TOffsetData const* data = &header->mOffsets; + for (int i = 0; i < 0x80; i++) { + TInst* tinst = data->mInstOffset[i].ptr(header); + if (tinst != NULL) { + for (int j = 0; j < 2; j++) { + TOsc* tosc = tinst->mOscOffset[j].ptr(header); + if (tosc == osc) { + JASInst* inst = bank->getInst(i); + if (inst != NULL) { + JASInstParam param; + inst->getParam(0x3c, 0x7f, ¶m); + if (j < param.field_0x1d) { + return param.field_0x14[j]; + } + } + } + } + } + } + return NULL; } /* 80299F8C-80299FA0 2948CC 0014+00 1/1 0/0 0/0 .text * getOscTableEndPtr__Q212JASBNKParser4Ver0FPCQ213JASOscillator5Point */ -void JASBNKParser::Ver0::getOscTableEndPtr(JASOscillator::Point const* param_0) { - // NONMATCHING +JASOscillator::Point const* JASBNKParser::Ver0::getOscTableEndPtr(JASOscillator::Point const* points) { + s16 tmp; + do { + tmp = points->_0; + points++; + } while (tmp <= 10); + return points; } diff --git a/src/JSystem/JAudio2/JASBasicWaveBank.cpp b/src/JSystem/JAudio2/JASBasicWaveBank.cpp index d4b44cada2..44d053da00 100644 --- a/src/JSystem/JAudio2/JASBasicWaveBank.cpp +++ b/src/JSystem/JAudio2/JASBasicWaveBank.cpp @@ -8,65 +8,6 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTAssert.h" -// -// Types: -// - -// -// Forward References: -// - -extern "C" void __ct__16JASBasicWaveBankFv(); -extern "C" void __dt__16JASBasicWaveBankFv(); -extern "C" void __dt__Q216JASBasicWaveBank11TWaveHandleFv(); -extern "C" void getWaveGroup__16JASBasicWaveBankFUl(); -extern "C" void setGroupCount__16JASBasicWaveBankFUlP7JKRHeap(); -extern "C" void setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap(); -extern "C" void incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup(); -extern "C" void decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup(); -extern "C" void getWaveHandle__16JASBasicWaveBankCFUl(); -extern "C" void -setWaveInfo__16JASBasicWaveBankFPQ216JASBasicWaveBank10TWaveGroupiUsRC11JASWaveInfo(); -extern "C" void __ct__Q216JASBasicWaveBank10TWaveGroupFv(); -extern "C" void __dt__Q216JASBasicWaveBank10TWaveGroupFv(); -extern "C" void setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap(); -extern "C" void onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv(); -extern "C" void onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv(); -extern "C" void getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi(); -extern "C" void getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv(); -extern "C" void __dt__11JASWaveBankFv(); -extern "C" void __dt__13JASWaveHandleFv(); -extern "C" void __ct__Q216JASBasicWaveBank11TWaveHandleFv(); -extern "C" void __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv(); -extern "C" void getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv(); -extern "C" void getWaveArc__16JASBasicWaveBankFUl(); -extern "C" void getArcCount__16JASBasicWaveBankCFv(); -extern "C" u8 mNoLoad__16JASBasicWaveBank[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void __ct__10JASWaveArcFv(); -extern "C" void __dt__10JASWaveArcFv(); -extern "C" void onDispose__10JASWaveArcFv(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __dla__FPv(); -extern "C" void __destroy_new_array(); -extern "C" void __construct_new_array(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */]; - -// -// Declarations: -// - /* 802984F8-80298558 292E38 0060+00 0/0 1/1 0/0 .text __ct__16JASBasicWaveBankFv */ JASBasicWaveBank::JASBasicWaveBank() { mWaveTable = NULL; diff --git a/src/JSystem/JAudio2/JASSeqParser.cpp b/src/JSystem/JAudio2/JASSeqParser.cpp index b0dfa1088e..7ed12a0ae9 100644 --- a/src/JSystem/JAudio2/JASSeqParser.cpp +++ b/src/JSystem/JAudio2/JASSeqParser.cpp @@ -843,15 +843,15 @@ s32 JASSeqParser::cmdDump(JASTrack* param_0, u32* param_1) { } /* 8029526C-80295498 28FBAC 022C+00 1/0 0/0 0/0 .text cmdPrintf__12JASSeqParserFP8JASTrackPUl */ -// NONMATCHING many things +// NONMATCHING problem with second for loop s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { u8 stack_c[4]; u32 stack_10[4]; char buffer[128]; JASSeqCtrl* seqCtrl = param_0->getSeqCtrl(); - int r30 = 0; - for (u8 i = 0; i < 128; i++) { + u32 r30 = 0; + for (u32 i = 0; i < 128; i++) { buffer[i] = seqCtrl->readByte(); if (buffer[i] == 0) { break; @@ -861,15 +861,18 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { if (buffer[i] == 0) { break; } - if (buffer[i] == 'n') { + switch (buffer[i]) { + case 'n': buffer[i] = '\r'; + break; } } else if (buffer[i] == '%') { - buffer[i + 1] = seqCtrl->readByte(); - if (buffer[i + 1] == 0) { + i++; + buffer[i] = seqCtrl->readByte(); + if (buffer[i] == 0) { break; } - switch (buffer[i + 1]) { + switch (buffer[i]) { case 'd': stack_c[r30] = 0; break; @@ -881,18 +884,17 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { break; case 'r': stack_c[r30] = 3; - buffer[i + 1] = 'd'; + buffer[i] = 'd'; break; case 'R': stack_c[r30] = 4; - buffer[i + 1] = 'x'; - break; - default: + buffer[i] = 'x'; break; } r30++; } } + for (u32 i = 0; i < r30; i++) { stack_10[i] = seqCtrl->readByte(); switch (stack_c[i]) { @@ -903,10 +905,9 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { case 4: stack_10[i] = readReg(param_0, stack_10[i] & 0xff); break; - default: - break; } } + JASReport(buffer, stack_10[0], stack_10[1], stack_10[2], stack_10[3]); return 0; } diff --git a/src/JSystem/JAudio2/JASTrack.cpp b/src/JSystem/JAudio2/JASTrack.cpp index 591dbf2e58..53a2d629e6 100644 --- a/src/JSystem/JAudio2/JASTrack.cpp +++ b/src/JSystem/JAudio2/JASTrack.cpp @@ -11,7 +11,6 @@ #include "JSystem/JAudio2/JASDSPInterface.h" /* 80291228-8029131C 28BB68 00F4+00 1/1 3/3 0/0 .text __ct__8JASTrackFv */ -// NONMATCHING JASTrack::JASTrack() : mDefaultChannelMgr(this), mChannelMgrCount(1), mStatus(0) { mChannelMgrs[0] = &mDefaultChannelMgr; for (int i = 1; i < 4; i++) { diff --git a/src/JSystem/JAudio2/JAUSectionHeap.cpp b/src/JSystem/JAudio2/JAUSectionHeap.cpp index a036282c89..866e5acef7 100644 --- a/src/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/src/JSystem/JAudio2/JAUSectionHeap.cpp @@ -18,7 +18,6 @@ #include "JSystem/JAudio2/JAUStreamFileTable.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "stdlib.h" -#include "dol2asm.h" #include "dolphin/dvd.h" namespace { @@ -78,12 +77,6 @@ JAUSection::TSectionData::TSectionData() { field_0x9c = 0; } -/* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B950 = "index out of range of bitset::reset"; -#pragma pop - /* 802A4F68-802A4FE4 29F8A8 007C+00 1/1 0/0 0/0 .text * resetRegisteredBankTables__Q210JAUSection12TSectionDataFv */ void JAUSection::TSectionData::resetRegisteredBankTables() { @@ -139,7 +132,6 @@ void JAUSection::dispose() { /* 802A51E4-802A52A0 29FB24 00BC+00 0/0 1/1 0/0 .text newSoundTable__10JAUSectionFPCvUlb */ -// NONMATCHING regalloc JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool param_2) { JUT_ASSERT(285, isOpen()); JUT_ASSERT(286, isBuilding()); @@ -148,7 +140,7 @@ JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool para JUT_ASSERT(289, sectionHeap_->sectionHeapData_.soundTable == 0); { TPushCurrentHeap push(getHeap_()); - void* bstDst; + void const* bstDst = bst; if (param_1) { bstDst = newCopy(bst, param_1, 4); JUT_ASSERT(296, bstDst); @@ -163,7 +155,6 @@ JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool para } /* 802A52A0-802A535C 29FBE0 00BC+00 0/0 1/1 0/0 .text newSoundNameTable__10JAUSectionFPCvUlb */ -// NONMATCHING regalloc JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1, bool param_2) { JUT_ASSERT(315, isOpen()); JUT_ASSERT(316, isBuilding()); @@ -172,7 +163,7 @@ JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1, JUT_ASSERT(319, sectionHeap_->sectionHeapData_.soundNameTable == 0); { TPushCurrentHeap push(getHeap_()); - void* bstnDst; + void const* bstnDst = bstn; if (param_1) { bstnDst = newCopy(bstn, param_1, 4); JUT_ASSERT(326, bstnDst); @@ -304,13 +295,10 @@ void* JAUSection::newCopy(void const* param_0, u32 param_1, s32 param_2) { return r31; } -/* ############################################################################################## */ -/* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B974 = "index out of range of bitset::test"; -SECTION_DEAD static char const* const stringBase_8039B997 = "index out of range of bitset::set"; -#pragma pop +static bool dummy_string(int i) { + std::bitset<1> x; + return x.test(i); +} /* 802A5854-802A5948 2A0194 00F4+00 0/0 1/1 0/0 .text newWaveBank__10JAUSectionFUlPCv */ JASWaveBank* JAUSection::newWaveBank(u32 bank_no, void const* param_1) { diff --git a/src/JSystem/JGadget/binary.cpp b/src/JSystem/JGadget/binary.cpp index bcf397d64a..29b66e9a23 100644 --- a/src/JSystem/JGadget/binary.cpp +++ b/src/JSystem/JGadget/binary.cpp @@ -33,7 +33,6 @@ JGadget::binary::parseVariableUInt_16_32_following(void const* buffer, u32* para return rv; } - /* 802DC8C8-802DC910 2D7208 0048+00 0/0 4/4 0/0 .text * __dt__Q37JGadget6binary19TParse_header_blockFv */ JGadget::binary::TParse_header_block::~TParse_header_block() { @@ -69,4 +68,4 @@ bool JGadget::binary::TParse_header_block::parse_next(void const** ptrLocation, headerEnd--; } return checkLastBlock; -}
\ No newline at end of file +} diff --git a/src/JSystem/JGadget/std-vector.cpp b/src/JSystem/JGadget/std-vector.cpp index 4c03e7d164..90f163b50d 100644 --- a/src/JSystem/JGadget/std-vector.cpp +++ b/src/JSystem/JGadget/std-vector.cpp @@ -19,6 +19,10 @@ JGadget::TVector_pointer_void::TVector_pointer_void(JGadget::TAllocator<void*> c JGadget::TVector_pointer_void::~TVector_pointer_void() { } +void dummy_weak_order(JGadget::TVector<void*> vec) { + vec.insert(NULL, 0, NULL); +} + /* 802DCDA4-802DCDC4 2D76E4 0020+00 0/0 1/1 0/0 .text * insert__Q27JGadget20TVector_pointer_voidFPPvRCPv */ void JGadget::TVector_pointer_void::insert(void** param_0, void* const& param_1) { diff --git a/src/JSystem/JKernel/JKRAramArchive.cpp b/src/JSystem/JKernel/JKRAramArchive.cpp index 00dde15cd9..c4600ec372 100644 --- a/src/JSystem/JKernel/JKRAramArchive.cpp +++ b/src/JSystem/JKernel/JKRAramArchive.cpp @@ -10,95 +10,9 @@ #include "JSystem/JKernel/JKRDvdFile.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTException.h" -#include "dol2asm.h" #include "math.h" #include "string.h" -// -// Forward References: -// - -extern "C" void __ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection(); -extern "C" void __dt__14JKRAramArchiveFv(); -extern "C" void open__14JKRAramArchiveFl(); -extern "C" void fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl(); -extern "C" void fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl(); -extern "C" void getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry(); -extern "C" void getAramAddress__14JKRAramArchiveFPCc(); -extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli(); -extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc(); -extern "C" void getExpandedResSize__14JKRAramArchiveCFPCv(); -extern "C" void __dt__7JKRFileFv(); -extern "C" extern char const* const JKRAramArchive__stringBase0; - -// -// External References: -// - -extern "C" void alloc__7JKRHeapFUliP7JKRHeap(); -extern "C" void alloc__7JKRHeapFUli(); -extern "C" void free__7JKRHeapFPvP7JKRHeap(); -extern "C" void free__7JKRHeapFPv(); -extern "C" void copyMemory__7JKRHeapFPvPvUl(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __dt__11JKRDisposerFv(); -extern "C" void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl(); -extern "C" void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode(); -extern "C" void unmount__13JKRFileLoaderFv(); -extern "C" void becomeCurrent__10JKRArchiveFPCc(); -extern "C" void getResource__10JKRArchiveFPCc(); -extern "C" void getResource__10JKRArchiveFUlPCc(); -extern "C" void readResource__10JKRArchiveFPvUlUlPCc(); -extern "C" void readResource__10JKRArchiveFPvUlPCc(); -extern "C" void removeResourceAll__10JKRArchiveFv(); -extern "C" void removeResource__10JKRArchiveFPv(); -extern "C" void detachResource__10JKRArchiveFPv(); -extern "C" void getResSize__10JKRArchiveCFPCv(); -extern "C" void countFile__10JKRArchiveCFPCc(); -extern "C" void getFirstFile__10JKRArchiveCFPCc(); -extern "C" void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode(); -extern "C" void __dt__10JKRArchiveFv(); -extern "C" void findFsResource__10JKRArchiveCFPCcUl(); -extern "C" void findPtrResource__10JKRArchiveCFPCv(); -extern "C" void setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl(); -extern "C" void getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry(); -extern "C" void __ct__10JKRDvdFileFl(); -extern "C" void -loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl(); -extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(); -extern "C" void prepend__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void panic_f__12JUTExceptionFPCciPCce(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 sVolumeList__13JKRFileLoader[12]; -extern "C" u8 sSystemHeap__7JKRHeap[4]; -extern "C" u8 sAramObject__7JKRAram[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803CC328-803CC348 029448 0020+00 1/1 4/4 0/0 .data __vt__7JKRFile */ -SECTION_DATA extern void* __vt__7JKRFile[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__7JKRFileFv, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - /* 802D70C0-802D7168 2D1A00 00A8+00 0/0 1/1 0/0 .text * __ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection */ JKRAramArchive::JKRAramArchive(s32 entryNumber, JKRArchive::EMountDirection mountDirection) @@ -424,9 +338,3 @@ u32 JKRAramArchive::getExpandedResSize(const void* ptr) const { ((JKRArchive*)this)->setExpandSize(entry, expandSize); return expandSize; } - -/* 802D7B90-802D7BF0 2D24D0 0060+00 1/0 0/0 0/0 .text __dt__7JKRFileFv */ -// JKRFile::~JKRFile() { -extern "C" void __dt__7JKRFileFv() { - // NONMATCHING -}
\ No newline at end of file diff --git a/src/JSystem/JKernel/JKRDvdAramRipper.cpp b/src/JSystem/JKernel/JKRDvdAramRipper.cpp index f6cbd48da0..9d080e3620 100644 --- a/src/JSystem/JKernel/JKRDvdAramRipper.cpp +++ b/src/JSystem/JKernel/JKRDvdAramRipper.cpp @@ -17,59 +17,6 @@ static u8* firstSrcData(); static u8* nextSrcData(u8*); static u32 dmaBufferFlush(u32); -extern "C" void __dt__18JSUFileInputStreamFv(); -extern "C" static int JKRDecompressFromDVDToAram__FP10JKRDvdFileUlUlUlUlUlPUl(); -extern "C" static int decompSZS_subroutine__FPUcUl(); -extern "C" static u8* firstSrcData__Fv(); -extern "C" static u8* nextSrcData__FPUc(); -extern "C" static int dmaBufferFlush__FUl(); -extern "C" void __sinit_JKRDvdAramRipper_cpp(); -extern "C" void func_802DB62C(void* _this); -extern "C" u8 sDvdAramAsyncList__16JKRDvdAramRipper[12]; -extern "C" u32 sSZSBufferSize__16JKRDvdAramRipper; - -// -// External References: -// - -extern "C" void alloc__7JKRHeapFUli(); -extern "C" void free__7JKRHeapFPvP7JKRHeap(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode(); -extern "C" void orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock(); -extern "C" void write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl(); -extern "C" void sync__13JKRAramStreamFP20JKRAramStreamCommandi(); -extern "C" void checkCompressed__9JKRDecompFPUc(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __dt__14JSUInputStreamFv(); -extern "C" void __ct__18JSUFileInputStreamFP7JKRFile(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__20JSURandomInputStream[9]; -extern "C" extern void* __vt__18JSUFileInputStream[9 + 1 /* padding */]; -extern "C" u8 sSystemHeap__7JKRHeap[4]; -extern "C" u8 sAramObject__7JKRAram[4]; -extern "C" bool errorRetry__16JKRDvdAramRipper; - -// -// Declarations: -// - /* 802DA874-802DA918 2D51B4 00A4+00 0/0 3/3 0/0 .text * loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl */ JKRAramBlock* JKRDvdAramRipper::loadToAram(s32 entryNumber, u32 address, @@ -249,12 +196,6 @@ JKRADCommand* JKRDvdAramRipper::callCommand_Async(JKRADCommand* command) { return bVar1 == true ? command : NULL; } -/* 802DADD8-802DAE48 2D5718 0070+00 0/0 1/0 0/0 .text __dt__18JSUFileInputStreamFv */ -// JSUFileInputStream::~JSUFileInputStream() { -extern "C" void __dt__18JSUFileInputStreamFv() { - // NONMATCHING -} - /* 802DAE48-802DAF1C 2D5788 00D4+00 1/1 0/0 0/0 .text * syncAram__16JKRDvdAramRipperFP12JKRADCommandi */ bool JKRDvdAramRipper::syncAram(JKRADCommand* command, int param_1) { @@ -295,7 +236,6 @@ JKRADCommand::~JKRADCommand() { } } -/* ############################################################################################## */ /* 804343C0-804343D8 0610E0 0018+00 1/1 0/0 0/0 .bss decompMutex */ static OSMutex decompMutex; @@ -518,11 +458,14 @@ static u8* firstSrcData() { } /* 802DB49C-802DB580 2D5DDC 00E4+00 1/1 0/0 0/0 .text nextSrcData__FPUc */ -// NONMATCHING - regalloc static u8* nextSrcData(u8* src) { - u8* dest; u32 size = szpEnd - src; - dest = IS_NOT_ALIGNED(size, 0x20) ? szpBuf + 0x20 - (size & (0x20 - 1)) : szpBuf; + u8* dest; + if (IS_NOT_ALIGNED(size, 0x20)) { + dest = szpBuf + 0x20 - (size & (0x20 - 1)); + } else { + dest = szpBuf; + } memcpy(dest, src, size); u32 transSize = szpEnd - (dest + size); if (transSize > transLeft) { @@ -530,11 +473,11 @@ static u8* nextSrcData(u8* src) { } while (true) { - s32 result = DVDReadPrio(&srcFile->mFileInfo, dest + size, transSize, srcOffset, 2); + s32 result = DVDReadPrio(srcFile->getFileInfo(), dest + size, transSize, srcOffset, 2); if (result >= 0) { break; } - if (JKRDvdAramRipper::errorRetry == 0) { + if (!JKRDvdAramRipper::isErrorRetry()) { return NULL; } VIWaitForRetrace(); diff --git a/src/JSystem/JMessage/control.cpp b/src/JSystem/JMessage/control.cpp index 4df07dd994..321de9a6a2 100644 --- a/src/JSystem/JMessage/control.cpp +++ b/src/JSystem/JMessage/control.cpp @@ -5,24 +5,6 @@ #include "JSystem/JMessage/control.h" -// -// External References: -// - -extern "C" void reset__Q28JMessage10TProcessorFv(); -extern "C" void getResource_groupID__Q28JMessage10TProcessorCFUs(); -extern "C" void toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb(); -extern "C" void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process__Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void process__Q28JMessage19TRenderingProcessorFPCc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); - -// -// Declarations: -// - /* 802A7548-802A758C 2A1E88 0044+00 0/0 2/2 0/0 .text __ct__Q28JMessage8TControlFv */ JMessage::TControl::TControl() : pSequenceProcessor_(NULL), pRenderingProcessor_(NULL), messageCode_(0xFFFF), @@ -66,7 +48,6 @@ int JMessage::TControl::update() { } /* 802A76BC-802A77E8 2A1FFC 012C+00 0/0 5/5 0/0 .text render__Q28JMessage8TControlFv */ -// NONMATCHING void JMessage::TControl::render() { if (isReady_render_()) { pRenderingProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, field_0x20); diff --git a/src/JSystem/JMessage/locale.cpp b/src/JSystem/JMessage/locale.cpp index ad40686faa..93ea6af5ea 100644 --- a/src/JSystem/JMessage/locale.cpp +++ b/src/JSystem/JMessage/locale.cpp @@ -6,39 +6,16 @@ #include "JSystem/JMessage/locale.h" #include <dolphin.h> -// -// Forward References: -// - -extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc(); - -// -// External References: -// - -// -// Declarations: -// - /* 802A9528-802A958C 2A3E68 0064+00 0/0 1/0 0/0 .text * parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc */ -// NONMATCHING int JMessage::locale::parseCharacter_ShiftJIS(char const** str) { - int c; - int ret; - u8* temp_r4_2; - u8* temp_r5; - - temp_r5 = (u8*)*str; - c = *temp_r5; - ret = c; - + u8 c = **str; + int ret = c; *str = *str + 1; if (isLeadByte_ShiftJIS(c)) { - temp_r4_2 = (u8*)*str; - ret = (c << 8) | *temp_r4_2; + ret <<= 8; + ret |= *(u8*)*str; *str = *str + 1; } @@ -47,6 +24,37 @@ int JMessage::locale::parseCharacter_ShiftJIS(char const** str) { /* 802A958C-802A968C 2A3ECC 0100+00 0/0 1/0 0/0 .text parseCharacter_UTF8__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_UTF8(char const** param_0) { - // NONMATCHING +int JMessage::locale::parseCharacter_UTF8(char const** str) { + int c = *(u8*)*str; + int ret = c; + *str = *str + 1; + + if (c & 0x80) { + if ((c & 0xe0) == 0xc0) { + ret = (ret & 0x1f) << 6; + ret |= **str & 0x3f; + *str = *str + 1; + } else if ((c & 0xf0) == 0xe0) { + ret = (ret & 0xf) << 6; + ret |= **str & 0x3f; + *str = *str + 1; + ret <<= 6; + ret |= **str & 0x3f; + *str = *str + 1; + } else if ((c & 0xf8) == 0xf0) { + ret = (ret & 0x7) << 6; + ret |= **str & 0x3f; + *str = *str + 1; + ret <<= 6; + ret |= **str & 0x3f; + *str = *str + 1; + ret <<= 6; + ret |= **str & 0x3f; + *str = *str + 1; + } else { + ret = -1; + } + } + + return ret; } diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp index fe33fcddd7..7df27c1ada 100644 --- a/src/JSystem/JMessage/processor.cpp +++ b/src/JSystem/JMessage/processor.cpp @@ -7,102 +7,6 @@ #include "JSystem/JMessage/control.h" #include "JSystem/JUtility/JUTAssert.h" -// -// Forward References: -// - -extern "C" void __dt__Q28JMessage10TReferenceFv(); -extern "C" bool do_word__Q28JMessage10TReferenceCFUl(); -extern "C" void __dt__Q28JMessage10TProcessorFv(); -extern "C" void reset__Q28JMessage10TProcessorFv(); -extern "C" void stack_pushCurrent__Q28JMessage10TProcessorFPCc(); -extern "C" void stack_popCurrent__Q28JMessage10TProcessorFv(); -extern "C" void getResource_groupID__Q28JMessage10TProcessorCFUs(); -extern "C" void toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb(); -extern "C" void on_select_begin__Q28JMessage10TProcessorFPFPQ28JMessage10TProcessor_PCcPCvPCcUl(); -extern "C" void on_select_end__Q28JMessage10TProcessorFv(); -extern "C" void on_select_separate__Q28JMessage10TProcessorFv(); -extern "C" void do_reset__Q28JMessage10TProcessorFv(); -extern "C" void do_begin__Q28JMessage10TProcessorFPCvPCc(); -extern "C" void do_end__Q28JMessage10TProcessorFv(); -extern "C" void do_character__Q28JMessage10TProcessorFi(); -extern "C" bool do_tag__Q28JMessage10TProcessorFUlPCvUl(); -extern "C" void do_select_begin__Q28JMessage10TProcessorFUl(); -extern "C" void do_select_end__Q28JMessage10TProcessorFv(); -extern "C" void do_select_separate__Q28JMessage10TProcessorFv(); -extern "C" void on_tag___Q28JMessage10TProcessorFv(); -extern "C" void do_resetStatus___Q28JMessage10TProcessorFPCc(); -extern "C" bool do_setBegin_isReady___Q28JMessage10TProcessorCFv(); -extern "C" void do_tag___Q28JMessage10TProcessorFUlPCvUl(); -extern "C" void process_character___Q28JMessage10TProcessorFv(); -extern "C" void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onCharacterEnd_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void -__ct__Q28JMessage18TSequenceProcessorFPCQ28JMessage10TReferencePQ28JMessage8TControl(); -extern "C" void __dt__Q28JMessage18TSequenceProcessorFv(); -extern "C" void process__Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void on_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void -on_jump_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessor_PCvUl(); -extern "C" void on_jump_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void on_jump__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void -on_branch_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessorUl_PCvPCvUl(); -extern "C" void on_branch_query__Q28JMessage18TSequenceProcessorFUl(); -extern "C" void on_branch_queryResult__Q28JMessage18TSequenceProcessorFv(); -extern "C" void on_branch__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" bool do_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" bool do_jump_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_jump__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void do_branch_query__Q28JMessage18TSequenceProcessorFUl(); -extern "C" s32 do_branch_queryResult__Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_branch__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void do_resetStatus___Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void do_setBegin_isReady___Q28JMessage18TSequenceProcessorCFv(); -extern "C" void do_begin___Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void do_end___Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl(); -extern "C" void process_setMessageIndex_reserved___Q28JMessage18TSequenceProcessorFUs(); -extern "C" void -process_setMessageCode___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUsUs(); -extern "C" void -process_onJump_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor(); -extern "C" void -process_onJump___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor(); -extern "C" void -process_onBranch_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl(); -extern "C" void -process_onBranch___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl(); -extern "C" void __ct__Q28JMessage19TRenderingProcessorFPCQ28JMessage10TReference(); -extern "C" void __dt__Q28JMessage19TRenderingProcessorFv(); -extern "C" void process__Q28JMessage19TRenderingProcessorFPCc(); -extern "C" void do_begin___Q28JMessage19TRenderingProcessorFPCvPCc(); -extern "C" void do_end___Q28JMessage19TRenderingProcessorFv(); -extern "C" void do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl(); -extern "C" void on_message__Q28JMessage10TProcessorCFUl(); -extern "C" void getMessageText_messageCode__Q28JMessage10TProcessorCFUl(); - -// -// External References: -// - -extern "C" void setMessageCode_inSequence___Q28JMessage8TControlFPCQ28JMessage10TProcessorUsUs(); -extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb(); -extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - /* 802A7AF8-802A7B40 2A2438 0048+00 1/0 2/2 0/0 .text __dt__Q28JMessage10TReferenceFv */ JMessage::TReference::~TReference() {} @@ -152,13 +56,14 @@ const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 groupID /* 802A7CD4-802A7E38 2A2614 0164+00 0/0 1/1 0/0 .text * toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb */ -// NONMATCHING - TContainerEnumerator_const stack issues -u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, - bool* param_2) const { +// NONMATCHING regalloc +u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, bool* param_2) const { const TResource* this_00 = getResourceCache(); - u16 uVar4; - if (this_00 != NULL && (uVar4 = this_00->toMessageIndex_messageID(param_0, param_1, param_2)) != 0xffff) { - return uVar4 | (this_00->getGroupID() << 16); + if (this_00 != NULL) { + u16 uVar4 = this_00->toMessageIndex_messageID(param_0, param_1, param_2); + if (uVar4 != 0xffff) { + return uVar4 | (this_00->getGroupID() << 16); + } } TResourceContainer* this_01 = getResourceContainer(); if (this_01 == NULL) { @@ -167,13 +72,15 @@ u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, JGadget::TContainerEnumerator_const<JMessage::TResource, 0> enumerator(this_01->getResourceContainer()); const TResource* this_02; - while (!enumerator) { + while (enumerator) { this_02 = (const TResource*)&(*enumerator); - if (this_02 == this_00 || (uVar4 = this_02->toMessageIndex_messageID(param_0, param_1, param_2)) == 0xffff) { - continue; + if (this_02 != this_00) { + u16 uVar4 = this_02->toMessageIndex_messageID(param_0, param_1, param_2); + if (uVar4 != 0xffff) { + ((JMessage::TProcessor*)this)->pResourceCache_ = this_02; + return uVar4 | (this_02->getGroupID() << 0x10); + } } - ((JMessage::TProcessor*)this)->pResourceCache_ = this_02; - return uVar4 | (this_02->getGroupID() << 0x10); } return -1; } @@ -280,11 +187,11 @@ void JMessage::TProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { switch (code) { case 4: stack_pushCurrent( - on_word(JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(data))); + on_word(JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(data))); break; case 5: stack_pushCurrent(on_message( - JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(data))); + JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(data))); break; } break; @@ -353,7 +260,7 @@ bool JMessage::TProcessor::process_onCharacterEnd_select_(JMessage::TProcessor* /* 802A833C-802A8358 2A2C7C 001C+00 1/1 0/0 0/0 .text * process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor* pThis) { - u16 data = JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse((u16*)pThis->oProcess_.rData.pOffset); + u16 data = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse((u16*)pThis->oProcess_.rData.pOffset); pThis->oProcess_.rData.pOffset = (void*)((u8*)pThis->oProcess_.rData.pOffset + 2); @@ -364,7 +271,7 @@ const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor /* 802A8358-802A8374 2A2C98 001C+00 1/1 0/0 0/0 .text * process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ const char* JMessage::TProcessor::process_onSelect_(JMessage::TProcessor* pThis) { - u32 data = JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse((u32*)pThis->oProcess_.rData.pOffset); + u32 data = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse((u32*)pThis->oProcess_.rData.pOffset); pThis->oProcess_.rData.pOffset = (void*)((u8*)pThis->oProcess_.rData.pOffset + 4); @@ -388,7 +295,7 @@ const char* JMessage::TSequenceProcessor::process(char const* param_0) { switch (eStatus_) { case STATUS_NORMAL: break; - case STATUS_JUMP: + case STATUS_JUMP: { if (!on_jump_isReady()) { return pszCurrent_; } @@ -399,6 +306,7 @@ const char* JMessage::TSequenceProcessor::process(char const* param_0) { on_jump(data, pControl_->getMessageText_begin()); } break; + } case STATUS_BRANCH: u32 tmp = on_branch_queryResult(); if (tmp > 0x7FFFFFFF) { @@ -564,10 +472,11 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize case 2: case 3: break; - case 6: - u32 tmp = JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(temp); + case 6: { + u32 tmp = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(temp); on_jump_register(process_onJump_, tmp); break; + } case 7: break; default: @@ -589,12 +498,12 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize break; case 0xF8: on_branch_register(process_onBranch_limited_, temp + 2, - JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse(temp)); + JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(temp)); on_branch_query(code); break; case 0xF7: on_branch_register(process_onBranch_, temp + 2, - JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse(temp)); + JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(temp)); on_branch_query(code); break; default: @@ -608,9 +517,10 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize // NONMATCHING void JMessage::TSequenceProcessor::process_setMessageIndex_reserved_(u16 u16Index) { JUT_ASSERT(890, u16Index >= 0xff00); - if (u16Index != -1) { + switch (u16Index) { + case 0xffff: return; - } + } } /* 802A8944-802A89B8 2A3284 0074+00 4/4 0/0 0/0 .text @@ -651,7 +561,7 @@ const void* JMessage::TSequenceProcessor::process_onBranch_limited_(JMessage::TSequenceProcessor const* param_0, u32 uTargetIndex) { return process_setMessageIndex_( - param_0, JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse( + param_0, JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse( param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); } @@ -661,7 +571,7 @@ const void* JMessage::TSequenceProcessor::process_onBranch_(JMessage::TSequenceProcessor const* param_0, u32 uTargetIndex) { return process_setMessageCode_( - param_0, JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse( + param_0, JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse( param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); } @@ -729,14 +639,3 @@ void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSiz break; } } - -/* 802A8C24-802A8C44 2A3564 0020+00 1/1 0/0 0/0 .text on_message__Q28JMessage10TProcessorCFUl */ -const char* JMessage::TProcessor::on_message(u32 param_0) const { - return getMessageText_messageCode(param_0); -} - -/* 802A8C44-802A8CDC 2A3584 0098+00 1/1 0/0 0/0 .text - * getMessageText_messageCode__Q28JMessage10TProcessorCFUl */ -const char* JMessage::TProcessor::getMessageText_messageCode(u32 param_0) const { - return getMessageText_messageCode(param_0 >> 0x10, param_0 & 0xFFFF); -} diff --git a/src/JSystem/JMessage/resource.cpp b/src/JSystem/JMessage/resource.cpp index 7c829f5ab7..b3fac0ab0d 100644 --- a/src/JSystem/JMessage/resource.cpp +++ b/src/JSystem/JMessage/resource.cpp @@ -4,71 +4,15 @@ // #include "JSystem/JMessage/resource.h" +#include "JSystem/JGadget/search.h" #include <algorithm.h> -#include "dol2asm.h" #include "string.h" -// -// Types: -// - -namespace std { -template <typename A1, typename B1> -void lower_bound(/* ... */); -/* 802A94D4 */ /* std::lower_bound<u32 const*, u32> */ -void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); -}; // namespace std - -// -// Forward References: -// - -extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb(); -extern "C" void __ct__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void __dt__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs(); -extern "C" void Do_create__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource(); -extern "C" void __ct__Q28JMessage18TResourceContainerFv(); -extern "C" void setEncoding__Q28JMessage18TResourceContainerFUc(); -extern "C" void setEncoding___Q28JMessage18TResourceContainerFUc(); -extern "C" void __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer(); -extern "C" void __dt__Q28JMessage6TParseFv(); -extern "C" void parseHeader_next__Q28JMessage6TParseFPPCvPUlUl(); -extern "C" void parseBlock_next__Q28JMessage6TParseFPPCvPUlUl(); -extern "C" void parseCharacter_1Byte__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_2Byte__Q28JMessage6localeFPPCc(); -extern "C" void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); -extern "C" void* sapfnParseCharacter___Q28JMessage18TResourceContainer[5]; - -// -// External References: -// - -extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv(); -extern "C" void __dt__Q27JGadget13TNodeLinkListFv(); -extern "C" void -Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); -extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5]; -extern "C" f32 ga4cSignature__Q28JMessage4data[1 + 1 /* padding */]; - -// -// Declarations: -// - /* 802A8CDC-802A8EC0 2A361C 01E4+00 0/0 1/1 0/0 .text * toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb */ -// NONMATCHING - instruction order u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, bool* isMsgValid) const { - if (!mMessageID.get()) { + if (!mMessageID.getRaw()) { return 0xFFFF; } @@ -118,21 +62,19 @@ u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, return 0xFFFF; } - const u32* first = (u32*)mMessageID.getContent(); - const u32* last = (u32*)(first + mMessageID.get_number()); + int number = mMessageID.get_number(); + const u32* first = mMessageID.getContent(); + const u32* last = first + number; const u32* lower; if (mMessageID.get_isOrdered()) { - lower = std::lower_bound<const u32*, u32>(first, last, val); + lower = std::lower_bound(first, last, val); if (lower == last || *lower != val) { return 0xFFFF; } } else { - lower = first; - while (lower != last && *lower != val) { - lower++; - } + lower = std::find(first, last, val); if (lower == last) { return 0xFFFF; } @@ -150,41 +92,12 @@ JMessage::locale::parseCharacter_function JMessage::TResourceContainer::sapfnPar JMessage::locale::parseCharacter_UTF8, }; -/* 803C9C94-803C9CA8 026DB4 0014+00 2/2 0/0 0/0 .data __vt__Q28JMessage6TParse */ -SECTION_DATA extern void* __vt__Q28JMessage6TParse[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q28JMessage6TParseFv, - (void*)parseHeader_next__Q28JMessage6TParseFPPCvPUlUl, - (void*)parseBlock_next__Q28JMessage6TParseFPPCvPUlUl, -}; - -/* 803C9CA8-803C9CBC 026DC8 0014+00 2/2 0/0 0/0 .data - * __vt__Q38JMessage18TResourceContainer10TCResource */ -SECTION_DATA extern void* __vt__Q38JMessage18TResourceContainer10TCResource[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q38JMessage18TResourceContainer10TCResourceFv, - (void*)Do_create__Q38JMessage18TResourceContainer10TCResourceFv, - (void*)Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource, -}; - -/* 803C9CBC-803C9CD0 026DDC 0014+00 2/2 0/0 0/0 .data - * __vt__Q27JGadget42TLinkList_factory<Q28JMessage9TResource,0> */ -SECTION_DATA extern void* data_803C9CBC[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - /* 802A8EC0-802A8EF8 2A3800 0038+00 1/1 0/0 0/0 .text * __ct__Q38JMessage18TResourceContainer10TCResourceFv */ -// need to fix TLinkList_factory vtable stuff -JMessage::TResourceContainer::TCResource::TCResource() { - // NONMATCHING -} +JMessage::TResourceContainer::TCResource::TCResource() {} /* 802A8EF8-802A8F6C 2A3838 0074+00 1/0 2/2 0/0 .text * __dt__Q38JMessage18TResourceContainer10TCResourceFv */ -// need to fix TLinkList_factory vtable stuff JMessage::TResourceContainer::TCResource::~TCResource() {} /* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text @@ -209,6 +122,7 @@ JMessage::TResource* JMessage::TResourceContainer::TCResource::Do_create() { /* 802A9048-802A906C 2A3988 0024+00 1/0 0/0 0/0 .text * Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource */ +// NONMATCHING extra null comparison void JMessage::TResourceContainer::TCResource::Do_destroy(JMessage::TResource* param_0) { delete param_0; } @@ -247,7 +161,7 @@ JMessage::TParse::~TParse() {} /* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text * parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */ -// NONMATCHING +// NONMATCHING regalloc, missing clrlwi bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_2) { const void* pData = *ppData_inout; @@ -317,9 +231,3 @@ int JMessage::locale::parseCharacter_2Byte(char const** string) { return parse_char; } - -/* 802A94D4-802A9528 2A3E14 0054+00 1/1 0/0 0/0 .text lower_bound<PCUl,Ul>__3stdFPCUlPCUlRCUl */ -/* extern "C" void func_802A94D4(void* _this, u32 const* param_0, u32 const* param_1, - u32 const& param_2) { - // NONMATCHING -} */ diff --git a/src/JSystem/JStudio/JStudio/ctb.cpp b/src/JSystem/JStudio/JStudio/ctb.cpp index f24235d5f5..aeb7ba1de8 100644 --- a/src/JSystem/JStudio/JStudio/ctb.cpp +++ b/src/JSystem/JStudio/JStudio/ctb.cpp @@ -6,123 +6,15 @@ #include "JSystem/JStudio/JStudio/ctb.h" #include "iterator.h" #include "string.h" -#include "dol2asm.h" #include <algorithm.h> -// -// Types: -// - -namespace std { -void func_802815B4(void* _this, JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator, - JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator, JStudio::object::TPRObject_ID_equal); -}; // namespace std - -// -// Forward References: -// - -extern "C" void __dt__Q37JStudio3ctb7TObjectFv(); -extern "C" void __ct__Q37JStudio3ctb14TObject_TxyzRyFRCQ47JStudio3ctb4data13TParse_TBlock(); -extern "C" bool getScheme__Q37JStudio3ctb14TObject_TxyzRyCFv(); -extern "C" void __ct__Q37JStudio3ctb8TControlFv(); -extern "C" void __dt__Q37JStudio3ctb8TControlFv(); -extern "C" void appendObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject(); -extern "C" void removeObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject(); -extern "C" void destroyObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject(); -extern "C" void destroyObject_all__Q37JStudio3ctb8TControlFv(); -extern "C" void getObject__Q37JStudio3ctb8TControlFPCvUl(); -extern "C" void getObject_index__Q37JStudio3ctb8TControlFUl(); -extern "C" void __dt__Q37JStudio3ctb8TFactoryFv(); -extern "C" void create__Q37JStudio3ctb8TFactoryFRCQ47JStudio3ctb4data13TParse_TBlock(); -extern "C" void destroy__Q37JStudio3ctb8TFactoryFPQ37JStudio3ctb7TObject(); -extern "C" void __ct__Q37JStudio3ctb6TParseFPQ37JStudio3ctb8TControl(); -extern "C" void __dt__Q37JStudio3ctb6TParseFv(); -extern "C" void parseHeader_next__Q37JStudio3ctb6TParseFPPCvPUlUl(); -extern "C" void parseBlock_next__Q37JStudio3ctb6TParseFPPCvPUlUl(); -extern "C" void __dt__Q37JStudio3ctb14TObject_TxyzRyFv(); -extern "C" void func_802815B4(void* _this, JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator, - JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator, - JStudio::object::TPRObject_ID_equal); - -// -// External References: -// - -extern "C" void -isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv(); -extern "C" void __dt__Q27JGadget13TNodeLinkListFv(); -extern "C" void -Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); -extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" u32 ga4cSignature__Q37JStudio3ctb4data[1 + 1 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C4878-803C488C 021998 0014+00 2/2 0/0 0/0 .data __vt__Q37JStudio3ctb6TParse */ -SECTION_DATA extern void* __vt__Q37JStudio3ctb6TParse[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3ctb6TParseFv, - (void*)parseHeader_next__Q37JStudio3ctb6TParseFPPCvPUlUl, - (void*)parseBlock_next__Q37JStudio3ctb6TParseFPPCvPUlUl, -}; - -/* 803C488C-803C48A0 0219AC 0014+00 1/1 4/4 0/0 .data __vt__Q37JGadget6binary19TParse_header_block - */ -SECTION_DATA extern void* __vt__Q37JGadget6binary19TParse_header_block[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - -/* 803C48A0-803C48B4 0219C0 0014+00 1/1 1/1 0/0 .data __vt__Q37JStudio3ctb8TFactory */ -SECTION_DATA extern void* __vt__Q37JStudio3ctb8TFactory[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3ctb8TFactoryFv, - (void*)create__Q37JStudio3ctb8TFactoryFRCQ47JStudio3ctb4data13TParse_TBlock, - (void*)destroy__Q37JStudio3ctb8TFactoryFPQ37JStudio3ctb7TObject, -}; - -/* 803C48B4-803C48C0 0219D4 000C+00 2/2 0/0 0/0 .data __vt__Q37JStudio3ctb8TControl */ -SECTION_DATA extern void* __vt__Q37JStudio3ctb8TControl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3ctb8TControlFv, -}; - -/* 803C48C0-803C48D0 0219E0 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3ctb14TObject_TxyzRy */ -SECTION_DATA extern void* __vt__Q37JStudio3ctb14TObject_TxyzRy[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3ctb14TObject_TxyzRyFv, - (void*)getScheme__Q37JStudio3ctb14TObject_TxyzRyCFv, -}; - -/* 803C48D0-803C48E0 0219F0 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3ctb7TObject */ -SECTION_DATA extern void* __vt__Q37JStudio3ctb7TObject[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - /* 80280F18-80280F60 27B858 0048+00 1/1 0/0 0/0 .text __dt__Q37JStudio3ctb7TObjectFv */ -JStudio::ctb::TObject::~TObject() { -} +JStudio::ctb::TObject::~TObject() {} /* 80280F60-80280FBC 27B8A0 005C+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3ctb14TObject_TxyzRyFRCQ47JStudio3ctb4data13TParse_TBlock */ -JStudio::ctb::TObject_TxyzRy::TObject_TxyzRy(JStudio::ctb::data::TParse_TBlock const& param_0) : TObject(param_0.get_ID(), param_0.get_IDSize(), param_0.getContent()) { - -} +JStudio::ctb::TObject_TxyzRy::TObject_TxyzRy(JStudio::ctb::data::TParse_TBlock const& param_0) + : TObject(param_0.get_ID(), param_0.get_IDSize(), param_0.getContent()) {} /* 80280FBC-80280FC4 27B8FC 0008+00 1/0 0/0 0/0 .text getScheme__Q37JStudio3ctb14TObject_TxyzRyCFv */ @@ -134,10 +26,7 @@ int JStudio::ctb::TObject_TxyzRy::getScheme() const { JStudio::ctb::TControl::TControl() : pFactory_(NULL) {} /* 80280FF4-80281060 27B934 006C+00 1/0 1/1 0/0 .text __dt__Q37JStudio3ctb8TControlFv */ -// JStudio::ctb::TControl::~TControl() { -extern "C" void __dt__Q37JStudio3ctb8TControlFv() { - // NONMATCHING -} +JStudio::ctb::TControl::~TControl() {} /* 80281060-802810AC 27B9A0 004C+00 1/1 0/0 0/0 .text * appendObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject */ @@ -190,10 +79,7 @@ JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) { } /* 80281274-802812BC 27BBB4 0048+00 1/0 1/1 0/0 .text __dt__Q37JStudio3ctb8TFactoryFv */ -// JStudio::ctb::TFactory::~TFactory() { -extern "C" void __dt__Q37JStudio3ctb8TFactoryFv() { - // NONMATCHING -} +JStudio::ctb::TFactory::~TFactory() {} /* 802812BC-80281320 27BBFC 0064+00 1/0 0/0 0/0 .text * create__Q37JStudio3ctb8TFactoryFRCQ47JStudio3ctb4data13TParse_TBlock */ @@ -214,15 +100,11 @@ void JStudio::ctb::TFactory::destroy(JStudio::ctb::TObject* param_0) { /* 8028135C-8028137C 27BC9C 0020+00 0/0 1/1 0/0 .text * __ct__Q37JStudio3ctb6TParseFPQ37JStudio3ctb8TControl */ -JStudio::ctb::TParse::TParse(JStudio::ctb::TControl* param_0) { - // NONMATCHING -} +// NONMATCHING TParse_header_block vtable location +JStudio::ctb::TParse::TParse(JStudio::ctb::TControl* param_0) : pControl_(param_0) {} /* 8028137C-802813DC 27BCBC 0060+00 1/0 1/1 0/0 .text __dt__Q37JStudio3ctb6TParseFv */ -// JStudio::ctb::TParse::~TParse() { -extern "C" void __dt__Q37JStudio3ctb6TParseFv() { - // NONMATCHING -} +JStudio::ctb::TParse::~TParse() {} /* 802813DC-80281470 27BD1C 0094+00 1/0 0/0 0/0 .text * parseHeader_next__Q37JStudio3ctb6TParseFPPCvPUlUl */ @@ -283,18 +165,3 @@ bool JStudio::ctb::TParse::parseBlock_next(void const** ppData_inout, u32* puDat pControl->appendObject(pTVar6); return true; } - -/* 80281554-802815B4 27BE94 0060+00 1/0 0/0 0/0 .text __dt__Q37JStudio3ctb14TObject_TxyzRyFv */ -// JStudio::ctb::TObject_TxyzRy::~TObject_TxyzRy() { -extern "C" void __dt__Q37JStudio3ctb14TObject_TxyzRyFv() { - // NONMATCHING -} - -/* 802815B4-80281648 27BEF4 0094+00 1/1 0/0 0/0 .text - * find_if<Q37JGadget37TLinkList<Q37JStudio3ctb7TObject,-12>8iterator,Q37JStudio6object18TPRObject_ID_equal>__3stdFQ37JGadget37TLinkList<Q37JStudio3ctb7TObject,-12>8iteratorQ37JGadget37TLinkList<Q37JStudio3ctb7TObject,-12>8iteratorQ37JStudio6object18TPRObject_ID_equal - */ -extern "C" void func_802815B4(void* _this, JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator param_0, - JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator param_1, - JStudio::object::TPRObject_ID_equal param_2) { - // NONMATCHING -} diff --git a/src/JSystem/JStudio/JStudio/functionvalue-inline.cpp b/src/JSystem/JStudio/JStudio/functionvalue-inline.cpp deleted file mode 100644 index 01267a4e7a..0000000000 --- a/src/JSystem/JStudio/JStudio/functionvalue-inline.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "JSystem/JStudio/JStudio/functionvalue.h" - -namespace std { -template <typename A1> -struct less {}; -/* less<f64> */ -struct less__template0 {}; - -template <typename A1, typename B1, typename C1> -void upper_bound(/* ... */); -}; // namespace std - -/* 80283E24-80283EB8 27E764 0094+00 1/1 0/0 0/0 .text - * upper_bound<Q37JStudio29TFunctionValue_list_parameter15TIterator_data_,d,Q23std7less<d>>__3stdFQ37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_RCdQ23std7less<d> - */ -#pragma force_active on -extern "C" inline void -func_80283E24(void* _this, JStudio::TFunctionValue_list_parameter::TIterator_data_ param_0, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_1, f64 const& param_2, - std::less<f64> param_3) { - // NONMATCHING -} - -/* 80283EB8-80283F80 27E7F8 00C8+00 1/1 0/0 0/0 .text - * upper_bound<Q37JStudio22TFunctionValue_hermite15TIterator_data_,d,Q23std7less<d>>__3stdFQ37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_RCdQ23std7less<d> - */ -#pragma force_active on -extern "C" inline void func_80283EB8(void* _this, - JStudio::TFunctionValue_hermite::TIterator_data_ param_0, - JStudio::TFunctionValue_hermite::TIterator_data_ param_1, - f64 const& param_2, std::less<f64> param_3) { - // NONMATCHING -}
\ No newline at end of file diff --git a/src/JSystem/JStudio/JStudio/functionvalue.cpp b/src/JSystem/JStudio/JStudio/functionvalue.cpp index a5e2c4437d..03c7a4c9ae 100644 --- a/src/JSystem/JStudio/JStudio/functionvalue.cpp +++ b/src/JSystem/JStudio/JStudio/functionvalue.cpp @@ -4,316 +4,12 @@ // #include "JSystem/JStudio/JStudio/functionvalue.h" +#include "JSystem/JGadget/search.h" #include "JSystem/JUtility/JUTException.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JGadget/linklist.h" #include "math.h" #include "stdlib.h" -#include "dol2asm.h" -#include "iterator.h" - -// -// Types: -// - -namespace JGadget { - -template <typename Iterator, typename B1> -Iterator findUpperBound_binary_current(Iterator, Iterator, Iterator, const B1&); -}; // namespace JGadget - -namespace std { -template <typename A1> -struct less {}; -/* less<f64> */ -struct less__template0 {}; - -template <typename A1, typename B1, typename C1> -void upper_bound(/* ... */); -/* 80283EB8 */ /* std::upper_bound<JStudio::TFunctionValue_hermite::TIterator_data_, f64, - std::less<f64>> */ -void func_80283EB8(void* _this, JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&, std::less<f64>); -/* 80283E24 */ /* std::upper_bound<JStudio::TFunctionValue_list_parameter::TIterator_data_, f64, - std::less<f64>> */ -void func_80283E24(void* _this, JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, f64 const&, - std::less<f64>); -}; // namespace std - -namespace JGadget { -/* 80283858 */ JStudio::TFunctionValue_hermite::TIterator_data_ -func_80283858(JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&); -/* 802835DC */ JStudio::TFunctionValue_list_parameter::TIterator_data_ -func_802835DC(JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, f64 const&); -/* 80283634 */ void func_80283634(void* _this, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - f64 const&, std::less<f64>); -/* 802838C8 */ void func_802838C8(void* _this, JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&, - std::less<f64>); -} // namespace JGadget - -// -// Forward References: -// - -extern "C" void toFunction_outside__Q27JStudio14TFunctionValueFi(); -extern "C" void __ct__Q27JStudio14TFunctionValueFv(); -extern "C" void __dt__Q27JStudio14TFunctionValueFv(); -extern "C" void refer_initialize__Q27JStudio29TFunctionValueAttribute_referFv(); -extern "C" void interpolateValue_hermite__Q27JStudio13functionvalueFddddddd(); -extern "C" void interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd(); -extern "C" void interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd(); -extern "C" void extrapolateParameter_turn__Q27JStudio13functionvalueFdd(); -extern "C" void range_initialize__Q27JStudio29TFunctionValueAttribute_rangeFv(); -extern "C" void range_prepare__Q27JStudio29TFunctionValueAttribute_rangeFv(); -extern "C" void range_set__Q27JStudio29TFunctionValueAttribute_rangeFdd(); -extern "C" void range_getParameter__Q27JStudio29TFunctionValueAttribute_rangeCFddd(); -extern "C" void __ct__Q27JStudio29TFunctionValueAttribute_rangeFv(); -extern "C" void __ct__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" bool getType__Q27JStudio24TFunctionValue_compositeCFv(); -extern "C" void getAttributeSet__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" void initialize__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" void prepare__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" void getValue__Q27JStudio24TFunctionValue_compositeFd(); -extern "C" void func_80281E5C(); -extern "C" void func_80281EC8(); -extern "C" void func_8028202C(); -extern "C" void func_80282094(); -extern "C" void func_80282118(); -extern "C" void func_80282200(); -extern "C" void func_80282284(); -extern "C" void __ct__Q27JStudio23TFunctionValue_constantFv(); -extern "C" s32 getType__Q27JStudio23TFunctionValue_constantCFv(); -extern "C" void getAttributeSet__Q27JStudio23TFunctionValue_constantFv(); -extern "C" void initialize__Q27JStudio23TFunctionValue_constantFv(); -extern "C" void prepare__Q27JStudio23TFunctionValue_constantFv(); -extern "C" void getValue__Q27JStudio23TFunctionValue_constantFd(); -extern "C" void __ct__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" s32 getType__Q27JStudio25TFunctionValue_transitionCFv(); -extern "C" void getAttributeSet__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" void initialize__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" void prepare__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" void getValue__Q27JStudio25TFunctionValue_transitionFd(); -extern "C" void __ct__Q27JStudio19TFunctionValue_listFv(); -extern "C" s32 getType__Q27JStudio19TFunctionValue_listCFv(); -extern "C" void getAttributeSet__Q27JStudio19TFunctionValue_listFv(); -extern "C" void initialize__Q27JStudio19TFunctionValue_listFv(); -extern "C" void prepare__Q27JStudio19TFunctionValue_listFv(); -extern "C" void getValue__Q27JStudio19TFunctionValue_listFd(); -extern "C" void -update_INTERPOLATE_NONE___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_(); -extern "C" void -update_INTERPOLATE_LINEAR___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_(); -extern "C" void -update_INTERPOLATE_PLATEAU___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_(); -extern "C" void -update_INTERPOLATE_BSPLINE_dataMore3___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_(); -extern "C" void __ct__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" s32 getType__Q27JStudio29TFunctionValue_list_parameterCFv(); -extern "C" void getAttributeSet__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" void data_set__Q27JStudio29TFunctionValue_list_parameterFPCfUl(); -extern "C" void initialize__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" void prepare__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" void getValue__Q27JStudio29TFunctionValue_list_parameterFd(); -extern "C" void -update_INTERPOLATE_NONE___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd(); -extern "C" void -update_INTERPOLATE_LINEAR___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd(); -extern "C" void -update_INTERPOLATE_PLATEAU___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd(); -extern "C" void -update_INTERPOLATE_BSPLINE_dataMore3___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd(); -extern "C" void __ct__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" s32 getType__Q27JStudio22TFunctionValue_hermiteCFv(); -extern "C" void getAttributeSet__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" void data_set__Q27JStudio22TFunctionValue_hermiteFPCfUlUl(); -extern "C" void initialize__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" void prepare__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" void getValue__Q27JStudio22TFunctionValue_hermiteFd(); -extern "C" void extrapolateParameter_raw__Q27JStudio13functionvalueFdd(); -extern "C" void extrapolateParameter_repeat__Q27JStudio13functionvalueFdd(); -extern "C" void extrapolateParameter_clamp__Q27JStudio13functionvalueFdd(); -extern "C" JStudio::TFunctionValue_list_parameter::TIterator_data_ -func_802835DC(JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, f64 const&); -extern "C" void func_80283634(void* _this, JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, f64 const&, - std::less<f64>); -extern "C" JStudio::TFunctionValue_hermite::TIterator_data_ -func_80283858(JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&); -extern "C" void func_802838C8(void* _this, JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&, - std::less<f64>); -extern "C" void __dt__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" void __dt__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" void __dt__Q27JStudio19TFunctionValue_listFv(); -extern "C" void __dt__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" void __dt__Q27JStudio23TFunctionValue_constantFv(); -extern "C" void __dt__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" void func_80283E24(void* _this, JStudio::TFunctionValue_list_parameter::TIterator_data_, - JStudio::TFunctionValue_list_parameter::TIterator_data_, f64 const&, - std::less<f64>); -extern "C" void func_80283EB8(void* _this, JStudio::TFunctionValue_hermite::TIterator_data_, - JStudio::TFunctionValue_hermite::TIterator_data_, f64 const&, - std::less<f64>); - -// -// External References: -// - -extern "C" void __dl__FPv(); -extern "C" void func_802DCCD0(); -extern "C" void __dt__Q27JGadget20TVector_pointer_voidFv(); -extern "C" void erase__Q27JGadget20TVector_pointer_voidFPPvPPv(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savefpr_29(); -extern "C" void _restfpr_29(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); - -/* ############################################################################################## */ -/* 803C48E0-803C4900 021A00 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio22TFunctionValue_hermite */ -SECTION_DATA extern void* __vt__Q27JStudio22TFunctionValue_hermite[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio22TFunctionValue_hermiteFv, - (void*)getType__Q27JStudio22TFunctionValue_hermiteCFv, - (void*)getAttributeSet__Q27JStudio22TFunctionValue_hermiteFv, - (void*)initialize__Q27JStudio22TFunctionValue_hermiteFv, - (void*)prepare__Q27JStudio22TFunctionValue_hermiteFv, - (void*)getValue__Q27JStudio22TFunctionValue_hermiteFd, -}; - -/* 803C4900-803C4920 021A20 0020+00 2/2 1/1 0/0 .data - * __vt__Q27JStudio29TFunctionValue_list_parameter */ -SECTION_DATA extern void* __vt__Q27JStudio29TFunctionValue_list_parameter[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio29TFunctionValue_list_parameterFv, - (void*)getType__Q27JStudio29TFunctionValue_list_parameterCFv, - (void*)getAttributeSet__Q27JStudio29TFunctionValue_list_parameterFv, - (void*)initialize__Q27JStudio29TFunctionValue_list_parameterFv, - (void*)prepare__Q27JStudio29TFunctionValue_list_parameterFv, - (void*)getValue__Q27JStudio29TFunctionValue_list_parameterFd, -}; - -/* 803C4920-803C4940 021A40 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio19TFunctionValue_list */ -SECTION_DATA extern void* __vt__Q27JStudio19TFunctionValue_list[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio19TFunctionValue_listFv, - (void*)getType__Q27JStudio19TFunctionValue_listCFv, - (void*)getAttributeSet__Q27JStudio19TFunctionValue_listFv, - (void*)initialize__Q27JStudio19TFunctionValue_listFv, - (void*)prepare__Q27JStudio19TFunctionValue_listFv, - (void*)getValue__Q27JStudio19TFunctionValue_listFd, -}; - -/* 803C4940-803C4960 021A60 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio25TFunctionValue_transition - */ -SECTION_DATA extern void* __vt__Q27JStudio25TFunctionValue_transition[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio25TFunctionValue_transitionFv, - (void*)getType__Q27JStudio25TFunctionValue_transitionCFv, - (void*)getAttributeSet__Q27JStudio25TFunctionValue_transitionFv, - (void*)initialize__Q27JStudio25TFunctionValue_transitionFv, - (void*)prepare__Q27JStudio25TFunctionValue_transitionFv, - (void*)getValue__Q27JStudio25TFunctionValue_transitionFd, -}; - -/* 803C4960-803C4980 021A80 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio23TFunctionValue_constant */ -SECTION_DATA extern void* __vt__Q27JStudio23TFunctionValue_constant[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio23TFunctionValue_constantFv, - (void*)getType__Q27JStudio23TFunctionValue_constantCFv, - (void*)getAttributeSet__Q27JStudio23TFunctionValue_constantFv, - (void*)initialize__Q27JStudio23TFunctionValue_constantFv, - (void*)prepare__Q27JStudio23TFunctionValue_constantFv, - (void*)getValue__Q27JStudio23TFunctionValue_constantFd, -}; - -/* 803C4980-803C49A0 021AA0 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio24TFunctionValue_composite - */ -SECTION_DATA extern void* __vt__Q27JStudio24TFunctionValue_composite[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q27JStudio24TFunctionValue_compositeFv, - (void*)getType__Q27JStudio24TFunctionValue_compositeCFv, - (void*)getAttributeSet__Q27JStudio24TFunctionValue_compositeFv, - (void*)initialize__Q27JStudio24TFunctionValue_compositeFv, - (void*)prepare__Q27JStudio24TFunctionValue_compositeFv, - (void*)getValue__Q27JStudio24TFunctionValue_compositeFd, -}; - -/* 803C49A0-803C49C0 021AC0 0020+00 2/2 0/0 0/0 .data __vt__Q27JStudio14TFunctionValue */ -SECTION_DATA extern void* __vt__Q27JStudio14TFunctionValue[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -// /* ############################################################################################## -// */ -// /* 80455400-80455408 003A00 0008+00 13/13 0/0 0/0 .sdata2 @652 */ -SECTION_SDATA2 static u8 lit_652[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80455408-80455410 003A08 0008+00 5/5 0/0 0/0 .sdata2 @792 */ -SECTION_SDATA2 static f64 lit_792 = 1.0; - -/* 80455410-80455418 003A10 0008+00 1/1 0/0 0/0 .sdata2 @793 */ -SECTION_SDATA2 static f64 lit_793 = 3.0; - -/* 80455418-80455420 003A18 0008+00 1/1 0/0 0/0 .sdata2 @794 */ -SECTION_SDATA2 static f64 lit_794 = -2.0; - -/* ############################################################################################## */ -/* 80455420-80455428 003A20 0008+00 1/1 0/0 0/0 .sdata2 @799 */ -SECTION_SDATA2 static f64 lit_799 = 1.0 / 6.0; - -/* 80455428-80455430 003A28 0008+00 5/5 0/0 0/0 .sdata2 @800 */ -SECTION_SDATA2 static f64 lit_800 = 0.5; - -/* 80455430-80455438 003A30 0008+00 1/1 0/0 0/0 .sdata2 @801 */ -SECTION_SDATA2 static f64 lit_801 = 2.0 / 3.0; - -/* ############################################################################################## */ -/* 80455438-80455440 003A38 0008+00 3/3 0/0 0/0 .sdata2 @842 */ -SECTION_SDATA2 static f64 lit_842 = 2.0; - -/* ############################################################################################## */ -/* 80455440-80455448 003A40 0008+00 1/1 0/0 0/0 .sdata2 @867 */ -SECTION_SDATA2 static f64 lit_867 = -1.0; - -/* ############################################################################################## */ -/* 804511E8-804511F0 0006E8 0001+07 1/1 0/0 0/0 .sbss @569 */ -static u8 lit_569[1 + 7 /* padding */]; - -/* ############################################################################################## */ -/* 80455448-80455450 003A48 0008+00 1/1 0/0 0/0 .sdata2 @1517 */ -SECTION_SDATA2 static f64 lit_1517 = 4503599627370496.0 /* cast u32 to float */; namespace JStudio { @@ -342,7 +38,7 @@ const ExtrapolateParameter gapfnExtrapolateParameter_[4] = { functionvalue::extrapolateParameter_clamp, }; -} +} // namespace ExtrapolateParameter TFunctionValue::toFunction_outside(int idx) { ExtrapolateParameter fallback = NULL; @@ -364,10 +60,17 @@ ExtrapolateParameter TFunctionValue::toFunction_outside(int idx) { TFunctionValue::TFunctionValue() {} TFunctionValue::~TFunctionValue() {} +TFunctionValueAttribute_refer::TFunctionValueAttribute_refer() : + JGadget::TVector_pointer<TFunctionValue*>(JGadget::TAllocator<void*>()) {} + void TFunctionValueAttribute_refer::refer_initialize() { clear(); } +static f64 dummy_literal1() { + return 0.0; +} + namespace functionvalue { /* 80281710-80281774 27C050 0064+00 4/4 0/0 0/0 .text @@ -392,33 +95,49 @@ f64 interpolateValue_hermite(f64 c0, f64 c1, f64 x, f64 c2, f64 x2, f64 c3, f64 /* 80281774-802817D8 27C0B4 0064+00 1/1 0/0 0/0 .text * interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd */ -// NONMATCHING - really minor regalloc. f64 interpolateValue_BSpline_uniform(f64 f1, f64 f2, f64 f3, f64 f4, f64 f5) { - // pow3(1.0 - f1) - f64 f6 = (1.0 - f1); - f64 temp = f6; - temp = (f6 * f6) * temp; + f64 f6 = (1.0 - f1) * (1.0 - f1); + f64 f9 = f6 * (1.0 - f1); f64 f0 = f1 * f1; f64 f8 = f0 * f1; - f64 temp2 = (0.5 + (1.0 / 6.0) * ((f1 + f0) - f8)); - f64 temp3 = temp2 * f4; - - f64 temp4 = (((1.0 / 6.0) * f8 - f0) + (2.0 / 3.0)); - f64 temp5 = temp4 * f3; + f64 temp = f9; + f64 temp3 = ((0.5 * f8 - f0) + (2.0 / 3.0)); + f64 temp2 = ((1.0 / 6.0) + 0.5 * ((f1 + f0) - f8)); - return temp5 + (temp * f2 + f8 * f5) * 0.5 + - temp3; + return temp3 * f3 + (temp * f2 + f8 * f5) * (1.0 / 6.0) + temp2 * f4; } /* 802817D8-802818B8 27C118 00E0+00 1/1 0/0 0/0 .text * interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd */ -f64 interpolateValue_BSpline_nonuniform(f64 param_0, f64 const* param_1, f64 const* param_2) { - // NONMATCHING -} - -inline f64 interpolateValue_linear(double a1, double a2, double a3, double a4, double a5) { +f64 interpolateValue_BSpline_nonuniform(f64 f, f64 const* p1, f64 const* p2) { + f64 f0 = p2[0]; + f64 f1 = p2[1]; + f64 f2 = p2[2]; + f64 f3 = p2[3]; + f64 f4 = p2[4]; + f64 f5 = p2[5]; + f64 a0 = f - f0; + f64 a1 = f - f1; + f64 a2 = f - f2; + f64 a3 = f3 - f; + f64 a4 = f4 - f; + f64 a5 = f5 - f; + f64 t0 = 1.0 / (f3 - f2); + f64 t1 = (a3 * t0) / (f3 - f1); + f64 t2 = (a2 * t0) / (f4 - f2); + f64 t3 = (a3 * t1) / (f3 - f0); + f64 t4 = (a1 * t1 + a4 * t2) / (f4 - f1); + f64 t5 = (a2 * t2) / (f5 - f2); + f64 coeff0 = a3 * t3; + f64 coeff1 = a0 * t3 + a4 * t4; + f64 coeff2 = a1 * t4 + a5 * t5; + f64 coeff3 = a2 * t5; + return coeff0 * p1[0] + coeff1 * p1[1] + coeff2 * p1[2] + coeff3 * p1[3]; +} + +inline f64 interpolateValue_linear(f64 a1, f64 a2, f64 a3, f64 a4, f64 a5) { return a3 + ((a5 - a3) * (a1 - a2)) / (a4 - a2); } @@ -441,11 +160,10 @@ f64 extrapolateParameter_turn(f64 param_0, f64 param_1) { return dVar1; } - } // namespace functionvalue void TFunctionValueAttribute_range::range_initialize() { - fBegin_ = NAN; // NaN + fBegin_ = NAN; fEnd_ = fBegin_; fDifference_ = fBegin_; @@ -462,24 +180,24 @@ void TFunctionValueAttribute_range::range_prepare() { JUTWarn w; w << "unknown progress : " << progress; case 0: - _20 = DOUBLE_LABEL(/* 0.0 */ lit_652); - _28 = DOUBLE_LABEL(/* 1.0 */ lit_792); + _20 = 0.0; + _28 = 1.0; break; case 1: - _20 = DOUBLE_LABEL(/* 0.0 */ lit_652); - _28 = DOUBLE_LABEL(/*-1.0 */ lit_867); + _20 = 0.0; + _28 = -1.0; break; case 2: _20 = fBegin_; - _28 = DOUBLE_LABEL(/*-1.0 */ lit_867); + _28 = -1.0; break; case 3: _20 = fEnd_; - _28 = DOUBLE_LABEL(/*-1.0 */ lit_867); + _28 = -1.0; break; case 4: - _20 = DOUBLE_LABEL(/* 0.5 */ lit_800) * (fBegin_ + fEnd_); - _28 = DOUBLE_LABEL(/*-1.0 */ lit_867); + _20 = 0.5 * (fBegin_ + fEnd_); + _28 = -1.0; break; } } @@ -514,7 +232,7 @@ f64 TFunctionValueAttribute_range::range_getParameter(f64 arg1, f64 arg2, f64 ar result = range_getParameter_outside(progress + fEnd_); break; case 3: - result = range_getParameter_outside(progress + lit_800 * (fBegin_ + fEnd_)); + result = range_getParameter_outside(progress + 0.5 * (fBegin_ + fEnd_)); break; case 4: f64 temp = range_getParameter_outside(progress); @@ -532,7 +250,6 @@ TFunctionValueAttribute_range::TFunctionValueAttribute_range() /* 80281D5C-80281DB8 27C69C 005C+00 0/0 1/1 0/0 .text __ct__Q27JStudio24TFunctionValue_compositeFv */ - TFunctionValue_composite::TFunctionValue_composite() : pfn_(NULL), data((void*)NULL) { } @@ -783,7 +500,6 @@ void TFunctionValue_transition::prepare() { /* 802824F4-802826BC 27CE34 01C8+00 1/0 0/0 0/0 .text * getValue__Q27JStudio25TFunctionValue_transitionFd */ -// NONMATCHING - regalloc. Maybe return value related. f64 TFunctionValue_transition::getValue(f64 param_1) { f64 progress = range_getParameter_progress(param_1); f64 dVar3 = range_getParameter_outside(progress); @@ -819,6 +535,8 @@ f64 TFunctionValue_transition::getValue(f64 param_1) { return _48 + ((dVar3 - range_getBegin()) * data_getDifference()) / range_getDifference(); case 2: return functionvalue::interpolateValue_plateau(dVar3, range_getBegin(), _48, range_getEnd(), _50); + default: + goto ADJ_UNK3_label; } } } @@ -1037,9 +755,7 @@ f64 TFunctionValue_list_parameter::getValue(f64 param_0) { param_0 = range_getParameter(param_0, data_getValue_front(), data_getValue_back()); JUT_ASSERT(1395, pfData_!=0) - // TODO: change to actual function - //dat3 = JGadget::findUpperBound_binary_current(dat1, dat2, dat3, &pfData_); - dat3 = func_802835DC(dat1, dat2, dat3, param_0); + dat3 = JGadget::findUpperBound_binary_current(dat1, dat2, dat3, param_0); if (dat3 == dat1) { return dat3.get()[1]; } @@ -1153,7 +869,7 @@ f64 TFunctionValue_list_parameter::update_INTERPOLATE_BSPLINE_dataMore3_( } break; } - functionvalue::interpolateValue_BSpline_nonuniform(param_2, (f64*)&local_68, (f64*)&local_48); + return functionvalue::interpolateValue_BSpline_nonuniform(param_2, local_68, local_48); } @@ -1203,9 +919,7 @@ void TFunctionValue_hermite::prepare() { f64 TFunctionValue_hermite::getValue(f64 pfData_) { pfData_ = range_getParameter(pfData_, data_getValue_front(), data_getValue_back()); JUT_ASSERT(1395, pfData_!=0) - // TODO: change to actual function - //dat3 = JGadget::findUpperBound_binary_current(dat1, dat2, dat3, &pfData_); - dat3 = func_80283858(dat1, dat2, dat3, pfData_); + dat3 = JGadget::findUpperBound_binary_current(dat1, dat2, dat3, pfData_); if (dat3 == dat1) { return dat3.get()[1]; @@ -1235,15 +949,15 @@ f64 extrapolateParameter_raw(f64 a1, f64 a2) { inline f64 extrapolateParameter_repeat(f64 a1, f64 a2) { f64 t = fmod(a1, a2); - if (t < DOUBLE_LABEL(/* 0.0 */ lit_652)) + if (t < 0.0) t += a2; return t; } f64 extrapolateParameter_clamp(f64 value, f64 max) { - if (value <= DOUBLE_LABEL(/* 0.0 */ lit_652)) - return DOUBLE_LABEL(/* 0.0 */ lit_652); + if (value <= 0.0) + return 0.0; if (max <= value) value = max; @@ -1253,45 +967,3 @@ f64 extrapolateParameter_clamp(f64 value, f64 max) { } // namespace functionvalue } // namespace JStudio - -/* 802835DC-80283634 27DF1C 0058+00 1/1 0/0 0/0 .text - * findUpperBound_binary_current<Q37JStudio29TFunctionValue_list_parameter15TIterator_data_,d>__7JGadgetFQ37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_RCd - */ -extern "C" JStudio::TFunctionValue_list_parameter::TIterator_data_ -func_802835DC(JStudio::TFunctionValue_list_parameter::TIterator_data_ param_0, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_1, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_2, f64 const& param_3) { - // NONMATCHING -} - -/* 80283634-80283858 27DF74 0224+00 1/1 0/0 0/0 .text - * findUpperBound_binary_current<Q37JStudio29TFunctionValue_list_parameter15TIterator_data_,d,Q23std7less<d>>__7JGadgetFQ37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_RCdQ23std7less<d> - */ -extern "C" void func_80283634(void* _this, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_0, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_1, - JStudio::TFunctionValue_list_parameter::TIterator_data_ param_2, - f64 const& param_3, std::less<f64> param_4) { - // NONMATCHING -} - -/* 80283858-802838C8 27E198 0070+00 1/1 0/0 0/0 .text - * findUpperBound_binary_current<Q37JStudio22TFunctionValue_hermite15TIterator_data_,d>__7JGadgetFQ37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_RCd - */ -extern "C" JStudio::TFunctionValue_hermite::TIterator_data_ -func_80283858(JStudio::TFunctionValue_hermite::TIterator_data_ param_0, - JStudio::TFunctionValue_hermite::TIterator_data_ param_1, - JStudio::TFunctionValue_hermite::TIterator_data_ param_2, f64 const& param_3) { - // NONMATCHING -} - -/* 802838C8-80283BC4 27E208 02FC+00 1/1 0/0 0/0 .text - * findUpperBound_binary_current<Q37JStudio22TFunctionValue_hermite15TIterator_data_,d,Q23std7less<d>>__7JGadgetFQ37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_RCdQ23std7less<d> - */ -extern "C" void func_802838C8(void* _this, - JStudio::TFunctionValue_hermite::TIterator_data_ param_0, - JStudio::TFunctionValue_hermite::TIterator_data_ param_1, - JStudio::TFunctionValue_hermite::TIterator_data_ param_2, - f64 const& param_3, std::less<f64> param_4) { - // NONMATCHING -} diff --git a/src/JSystem/JStudio/JStudio/fvb-inline.cpp b/src/JSystem/JStudio/JStudio/fvb-inline.cpp deleted file mode 100644 index bff318831e..0000000000 --- a/src/JSystem/JStudio/JStudio/fvb-inline.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "JSystem/JStudio/JStudio/object-id.h" - -namespace JGadget { -/* TLinkList<JStudio::fvb::TObject, 12> */ -struct TLinkList__template1 { - struct iterator {}; -}; - -/* TVector_pointer<JStudio::TFunctionValue*> */ -struct TVector_pointer__template0 {}; - -}; // namespace JGadget - -extern "C" void -isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); - -/* 80285018-802850AC 27F958 0094+00 1/1 0/0 0/0 .text - * find_if<Q37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iterator,Q37JStudio6object18TPRObject_ID_equal>__3stdFQ37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iteratorQ37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iteratorQ37JStudio6object18TPRObject_ID_equal - */ -extern "C" void func_80285018(void* _this, JGadget::TLinkList__template1::iterator param_0, - JGadget::TLinkList__template1::iterator param_1, - JStudio::object::TPRObject_ID_equal param_2) { - // NONMATCHING -}
\ No newline at end of file diff --git a/src/JSystem/JStudio/JStudio/fvb.cpp b/src/JSystem/JStudio/JStudio/fvb.cpp index 562560d2b6..a9a2565fee 100644 --- a/src/JSystem/JStudio/JStudio/fvb.cpp +++ b/src/JSystem/JStudio/JStudio/fvb.cpp @@ -5,304 +5,14 @@ #include "JSystem/JStudio/JStudio/fvb.h" #include "JSystem/JUtility/JUTException.h" -#include "dol2asm.h" - -// -// Types: -// - -namespace JGadget { -/* TLinkList<JStudio::fvb::TObject, 12> */ -struct TLinkList__template1 { - struct iterator {}; -}; - -/* TVector_pointer<JStudio::TFunctionValue*> */ -struct TVector_pointer__template0 {}; - -}; // namespace JGadget - -namespace std { -template <typename A1, typename B1> -void find_if(/* ... */); -/* 80285018 */ /* std::find_if<JGadget::TLinkList<JStudio::fvb::TObject, 12>::iterator, - JStudio::object::TPRObject_ID_equal> */ -void func_80285018(void* _this, JGadget::TLinkList__template1::iterator, - JGadget::TLinkList__template1::iterator, JStudio::object::TPRObject_ID_equal); -}; // namespace std - -// -// Forward References: -// - -extern "C" void __dt__Q37JStudio3fvb7TObjectFv(); -extern "C" void -prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl(); -extern "C" static void func_80284234(); -extern "C" void __ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb17TObject_compositeFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb16TObject_constantFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb16TObject_constantFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb18TObject_transitionFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb18TObject_transitionFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb12TObject_listFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb12TObject_listFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb22TObject_list_parameterFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb22TObject_list_parameterFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb15TObject_hermiteFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void -prepare_data___Q37JStudio3fvb15TObject_hermiteFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl(); -extern "C" void __ct__Q37JStudio3fvb8TControlFv(); -extern "C" void __dt__Q37JStudio3fvb8TControlFv(); -extern "C" void appendObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject(); -extern "C" void removeObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject(); -extern "C" void destroyObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject(); -extern "C" void destroyObject_all__Q37JStudio3fvb8TControlFv(); -extern "C" void getObject__Q37JStudio3fvb8TControlFPCvUl(); -extern "C" void getObject_index__Q37JStudio3fvb8TControlFUl(); -extern "C" void __dt__Q37JStudio3fvb8TFactoryFv(); -extern "C" void create__Q37JStudio3fvb8TFactoryFRCQ47JStudio3fvb4data13TParse_TBlock(); -extern "C" void destroy__Q37JStudio3fvb8TFactoryFPQ37JStudio3fvb7TObject(); -extern "C" void __ct__Q37JStudio3fvb6TParseFPQ37JStudio3fvb8TControl(); -extern "C" void __dt__Q37JStudio3fvb6TParseFv(); -extern "C" void parseHeader_next__Q37JStudio3fvb6TParseFPPCvPUlUl(); -extern "C" void parseBlock_next__Q37JStudio3fvb6TParseFPPCvPUlUl(); -extern "C" void __dt__Q37JStudio3fvb15TObject_hermiteFv(); -extern "C" void __dt__Q37JStudio3fvb22TObject_list_parameterFv(); -extern "C" void __dt__Q37JStudio3fvb12TObject_listFv(); -extern "C" void __dt__Q37JStudio3fvb18TObject_transitionFv(); -extern "C" void __dt__Q37JStudio3fvb16TObject_constantFv(); -extern "C" void __dt__Q37JStudio3fvb17TObject_compositeFv(); -extern "C" void func_80285018(void* _this, JGadget::TLinkList__template1::iterator, - JGadget::TLinkList__template1::iterator, - JStudio::object::TPRObject_ID_equal); - -// -// External References: -// - -extern "C" void __dt__Q27JStudio14TFunctionValueFv(); -extern "C" void range_set__Q27JStudio29TFunctionValueAttribute_rangeFdd(); -extern "C" void __ct__Q27JStudio24TFunctionValue_compositeFv(); -extern "C" void func_80281E5C(); -extern "C" void func_80281EC8(); -extern "C" void func_8028202C(); -extern "C" void func_80282094(); -extern "C" void func_80282118(); -extern "C" void func_80282200(); -extern "C" void func_80282284(); -extern "C" void __ct__Q27JStudio23TFunctionValue_constantFv(); -extern "C" void __ct__Q27JStudio25TFunctionValue_transitionFv(); -extern "C" void __ct__Q27JStudio19TFunctionValue_listFv(); -extern "C" void __ct__Q27JStudio29TFunctionValue_list_parameterFv(); -extern "C" void data_set__Q27JStudio29TFunctionValue_list_parameterFPCfUl(); -extern "C" void __ct__Q27JStudio22TFunctionValue_hermiteFv(); -extern "C" void data_set__Q27JStudio22TFunctionValue_hermiteFPCfUlUl(); -extern "C" void -getData__Q47JStudio3fvb4data17TParse_TParagraphCFPQ57JStudio3fvb4data17TParse_TParagraph5TData(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv(); -extern "C" void __dt__Q27JGadget13TNodeLinkListFv(); -extern "C" void -Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); -extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); -extern "C" void __dt__Q27JGadget20TVector_pointer_voidFv(); -extern "C" void insert__Q27JGadget20TVector_pointer_voidFPPvRCPv(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" int memcmp(const void*, const void*, u32); -extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5]; -extern "C" extern void* __vt__Q27JStudio22TFunctionValue_hermite[8]; -extern "C" extern void* __vt__Q27JStudio29TFunctionValue_list_parameter[8]; -extern "C" extern void* __vt__Q27JStudio19TFunctionValue_list[8]; -extern "C" extern void* __vt__Q27JStudio25TFunctionValue_transition[8]; -extern "C" extern void* __vt__Q27JStudio23TFunctionValue_constant[8]; -extern "C" extern void* __vt__Q27JStudio24TFunctionValue_composite[8]; -extern "C" f32 ga4cSignature__Q37JStudio3fvb4data[1 + 1 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C49C0-803C4A1C -00001 005C+00 1/1 0/0 0/0 .data @838 */ -SECTION_DATA static void* lit_838[23] = { - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1F8), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0xA0), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1EC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0xC0), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x128), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x17C), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x198), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1AC), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1C0), - (void*)(((char*) - prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl) + - 0x1DC), -}; - -/* 803C4A1C-803C4A30 021B3C 0014+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb6TParse */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb6TParse[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb6TParseFv, - (void*)parseHeader_next__Q37JStudio3fvb6TParseFPPCvPUlUl, - (void*)parseBlock_next__Q37JStudio3fvb6TParseFPPCvPUlUl, -}; - -/* 803C4A30-803C4A44 021B50 0014+00 1/1 1/1 0/0 .data __vt__Q37JStudio3fvb8TFactory */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb8TFactory[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb8TFactoryFv, - (void*)create__Q37JStudio3fvb8TFactoryFRCQ47JStudio3fvb4data13TParse_TBlock, - (void*)destroy__Q37JStudio3fvb8TFactoryFPQ37JStudio3fvb7TObject, -}; - -/* 803C4A44-803C4A50 021B64 000C+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb8TControl */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb8TControl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb8TControlFv, -}; - -/* 803C4A50-803C4A60 021B70 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb15TObject_hermite */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb15TObject_hermite[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb15TObject_hermiteFv, - (void*) - prepare_data___Q37JStudio3fvb15TObject_hermiteFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4A60-803C4A70 021B80 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb22TObject_list_parameter - */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb22TObject_list_parameter[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb22TObject_list_parameterFv, - (void*) - prepare_data___Q37JStudio3fvb22TObject_list_parameterFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4A70-803C4A80 021B90 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb12TObject_list - */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb12TObject_list[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb12TObject_listFv, - (void*) - prepare_data___Q37JStudio3fvb12TObject_listFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4A80-803C4A90 021BA0 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb18TObject_transition */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb18TObject_transition[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb18TObject_transitionFv, - (void*) - prepare_data___Q37JStudio3fvb18TObject_transitionFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4A90-803C4AA0 021BB0 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb16TObject_constant */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb16TObject_constant[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb16TObject_constantFv, - (void*) - prepare_data___Q37JStudio3fvb16TObject_constantFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4AA0-803C4AB0 021BC0 0010+00 2/2 0/0 0/0 .data __vt__Q37JStudio3fvb17TObject_composite */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb17TObject_composite[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q37JStudio3fvb17TObject_compositeFv, - (void*) - prepare_data___Q37JStudio3fvb17TObject_compositeFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl, -}; - -/* 803C4AB0-803C4AC0 021BD0 0010+00 7/7 0/0 0/0 .data __vt__Q37JStudio3fvb7TObject */ -SECTION_DATA extern void* __vt__Q37JStudio3fvb7TObject[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; +#include <string.h> namespace JStudio { namespace fvb { TObject::~TObject() {} -// NONMATCHING +// NONMATCHING regalloc, missing mr, addition order void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { ASSERT(pfv_ != 0); @@ -319,8 +29,7 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { const void* pContent = dat.pContent; switch (u32Type) { case 0: - pfv_->prepare(); - return; + goto end; case 1: prepare_data_(dat, pControl); break; @@ -334,19 +43,20 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { w << "invalid paragraph"; } else { JGadget::TVector_pointer<TFunctionValue*>& rCnt = pfvaRefer->refer_referContainer(); - data::TParse_TParagraph::TData** pBegin = - (data::TParse_TParagraph::TData**)rCnt.pBegin_; - // todo: these definitely use a different struct - for (data::TParse_TParagraph::TData* i = *pBegin; i != NULL; i = *pBegin) { - TObject* pObject = pControl->getObject(pContent, i->u32Size); + u32* content = (u32*)pContent; + u32 i = content[0]; + u32* ptr = content + 1; + for (; i != 0; ptr++, i--) { + u32 size = *ptr; + TObject* pObject = pControl->getObject(ptr + 1, size); if (pObject == NULL) { JUTWarn w; w << "object not found by ID"; } else { - TFunctionValue* const& rfv = pObject->referFunctionValue(); + TFunctionValue* rfv = pObject->referFunctionValue(); rCnt.push_back(rfv); } - *pBegin += align_roundUp(i->u32Size, 4); + ptr += align_roundUp(size, 4) >> 2; } } } break; @@ -360,18 +70,19 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { w << "invalid paragraph"; } else { JGadget::TVector_pointer<TFunctionValue*>& rCnt = pfvaRefer->refer_referContainer(); - data::TParse_TParagraph::TData** pBegin = - (data::TParse_TParagraph::TData**)rCnt.pBegin_; - for (data::TParse_TParagraph::TData* i = *pBegin; i != NULL; i = *pBegin) { - TObject* pObject = pControl->getObject_index(u32Size); + u32* content = (u32*)pContent; + u32* ptr = content; + u32 i = content[0]; + for (; ptr++, i != 0; i--) { + u32 index = *ptr; + TObject* pObject = pControl->getObject_index(index); if (pObject == NULL) { JUTWarn w; - w << "object not found by index : " << u32Size; + w << "object not found by index : " << index; } else { - TFunctionValue* const& rfv = pObject->referFunctionValue(); - rCnt.push_back(rfv); + TFunctionValue& rfv = *pObject->referFunctionValue(); + rCnt.push_back(&rfv); } - *pBegin += align_roundUp(i->u32Size, 4); } } } break; @@ -384,7 +95,7 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { JUTWarn w; w << "invalid paragraph"; } else { - f64* arr = (f64*)pContent; + f32* arr = (f32*)pContent; pfvaRange->range_set(arr[0], arr[1]); } } break; @@ -423,8 +134,9 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { JUTWarn w; w << "invalid paragraph"; } else { - TFunctionValue::TEOutside* out = (TFunctionValue::TEOutside*)pContent; - pfvaRange->range_setOutside(out[0], out[1]); + u16* out = (u16*)pContent; + pfvaRange->range_setOutside((TFunctionValue::TEOutside)out[0], + (TFunctionValue::TEOutside)out[1]); } } break; case 0x16: { @@ -444,11 +156,14 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) { JUTWarn w; w << "unknown paragraph : " << u32Type; } + pData = dat.next; ASSERT(pData != 0); } +end: JUT_EXPECT(pData == pNext); pfv_->prepare(); } + namespace { TFunctionValue_composite::TData getCompositeData_raw_(const void* arg1) { @@ -479,67 +194,52 @@ TFunctionValue_composite::TData getCompositeData_divide_(const void* arg1) { return TFunctionValue_composite::TData(*(f32*)arg1); } -} // namespace - -} // namespace fvb -} // namespace JStudio - -using namespace JStudio::fvb; - -/* ############################################################################################## */ -/* 8039AA00-8039AA40 -00001 0040+00 1/1 0/0 0/0 .rodata - * saCompositeOperation___Q37JStudio3fvb17@unnamed@fvb_cpp@ */ -SECTION_RODATA static void* const data_8039AA00[16] = { - (void*)NULL, (void*)NULL, - (void*)func_80281E5C, (void*)getCompositeData_raw_, - (void*)func_80281EC8, (void*)getCompositeData_index_, - (void*)func_8028202C, (void*)getCompositeData_parameter_, - (void*)func_80282094, (void*)getCompositeData_add_, - (void*)func_80282118, (void*)getCompositeData_subtract_, - (void*)func_80282200, (void*)getCompositeData_multiply_, - (void*)func_80282284, (void*)getCompositeData_divide_, +const data::CompositeOperation saCompositeOperation_[8] = { + {NULL, NULL}, + {&TFunctionValue_composite::composite_raw, &getCompositeData_raw_}, + {&TFunctionValue_composite::composite_index, &getCompositeData_index_}, + {&TFunctionValue_composite::composite_parameter, &getCompositeData_parameter_}, + {&TFunctionValue_composite::composite_add, &getCompositeData_add_}, + {&TFunctionValue_composite::composite_subtract, &getCompositeData_subtract_}, + {&TFunctionValue_composite::composite_multiply, &getCompositeData_multiply_}, + {&TFunctionValue_composite::composite_divide, &getCompositeData_divide_}, }; /* 80284240-80284254 27EB80 0014+00 1/1 0/0 0/0 .text * getCompositeOperation___Q37JStudio3fvb17@unnamed@fvb_cpp@FQ47JStudio3fvb4data11TEComposite */ -static data::CompositeOperation* func_80284240(data::TEComposite comp) { - // NONMATCHING +static const data::CompositeOperation* getCompositeOperation_(data::TEComposite comp) { + return &saCompositeOperation_[comp]; } -namespace JStudio { -namespace fvb { +} // namespace /* 80284254-802842D4 27EB94 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock */ -// NONMATCHING -// TObject_composite::TObject_composite(const data::TParse_TBlock& block) : TObject(block, &fnValue) {} +TObject_composite::TObject_composite(const data::TParse_TBlock& block) : TObject(block, &fnValue) {} -// NONMATCHING - incomplete -/* void TObject_composite::prepare_data_(const data::TParse_TParagraph::TData& rData, +void TObject_composite::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { ASSERT(rData.u32Type == data::PARAGRAPH_DATA); u32 u32Size = rData.u32Size; JUT_EXPECT(u32Size == 8); - const TFunctionValue_composite* pContent = - static_cast<const TFunctionValue_composite*>(rData.pContent); - ASSERT(pContent != NULL); - - data::CompositeOperation* ops = func_80284240(*(data::TEComposite*)pContent); - data::CompositeOperation pfn = ops[1]; + struct unknown { + data::TEComposite composite_type; + u32 data; + }; - ASSERT(pfn != NULL); + const unknown* pContent = static_cast<const unknown*>(rData.pContent); + ASSERT(pContent != NULL); - pfn(pContent->data); - fnValue.data_set((TFunctionValue_composite::CompositeFunc)*ops, pContent->data); -} */ + const data::CompositeOperation* op = getCompositeOperation_(pContent->composite_type); + fnValue.data_set(op->composite, op->getCompositeData(&pContent->data)); +} /* 80284338-802843B8 27EC78 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb16TObject_constantFRCQ47JStudio3fvb4data13TParse_TBlock */ -/* TObject_constant::TObject_constant(data::TParse_TBlock const& param_0) { - // NONMATCHING -} */ +TObject_constant::TObject_constant(data::TParse_TBlock const& param_0) + : TObject(param_0, &fnValue) {} void TObject_constant::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { @@ -556,9 +256,8 @@ void TObject_constant::prepare_data_(const data::TParse_TParagraph::TData& rData /* 802843C8-80284448 27ED08 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb18TObject_transitionFRCQ47JStudio3fvb4data13TParse_TBlock */ -/* TObject_transition::TObject_transition(data::TParse_TBlock const& param_0) { - // NONMATCHING -} */ +TObject_transition::TObject_transition(data::TParse_TBlock const& param_0) + : TObject(param_0, &fnValue) {} void TObject_transition::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { @@ -575,9 +274,7 @@ void TObject_transition::prepare_data_(const data::TParse_TParagraph::TData& rDa /* 80284460-802844E0 27EDA0 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb12TObject_listFRCQ47JStudio3fvb4data13TParse_TBlock */ -/* TObject_list::TObject_list(data::TParse_TBlock const& param_0) { - // NONMATCHING -} */ +TObject_list::TObject_list(data::TParse_TBlock const& param_0) : TObject(param_0, &fnValue) {} void TObject_list::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { ASSERT(rData.u32Type == data::PARAGRAPH_DATA); @@ -594,9 +291,8 @@ void TObject_list::prepare_data_(const data::TParse_TParagraph::TData& rData, TC /* 80284500-80284580 27EE40 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb22TObject_list_parameterFRCQ47JStudio3fvb4data13TParse_TBlock */ -/* TObject_list_parameter::TObject_list_parameter(data::TParse_TBlock const& param_0) { - // NONMATCHING -} */ +TObject_list_parameter::TObject_list_parameter(data::TParse_TBlock const& param_0) + : TObject(param_0, &fnValue) {} void TObject_list_parameter::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { @@ -613,9 +309,7 @@ void TObject_list_parameter::prepare_data_(const data::TParse_TParagraph::TData& /* 802845B0-80284630 27EEF0 0080+00 1/1 0/0 0/0 .text * __ct__Q37JStudio3fvb15TObject_hermiteFRCQ47JStudio3fvb4data13TParse_TBlock */ -/* TObject_hermite::TObject_hermite(data::TParse_TBlock const& param_0) { - // NONMATCHING -} */ +TObject_hermite::TObject_hermite(data::TParse_TBlock const& param_0) : TObject(param_0, &fnValue) {} void TObject_hermite::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) { @@ -638,37 +332,50 @@ TControl::~TControl() { /* 80284704-80284750 27F044 004C+00 1/1 0/0 0/0 .text * appendObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject */ -void TControl::appendObject(TObject* param_0) { - // NONMATCHING +void TControl::appendObject(TObject* object) { + ocObject_.Push_back(object); } /* 80284750-80284780 27F090 0030+00 1/1 0/0 0/0 .text * removeObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject */ -void TControl::removeObject(TObject* param_0) { - // NONMATCHING +void TControl::removeObject(TObject* object) { + ocObject_.Erase(object); } /* 80284780-802847D0 27F0C0 0050+00 1/1 0/0 0/0 .text * destroyObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject */ -void TControl::destroyObject(TObject* param_0) { - // NONMATCHING +void TControl::destroyObject(TObject* object) { + removeObject(object); + getFactory()->destroy(object); } /* 802847D0-80284834 27F110 0064+00 0/0 2/2 0/0 .text destroyObject_all__Q37JStudio3fvb8TControlFv */ void TControl::destroyObject_all() { - // NONMATCHING + while (!ocObject_.empty()) { + destroyObject(&ocObject_.back()); + } } /* 80284834-802848D4 27F174 00A0+00 2/2 1/1 0/0 .text getObject__Q37JStudio3fvb8TControlFPCvUl */ -TObject* TControl::getObject(void const* param_0, u32 param_1) { - // NONMATCHING +TObject* TControl::getObject(void const* id, u32 idSize) { + typedef JGadget::TLinkList<TObject, -12>::iterator iterator; + iterator begin = ocObject_.begin(); + iterator end = ocObject_.end(); + iterator it = std::find_if(begin, end, object::TPRObject_ID_equal(id, idSize)); + return it != end ? &*it : NULL; } /* 802848D4-80284918 27F214 0044+00 1/1 1/1 0/0 .text getObject_index__Q37JStudio3fvb8TControlFUl */ -TObject* TControl::getObject_index(u32 param_0) { - // NONMATCHING +TObject* TControl::getObject_index(u32 index) { + if (index >= ocObject_.size()) { + return NULL; + } + + JGadget::TLinkList<TObject, -12>::iterator it = ocObject_.begin(); + std::advance(it, index); + return &*it; } TFactory::~TFactory() {} diff --git a/src/JSystem/JStudio/JStudio/jstudio-math.cpp b/src/JSystem/JStudio/JStudio/jstudio-math.cpp index 81a876131b..90bddf8d3b 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-math.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-math.cpp @@ -5,55 +5,17 @@ #include "JSystem/JStudio/JStudio/jstudio-math.h" #include "JSystem/JGeometry.h" -#include "JSystem/TPosition3.hh" -#include "dol2asm.h" +#include "JSystem/TPosition3.h" #include "math.h" -// -// Forward References: -// - -extern "C" void getRotation_xyz__Q27JStudio4mathFPA4_ffff(); -extern "C" void getTransformation_SRxyzT__Q27JStudio4mathFPA4_fRC3VecRC3VecRC3Vec(); -extern "C" void getFromTransformation_SRxyzT__Q27JStudio4mathFP3VecP3VecP3VecPA4_Cf(); - -// -// External References: -// - -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80455468-8045546C 003A68 0004+00 1/1 0/0 0/0 .sdata2 @488 */ -SECTION_SDATA2 static f32 lit_488 = 0.01745329238474369f; - -/* 8045546C-80455470 003A6C 0004+00 2/2 0/0 0/0 .sdata2 @489 */ -SECTION_SDATA2 static u8 lit_489[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - /* 802859DC-80285B44 28031C 0168+00 1/1 0/0 0/0 .text getRotation_xyz__Q27JStudio4mathFPA4_ffff */ -// NONMATCHING - regalloc void JStudio::math::getRotation_xyz(MtxP param_1, f32 x, f32 y, f32 z) { - x = DEG_TO_RAD(x); - f32 cosx = cos(x); - f32 sinx = sin(x); - y = DEG_TO_RAD(y); - f32 cosy = cos(y); - f32 siny = sin(y); - z = DEG_TO_RAD(z); - f32 cosz = cos(z); - f32 sinz = sin(z); + f32 cosx = i_cosf(DEG_TO_RAD(x)); + f32 sinx = i_sinf(DEG_TO_RAD(x)); + f32 cosy = i_cosf(DEG_TO_RAD(y)); + f32 siny = i_sinf(DEG_TO_RAD(y)); + f32 cosz = i_cosf(DEG_TO_RAD(z)); + f32 sinz = i_sinf(DEG_TO_RAD(z)); f32 cosxcosz = cosx * cosz; f32 cosxsinz = cosx * sinz; f32 sinxcosz = sinx * cosz; @@ -84,38 +46,12 @@ void JStudio::math::getTransformation_SRxyzT(MtxP param_1, Vec const& param_2, V MTXTransApply(amStack_70, param_1, param_4.x, param_4.y, param_4.z); } -/* ############################################################################################## */ -/* 80455470-80455478 003A70 0008+00 1/1 0/0 0/0 .sdata2 @623 */ -SECTION_SDATA2 static u8 lit_623[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80455478-80455480 003A78 0008+00 1/1 0/0 0/0 .sdata2 @624 */ -SECTION_SDATA2 static f64 lit_624 = 1.0; - -/* 80455480-80455488 003A80 0004+04 1/1 0/0 0/0 .sdata2 @625 */ -SECTION_SDATA2 static f32 lit_625[1 + 1 /* padding */] = { - 32.0f, - /* padding */ - 0.0f, -}; - -/* 80455488-80455490 003A88 0008+00 1/1 0/0 0/0 .sdata2 @626 */ -SECTION_SDATA2 static f64 lit_626 = -1.5707963267948966; - -/* 80455490-80455498 003A90 0008+00 1/1 0/0 0/0 .sdata2 @627 */ -SECTION_SDATA2 static f64 lit_627 = 1.5707963267948966; - -/* 80455498-804554A0 003A98 0008+00 1/1 0/0 0/0 .sdata2 @628 */ -SECTION_SDATA2 static f64 lit_628 = 57.29577951308232; - /* 80285BCC-80285E0C 28050C 0240+00 0/0 2/2 0/0 .text * getFromTransformation_SRxyzT__Q27JStudio4mathFP3VecP3VecP3VecPA4_Cf */ -// NONMATCHING - getEulerXYZ is not inlined void JStudio::math::getFromTransformation_SRxyzT(Vec* param_1, Vec* param_2, Vec* param_3, CMtxP param_4) { - getFromTransformation_S(param_4, param_1); - getFromTransformation_T(param_4, param_3); + getFromTransformation_S(param_1, param_4); + getFromTransformation_T(param_3, param_4); JGeometry::TRotation3<JGeometry::SMatrix33C<double> > aTStack_88; JGeometry::TVec3<double> local_a0; double dVar9 = 0.0; @@ -130,10 +66,9 @@ void JStudio::math::getFromTransformation_SRxyzT(Vec* param_1, Vec* param_2, Vec if (0.0f != param_1->z) { dVar7 = 1.0 / param_1->z; } - aTStack_88.set( param_4[0][0] * dVar9, - param_4[0][1] * dVar8, param_4[0][2] * dVar7, param_4[1][0] * dVar9, - param_4[1][2] * dVar8, param_4[1][3] * dVar7, param_4[2][0] * dVar9, - param_4[2][1] * dVar8, param_4[2][2] * dVar7); + aTStack_88.set(param_4[0][0] * dVar9, param_4[0][1] * dVar8, param_4[0][2] * dVar7, + param_4[1][0] * dVar9, param_4[1][1] * dVar8, param_4[1][2] * dVar7, + param_4[2][0] * dVar9, param_4[2][1] * dVar8, param_4[2][2] * dVar7); aTStack_88.getEulerXYZ(&local_a0); local_a0 *= 57.29577951308232; param_2->x = local_a0.x; diff --git a/src/JSystem/JStudio/JStudio/jstudio-object.cpp b/src/JSystem/JStudio/JStudio/jstudio-object.cpp index 5952007214..2e8e7a2ff4 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-object.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-object.cpp @@ -1666,7 +1666,7 @@ static u8 data_80431038[16]; /* 804511F0-804511F8 0006F0 0004+04 6/6 6/6 0/0 .sbss soOutput_none___Q27JStudio14TVariableValue */ -u8 JStudio::TVariableValue::soOutput_none_[4 + 4 /* padding */]; +JStudio::TVariableValue::TOutput_none_ JStudio::TVariableValue::soOutput_none_; /* 8028694C-80286C9C 28128C 0350+00 2/0 0/0 0/0 .text * do_paragraph__Q27JStudio13TObject_actorFUlPCvUl */ diff --git a/src/JSystem/JStudio/JStudio/stb.cpp b/src/JSystem/JStudio/JStudio/stb.cpp index 1f13b25cb5..bbbc80d01a 100644 --- a/src/JSystem/JStudio/JStudio/stb.cpp +++ b/src/JSystem/JStudio/JStudio/stb.cpp @@ -1,48 +1,8 @@ #include "JSystem/JStudio/JStudio/stb.h" #include "JSystem/JStudio/JStudio/jstudio-object.h" #include "JSystem/JUtility/JUTException.h" -#include "algorithm.h" - -// -// Types: -// - -namespace std { - -/* 80289928 */ /* std::find_if<JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator, - JStudio::object::TPRObject_ID_equal> */ -void func_80289928(void* _this, JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator, - JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator, - JStudio::object::TPRObject_ID_equal); -}; // namespace std - -// -// Forward References: -// - -extern "C" void reset__Q37JStudio3stb7TObjectFPCv(); -extern "C" void forward__Q37JStudio3stb7TObjectFUl(); -extern "C" void destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject(); -extern "C" void func_80289928(void* _this, JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator, - JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator, - JStudio::object::TPRObject_ID_equal); - -// -// External References: -// - -extern "C" void -isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData(); -extern "C" void -Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); -extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" int memcmp(const void*, const void*, u32); +#include <algorithm.h> +#include <string.h> namespace JStudio { namespace stb { @@ -112,8 +72,8 @@ void TObject::reset(const void* arg1) { u32Wait_ = 0; } -u8 TObject::forward(u32 arg1) { - u8 temp = false; +bool TObject::forward(u32 arg1) { + bool temp = false; while (true) { if (mFlag & 0x8000) { @@ -134,7 +94,7 @@ u8 TObject::forward(u32 arg1) { ASSERT(false); break; } - return 1; + return true; } if (getStatus() == STATUS_INACTIVE) { @@ -151,7 +111,7 @@ u8 TObject::forward(u32 arg1) { setStatus_(STATUS_SUSPEND); on_wait(arg1); } - return 1; + return true; } while (true) { @@ -168,7 +128,7 @@ u8 TObject::forward(u32 arg1) { setStatus_(STATUS_END); on_end(); } - return 0; + return false; } if (!bSequence_) { @@ -194,7 +154,7 @@ u8 TObject::forward(u32 arg1) { } else { u32Wait_ -= arg1; on_wait(arg1); - return 1; + return true; } } } @@ -382,21 +342,15 @@ void TControl::reset() { /* 802894B4-802895B4 283DF4 0100+00 0/0 2/2 0/0 .text forward__Q37JStudio3stb8TControlFUl */ -// NONMATCHING - regalloc -u8 TControl::forward(u32 param_0) { +bool TControl::forward(u32 param_0) { _54 = mObject_control.getSuspend(); - u8 rv = mObject_control.forward(param_0); + bool rv = mObject_control.forward(param_0); int uVar7 = 0xf; int uVar6 = 0; JGadget::TContainerEnumerator<JStudio::stb::TObject, -12> aTStack_38(&mObjectContainer); while (aTStack_38) { JStudio::stb::TObject& this_00 = *aTStack_38; - u8 iVar5 = 0; - u8 iVar4 = this_00.forward(param_0); - if (iVar4 != 0 || rv != 0) { - iVar5 = 1; - } - rv = iVar5; + rv = this_00.forward(param_0) || rv; int uVar3 = this_00.getStatus(); uVar7 &= uVar3; uVar6 |= uVar3; @@ -524,13 +478,3 @@ bool TParse::parseBlock_object(const data::TParse_TBlock_object& ppObject, u32 f } // namespace stb } // namespace JStudio - -/* 80289928-802899BC 284268 0094+00 1/1 0/0 0/0 .text - * find_if<Q37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iterator,Q37JStudio6object18TPRObject_ID_equal>__3stdFQ37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iteratorQ37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iteratorQ37JStudio6object18TPRObject_ID_equal - */ -extern "C" void func_80289928(void* _this, - JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator param_0, - JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator param_1, - JStudio::object::TPRObject_ID_equal param_2) { - // NONMATCHING -} diff --git a/src/JSystem/JStudio/JStudio_JStage/control.cpp b/src/JSystem/JStudio/JStudio_JStage/control.cpp index 13a6025c32..1dc280c092 100644 --- a/src/JSystem/JStudio/JStudio_JStage/control.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/control.cpp @@ -4,7 +4,6 @@ // #include "JSystem/JStudio/JStudio_JStage/control.h" -#include "JSystem/JGadget/pointer.h" #include "JSystem/JStage/JSGActor.h" #include "JSystem/JStage/JSGLight.h" #include "JSystem/JStage/JSGFog.h" @@ -14,23 +13,6 @@ /* 80289B00-80289B60 284440 0060+00 1/0 0/0 0/0 .text __dt__Q214JStudio_JStage13TCreateObjectFv */ JStudio_JStage::TCreateObject::~TCreateObject() {} -template <class AdaptorT, class ObjectT> -JStudio::TObject* createObject_JSG_(const JStudio::stb::data::TParse_TBlock_object& param_1, - JStage::TObject* param_2, const JStage::TSystem* param_3) { - ObjectT* objt = (ObjectT*)param_2; - AdaptorT* pAdaptor = new AdaptorT(param_3, objt); - if (pAdaptor == NULL) { - return NULL; - } - JGadget::TPointer_delete<AdaptorT> adaptorGuard(pAdaptor); - JStudio::TObject* pObj = JStudio::TCreateObject::createFromAdaptor<AdaptorT>(param_1, pAdaptor); - if (pObj == NULL) { - return NULL; - } - adaptorGuard.set(NULL); - return pObj; -} - /* 80289B60-80289CE4 2844A0 0184+00 1/0 0/0 0/0 .text * create__Q214JStudio_JStage13TCreateObjectFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */ @@ -78,4 +60,4 @@ bool JStudio_JStage::TCreateObject::create( return true; } return false; -}
\ No newline at end of file +} diff --git a/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp b/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp index d86e09d65b..e3dabe57b7 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp @@ -26,7 +26,6 @@ JStudio_JStage::TAdaptor_actor::~TAdaptor_actor() { adaptor_do_end(); } - /* 8028A728-8028A7B4 285068 008C+00 1/0 0/0 0/0 .text * adaptor_do_prepare__Q214JStudio_JStage14TAdaptor_actorFv */ void JStudio_JStage::TAdaptor_actor::adaptor_do_prepare() { @@ -43,7 +42,6 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_prepare() { } } - /* 8028A7B4-8028A8D8 2850F4 0124+00 1/0 0/0 0/0 .text * adaptor_do_begin__Q214JStudio_JStage14TAdaptor_actorFv */ void JStudio_JStage::TAdaptor_actor::adaptor_do_begin() { @@ -137,7 +135,6 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_TEXTURE_ANIMATION(JStudio::data: setJSG_ID_(&JStage::TActor::JSGSetTextureAnimation, operation, param_2, param_3); } - /* 8028AAB4-8028AAC8 2853F4 0014+00 1/0 0/0 0/0 .text * adaptor_do_TEXTURE_ANIMATION_MODE__Q214JStudio_JStage14TAdaptor_actorFQ37JStudio4data15TEOperationDataPCvUl */ diff --git a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp index b96e675d25..7cfbb16b65 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp @@ -4,56 +4,6 @@ // #include "JSystem/JStudio/JStudio_JStage/object-light.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void __ct__Q214JStudio_JStage14TAdaptor_lightFPCQ26JStage7TSystemPQ26JStage6TLight(); -extern "C" void __dt__Q214JStudio_JStage14TAdaptor_lightFv(); -extern "C" void adaptor_do_prepare__Q214JStudio_JStage14TAdaptor_lightFv(); -extern "C" void adaptor_do_begin__Q214JStudio_JStage14TAdaptor_lightFv(); -extern "C" void adaptor_do_end__Q214JStudio_JStage14TAdaptor_lightFv(); -extern "C" void adaptor_do_update__Q214JStudio_JStage14TAdaptor_lightFUl(); -extern "C" void adaptor_do_data__Q214JStudio_JStage14TAdaptor_lightFPCvUlPCvUl(); -extern "C" void -adaptor_do_FACULTY__Q214JStudio_JStage14TAdaptor_lightFQ37JStudio4data15TEOperationDataPCvUl(); -extern "C" void -adaptor_do_ENABLE__Q214JStudio_JStage14TAdaptor_lightFQ37JStudio4data15TEOperationDataPCvUl(); -extern "C" void -__cl__Q314JStudio_JStage14TAdaptor_light20TVVOutput_direction_CFfPQ27JStudio8TAdaptor(); -extern "C" void __dt__Q314JStudio_JStage14TAdaptor_light20TVVOutput_direction_Fv(); -extern "C" void func_8028D2B8(); -extern "C" u8 saoVVOutput_direction___Q214JStudio_JStage14TAdaptor_light[72]; - -// -// External References: -// - -extern "C" void __dt__Q37JStudio14TVariableValue7TOutputFv(); -extern "C" void update_immediate___Q27JStudio14TVariableValueFPQ27JStudio14TVariableValued(); -extern "C" void adaptor_setVariableValue_Vec__Q27JStudio8TAdaptorFPCUlRC3Vec(); -extern "C" void adaptor_getVariableValue_Vec__Q27JStudio8TAdaptorCFP3VecPCUl(); -extern "C" void adaptor_setVariableValue_GXColor__Q27JStudio8TAdaptorFPCUlRC8_GXColor(); -extern "C" void adaptor_getVariableValue_GXColor__Q27JStudio8TAdaptorCFP8_GXColorPCUl(); -extern "C" void __dt__Q27JStudio14TAdaptor_lightFv(); -extern "C" void adaptor_object_data___Q214JStudio_JStage16TAdaptor_object_FPCvUlPCvUl(); -extern "C" void -adaptor_object_ENABLE___Q214JStudio_JStage16TAdaptor_object_FQ37JStudio4data15TEOperationDataPCvUl(); -extern "C" void __ct__Q27JStudio14TVariableValueFv(); -extern "C" void __dl__FPv(); -extern "C" void __register_global_object(); -extern "C" void __construct_array(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 const sauVariableValue_4_COLOR_RGBA__Q27JStudio14TAdaptor_light[16]; -extern "C" u8 const sauVariableValue_3_POSITION_XYZ__Q27JStudio14TAdaptor_light[12]; -extern "C" u8 const sauVariableValue_3_TARGET_POSITION_XYZ__Q27JStudio14TAdaptor_light[12]; -extern "C" extern void* __vt__Q27JStudio14TAdaptor_light[10]; -extern "C" extern void* __vt__Q27JStudio8TAdaptor[8]; -extern "C" extern void* __vt__Q37JStudio14TVariableValue7TOutput[4]; -extern "C" u8 soOutput_none___Q27JStudio14TVariableValue[4 + 4 /* padding */]; /* 8028CB50-8028CBF4 287490 00A4+00 0/0 1/1 0/0 .text * __ct__Q214JStudio_JStage14TAdaptor_lightFPCQ26JStage7TSystemPQ26JStage6TLight */ @@ -101,28 +51,6 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_prepare() { } } -/* ############################################################################################## */ -/* 804554E8-804554F0 003AE8 0004+04 1/1 0/0 0/0 .sdata2 @846 */ -SECTION_SDATA2 static f32 lit_846[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - -/* 804554F0-804554F8 003AF0 0008+00 1/1 0/0 0/0 .sdata2 @847 */ -SECTION_SDATA2 static f64 lit_847 = 0.5; - -/* 804554F8-80455500 003AF8 0008+00 1/1 0/0 0/0 .sdata2 @848 */ -SECTION_SDATA2 static f64 lit_848 = 3.0; - -/* 80455500-80455508 003B00 0008+00 1/1 0/0 0/0 .sdata2 @849 */ -SECTION_SDATA2 static u8 lit_849[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80455508-8045550C 003B08 0004+00 1/1 0/0 0/0 .sdata2 @850 */ -SECTION_SDATA2 static f32 lit_850 = 57.295780181884766f; - /* 8028CCB0-8028CF68 2875F0 02B8+00 1/0 0/0 0/0 .text * adaptor_do_begin__Q214JStudio_JStage14TAdaptor_lightFv */ // NONMATCHING - regalloc @@ -145,10 +73,10 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_begin() { f32 diry = finalTransform->direction.y; f32 dirz = finalTransform->direction.z; f32 sqr = sqrtf(dirx * dirx + dirz * dirz); - f32 dVar11 = atan2(dirx, dirz); - f32 dVar9 = atan2(diry, sqr); - adaptor_setVariableValue_immediate(10, (180.0f / M_PI) * dVar11); - adaptor_setVariableValue_immediate(11, (180.0f / M_PI) * dVar9); + f32 dVar11 = atan2f(dirx, dirz); + f32 dVar9 = atan2f(diry, sqr); + adaptor_setVariableValue_immediate(10, MTXRadToDeg(dVar11)); + adaptor_setVariableValue_immediate(11, MTXRadToDeg(dVar9)); Vec VStack_c4; VECAdd(&finalTransform->position, &finalTransform->direction, &VStack_c4); adaptor_setVariableValue_Vec(sauVariableValue_3_TARGET_POSITION_XYZ, VStack_c4); @@ -160,13 +88,8 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_end() { adaptor_object_end_(); } -/* ############################################################################################## */ -/* 8045550C-80455510 003B0C 0004+00 1/1 0/0 0/0 .sdata2 @898 */ -SECTION_SDATA2 static f32 lit_898 = 0.01745329238474369f; - /* 8028CFBC-8028D18C 2878FC 01D0+00 1/0 0/0 0/0 .text * adaptor_do_update__Q214JStudio_JStage14TAdaptor_lightFUl */ -// NONMATCHING - float regalloc void JStudio_JStage::TAdaptor_light::adaptor_do_update(u32 param_1) { JStage::TLight* lightObj = get_pJSG_(); const JStudio::TObject* pObject = adaptor_getObject(); @@ -183,13 +106,13 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_update(u32 param_1) { case 1: f32 dVar10 = adaptor_getVariableValue(10)->getValue(); f32 dVar11 = adaptor_getVariableValue(11)->getValue(); - f32 temp = 0.01745329238474369f * dVar11; - f32 dVar12 = cos(temp); - f32 sinVal = sin(temp); - f32 temp2 = 0.01745329238474369f * dVar10; - VStack_198.direction.x = dVar12 * (f32)sin(temp2); + f32 temp = MTXDegToRad(dVar11); + f32 dVar12 = i_cosf(temp); + f32 sinVal = i_sinf(temp); + f32 temp2 = MTXDegToRad(dVar10); + VStack_198.direction.x = dVar12 * i_sinf(temp2); VStack_198.direction.y = sinVal; - VStack_198.direction.z = dVar12 * (f32)cos(temp2); + VStack_198.direction.z = dVar12 * i_cosf(temp2); break; case 2: Vec VStack_1c0; |
