Added mario head skip as a toggle in config.h

This commit is contained in:
Reonu
2021-05-26 14:55:59 +01:00
parent 9cae5d864b
commit 4ec84ad51c
8 changed files with 26 additions and 11 deletions

View File

@@ -49,5 +49,7 @@
// When this option is enabled, LODs will ONLY work on console.
// When this option is disabled, LODs will work regardless of whether console or emulator is used.
#define AUTO_LOD
// Uncomment this if you want to keep the mario head and not skip it
#define KEEP_MARIO_HEAD
#endif // CONFIG_H

View File

@@ -4,6 +4,7 @@
#include "command_macros_base.h"
#include "level_table.h"
#include "config.h"
#define OP_AND 0
#define OP_NAND 1
@@ -169,7 +170,7 @@
CMD_PTR(romEnd)
#endif
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
#define LOAD_MARIO_HEAD(sethead) \
CMD_BBH(0x19, 0x04, sethead)
#else

View File

@@ -15,6 +15,8 @@
#include "levels/intro/header.h"
#include "config.h"
// 0x0E0002D0
const GeoLayout intro_geo_0002D0[] = {
GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),
@@ -61,7 +63,7 @@ const GeoLayout intro_geo_mario_head_regular[] = {
GEO_ZBUFFER(1),
GEO_OPEN_NODE(),
GEO_CAMERA_FRUSTUM(45, 128, 16384),
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
GEO_OPEN_NODE(),
GEO_ASM(2, geo_draw_mario_head_goddard),
GEO_CLOSE_NODE(),
@@ -94,7 +96,7 @@ const GeoLayout intro_geo_mario_head_dizzy[] = {
GEO_ZBUFFER(1),
GEO_OPEN_NODE(),
GEO_CAMERA_FRUSTUM(45, 128, 16384),
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
GEO_OPEN_NODE(),
GEO_ASM(3, geo_draw_mario_head_goddard),
GEO_CLOSE_NODE(),

View File

@@ -18,6 +18,8 @@
#include "make_const_nonconst.h"
#include "levels/intro/header.h"
#include "config.h"
const LevelScript level_intro_splash_screen[] = {
INIT_LEVEL(),
FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),
@@ -45,10 +47,12 @@ const LevelScript level_intro_splash_screen[] = {
const LevelScript level_intro_mario_head_regular[] = {
INIT_LEVEL(),
#ifndef KEEP_MARIO_HEAD
EXIT_AND_EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_1),
#endif
BLACKOUT(/*active*/ TRUE),
FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
LOAD_MARIO_HEAD(/*loadHeadID*/ REGULAR_FACE),
#endif
LOAD_RAW(/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),
@@ -75,7 +79,7 @@ const LevelScript level_intro_mario_head_dizzy[] = {
INIT_LEVEL(),
BLACKOUT(/*active*/ TRUE),
FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
LOAD_MARIO_HEAD(/*loadHeadID*/ DIZZY_FACE),
#endif
LOAD_RAW(/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),

View File

@@ -2,6 +2,7 @@ OUTPUT_ARCH (mips)
#define LINKER /* Removes externs from preprocessed script */
#include "segments.h"
#include "config.h"
#undef LINKER
#define BEGIN_SEG(name, addr) \
@@ -286,7 +287,7 @@ SECTIONS
BUILD_DIR/src/menu*.o(.text);
BUILD_DIR/src/menu*.o(.data*);
BUILD_DIR/src/menu*.o(.rodata*);
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
BUILD_DIR/libgoddard.a:*.o(.text);
/* goddard subsystem data */
BUILD_DIR/libgoddard.a:gd_main.o(.data*);
@@ -319,7 +320,7 @@ SECTIONS
BEGIN_NOLOAD(goddard)
{
BUILD_DIR/src/menu*.o(.bss*);
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
BUILD_DIR/libgoddard.a:*.o(.bss*);
#endif
}
@@ -345,7 +346,7 @@ SECTIONS
YAY0_SEG(debug_level_select, 0x07000000)
YAY0_SEG(title_screen_bg, 0x0A000000)
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
BEGIN_SEG(gd_dynlists, 0x04000000)
{
BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.data);

View File

@@ -25,6 +25,8 @@
#include "surface_collision.h"
#include "surface_load.h"
#include "config.h"
#define CMD_GET(type, offset) (*(type *) (CMD_PROCESS_OFFSET(offset) + (u8 *) sCurrentCmd))
// These are equal
@@ -281,7 +283,7 @@ static void level_cmd_load_yay0(void) {
}
static void level_cmd_load_mario_head(void) {
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
// TODO: Fix these hardcoded sizes
void *addr = main_pool_alloc(DOUBLE_SIZE_ON_64_BIT(0xE1000), MEMORY_POOL_LEFT);
if (addr != NULL) {

View File

@@ -24,6 +24,8 @@
#include "skybox.h"
#include "sound_init.h"
#include "config.h"
#define TOAD_STAR_1_REQUIREMENT 12
#define TOAD_STAR_2_REQUIREMENT 25
#define TOAD_STAR_3_REQUIREMENT 35
@@ -78,7 +80,7 @@ struct GraphNodeObject gMirrorMario; // copy of Mario's geo node for drawing mi
// (message NPC related things, the Mario head geo, and Mario geo
// functions)
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
/**
* Geo node script that draws Mario's head on the title screen.
*/

View File

@@ -5,11 +5,12 @@
#include "macros.h"
#include "types.h"
#include "config.h"
extern struct GraphNodeObject gMirrorMario;
extern struct MarioBodyState gBodyStates[2];
#ifdef GODDARD
#ifdef KEEP_MARIO_HEAD
Gfx *geo_draw_mario_head_goddard(s32 callContext, struct GraphNode *node, Mat4 *c);
#endif
void bhv_toad_message_loop(void);