You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Merge pull request #5 from someone2639/u16_models
cleaned up my code a bit (also u32 models because eh why not) (also i'm insane)
This commit is contained in:
@@ -9,7 +9,7 @@ index af9d0156..c68a7f6e 100644
|
||||
+#include "debug_box.h"
|
||||
|
||||
struct SpawnInfo gPlayerSpawnInfos[1];
|
||||
struct GraphNode *D_8033A160[0x100];
|
||||
struct GraphNode *gGraphNodePointers[0x100];
|
||||
@@ -363,6 +364,8 @@ void render_game(void) {
|
||||
if (gCurrentArea != NULL && !gWarpTransition.pauseRendering) {
|
||||
geo_process_root(gCurrentArea->unk04, D_8032CE74, D_8032CE78, gFBSetColor);
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
//#define SKIP_TITLE_SCREEN
|
||||
// Uncomment this if you want to keep the mario head and not skip it
|
||||
//#define KEEP_MARIO_HEAD
|
||||
// Number of possible unique model ID's (keep it higher than 256)
|
||||
#define MODEL_ID_COUNT 0x10000
|
||||
|
||||
/* Coordinate overflow fix setting:
|
||||
* Scales the world down by this factor, increasing how far you can render on
|
||||
|
||||
@@ -210,17 +210,19 @@
|
||||
CMD_BBH(0x20, 0x04, 0x0000)
|
||||
|
||||
#define LOAD_MODEL_FROM_DL(model, dl, layer) \
|
||||
CMD_BBH(0x21, 0x0C, 0), \
|
||||
CMD_BBH(0x21, 0x10, 0), \
|
||||
CMD_PTR(dl), \
|
||||
CMD_HH(layer, model)
|
||||
CMD_W(layer), \
|
||||
CMD_W(model)
|
||||
|
||||
#define LOAD_MODEL_FROM_GEO(model, geo) \
|
||||
CMD_BBH(0x22, 0x08, model), \
|
||||
CMD_PTR(geo)
|
||||
CMD_BBH(0x22, 0x0C, 0), \
|
||||
CMD_PTR(geo), \
|
||||
CMD_W(model)
|
||||
|
||||
// unk8 is float, but doesn't really matter since CMD23 is unused
|
||||
#define CMD23(model, unk4, unk8) \
|
||||
CMD_BBH(0x22, 0x08, model), \
|
||||
CMD_BBH(0x22, 0x08, 0), \
|
||||
CMD_PTR(unk4), \
|
||||
CMD_W(unk8)
|
||||
|
||||
@@ -229,7 +231,7 @@
|
||||
CMD_HHHHHH(posX, posY, posZ, angleX, angleY, angleZ), \
|
||||
CMD_W(behParam), \
|
||||
CMD_PTR(beh), \
|
||||
CMD_HH(0, model)
|
||||
CMD_W(model)
|
||||
|
||||
#define OBJECT(model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh) \
|
||||
OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh, 0x1F)
|
||||
@@ -238,7 +240,7 @@
|
||||
CMD_BBH(0x25, 0x10, 0), \
|
||||
CMD_W(behArg), \
|
||||
CMD_PTR(beh), \
|
||||
CMD_HH(0, model)
|
||||
CMD_W(model)
|
||||
|
||||
#define WARP_NODE(id, destLevel, destArea, destNode, flags) \
|
||||
CMD_BBBB(0x26, 0x08, id, destLevel), \
|
||||
|
||||
@@ -54,7 +54,7 @@ typedef s16 Trajectory;
|
||||
typedef s16 PaintingData;
|
||||
typedef uintptr_t BehaviorScript;
|
||||
typedef u8 Texture;
|
||||
typedef u16 ModelID;
|
||||
typedef u32 ModelID;
|
||||
|
||||
enum SpTaskState {
|
||||
SPTASK_STATE_NOT_STARTED,
|
||||
|
||||
4
sm64.ld
4
sm64.ld
@@ -231,7 +231,9 @@ SECTIONS
|
||||
__mainPoolSize = RAM_END - .;
|
||||
|
||||
__expansionRamStart = 0x80400000;
|
||||
ASSERT((. <= __expansionRamStart), "Error: RDRAM expanded into Expansion RAM, despite Expansion RAM not being defined.")
|
||||
#ifndef USE_EXT_RAM
|
||||
ASSERT((. <= __expansionRamStart), "Error: RDRAM expanded into Expansion RAM, despite Expansion RAM not being defined.")
|
||||
#endif
|
||||
|
||||
|
||||
BEGIN_SEG(entry, 0x10000000)
|
||||
|
||||
@@ -375,11 +375,11 @@ static void level_cmd_end_area(void) {
|
||||
}
|
||||
|
||||
static void level_cmd_load_model_from_dl(void) {
|
||||
ModelID model = CMD_GET(ModelID, 0xA);
|
||||
s16 layer = CMD_GET(u16, 0x8);
|
||||
ModelID model = CMD_GET(ModelID, 0xC);
|
||||
s16 layer = CMD_GET(u32, 0x8);
|
||||
void *dl_ptr = CMD_GET(void *, 4);
|
||||
|
||||
if (model < 65536) {
|
||||
if (model < MODEL_ID_COUNT) {
|
||||
gLoadedGraphNodes[model] =
|
||||
(struct GraphNode *) init_graph_node_display_list(sLevelPool, 0, layer, dl_ptr);
|
||||
}
|
||||
@@ -388,11 +388,11 @@ static void level_cmd_load_model_from_dl(void) {
|
||||
}
|
||||
|
||||
static void level_cmd_load_model_from_geo(void) {
|
||||
ModelID arg0 = CMD_GET(ModelID, 2);
|
||||
void *arg1 = CMD_GET(void *, 4);
|
||||
ModelID model = CMD_GET(ModelID, 8);
|
||||
void *geo = CMD_GET(void *, 4);
|
||||
|
||||
if (arg0 < 65536) {
|
||||
gLoadedGraphNodes[arg0] = process_geo_layout(sLevelPool, arg1);
|
||||
if (model < MODEL_ID_COUNT) {
|
||||
gLoadedGraphNodes[model] = process_geo_layout(sLevelPool, geo);
|
||||
}
|
||||
|
||||
sCurrentCmd = CMD_NEXT;
|
||||
@@ -410,7 +410,7 @@ static void level_cmd_23(void) {
|
||||
// load an f32, but using an integer load instruction for some reason (hence the union)
|
||||
arg2.i = CMD_GET(s32, 8);
|
||||
|
||||
if (model < 65536) {
|
||||
if (model < MODEL_ID_COUNT) {
|
||||
// GraphNodeScale has a GraphNode at the top. This
|
||||
// is being stored to the array, so cast the pointer.
|
||||
gLoadedGraphNodes[model] =
|
||||
@@ -428,7 +428,7 @@ static void level_cmd_init_mario(void) {
|
||||
gMarioSpawnInfo->areaIndex = 0;
|
||||
gMarioSpawnInfo->behaviorArg = CMD_GET(u32, 4);
|
||||
gMarioSpawnInfo->behaviorScript = CMD_GET(void *, 8);
|
||||
gMarioSpawnInfo->unk18 = gLoadedGraphNodes[CMD_GET(ModelID, 0xE)];
|
||||
gMarioSpawnInfo->unk18 = gLoadedGraphNodes[CMD_GET(ModelID, 0xC)];
|
||||
gMarioSpawnInfo->next = NULL;
|
||||
|
||||
sCurrentCmd = CMD_NEXT;
|
||||
@@ -440,7 +440,7 @@ static void level_cmd_place_object(void) {
|
||||
struct SpawnInfo *spawnInfo;
|
||||
|
||||
if (sCurrAreaIndex != -1 && ((CMD_GET(u8, 2) & val7) || CMD_GET(u8, 2) == 0x1F)) {
|
||||
model = CMD_GET(ModelID, 0x1A);
|
||||
model = CMD_GET(ModelID, 0x18);
|
||||
spawnInfo = alloc_only_pool_alloc(sLevelPool, sizeof(struct SpawnInfo));
|
||||
|
||||
spawnInfo->startPos[0] = CMD_GET(s16, 4);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "area.h"
|
||||
#include "sm64.h"
|
||||
@@ -23,7 +24,7 @@
|
||||
#include "level_table.h"
|
||||
|
||||
struct SpawnInfo gPlayerSpawnInfos[1];
|
||||
struct GraphNode *D_8033A160[0x10000];
|
||||
struct GraphNode *gGraphNodePointers[MODEL_ID_COUNT];
|
||||
struct Area gAreaData[8];
|
||||
|
||||
struct WarpTransition gWarpTransition;
|
||||
@@ -36,7 +37,7 @@ s16 gPauseScreenMode;
|
||||
s16 gSaveOptSelectIndex;
|
||||
|
||||
struct SpawnInfo *gMarioSpawnInfo = &gPlayerSpawnInfos[0];
|
||||
struct GraphNode **gLoadedGraphNodes = D_8033A160;
|
||||
struct GraphNode **gLoadedGraphNodes = gGraphNodePointers;
|
||||
struct Area *gAreas = gAreaData;
|
||||
struct Area *gCurrentArea = NULL;
|
||||
struct CreditsEntry *gCurrCreditsEntry = NULL;
|
||||
|
||||
@@ -120,7 +120,7 @@ struct WarpTransition
|
||||
|
||||
extern struct GraphNode **gLoadedGraphNodes;
|
||||
extern struct SpawnInfo gPlayerSpawnInfos[];
|
||||
extern struct GraphNode *D_8033A160[];
|
||||
extern struct GraphNode *gGraphNodePointers[MODEL_ID_COUNT];
|
||||
extern struct Area gAreaData[];
|
||||
extern struct WarpTransition gWarpTransition;
|
||||
extern s16 gCurrCourseNum;
|
||||
|
||||
Reference in New Issue
Block a user