summaryrefslogtreecommitdiff
path: root/src/JSystem
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2025-04-09 16:45:30 -0400
committerGitHub <noreply@github.com>2025-04-09 13:45:30 -0700
commitc6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch)
treebf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem
parent6672817e41064e04951ec28d51070b66fc8377ac (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')
-rw-r--r--src/JSystem/J2DGraph/J2DMaterial.cpp9
-rw-r--r--src/JSystem/J2DGraph/J2DMaterialFactory.cpp7
-rw-r--r--src/JSystem/J2DGraph/J2DPicture.cpp404
-rw-r--r--src/JSystem/J2DGraph/J2DPictureEx.cpp778
-rw-r--r--src/JSystem/J2DGraph/J2DScreen.cpp1
-rw-r--r--src/JSystem/J2DGraph/J2DWindowEx.cpp208
-rw-r--r--src/JSystem/J3DGraphBase/J3DMatBlock.cpp15
-rw-r--r--src/JSystem/J3DGraphBase/J3DMaterial.cpp1
-rw-r--r--src/JSystem/J3DGraphBase/J3DShapeDraw.cpp22
-rw-r--r--src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp9
-rw-r--r--src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp20
-rw-r--r--src/JSystem/JAudio2/JASAiCtrl.cpp2
-rw-r--r--src/JSystem/JAudio2/JASAramStream.cpp12
-rw-r--r--src/JSystem/JAudio2/JASBNKParser.cpp182
-rw-r--r--src/JSystem/JAudio2/JASBasicWaveBank.cpp59
-rw-r--r--src/JSystem/JAudio2/JASSeqParser.cpp27
-rw-r--r--src/JSystem/JAudio2/JASTrack.cpp1
-rw-r--r--src/JSystem/JAudio2/JAUSectionHeap.cpp24
-rw-r--r--src/JSystem/JGadget/binary.cpp3
-rw-r--r--src/JSystem/JGadget/std-vector.cpp4
-rw-r--r--src/JSystem/JKernel/JKRAramArchive.cpp92
-rw-r--r--src/JSystem/JKernel/JKRDvdAramRipper.cpp73
-rw-r--r--src/JSystem/JMessage/control.cpp19
-rw-r--r--src/JSystem/JMessage/locale.cpp66
-rw-r--r--src/JSystem/JMessage/processor.cpp161
-rw-r--r--src/JSystem/JMessage/resource.cpp112
-rw-r--r--src/JSystem/JStudio/JStudio/ctb.cpp149
-rw-r--r--src/JSystem/JStudio/JStudio/functionvalue-inline.cpp33
-rw-r--r--src/JSystem/JStudio/JStudio/functionvalue.cpp448
-rw-r--r--src/JSystem/JStudio/JStudio/fvb-inline.cpp26
-rw-r--r--src/JSystem/JStudio/JStudio/fvb.cpp457
-rw-r--r--src/JSystem/JStudio/JStudio/jstudio-math.cpp89
-rw-r--r--src/JSystem/JStudio/JStudio/jstudio-object.cpp2
-rw-r--r--src/JSystem/JStudio/JStudio/stb.cpp78
-rw-r--r--src/JSystem/JStudio/JStudio_JStage/control.cpp20
-rw-r--r--src/JSystem/JStudio/JStudio_JStage/object-actor.cpp3
-rw-r--r--src/JSystem/JStudio/JStudio_JStage/object-light.cpp97
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, &param);
+ 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;