Magic docs, first draft

This commit is contained in:
engineer124
2022-04-23 13:24:39 +10:00
parent ad861d29d4
commit 966c323495
23 changed files with 319 additions and 271 deletions
+8 -8
View File
@@ -739,7 +739,7 @@ void func_800B9038(Actor* actor, s32 timer);
void func_800B9084(Actor* actor);
void func_800B9098(Actor* actor);
s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon, s32 index, s32 arg4);
void func_800B90F4(GlobalContext* globalCtx);
void Actor_DisableLens(GlobalContext* globalCtx);
void func_800B9120(ActorContext* actorCtx);
void Actor_InitContext(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry);
void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx);
@@ -1934,13 +1934,13 @@ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange);
void Health_GiveHearts(s16 hearts);
void Rupees_ChangeBy(s16 rupeeChange);
void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1);
void func_80115D5C(GameState* gamestate);
// void func_80115DB4(void);
// void func_80116088(void);
// void func_80116114(void);
// void Interface_UpdateMagicBar(void);
// void Interface_DrawMagicBar(void);
void Magic_Add(GlobalContext* globalCtx, s16 arg1);
void Magic_ResetBar(GameState* gamestate);
// void Magic_Consume(void);
// void Magic_UpdateAdd(void);
// void Magic_UpdateBarBorderColor(void);
// void Magic_UpdateBar(void);
// void Magic_DrawBar(void);
// void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_801170B8(void);
// void Interface_DrawItemButtons(void);
+2 -2
View File
@@ -1032,8 +1032,8 @@ extern UNK_PTR D_801BF5C0;
// extern UNK_TYPE2 sMagicBarOutlinePrimRed;
// extern UNK_TYPE2 sMagicBarOutlinePrimGreen;
// extern UNK_TYPE2 sMagicBarOutlinePrimBlue;
// extern UNK_TYPE2 D_801BF8AC;
// extern UNK_TYPE2 D_801BF8B0;
// extern UNK_TYPE2 sMagicBorderRatio;
// extern UNK_TYPE2 sMagicBorderStep;
// extern UNK_TYPE2 D_801BF8DC;
// extern UNK_TYPE2 D_801BF8E0;
// extern UNK_TYPE2 D_801BF8E4;
+1 -1
View File
@@ -359,7 +359,7 @@ typedef struct ActorContext {
/* 0x000 */ u8 freezeFlashTimer;
/* 0x001 */ UNK_TYPE1 pad1;
/* 0x002 */ u8 unk2;
/* 0x003 */ u8 unk3;
/* 0x003 */ u8 lensActive;
/* 0x004 */ s8 unk4;
/* 0x005 */ u8 unk5;
/* 0x006 */ UNK_TYPE1 pad6[0x5];
+38 -8
View File
@@ -24,6 +24,36 @@ typedef enum RespawnMode {
#define SAVE_BUFFER_SIZE 0x4000
typedef enum MagicBarAction {
/* 00 */ MAGIC_BAR_ACTION_IDLE, // Regular gameplay
/* 01 */ MAGIC_BAR_ACTION_CONSUME_SETUP, // Sets the speed in which magic border flashes
/* 02 */ MAGIC_BAR_ACTION_CONSUME, // Consume magic until target is reached or no more magic is available
/* 03 */ MAGIC_BAR_ACTION_BORDER_CHANGE_1, // Flashes border and freezes Dark Link
/* 04 */ MAGIC_BAR_ACTION_BORDER_CHANGE_2, // Flashes border and draws yellow magic to preview target consumption
/* 05 */ MAGIC_BAR_ACTION_RESTORE_IDLE, // Reset colors and return to idle
/* 06 */ MAGIC_BAR_ACTION_BORDER_CHANGE_3, // Flashes border with no additional behaviour
/* 07 */ MAGIC_BAR_ACTION_LENS_CONSUME, // Magic slowly consumed by lens.
/* 08 */ MAGIC_BAR_ACTION_GROW_WIDE, // Init magic on a new load, grow from a width of 0 to magicCapacity
/* 09 */ MAGIC_BAR_ACTION_FILL,
/* 10 */ MAGIC_BAR_ACTION_CONSUME_2,
/* 11 */ MAGIC_BAR_ACTION_CONSUME_3,
/* 12 */ MAGIC_BAR_ACTION_CONSUME_4
} MagicBarAction;
typedef enum MagicBarChange {
/* 0 */ MAGIC_BAR_CONSUME_NOW, // Consume Magic immediately without preview
/* 1 */ MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused
/* 2 */ MAGIC_BAR_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_BAR_CONSUME_NOW. Unused
/* 3 */ MAGIC_BAR_CONSUME_LENS, // Lens consumption
/* 4 */ MAGIC_BAR_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption
/* 5 */ MAGIC_BAR_CONSUME_2,
/* 6 */ MAGIC_BAR_CONSUME_4,
/* 7 */ MAGIC_BAR_CONSUME_UNK
} MagicBarChange;
#define MAGIC_HALF_BAR 0x30
#define MAGIC_FULL_BAR (2 * MAGIC_HALF_BAR)
typedef struct SramContext {
/* 0x00 */ u8* readBuff;
/* 0x04 */ u8 *saveBuf;
@@ -109,8 +139,8 @@ typedef struct SavePlayerData {
/* 0x0016 */ s16 rupees; // "lupy_count"
/* 0x0018 */ u16 swordHealth; // "long_sword_hp"
/* 0x001A */ u16 tatlTimer; // "navi_timer"
/* 0x001C */ u8 magicAcquired; // "magic_mode"
/* 0x001D */ u8 doubleMagic; // "magic_ability"
/* 0x001C */ u8 isMagicAcquired; // "magic_mode"
/* 0x001D */ u8 isDoubleMagicAcquired; // "magic_ability"
/* 0x001E */ u8 doubleDefense; // "life_ability"
/* 0x001F */ u8 unk_1F; // "ocarina_round"
/* 0x0020 */ u8 unk_20; // "first_memory"
@@ -225,13 +255,13 @@ typedef struct SaveContext {
/* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type"
/* 0x3F24 */ u16 unk_3F24; // "alpha_count"
/* 0x3F26 */ u16 unk_3F26; // "last_time_type"
/* 0x3F28 */ s16 unk_3F28; // "magic_flag"
/* 0x3F2A */ s16 unk_3F2A; // "recovery_magic_flag"
/* 0x3F28 */ s16 magicBarAction; // "magic_flag"
/* 0x3F2A */ s16 isMagicRequested; // "recovery_magic_flag"
/* 0x3F2C */ s16 unk_3F2C; // "keep_magic_flag"
/* 0x3F2E */ s16 unk_3F2E; // "magic_now_max"
/* 0x3F30 */ s16 unk_3F30; // "magic_now_now"
/* 0x3F32 */ s16 unk_3F32; // "magic_used"
/* 0x3F34 */ s16 unk_3F34; // "magic_recovery"
/* 0x3F2E */ s16 magicCapacityDrawn; // "magic_now_max"
/* 0x3F30 */ s16 magicCapacity; // "magic_now_now"
/* 0x3F32 */ s16 magicToConsume; // "magic_used"
/* 0x3F34 */ s16 magicToAdd; // "magic_recovery"
/* 0x3F36 */ u16 mapIndex; // "scene_ID"
/* 0x3F38 */ u16 minigameState; // "yabusame_mode"
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
+7 -6
View File
@@ -2214,10 +2214,10 @@ s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon
return false;
}
void func_800B90F4(GlobalContext* globalCtx) {
if (globalCtx->actorCtx.unk3 != 0) {
globalCtx->actorCtx.unk3 = 0;
func_80115D5C(&globalCtx->state);
void Actor_DisableLens(GlobalContext* globalCtx) {
if (globalCtx->actorCtx.lensActive) {
globalCtx->actorCtx.lensActive = false;
Magic_ResetBar(&globalCtx->state);
}
}
@@ -2906,14 +2906,15 @@ void Actor_DrawAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
gSPDisplayList(sp58, &ref2[1]);
POLY_XLU_DISP = &ref2[1];
if (globalCtx->actorCtx.unk3 != 0) {
if (globalCtx->actorCtx.lensActive) {
Math_StepToC(&globalCtx->actorCtx.unk4, 100, 20);
if (GET_PLAYER(globalCtx)->stateFlags2 & 0x8000000) {
func_800B90F4(globalCtx);
Actor_DisableLens(globalCtx);
}
} else {
Math_StepToC(&globalCtx->actorCtx.unk4, 0, 10);
}
if (globalCtx->actorCtx.unk4 != 0) {
globalCtx->actorCtx.unkB = 1;
func_800B9EF4(globalCtx, globalCtx->actorCtx.undrawnActorCount, globalCtx->actorCtx.undrawnActors);
+1 -1
View File
@@ -25,7 +25,7 @@ u16 ElfMessage_GetFirstCycleHint(GlobalContext* globalCtx) {
}
return 0x21D;
}
if (gSaveContext.save.playerData.magicAcquired != true) {
if (gSaveContext.save.playerData.isMagicAcquired != true) {
return 0x21F;
}
if (INV_CONTENT(ITEM_DEED_LAND) == ITEM_DEED_LAND) {
+2 -1
View File
@@ -73,7 +73,8 @@ void KaleidoSetup_Update(GlobalContext* globalCtx) {
if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) {
if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) {
if (!Play_InCsMode(globalCtx) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) {
if ((globalCtx->unk_1887C < 2) && (gSaveContext.unk_3F28 != 8) && (gSaveContext.unk_3F28 != 9)) {
if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicBarAction != 8) &&
(gSaveContext.magicBarAction != 9)) {
if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) {
if (!(globalCtx->actorCtx.unk5 & 2) && !(globalCtx->actorCtx.unk5 & 4)) {
if ((globalCtx->actorCtx.unk268 == 0) &&
+210 -193
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -576,12 +576,12 @@ SavePlayerData sSaveDefaultPlayerData = {
0x30, // healthCapacity
0x30, // health
0, // magicLevel
0x30, // magic
MAGIC_HALF_BAR, // magic
0, // rupees
0, // swordHealth
0, // tatlTimer
0, // magicAcquired
0, // doubleMagic
false, // isMagicAcquired
false, // isDoubleMagicAcquired
0, // doubleDefense
0, // unk_1F
0xFF, // unk_20
@@ -674,12 +674,12 @@ SavePlayerData sSaveDebugPlayerData = {
0x80, // healthCapacity
0x80, // health
0, // magicLevel
0x30, // magic
0x32, // rupees
0x64, // swordHealth
MAGIC_HALF_BAR, // magic
50, // rupees
100, // swordHealth
0, // tatlTimer
1, // magicAcquired
0, // doubleMagic
true, // isMagicAcquired
false, // isDoubleMagicAcquired
0, // doubleDefense
0, // unk_1F
0xFF, // unk_20
@@ -81,7 +81,7 @@ void ArrowFire_Init(Actor* thisx, GlobalContext* globalCtx) {
void ArrowFire_Destroy(Actor* thisx, GlobalContext* globalCtx) {
ArrowFire* this = THIS;
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
Collider_DestroyQuad(globalCtx, &this->collider1);
Collider_DestroyQuad(globalCtx, &this->collider2);
}
@@ -57,7 +57,7 @@ void ArrowIce_Init(Actor* thisx, GlobalContext* globalCtx) {
}
void ArrowIce_Destroy(Actor* thisx, GlobalContext* globalCtx) {
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
(void)"消滅"; // Unreferenced in retail, means "Disappearance"
}
@@ -56,7 +56,7 @@ void ArrowLight_Init(Actor* thisx, GlobalContext* globalCtx) {
}
void ArrowLight_Destroy(Actor* thisx, GlobalContext* globalCtx) {
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
(void)"消滅"; // Unreferenced in retail, means "Disappearance"
}
@@ -139,7 +139,7 @@ void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
if ((this->actor.params >= ENARROW_3) && (this->actor.params < ENARROW_6) && (this->actor.child == NULL)) {
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
}
}
@@ -162,13 +162,13 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) {
this->bubble.unk_148++;
if (this->bubble.unk_148 > 20) {
this->actionFunc = func_8088ACE0;
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
}
}
} else {
if ((this->actor.params != ENARROW_8) && (player->unk_D57 == 0)) {
if (this->actor.params == ENARROW_7) {
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
}
Actor_MarkForDeath(&this->actor);
return;
@@ -202,7 +202,7 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) {
this->bubble.unk_144 = CLAMP_MIN(this->bubble.unk_144, 3.5f);
func_8088A514(this);
this->unk_260 = 99;
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
} else if (this->actor.params >= ENARROW_6) {
if ((this->actor.params == ENARROW_8) && (this->actor.world.rot.x < 0)) {
Actor_SetScale(&this->actor, 0.009f);
@@ -311,7 +311,7 @@ void func_8088AA98(EnArrow* this, GlobalContext* globalCtx) {
return;
}
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
}
}
}
+2 -2
View File
@@ -675,8 +675,8 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) {
!func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) {
Health_ChangeBy(globalCtx, 0x80);
if (this->fairyFlags & 0x200) {
Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) +
(gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30);
Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) +
(gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR);
}
gSaveContext.jinxTimer = 0;
this->unk_254 = 50.0f;
@@ -99,7 +99,7 @@ void EnElfgrp_Init(Actor* thisx, GlobalContext* globalCtx) {
break;
case ENELFGRP_2:
if (gSaveContext.save.playerData.doubleMagic == true) {
if (gSaveContext.save.playerData.isDoubleMagicAcquired == true) {
func_80A396B0(this, 1);
}
break;
@@ -156,7 +156,7 @@ void EnElfgrp_Init(Actor* thisx, GlobalContext* globalCtx) {
func_80A396B0(this, 3);
this->unk_14A |= 2;
}
} else if (gSaveContext.save.playerData.magicAcquired == true) {
} else if (gSaveContext.save.playerData.isMagicAcquired == true) {
func_80A396B0(this, 1);
}
} else {
@@ -481,8 +481,8 @@ void func_80A3A610(EnElfgrp* this, GlobalContext* globalCtx) {
Player* player = GET_PLAYER(globalCtx);
if (this->unk_144 == 60) {
Interface_AddMagic(globalCtx,
((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30);
Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) +
(gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR);
gSaveContext.healthAccumulator = 320;
}
+4 -5
View File
@@ -651,10 +651,9 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) {
this->unk_546 = 1;
}
if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) {
s16 temp = gSaveContext.unk_3F30;
Interface_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48);
if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.isMagicAcquired) {
Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) +
(gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR);
}
func_80962F10(this);
@@ -1139,7 +1138,7 @@ void func_80963DE4(EnFu* this, GlobalContext* globalCtx) {
}
void func_80963EAC(EnFu* this, GlobalContext* globalCtx) {
if (gSaveContext.save.playerData.magicAcquired) {
if (gSaveContext.save.playerData.isMagicAcquired) {
if (this->unk_540 == 1) {
Message_StartTextbox(globalCtx, 0x2847, &this->actor);
this->unk_552 = 0x2847;
+1 -1
View File
@@ -231,7 +231,7 @@ void func_80B35450(EnGg* this, GlobalContext* globalCtx) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80)) {
func_800B90F4(globalCtx);
Actor_DisableLens(globalCtx);
}
this->unk_308 = 1;
this->actionFunc = func_80B352A4;
+2 -2
View File
@@ -727,8 +727,8 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) {
globalCtx->sceneLoadFlag = 0x14;
globalCtx->unk_1887F = 3;
gSaveContext.nextTransition = 3;
Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) +
(gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30);
Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) +
(gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR);
} else {
this->actionFunc = func_80B51760;
}
@@ -433,8 +433,8 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) {
gSaveContext.nextTransition = 2;
func_801477B4(globalCtx);
func_800B7298(globalCtx, &this->actor, 7);
Interface_AddMagic(globalCtx,
((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 48) + 48);
Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) +
(gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR);
gSaveContext.eventInf[1] &= (u8)~1;
gSaveContext.eventInf[1] &= (u8)~2;
@@ -38,7 +38,7 @@ void OceffWipe6_Init(Actor* thisx, GlobalContext* globalCtx) {
}
void OceffWipe6_Destroy(Actor* thisx, GlobalContext* globalCtx) {
func_80115D5C(&globalCtx->state);
Magic_ResetBar(&globalCtx->state);
globalCtx->msgCtx.unk120B0 = 0;
}

Some files were not shown because too many files have changed in this diff Show More