Navigation Menu

Skip to content

Commit

Permalink
Added a bunch of nj* functions.
Browse files Browse the repository at this point in the history
Exposed more internally used functions and variables.
  • Loading branch information
michael-fadely committed Jan 3, 2016
1 parent a521267 commit 0aee0d2
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 43 deletions.
11 changes: 0 additions & 11 deletions SADXModLoader/FixFOV.cpp
Expand Up @@ -3,17 +3,6 @@
#include "include/d3d8types.h"
#include "SADXModLoader.h"

FunctionPointer(void, SetHorizontalFOV_BAMS, (Angle bams), 0x00402ED0);
//FunctionPointer(Angle, GetHorizontalFOV_BAMS, (void), 0x00402F00);
FunctionPointer(void, SetScreenDist, (Angle bams), 0x007815C0);

// This probably isn't even a D3DMATRIX.
DataPointer(D3DMATRIX, ProjectionMatrix, 0x03AAD0A0);
DataPointer(NJS_SCREEN, _nj_screen_, 0x03D0F9E0);
DataPointer(Angle, HorizontalFOV_BAMS, 0x03AB98EC);
DataPointer(Angle, LastHorizontalFOV_BAMS, 0x03B2CBB4);
DataPointer(NJS_SPRITE, VideoFrame, 0x03C600A4);

static const Angle bams_default = 12743;
static Angle last_bams = bams_default;
static Angle fov_bams;
Expand Down
12 changes: 1 addition & 11 deletions SADXModLoader/TextureReplacement.cpp
Expand Up @@ -23,10 +23,6 @@ extern FileMap sadx_fileMap;

bool forceMipmaps = false;

DataPointer(bool, LoadingFile, 0x3ABDF68);
FunctionPointer(NJS_TEXMEMLIST*, GetCachedTexture, (int gbix), 0x0077F5B0);
FunctionPointer(Sint32, njReleaseTexture, (NJS_TEXLIST* texlist), 0x00403290);

#define TOMAPSTRING(a) { a, #a }

