You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Added global star IDs, disabled by default, toggleable in config.h
This commit is contained in:
@@ -17,7 +17,7 @@ Fork of the ultrasm64 repo by CrashOveride which includes the following commonly
|
||||
- Widescreen (16:9) support toggleable by pressing `L` in the pause menu.
|
||||
- If you don't want this, you can disable it by removing `#define wide` in `ingame_menu.c`
|
||||
- Removed course-specific camera processing
|
||||
- Increased maximum pole lenght (The game will read bparam1 and bparam2 together as a single value, so you can have a Snake Eater pole)
|
||||
- Increased maximum pole length (The game will read bparam1 and bparam2 together as a single value, so you can have a Snake Eater pole)
|
||||
- bparam4 fix (the game no longer uses bparam4 to check if an object is mario and therefore you can safely use it)
|
||||
|
||||
It also uncringes the way that apply_patch.sh works, and removes the black border.
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#define CAMERA_FIX
|
||||
// Increase the maximum pone lenght (it will treat bparam1 and bparam2 as a single value)
|
||||
#define LONGER_POLES
|
||||
// Uncomment this if you want global star IDs (useful for creating an open world hack ala MVC)
|
||||
//#define GLOBAL_STAR_IDS
|
||||
// Uncomment this if you want to skip the title screen (Super Mario 64 logo)
|
||||
//#define SKIP_TITLE_SCREEN
|
||||
// Uncomment this if you want to keep the mario head and not skip it
|
||||
@@ -62,7 +64,7 @@
|
||||
|
||||
/* Coordinate overflow fix setting:
|
||||
* Scales the world down by this factor, increasing how far you can render on
|
||||
* console in exchange for a slight loss in precision.
|
||||
* console and LLE plugins in exchange for a slight loss in precision.
|
||||
*
|
||||
* For double extended boundary hacks, a value of 1.5f or 2.0f is good.
|
||||
* For quadruple extended bounds, use 3.f or 4.f
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#include "config.h"
|
||||
|
||||
// spawn_default_star.c.inc
|
||||
|
||||
static struct ObjectHitbox sCollectStarHitbox = {
|
||||
@@ -17,8 +19,13 @@ void bhv_collect_star_init(void) {
|
||||
u8 currentLevelStarFlags;
|
||||
|
||||
starId = (o->oBehParams >> 24) & 0xFF;
|
||||
#ifdef GLOBAL_STAR_IDS
|
||||
currentLevelStarFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, (starId/7) - 1);
|
||||
if (currentLevelStarFlags & (1 << (starId % 7))) {
|
||||
#else
|
||||
currentLevelStarFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
|
||||
if (currentLevelStarFlags & (1 << starId)) {
|
||||
#endif
|
||||
o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_TRANSPARENT_STAR];
|
||||
} else {
|
||||
o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR];
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "sm64.h"
|
||||
#include "sound_init.h"
|
||||
#include "rumble_init.h"
|
||||
#include "config.h"
|
||||
|
||||
#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x01
|
||||
#define INT_PUNCH (1 << 1) // 0x02
|
||||
@@ -806,8 +807,11 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O
|
||||
o->oInteractStatus = INT_STATUS_INTERACTED;
|
||||
m->interactObj = o;
|
||||
m->usedObj = o;
|
||||
|
||||
#ifdef GLOBAL_STAR_IDS
|
||||
starIndex = (o->oBehParams >> 24) & 0xFF;
|
||||
#else
|
||||
starIndex = (o->oBehParams >> 24) & 0x1F;
|
||||
#endif
|
||||
save_file_collect_star_or_key(m->numCoins, starIndex);
|
||||
|
||||
m->numStars =
|
||||
|
||||
@@ -413,8 +413,13 @@ void save_file_reload(void) {
|
||||
void save_file_collect_star_or_key(s16 coinScore, s16 starIndex) {
|
||||
s32 fileIndex = gCurrSaveFileNum - 1;
|
||||
s32 courseIndex = gCurrCourseNum - 1;
|
||||
|
||||
#ifdef GLOBAL_STAR_IDS
|
||||
s32 starByte = (starIndex / 7) - 1;
|
||||
s32 starFlag = 1 << (starIndex % 7);
|
||||
#else
|
||||
s32 starFlag = 1 << starIndex;
|
||||
#endif
|
||||
|
||||
UNUSED s32 flags = save_file_get_flags();
|
||||
|
||||
gLastCompletedCourseNum = courseIndex + 1;
|
||||
@@ -456,9 +461,15 @@ void save_file_collect_star_or_key(s16 coinScore, s16 starIndex) {
|
||||
break;
|
||||
|
||||
default:
|
||||
#ifdef GLOBAL_STAR_IDS
|
||||
if (!(save_file_get_star_flags(fileIndex, starByte) & starFlag)) {
|
||||
save_file_set_star_flags(fileIndex, starByte, starFlag);
|
||||
}
|
||||
#else
|
||||
if (!(save_file_get_star_flags(fileIndex, courseIndex) & starFlag)) {
|
||||
save_file_set_star_flags(fileIndex, courseIndex, starFlag);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user