mirror of
https://github.com/zeldaret/oot.git
synced 2024-12-27 07:07:09 +00:00
Macros for Entranceinfo.field
(#1270)
* Macros for `Entranceinfo.field` * `ENTRANCE_INFO_FIELD_` -> `ENTRANCE_INFO_` * Remove mentioning the transition types being "default" * comment on macros what they are for * Shorten "transition" -> "trans" for `EntranceInfo.field` usage
This commit is contained in:
parent
030594a457
commit
5299208291
5 changed files with 30 additions and 13 deletions
|
@ -7,12 +7,12 @@
|
|||
* - Argument 3: Spawn number for this entrance
|
||||
* - Argument 4: Toggle if bgm should continue during the transition using this entrance (true or false)
|
||||
* - Argument 5: Toggle if a title card should display when using this entrance (true or false)
|
||||
* - Argument 6: Transition type when entering using this entrance
|
||||
* - Argument 7: Transition type when exiting using this entrance
|
||||
*
|
||||
* - Argument 6: Transition type when entering using this entrance (second half of a scene transition)
|
||||
* - Argument 7: Transition type when exiting using this entrance (first half of a scene transition)
|
||||
*
|
||||
* WARNING: Due to how the entrance system is implemented, entries within the same group of scene setups are NOT shiftable.
|
||||
* Groups of scene setups are indicated by line breaks.
|
||||
*
|
||||
*
|
||||
* Only the first entrance within a group of setups is expected to be referenced in code.
|
||||
* The entrance system will apply the offset on its own to access the correct entrance for a given setup.
|
||||
*/
|
||||
|
|
|
@ -1344,6 +1344,20 @@ typedef struct {
|
|||
/* 0x24 */ s16 unk_24;
|
||||
} struct_80034A14_arg1; // size = 0x28
|
||||
|
||||
// Macros for `EntranceInfo.field`
|
||||
#define ENTRANCE_INFO_CONTINUE_BGM_FLAG (1 << 15)
|
||||
#define ENTRANCE_INFO_DISPLAY_TITLE_CARD_FLAG (1 << 14)
|
||||
#define ENTRANCE_INFO_END_TRANS_TYPE_MASK 0x3F80
|
||||
#define ENTRANCE_INFO_END_TRANS_TYPE_SHIFT 7
|
||||
#define ENTRANCE_INFO_END_TRANS_TYPE(field) \
|
||||
(((field) >> ENTRANCE_INFO_END_TRANS_TYPE_SHIFT) \
|
||||
& (ENTRANCE_INFO_END_TRANS_TYPE_MASK >> ENTRANCE_INFO_END_TRANS_TYPE_SHIFT))
|
||||
#define ENTRANCE_INFO_START_TRANS_TYPE_MASK 0x7F
|
||||
#define ENTRANCE_INFO_START_TRANS_TYPE_SHIFT 0
|
||||
#define ENTRANCE_INFO_START_TRANS_TYPE(field) \
|
||||
(((field) >> ENTRANCE_INFO_START_TRANS_TYPE_SHIFT) \
|
||||
& (ENTRANCE_INFO_START_TRANS_TYPE_MASK >> ENTRANCE_INFO_START_TRANS_TYPE_SHIFT))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 scene;
|
||||
/* 0x01 */ s8 spawn;
|
||||
|
|
|
@ -349,9 +349,8 @@ void Play_Init(GameState* thisx) {
|
|||
|
||||
if (gSaveContext.gameMode != 1) {
|
||||
if (gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT) {
|
||||
// fade in
|
||||
this->transitionType =
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field >> 7) & 0x7F;
|
||||
this->transitionType = ENTRANCE_INFO_END_TRANS_TYPE(
|
||||
gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field);
|
||||
} else {
|
||||
this->transitionType = gSaveContext.nextTransitionType;
|
||||
gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT;
|
||||
|
@ -490,7 +489,8 @@ void Play_Update(PlayState* this) {
|
|||
}
|
||||
|
||||
// fade out bgm if "continue bgm" flag is not set
|
||||
if (!(gEntranceTable[this->nextEntranceIndex + sceneSetupIndex].field & 0x8000)) {
|
||||
if (!(gEntranceTable[this->nextEntranceIndex + sceneSetupIndex].field &
|
||||
ENTRANCE_INFO_CONTINUE_BGM_FLAG)) {
|
||||
// "Sound initalized. 111"
|
||||
osSyncPrintf("\n\n\nサウンドイニシャル来ました。111");
|
||||
if ((this->transitionType < TRANS_TYPE_MAX) && !Environment_IsForcedSequenceDisabled()) {
|
||||
|
|
|
@ -24,9 +24,12 @@
|
|||
#include "overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h"
|
||||
|
||||
// Entrance Table definition
|
||||
#define DEFINE_ENTRANCE(_0, scene, spawn, continueBgm, displayTitleCard, fadeIn, fadeOut) \
|
||||
{ scene, spawn, \
|
||||
((continueBgm & 1) << 15) | ((displayTitleCard & 1) << 14) | ((fadeIn & 0x7F) << 7) | (fadeOut & 0x7F) },
|
||||
#define DEFINE_ENTRANCE(_0, scene, spawn, continueBgm, displayTitleCard, endTransType, startTransType) \
|
||||
{ scene, spawn, \
|
||||
(((continueBgm) ? ENTRANCE_INFO_CONTINUE_BGM_FLAG : 0) | \
|
||||
((displayTitleCard) ? ENTRANCE_INFO_DISPLAY_TITLE_CARD_FLAG : 0) | \
|
||||
(((endTransType) << ENTRANCE_INFO_END_TRANS_TYPE_SHIFT) & ENTRANCE_INFO_END_TRANS_TYPE_MASK) | \
|
||||
(((startTransType) << ENTRANCE_INFO_START_TRANS_TYPE_SHIFT) & ENTRANCE_INFO_START_TRANS_TYPE_MASK)) },
|
||||
|
||||
EntranceInfo gEntranceTable[] = {
|
||||
#include "tables/entrance_table.h"
|
||||
|
@ -90,7 +93,7 @@ void Scene_SetTransitionForNextEntrance(PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
play->transitionType = gEntranceTable[entranceIndex].field & 0x7F; // Fade out
|
||||
play->transitionType = ENTRANCE_INFO_START_TRANS_TYPE(gEntranceTable[entranceIndex].field);
|
||||
}
|
||||
|
||||
void Scene_DrawConfigDefault(PlayState* play) {
|
||||
|
|
|
@ -9343,7 +9343,7 @@ void Player_Init(Actor* thisx, PlayState* play2) {
|
|||
if ((titleFileSize != 0) && gSaveContext.showTitleCard) {
|
||||
if ((gSaveContext.sceneSetupIndex < 4) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex) + ((void)0, gSaveContext.sceneSetupIndex)].field &
|
||||
0x4000) &&
|
||||
ENTRANCE_INFO_DISPLAY_TITLE_CARD_FLAG) &&
|
||||
((play->sceneNum != SCENE_DDAN) || GET_EVENTCHKINF(EVENTCHKINF_B0)) &&
|
||||
((play->sceneNum != SCENE_NIGHT_SHOP) || GET_EVENTCHKINF(EVENTCHKINF_25))) {
|
||||
TitleCard_InitPlaceName(play, &play->actorCtx.titleCtx, this->giObjectSegment, 160, 120, 144, 24, 20);
|
||||
|
|
Loading…
Reference in a new issue