Made widescreen toggleable in config.h. Also made the widescreen variable global while I'm at it.

This commit is contained in:
Reonu
2021-05-26 14:41:46 +01:00
parent bdf81ba882
commit 84d4c8b84b
7 changed files with 53 additions and 25 deletions

View File

@@ -40,6 +40,11 @@
#else
// What's the point of having a border?
#define BORDER_HEIGHT 0
#endif
// --ultrasm64-extbounds specific settings--
// Enable widescreen (16:9) support
#define WIDE
#endif // CONFIG_H

View File

@@ -63,6 +63,9 @@ UNUSED u8 filler80339D30[0x90];
s32 unused8032C690 = 0;
u32 gGlobalTimer = 0;
u8 gIsConsole;
#ifdef WIDE
u8 gWidescreen;
#endif
u16 sCurrFBNum = 0;
u16 frameBufferIndex = 0;

View File

@@ -42,6 +42,9 @@ extern u8 *gGfxPoolEnd;
extern struct GfxPool *gGfxPool;
extern u8 gControllerBits;
extern u8 gIsConsole;
#ifdef WIDE
extern u8 gWidescreen;
#endif
#ifdef EEP
extern s8 gEepromProbe;
#endif

View File

@@ -22,7 +22,7 @@
#include "sm64.h"
#include "text_strings.h"
#include "types.h"
#define wide // DELETE THIS DEFINE IF YOU DON'T WANT WIDESCREEN SUPPORT IN YOUR HACK (why tho)
#include "config.h"
u16 gDialogColorFadeTimer;
s8 gLastDialogLineNum;
@@ -39,7 +39,6 @@ u8 textCurrRatio43[] = { TEXT_HUD_CURRENT_RATIO_43 };
u8 textCurrRatio169[] = { TEXT_HUD_CURRENT_RATIO_169 };
u8 textWideInfo[] = { TEXT_HUD_WIDE_INFO };
u8 textWideInfo2[] = { TEXT_HUD_WIDE_INFO2 };
u8 widescreen = 0;
extern u8 gLastCompletedCourseNum;
extern u8 gLastCompletedStarNum;
@@ -2272,8 +2271,8 @@ void render_pause_my_score_coins(void) {
print_generic_string(get_string_width(gTextCourseArr[gInGameLanguage]) + 51, 157, strCourseNum);
#else
print_generic_string(CRS_NUM_X1, 157, strCourseNum);
#ifdef wide
if (widescreen == 0) {
#ifdef WIDE
if (!gWidescreen) {
if (COURSE_IS_MAIN_COURSE(gCurrCourseNum)) {
print_generic_string(10, 40, textCurrRatio43);
} else {
@@ -2583,20 +2582,20 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
}
}
}
#ifdef wide
#ifdef WIDE
if (gPlayer1Controller->buttonPressed & L_TRIG){
if (widescreen == 0){
widescreen = 1;
if (!gWidescreen){
gWidescreen = 1;
}
else{
widescreen = 0;
gWidescreen = 0;
}
}
#endif
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
#ifdef wide
if (widescreen == 0) {
#ifdef WIDE
if (!gWidescreen) {
print_generic_string(10, 20, textCurrRatio43);
}
else {
@@ -2670,14 +2669,16 @@ s16 render_pause_courses_and_castle(void) {
shade_screen();
render_pause_my_score_coins();
render_pause_red_coins();
#ifdef WIDE
if (gPlayer1Controller->buttonPressed & L_TRIG){
if (widescreen == 0){
widescreen = 1;
if (!gWidescreen){
gWidescreen = 1;
}
else{
widescreen = 0;
gWidescreen = 0;
}
}
#endif
if (gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT) {
render_pause_course_options(99, 93, &gDialogLineNum, 15);

View File

@@ -10,6 +10,7 @@
#include "rendering_graph_node.h"
#include "shadow.h"
#include "sm64.h"
#include "game_init.h"
#define WIDESCREEN
/**
@@ -237,7 +238,6 @@ static void geo_process_ortho_projection(struct GraphNodeOrthoProjection *node)
/**
* Process a perspective projection node.
*/
extern u8 widescreen;
static void geo_process_perspective(struct GraphNodePerspective *node) {
if (node->fnNode.func != NULL) {
node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]);
@@ -245,17 +245,16 @@ static void geo_process_perspective(struct GraphNodePerspective *node) {
if (node->fnNode.node.children != NULL) {
u16 perspNorm;
Mtx *mtx = alloc_display_list(sizeof(*mtx));
#ifdef VERSION_EU
f32 aspect = ((f32) gCurGraphNodeRoot->width / (f32) gCurGraphNodeRoot->height) * 1.1f;
#else
if (widescreen == 1){
#ifdef WIDE
if (gWidescreen){
aspect = 1.775f;
}
else{
aspect = 1.33333f;
}
#endif
#else
aspect = 1.33333f;
#endif
guPerspective(mtx, &perspNorm, node->fov, aspect, node->near / WORLD_SCALE, node->far / WORLD_SCALE, 1.0f);
gSPPerspNormalize(gDisplayListHead++, perspNorm);

View File

@@ -2854,12 +2854,13 @@ Gfx *geo_file_select_strings_and_menu_cursor(s32 callContext, UNUSED struct Grap
* Relocates cursor position of the last save if the game goes back to the Mario Screen
* either completing a course choosing "SAVE & QUIT" or having a game over.
*/
extern u8 widescreen;
s32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {
#ifdef VERSION_EU
s8 fileNum;
#endif
widescreen = 0;
#ifdef WIDE
gWidescreen = 0;
#endif
sSelectedButtonID = MENU_BUTTON_NONE;
sCurrentMenuLevel = MENU_LAYER_MAIN;
sTextBaseAlpha = 0;

View File

@@ -20,6 +20,7 @@
#include "star_select.h"
#include "text_strings.h"
#include "prevent_bss_reordering.h"
#include "game/game_init.h"
/**
* @file star_select.c
@@ -52,7 +53,8 @@ static s8 sSelectableStarIndex = 0;
// Act Selector menu timer that keeps counting until you choose an act.
static s32 sActSelectorMenuTimer = 0;
extern u8 widescreen;
#ifdef WIDE
#endif
/**
* Act Selector Star Type Loop Action
* Defines a select type for a star in the act selector.
@@ -92,7 +94,8 @@ void bhv_act_selector_star_type_loop(void) {
void render_100_coin_star(u8 stars) {
if (stars & (1 << 6)) {
// If the 100 coin star has been collected, create a new star selector next to the coin score.
if (widescreen == 1){
#ifdef WIDE
if (gWidescreen){
sStarSelectorModels[6] = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR,
bhvActSelectorStarType, ((370*4.0f)/3), 24, -300, 0, 0, 0);
}
@@ -100,6 +103,10 @@ void render_100_coin_star(u8 stars) {
sStarSelectorModels[6] = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR,
bhvActSelectorStarType, 370, 24, -300, 0, 0, 0);
}
#else
sStarSelectorModels[6] = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR,
bhvActSelectorStarType, 370, 24, -300, 0, 0, 0);
#endif
sStarSelectorModels[6]->oStarSelectorSize = 0.8;
sStarSelectorModels[6]->oStarSelectorType = STAR_SELECTOR_100_COINS;
@@ -154,7 +161,8 @@ void bhv_act_selector_init(void) {
}
// Render star selector objects
if (widescreen == 1) {
#ifdef WIDE
if (gWidescreen) {
for (i = 0; i < sVisibleStars; i++) {
sStarSelectorModels[i] =
spawn_object_abs_with_rot(gCurrentObject, 0, selectorModelIDs[i], bhvActSelectorStarType,
@@ -170,6 +178,14 @@ void bhv_act_selector_init(void) {
sStarSelectorModels[i]->oStarSelectorSize = 1.0f;
}
}
#else
for (i = 0; i < sVisibleStars; i++) {
sStarSelectorModels[i] =
spawn_object_abs_with_rot(gCurrentObject, 0, selectorModelIDs[i], bhvActSelectorStarType,
75 + sVisibleStars * -75 + i * 152, 248, -300, 0, 0, 0);
sStarSelectorModels[i]->oStarSelectorSize = 1.0f;
}
#endif
render_100_coin_star(stars);
}