static const std::unordered_map<HRESULT, const char*> D3DErrors = {
Expand Down Expand Up @@ -322,7 +318,6 @@ NJS_TEXMEMLIST* LoadTexture(const std::wstring& _path, CustomTextureEntry& entry

#pragma region PVM

FunctionPointer(Sint32, njLoadTexturePvmFile, (const char*, NJS_TEXLIST*), 0x0077FEB0);

/// <summary>
/// Replaces the specified PVM with a texture pack virtual PVM.
Expand Down Expand Up @@ -400,11 +395,6 @@ void __cdecl LoadPVM_C(const char* filename, NJS_TEXLIST* texlist)

#pragma region PVR

ThiscallFunctionPointer(int, DoSomethingWithPalette, (NJS_TEXPALETTE *pl), 0x78CF80);
FunctionPointer(NJS_TEXMEMLIST*, TexMemList_PixelFormat, (NJS_TEXINFO* info, Uint32 gbix), 0x0077F7F0);
FunctionPointer(NJS_TEXMEMLIST*, LoadPVR, (void* data, int gbix), 0x0077FBD0);
FunctionPointer(void*, LoadPVx, (const char*), 0x007929D0);
FunctionPointer(void, j__HeapFree_0, (LPVOID lpMem), 0x00792A70);
DataArray(NJS_TEXPALETTE*, unk_3CFC000, 0x3CFC000, 0);

/// <summary>
Expand Down Expand Up @@ -475,7 +465,7 @@ signed int __cdecl LoadPVRFile(NJS_TEXLIST* texlist)
Uint32 attr = entries->attr;

// If already loaded, grab from memory. Otherwise, load from disk.
// If not already in memory, entries->filename is a string. Otherwise unknown.
// If type is memory, ->filename is NJS_TEXINFO or data, otherwise a string.
if (attr & NJD_TEXATTR_TYPE_MEMORY)
{
if (attr & NJD_TEXATTR_GLOBALINDEX)
Expand Down
54 changes: 38 additions & 16 deletions SADXModLoader/include/SADXModLoader/SADXFunctions.h
Expand Up @@ -14,7 +14,7 @@
// SADX Functions
FunctionPointer(void, PrintDebug, (const char *Format, ...), 0x401000);
VoidFunc(CheckSettings, 0x4025B0);
FunctionPointer(void, SetTextures, (NJS_TEXLIST *texturelist), 0x403070);
FunctionPointer(void, njSetTexture, (NJS_TEXLIST *texlist), 0x403070);
FunctionPointer(bool, CheckModelDistance, (Vector3 *center, float radius), 0x403330);
FunctionPointer(bool, CheckModelDistance2, (float x, float y, float z, float a4), 0x406F70);
FunctionPointer(void, ProcessModelNode, (NJS_OBJECT *obj, int a2, float a3), 0x4074A0);
Expand Down Expand Up @@ -290,21 +290,21 @@ FunctionPointer(void, SetDebugFontSize, (unsigned short size), 0x007808C0);
FunctionPointer(void, DisplayDebugString, (signed int position, const char *text), 0x7808F0);
FunctionPointer(void, PrintDebugNumber, (signed int position, int value, signed int numdigits), 0x780970);
FunctionPointer(void, DisplayDebugStringFormatted, (signed int position, const char *format, ...), 0x780B30);
ThiscallFunctionPointer(void, MatrixScale, (Vector3 *Scale), 0x781700);
FastcallFunctionPointer(void, MatrixRotateXYZ, (D3DMATRIX *a1, signed int XRot, signed int YRot, signed int ZRot), 0x781770);
FastcallFunctionPointer(void, MatrixRotateZYX, (int a1, signed int XRot, signed int YRot, signed int ZRot), 0x7819C0);
ThiscallFunctionPointer(void, MatrixTranslate, (Vector3 *), 0x781C10);
ThiscallFunctionPointer(void, MatrixTranslate3, (D3DMATRIX *a1, float XDist, float YDist, float ZDist), 0x784BE0);
ThiscallFunctionPointer(void, MatrixScale3, (D3DMATRIX *a1, float XScale, float YScale, float ZScale), 0x784C70);
FastcallFunctionPointer(void, TransformCoordinate, (D3DMATRIX *a1, Vector3 *a3, Vector3 *a2), 0x784D60);
FastcallFunctionPointer(void, MatrixRotateY, (D3DMATRIX *a1, signed int a2), 0x784E20);
FastcallFunctionPointer(void, MatrixRotateX, (D3DMATRIX *a1, signed int a2), 0x784EE0);
FastcallFunctionPointer(void, MatrixRotateZ, (D3DMATRIX *a1, signed int a2), 0x784FB0);
FastcallFunctionPointer(void, MatrixTranslate2, (D3DMATRIX *a1, NJS_VECTOR *a2), 0x785070);
ThiscallFunctionPointer(void, PushMatrix2, (D3DMATRIX *a1), 0x7850F0);
ThiscallFunctionPointer(void, PopMatrices, (int numMatrices), 0x785140);
FastcallFunctionPointer(void, Vector3_Subtract, (Vector3 *a1, Vector3 *a2), 0x787610);
FastcallFunctionPointer(void, MatrixScale2, (D3DMATRIX *a1, Vector3 *a2), 0x788A50);
ThiscallFunctionPointer(void, njScaleEx, (NJS_VECTOR* v), 0x781700);
FastcallFunctionPointer(void, njRotateXYZ, (NJS_MATRIX *m, Angle angx, Angle angy, Angle angz), 0x781770);
FastcallFunctionPointer(void, njRotateZYX, (NJS_MATRIX *m, Angle angx, Angle angy, Angle angz), 0x7819C0);
ThiscallFunctionPointer(void, njTranslateEx, (NJS_VECTOR *v), 0x781C10);
ThiscallFunctionPointer(void, njTranslate, (NJS_MATRIX *m, Float x, Float y, Float z), 0x784BE0);
ThiscallFunctionPointer(void, njScale, (NJS_MATRIX *m, Float sx, Float sy, Float sz), 0x784C70);
FastcallFunctionPointer(void, TransformCoordinate, (NJS_MATRIX* a1, Vector3* a3, Vector3* a2), 0x784D60);
FastcallFunctionPointer(void, njRotateY, (NJS_MATRIX* m, Angle ang), 0x784E20);
FastcallFunctionPointer(void, njRotateX, (NJS_MATRIX* m, Angle ang), 0x784EE0);
FastcallFunctionPointer(void, njRotateZ, (NJS_MATRIX* m, Angle ang), 0x784FB0);
FastcallFunctionPointer(void, njTranslateV, (NJS_MATRIX* m, NJS_VECTOR* v), 0x785070);
ThiscallFunctionPointer(void, njPushMatrix, (NJS_MATRIX* m), 0x7850F0);
ThiscallFunctionPointer(void, njPopMatrix, (Uint32 n), 0x785140);
FastcallFunctionPointer(void, njSubVector, (Vector3* a1, Vector3* a2), 0x787610);
FastcallFunctionPointer(void, njScaleV, (NJS_MATRIX* a1, Vector3* a2), 0x788A50);
FunctionPointer(void, RenderSA2Model, (NJS_OBJECT *a1), 0x78AB80);
FunctionPointer(char *, GetWindowClassName, (), 0x793F60);
StdcallFunctionPointer(void, CompletionRoutine, (DWORD, DWORD, LPOVERLAPPED), 0x795340);
Expand Down Expand Up @@ -363,6 +363,28 @@ FunctionPointer(void, njDrawSprite2D, (NJS_SPRITE* sp, Int n, Float pri, Uint32
/// <param name="attr">Attributes. <c>NJD_SPRITE_SCALE</c> makes the sprite always face the camera.</param>
FunctionPointer(void, njDrawSprite3D, (NJS_SPRITE* sp, Int n, Uint32 attr), 0x00407070);

FastcallFunctionPointer(void, njProjectScreen, (NJS_MATRIX* m, NJS_VECTOR* p3, NJS_POINT2* p2), 0x00788700);
FunctionPointer(Sint32, njLoadTexturePvmFile, (const char *filename, NJS_TEXLIST *texlist), 0x0077FEB0);
ThiscallFunctionPointer(int, DoSomethingWithPalette, (NJS_TEXPALETTE *pl), 0x78CF80);
FunctionPointer(NJS_TEXMEMLIST*, TexMemList_PixelFormat, (NJS_TEXINFO* info, Uint32 gbix), 0x0077F7F0);
FunctionPointer(NJS_TEXMEMLIST*, LoadPVR, (void* data, int gbix), 0x0077FBD0);
FunctionPointer(void*, LoadPVx, (const char*), 0x007929D0);
FunctionPointer(void, j__HeapFree_0, (LPVOID lpMem), 0x00792A70);
FunctionPointer(NJS_TEXMEMLIST*, GetCachedTexture, (int gbix), 0x0077F5B0);
FunctionPointer(Sint32, njReleaseTexture, (NJS_TEXLIST* texlist), 0x00403290);
FastcallFunctionPointer(Float, njInnerProduct, (NJS_VECTOR *v1, NJS_VECTOR *v2), 0x00787CF0);
FastcallFunctionPointer(Float, njScalor, (NJS_VECTOR *v), 0x00787CC0);
FastcallFunctionPointer(Float, njScalor2, (NJS_VECTOR *v), 0x00787E10);
FunctionPointer(Sint32, njLoadPaletteFile, (const char *filename, NJS_TEXPALETTE *pl), 0x0077F700);
FunctionPointer(Sint32, njLoadTexturePvmMemory, (Uint8 *addr, NJS_TEXLIST *texlist), 0x0077FD80);
ThiscallFunctionPointer(Sint32, njReleaseTextureLow, (NJS_TEXMEMLIST* texmemlist), 0x0078CD50);
FastcallFunctionPointer(Sint32, njSetTextureNum, (Uint32 n), 0x0077F440);
FastcallFunctionPointer(void, njAddVector, (NJS_VECTOR *vd, NJS_VECTOR *vs), 0x00785170);
FunctionPointer(void, njSetConstantMaterial, (NJS_ARGB *mat), 0x0077FF90);

FunctionPointer(void, SetHorizontalFOV_BAMS, (Angle bams), 0x00402ED0);
FunctionPointer(Angle, GetHorizontalFOV_BAMS, (void), 0x00402F00);
FunctionPointer(void, SetScreenDist, (Angle bams), 0x007815C0);

#ifdef _MSC_VER

Expand Down
8 changes: 8 additions & 0 deletions SADXModLoader/include/SADXModLoader/SADXVariables.h
Expand Up @@ -7,6 +7,7 @@
#define SADXMODLOADER_SADXVARS_H

#include "../ModLoader/MemAccess.h"
#include "../d3d8types.h"
#include "SADXStructs.h"

DataArray(TrialLevelList, TrialLevels, 0x7EF5EC, 7);
Expand Down Expand Up @@ -56,6 +57,13 @@ DataPointer(int, CutscenePlaying, 0x3B2A2E4);
DataPointer(float, DebugFontSize, 0x03CE7154);
DataPointer(int, DebugFontColor, 0x03CE715C);
DataPointer(Uint32, DisplayAdapter, 0x03D0FDFC);
// This is probably NJS_MATRIX and not D3DMATRIX, but they're equivalent in size so it doesn't matter.
DataPointer(D3DMATRIX, ProjectionMatrix, 0x03AAD0A0);
DataPointer(NJS_SCREEN, _nj_screen_, 0x03D0F9E0);
DataPointer(Angle, HorizontalFOV_BAMS, 0x03AB98EC);
DataPointer(Angle, LastHorizontalFOV_BAMS, 0x03B2CBB4);
DataPointer(NJS_SPRITE, VideoFrame, 0x03C600A4);
DataPointer(bool, LoadingFile, 0x3ABDF68);

// Raw input array. It's recommended you use ControllerPointers instead.
// This will prevent compatibility issues with mods that need to redirect input.
Expand Down
10 changes: 5 additions & 5 deletions libmodutils/GoalRing.cpp
Expand Up @@ -13,18 +13,18 @@ Uint32 GoalTextFlags;
FunctionPointer(void, sub_408530, (NJS_OBJECT *), 0x408530);
void __cdecl GoalRing_Display(ObjectMaster *obj)
{
SetTextures(&GoalRingTextures);
PushMatrix2(0);
MatrixTranslate2(0, &obj->Data1->Position);
njSetTexture(&GoalRingTextures);
njPushMatrix(0);
njTranslateV(0, &obj->Data1->Position);
int yrot = obj->Data1->Rotation.y;
if (yrot)
MatrixRotateY(0, yrot);
njRotateY(0, yrot);
if (FrameCounter % 40 >= 25)
object_GoalText.evalflags |= NJD_EVAL_HIDE;
else
object_GoalText.evalflags &= ~NJD_EVAL_HIDE;
sub_408530(&object_GoalRing);
PopMatrices(1);
njPopMatrix(1);
}

void __cdecl GoalRing_Main(ObjectMaster *obj)
Expand Down

0 comments on commit 0aee0d2

Please sign in to comment.