Merge 7d079b6d45
into 5e3aac4b45
This commit is contained in:
commit
24b46fceb1
13
BUILDING.md
13
BUILDING.md
|
@ -5,7 +5,7 @@
|
|||
|
||||
This guide will help you build the project on your local machine. The process will require you to provide two items:
|
||||
- A decompressed ROM of the US version of the game.
|
||||
- An elf file created from [this commit](https://github.com/zeldaret/mm/tree/23beee0717364de43ca9a82957cc910cf818de90) of the Majora's Mask decompilation.
|
||||
- An elf file created from [this commit](https://github.com/zeldaret/mm/tree/45ae63ccc550ea29f475669a87f7f8ac681a6b29) of the Majora's Mask decompilation.
|
||||
|
||||
These steps cover: acquiring these, running the required processes and finally building the project.
|
||||
|
||||
|
@ -41,16 +41,7 @@ choco install make
|
|||
```
|
||||
|
||||
## 3. Creating the ELF file & decompressed ROM
|
||||
You will need to build [this commit](https://github.com/zeldaret/mm/tree/23beee0717364de43ca9a82957cc910cf818de90) of the Majora's Mask decompilation. Follow their build instructions to generate the ELF file and decompressed ROM. However, while building you may get the following build error:
|
||||
```bash
|
||||
RuntimeError: 'jr' instruction does not have an 'jump label' field
|
||||
```
|
||||
|
||||
To fix this you will have to modify the problematic file `tools/disasm/disasm.py` at line 1115. This issue is due to a bug in this specific commit of the decomp project and will be resolved once Zelda64Recomp is updated to a more recent commit. To fix it, replace the line:
|
||||
```diff
|
||||
- elif insn.isJump():
|
||||
+ elif insn.isJumpWithAddress():
|
||||
```
|
||||
You will need to build [this commit](https://github.com/zeldaret/mm/tree/45ae63ccc550ea29f475669a87f7f8ac681a6b29) of the Majora's Mask decompilation. For convenience you may also use `lib/mm-decomp` subfolder in this repository. Follow their build instructions to generate the ELF file and decompressed ROM.
|
||||
|
||||
Upon successful build it will generate the two required files. Copy them to the root of the Zelda64Recomp repository:
|
||||
- `mm.us.rev1.rom_uncompressed.elf`
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 5607eec18bae68e4cd38ef6d1fa69d7f1d84bfc8
|
||||
Subproject commit 45ae63ccc550ea29f475669a87f7f8ac681a6b29
|
|
@ -1,5 +1,6 @@
|
|||
#include "patches.h"
|
||||
#include "play_patches.h"
|
||||
#include "z64cutscene.h"
|
||||
#include "z64save.h"
|
||||
#include "z64horse.h"
|
||||
#include "overlays/gamestates/ovl_file_choose/z_file_select.h"
|
||||
|
@ -443,7 +444,7 @@ void autosave_init() {
|
|||
}
|
||||
|
||||
extern s32 gFlashSaveSizes[];
|
||||
extern u16 D_801C6A58[];
|
||||
extern u16 sOwlWarpEntrances[];
|
||||
|
||||
#define CHECK_NEWF(newf) \
|
||||
((newf)[0] != 'Z' || (newf)[1] != 'E' || (newf)[2] != 'L' || (newf)[3] != 'D' || (newf)[4] != 'A' || \
|
||||
|
@ -462,7 +463,7 @@ typedef struct {
|
|||
} CutsceneManager; // size = 0x18
|
||||
|
||||
extern CutsceneManager sCutsceneMgr;
|
||||
extern ActorCutscene* sSceneCutsceneList;
|
||||
extern CutsceneEntry* sSceneCutsceneList;
|
||||
extern s16 sSceneCutsceneCount;
|
||||
|
||||
bool skip_entry_cutscene = false;
|
||||
|
@ -623,7 +624,7 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
|
|||
func_80147314(sramCtx, fileNum);
|
||||
}
|
||||
else {
|
||||
gSaveContext.save.entrance = D_801C6A58[(void)0, gSaveContext.save.owlWarpId];
|
||||
gSaveContext.save.entrance = sOwlWarpEntrances[(void)0, gSaveContext.save.owlWarpId];
|
||||
if ((gSaveContext.save.entrance == ENTRANCE(SOUTHERN_SWAMP_POISONED, 10)) &&
|
||||
CHECK_WEEKEVENTREG(WEEKEVENTREG_CLEARED_WOODFALL_TEMPLE)) {
|
||||
gSaveContext.save.entrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 10);
|
||||
|
@ -655,7 +656,7 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
|
|||
autosave_init();
|
||||
}
|
||||
|
||||
extern s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState);
|
||||
extern s32 Actor_TalkOfferAccepted(Actor* actor, GameState* gameState);
|
||||
|
||||
// @recomp Reset the autosave timer when the moon crashes.
|
||||
void Sram_ResetSaveFromMoonCrash(SramContext* sramCtx) {
|
||||
|
@ -728,7 +729,7 @@ void ObjWarpstone_Update(Actor* thisx, PlayState* play) {
|
|||
Message_CloseTextbox(play);
|
||||
}
|
||||
}
|
||||
} else if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) {
|
||||
} else if (Actor_TalkOfferAccepted(&this->dyna.actor, &play->state)) {
|
||||
this->isTalking = true;
|
||||
} else if (!this->actionFunc(this, play)) {
|
||||
Actor_OfferTalkNearColChkInfoCylinder(&this->dyna.actor, play);
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
// Matrix_RotateAxisF in NEW
|
||||
// Matrix_RotateAxisS in NEW
|
||||
|
||||
extern MtxF* sCurrentMatrix;
|
||||
extern MtxF* sMatrixStack;
|
||||
|
||||
#define MATRIX_STACK_SIZE 20
|
||||
|
||||
MtxF* play_billboard_matrix;
|
||||
|
|
|
@ -1900,7 +1900,7 @@ void skip_analog_cam_once() {
|
|||
}
|
||||
|
||||
extern void func_809ECD00(Boss04* this, PlayState* play);
|
||||
extern s32 func_800B7298(struct PlayState* play, Actor* csActor, u8 csAction);
|
||||
extern s32 Player_SetCsActionWithHaltedActors(struct PlayState* play, Actor* csActor, u8 csAction);
|
||||
extern u8 D_809EE4D0;
|
||||
|
||||
// @recomp Patch the Wart boss fight in the Great Bay temple so that the fight starts if you look at it with the right stick analog camera,
|
||||
|
@ -1947,7 +1947,7 @@ void func_809EC568(Boss04* this, PlayState* play) {
|
|||
this->subCamId = Play_CreateSubCamera(play);
|
||||
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
|
||||
func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT);
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT);
|
||||
player->actor.world.pos.x = this->unk_6E8;
|
||||
player->actor.world.pos.z = this->unk_6F0 + 410.0f;
|
||||
player->actor.shape.rot.y = 0x7FFF;
|
||||
|
@ -1997,7 +1997,7 @@ void func_809EC568(Boss04* this, PlayState* play) {
|
|||
if (this->unk_704 == 45) {
|
||||
this->unk_708 = 1;
|
||||
this->unk_704 = 0;
|
||||
func_800B7298(play, &this->actor, PLAYER_CSACTION_21);
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21);
|
||||
this->actor.gravity = 0.0f;
|
||||
break;
|
||||
}
|
||||
|
@ -2075,9 +2075,9 @@ void func_809EC568(Boss04* this, PlayState* play) {
|
|||
func_80169AFC(play, this->subCamId, 0);
|
||||
this->subCamId = SUB_CAM_ID_DONE;
|
||||
Cutscene_StopManual(play, &play->csCtx);
|
||||
func_800B7298(play, &this->actor, PLAYER_CSACTION_END);
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END);
|
||||
Play_DisableMotionBlur();
|
||||
SET_EVENTINF(EVENTINF_60);
|
||||
SET_EVENTINF(EVENTINF_INTRO_CS_WATCHED_WART);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ void do_warp(PlayState* play, u16 entrance){
|
|||
// req.dramAddr = text_buffer;
|
||||
// req.size = play->msgCtx.font.messageEnd;
|
||||
// recomp_printf("dma from vrom 0x%08X to vram 0x%08x of 0x%04X bytes\n", req.vromAddr, req.dramAddr, req.size);
|
||||
// DmaMgr_ProcessMsg(&req);
|
||||
// DmaMgr_ProcessRequest(&req);
|
||||
|
||||
// if (text_buffer[2] != (char)0xFE) {
|
||||
// recomp_printf("Invalid text\n");
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,143 @@
|
|||
// Required to include MM decomp headers without having built the repo
|
||||
|
||||
#ifndef OBJECT_BOSS_HAKUGIN_H
|
||||
#define OBJECT_BOSS_HAKUGIN_H 1
|
||||
|
||||
typedef enum GohtLimb {
|
||||
/* 0x00 */ GOHT_LIMB_NONE,
|
||||
/* 0x01 */ GOHT_LIMB_ROOT,
|
||||
/* 0x02 */ GOHT_LIMB_PELVIS,
|
||||
/* 0x03 */ GOHT_LIMB_THORAX_ROOT,
|
||||
/* 0x04 */ GOHT_LIMB_THORAX_WRAPPER,
|
||||
/* 0x05 */ GOHT_LIMB_FRONT_RIGHT_LEG_ROOT,
|
||||
/* 0x06 */ GOHT_LIMB_FRONT_RIGHT_UPPER_LEG,
|
||||
/* 0x07 */ GOHT_LIMB_FRONT_RIGHT_LOWER_LEG_ROOT,
|
||||
/* 0x08 */ GOHT_LIMB_FRONT_RIGHT_LOWER_LEG,
|
||||
/* 0x09 */ GOHT_LIMB_FRONT_RIGHT_HOOF,
|
||||
/* 0x0A */ GOHT_LIMB_FRONT_LEFT_LEG_ROOT,
|
||||
/* 0x0B */ GOHT_LIMB_FRONT_LEFT_UPPER_LEG,
|
||||
/* 0x0C */ GOHT_LIMB_FRONT_LEFT_LOWER_LEG_ROOT,
|
||||
/* 0x0D */ GOHT_LIMB_FRONT_LEFT_LOWER_LEG,
|
||||
/* 0x0E */ GOHT_LIMB_FRONT_LEFT_HOOF,
|
||||
/* 0x0F */ GOHT_LIMB_THORAX,
|
||||
/* 0x10 */ GOHT_LIMB_HEAD,
|
||||
/* 0x11 */ GOHT_LIMB_JAW_ROOT,
|
||||
/* 0x12 */ GOHT_LIMB_JAW,
|
||||
/* 0x13 */ GOHT_LIMB_BACK_RIGHT_LEG_ROOT,
|
||||
/* 0x14 */ GOHT_LIMB_BACK_RIGHT_LEG_WRAPPER,
|
||||
/* 0x15 */ GOHT_LIMB_BACK_RIGHT_THIGH,
|
||||
/* 0x16 */ GOHT_LIMB_BACK_RIGHT_SHIN,
|
||||
/* 0x17 */ GOHT_LIMB_BACK_RIGHT_PASTERN_ROOT,
|
||||
/* 0x18 */ GOHT_LIMB_BACK_RIGHT_PASTERN,
|
||||
/* 0x19 */ GOHT_LIMB_BACK_RIGHT_HOOF,
|
||||
/* 0x1A */ GOHT_LIMB_BACK_LEFT_LEG_ROOT,
|
||||
/* 0x1B */ GOHT_LIMB_BACK_LEFT_LEG_WRAPPER,
|
||||
/* 0x1C */ GOHT_LIMB_BACK_LEFT_THIGH,
|
||||
/* 0x1D */ GOHT_LIMB_BACK_LEFT_SHIN,
|
||||
/* 0x1E */ GOHT_LIMB_BACK_LEFT_PASTERN_ROOT,
|
||||
/* 0x1F */ GOHT_LIMB_BACK_LEFT_PASTERN,
|
||||
/* 0x20 */ GOHT_LIMB_BACK_LEFT_HOOF,
|
||||
/* 0x21 */ GOHT_LIMB_MAX
|
||||
} GohtLimb;
|
||||
|
||||
extern s16 sGohtThawAndBreakWallAnimFrameData[];
|
||||
extern JointIndex sGohtThawAndBreakWallAnimJointIndices[];
|
||||
extern AnimationHeader gGohtThawAndBreakWallAnim;
|
||||
extern s16 sGohtWritheOnSideAnimFrameData[];
|
||||
extern JointIndex sGohtWritheOnSideAnimJointIndices[];
|
||||
extern AnimationHeader gGohtWritheOnSideAnim;
|
||||
extern s16 sGohtTwitchOnSideAnimFrameData[];
|
||||
extern JointIndex sGohtTwitchOnSideAnimJointIndices[];
|
||||
extern AnimationHeader gGohtTwitchOnSideAnim;
|
||||
extern s16 sGohtFallOnSideAnimFrameData[];
|
||||
extern JointIndex sGohtFallOnSideAnimJointIndices[];
|
||||
extern AnimationHeader gGohtFallOnSideAnim;
|
||||
extern s16 sGohtStationaryAnimFrameData[];
|
||||
extern JointIndex sGohtStationaryAnimJointIndices[];
|
||||
extern AnimationHeader gGohtStationaryAnim;
|
||||
extern Vtx object_boss_hakuginVtx_0031B0[];
|
||||
extern Gfx gGohtPelvisDL[];
|
||||
extern Gfx gGohtBackLeftHoofDL[];
|
||||
extern Gfx gGohtBackLeftPasternDL[];
|
||||
extern Gfx gGohtBackLeftShinDL[];
|
||||
extern Gfx gGohtBackLeftThighDL[];
|
||||
extern Gfx gGohtBackRightHoofDL[];
|
||||
extern Gfx gGohtBackRightPasternDL[];
|
||||
extern Gfx gGohtBackRightShinDL[];
|
||||
extern Gfx gGohtBackRightThighDL[];
|
||||
extern Gfx gGohtHeadDL[];
|
||||
extern Gfx gGohtJawDL[];
|
||||
extern Gfx gGohtThoraxDL[];
|
||||
extern Gfx gGohtFrontLeftHoofDL[];
|
||||
extern Gfx gGohtFrontLeftLowerLegDL[];
|
||||
extern Gfx gGohtFrontLeftUpperLegDL[];
|
||||
extern Gfx gGohtFrontRightHoofDL[];
|
||||
extern Gfx gGohtFrontRightLowerLegDL[];
|
||||
extern Gfx gGohtFrontRightUpperLegDL[];
|
||||
extern u64 gGohtMachineryTex[];
|
||||
extern u64 gGohtMetalPlateWithCirclePatternTex[];
|
||||
extern u64 gGohtMetalPlateWithMulticoloredPatternTex[];
|
||||
extern u64 gGohtEyeTex[];
|
||||
extern u64 gGohtFaceAndKneePatternTex[];
|
||||
extern u64 gGohtHornTex[];
|
||||
extern Vtx object_boss_hakuginVtx_0102D8[];
|
||||
extern Gfx gGohtRockMaterialDL[];
|
||||
extern Gfx gGohtRockModelDL[];
|
||||
extern u64 gGohtRockTex[];
|
||||
extern Vtx object_boss_hakuginVtx_010F80[];
|
||||
extern Gfx gGohtStalactiteMaterialDL[];
|
||||
extern Gfx gGohtStalactiteModelDL[];
|
||||
extern Vtx object_boss_hakuginVtx_0111C8[];
|
||||
extern Gfx gGohtLightningMaterialDL[];
|
||||
extern Gfx gGohtLightningModelDL[];
|
||||
extern u64 gGohtLightningTex[];
|
||||
extern u8 gGohtUnusedZeroesBlob[];
|
||||
extern u64 gGohtLightOrbTex[];
|
||||
extern Vtx object_boss_hakuginVtx_012E90[];
|
||||
extern Gfx gGohtLightOrbMaterialDL[];
|
||||
extern Gfx gGohtLightOrbModelDL[];
|
||||
extern StandardLimb gGohtRootLimb;
|
||||
extern StandardLimb gGohtPelvisLimb;
|
||||
extern StandardLimb gGohtThoraxRootLimb;
|
||||
extern StandardLimb gGohtThoraxWrapperLimb;
|
||||
extern StandardLimb gGohtFrontRightLegRootLimb;
|
||||
extern StandardLimb gGohtFrontRightUpperLegLimb;
|
||||
extern StandardLimb gGohtFrontRightLowerLegRootLimb;
|
||||
extern StandardLimb gGohtFrontRightLowerLegLimb;
|
||||
extern StandardLimb gGohtFrontRightHoofLimb;
|
||||
extern StandardLimb gGohtFrontLeftLegRootLimb;
|
||||
extern StandardLimb gGohtFrontLeftUpperLegLimb;
|
||||
extern StandardLimb gGohtFrontLeftLowerLegRootLimb;
|
||||
extern StandardLimb gGohtFrontLeftLowerLegLimb;
|
||||
extern StandardLimb gGohtFrontLeftHoofLimb;
|
||||
extern StandardLimb gGohtThoraxLimb;
|
||||
extern StandardLimb gGohtHeadLimb;
|
||||
extern StandardLimb gGohtJawRootLimb;
|
||||
extern StandardLimb gGohtJawLimb;
|
||||
extern StandardLimb gGohtBackRightLegRootLimb;
|
||||
extern StandardLimb gGohtBackRightLegWrapperLimb;
|
||||
extern StandardLimb gGohtBackRightThighLimb;
|
||||
extern StandardLimb gGohtBackRightShinLimb;
|
||||
extern StandardLimb gGohtBackRightPasternRootLimb;
|
||||
extern StandardLimb gGohtBackRightPasternLimb;
|
||||
extern StandardLimb gGohtBackRightHoofLimb;
|
||||
extern StandardLimb gGohtBackLeftLegRootLimb;
|
||||
extern StandardLimb gGohtBackLeftLegWrapperLimb;
|
||||
extern StandardLimb gGohtBackLeftThighLimb;
|
||||
extern StandardLimb gGohtBackLeftShinLimb;
|
||||
extern StandardLimb gGohtBackLeftPasternRootLimb;
|
||||
extern StandardLimb gGohtBackLeftPasternLimb;
|
||||
extern StandardLimb gGohtBackLeftHoofLimb;
|
||||
extern void* gGohtSkelLimbs[];
|
||||
extern FlexSkeletonHeader gGohtSkel;
|
||||
extern s16 sGohtFallDownAnimFrameData[];
|
||||
extern JointIndex sGohtFallDownAnimJointIndices[];
|
||||
extern AnimationHeader gGohtFallDownAnim;
|
||||
extern s16 sGohtRunAnimFrameData[];
|
||||
extern JointIndex sGohtRunAnimJointIndices[];
|
||||
extern AnimationHeader gGohtRunAnim;
|
||||
extern s16 sGohtGetUpFromSideAnimFrameData[];
|
||||
extern JointIndex sGohtGetUpFromSideAnimJointIndices[];
|
||||
extern AnimationHeader gGohtGetUpFromSideAnim;
|
||||
extern u64 gGohtTitleCardTex[];
|
||||
#endif
|
|
@ -2,6 +2,7 @@
|
|||
#include "graphics.h"
|
||||
#include "sys_cfb.h"
|
||||
#include "z64view.h"
|
||||
#include "z64circle_tex.h"
|
||||
#include "transform_ids.h"
|
||||
|
||||
extern TransitionOverlay gTransitionOverlayTable[];
|
||||
|
@ -85,7 +86,7 @@ void Play_DrawMotionBlur(PlayState* this) {
|
|||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
gfxHead = POLY_OPA_DISP;
|
||||
gfx = Graph_GfxPlusOne(gfxHead);
|
||||
gfx = Gfx_Open(gfxHead);
|
||||
|
||||
gSPDisplayList(OVERLAY_DISP++, gfx);
|
||||
|
||||
|
@ -122,7 +123,7 @@ void Play_DrawMotionBlur(PlayState* this) {
|
|||
|
||||
gSPEndDisplayList(gfx++);
|
||||
|
||||
Graph_BranchDlist(gfxHead, gfx);
|
||||
Gfx_Close(gfxHead, gfx);
|
||||
|
||||
POLY_OPA_DISP = gfx;
|
||||
|
||||
|
@ -144,7 +145,7 @@ void Actor_DrawLensOverlay(Gfx** gfxP, s32 lensMaskSize) {
|
|||
|
||||
|
||||
// @recomp Patched to use ortho tris for interpolation and to prevent the telescope and lens effects from getting stretched wide.
|
||||
void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt,
|
||||
void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, void const* texture, s32 fmt, s32 arg3, s32 masks, s32 maskt,
|
||||
f32 arg6) {
|
||||
Gfx* gfx = *gfxp;
|
||||
s32 xh = gCfbWidth;
|
||||
|
|
|
@ -95,7 +95,7 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num
|
|||
|
||||
vtx[k + 1].v.ob[0] = vtx[k + 3].v.ob[0] = vtx[k + 0].v.ob[0] + quadsWidth[i];
|
||||
|
||||
if (!IS_PAUSE_STATE_GAMEOVER) {
|
||||
if (!IS_PAUSE_STATE_GAMEOVER(pauseCtx)) {
|
||||
vtx[k + 0].v.ob[1] = vtx[k + 1].v.ob[1] = quadsY[i] + pauseCtx->offsetY;
|
||||
} else if (gameOverCtx->state == GAMEOVER_INACTIVE) {
|
||||
vtx[k + 0].v.ob[1] = vtx[k + 1].v.ob[1] = quadsY[i] + pauseCtx->offsetY;
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#include "patches.h"
|
||||
#include "input.h"
|
||||
#include "z64snap.h"
|
||||
// Decomp rename, TODO update decomp and remove this
|
||||
#define AudioVoice_GetWord func_801A5100
|
||||
#include "z64voice.h"
|
||||
#include "audiothread_cmd.h"
|
||||
|
||||
|
@ -543,7 +541,7 @@ void Player_Action_86(Player *this, PlayState *play) {
|
|||
extern s16 sPictoState;
|
||||
extern s16 sPictoPhotoBeingTaken;
|
||||
extern void* gWorkBuffer;
|
||||
u16 func_801A5100(void);
|
||||
u16 AudioVoice_GetWord(void);
|
||||
|
||||
// @recomp Patched to update status of extra buttons via set_extra_item_slot_status.
|
||||
void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||
|
@ -2600,7 +2598,7 @@ extern s32 Player_ActionChange_11(Player* this, PlayState* play);
|
|||
extern void func_8083A98C(Actor* thisx, PlayState* play2);
|
||||
extern void func_80836A98(Player* this, PlayerAnimationHeader* anim, PlayState* play);
|
||||
extern void func_80830B38(Player* this);
|
||||
extern void Player_AnimationPlayLoop(PlayState* play, Player* this, PlayerAnimationHeader* anim);
|
||||
extern void Player_Anim_PlayLoop(PlayState* play, Player* this, PlayerAnimationHeader* anim);
|
||||
extern s32 Player_UpdateUpperBody(Player* this, PlayState* play);
|
||||
extern void func_8082F164(Player* this, u16 button);
|
||||
extern s32 func_808401F4(PlayState* play, Player* this);
|
||||
|
@ -2639,7 +2637,7 @@ void Player_Action_18(Player* this, PlayState* play) {
|
|||
|
||||
if (PlayerAnimation_Update(play, &this->skelAnime)) {
|
||||
if (!Player_IsGoronOrDeku(this)) {
|
||||
Player_AnimationPlayLoop(play, this, D_8085BE84_reloc[PLAYER_ANIMGROUP_defense_wait][this->modelAnimType]);
|
||||
Player_Anim_PlayLoop(play, this, D_8085BE84_reloc[PLAYER_ANIMGROUP_defense_wait][this->modelAnimType]);
|
||||
}
|
||||
|
||||
this->av2.actionVar2 = 1;
|
||||
|
|
|
@ -5,10 +5,9 @@
|
|||
#include "audiomgr.h"
|
||||
#include "z64speed_meter.h"
|
||||
#include "z64vimode.h"
|
||||
#include "z64viscvg.h"
|
||||
#include "z64vismono.h"
|
||||
#include "z64viszbuf.h"
|
||||
#include "z64vis.h"
|
||||
#include "input.h"
|
||||
#include "scheduler.h"
|
||||
|
||||
void recomp_set_current_frame_poll_id();
|
||||
void PadMgr_HandleRetrace(void);
|
||||
|
@ -169,7 +168,7 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
// osSyncPrintf("GRAPH SP TIMEOUT\n");
|
||||
// if (retryCount >= 0) {
|
||||
// retryCount--;
|
||||
// Sched_SendGfxCancelMsg(&gSchedContext);
|
||||
// Sched_SendGfxCancelMsg(&gScheduler);
|
||||
// goto retry;
|
||||
// } else {
|
||||
// // graph.c: No more! die!
|
||||
|
@ -185,20 +184,20 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
|
||||
task->type = M_GFXTASK;
|
||||
task->flags = OS_SC_DRAM_DLIST;
|
||||
task->ucodeBoot = SysUcode_GetUCodeBoot();
|
||||
task->ucodeBootSize = SysUcode_GetUCodeBootSize();
|
||||
task->ucode_boot = SysUcode_GetUCodeBoot();
|
||||
task->ucode_boot_size = SysUcode_GetUCodeBootSize();
|
||||
task->ucode = SysUcode_GetUCode();
|
||||
task->ucodeData = SysUcode_GetUCodeData();
|
||||
task->ucodeSize = SP_UCODE_SIZE;
|
||||
task->ucodeDataSize = SP_UCODE_DATA_SIZE;
|
||||
task->dramStack = (u64*)gGfxSPTaskStack;
|
||||
task->dramStackSize = sizeof(gGfxSPTaskStack);
|
||||
task->outputBuff = gGfxSPTaskOutputBufferPtr;
|
||||
task->outputBuffSize = gGfxSPTaskOutputBufferEnd;
|
||||
task->dataPtr = (u64*)gGfxMasterDL;
|
||||
task->dataSize = 0;
|
||||
task->yieldDataPtr = (u64*)gGfxSPTaskYieldBuffer;
|
||||
task->yieldDataSize = sizeof(gGfxSPTaskYieldBuffer);
|
||||
task->ucode_data = SysUcode_GetUCodeData();
|
||||
task->ucode_size = SP_UCODE_SIZE;
|
||||
task->ucode_data_size = SP_UCODE_DATA_SIZE;
|
||||
task->dram_stack = (u64*)gGfxSPTaskStack;
|
||||
task->dram_stack_size = sizeof(gGfxSPTaskStack);
|
||||
task->output_buff = gGfxSPTaskOutputBufferPtr;
|
||||
task->output_buff_size = gGfxSPTaskOutputBufferEnd;
|
||||
task->data_ptr = (u64*)gGfxMasterDL;
|
||||
task->data_size = 0;
|
||||
task->yield_data_ptr = (u64*)gGfxSPTaskYieldBuffer;
|
||||
task->yield_data_size = sizeof(gGfxSPTaskYieldBuffer);
|
||||
|
||||
scTask->next = NULL;
|
||||
scTask->flags = OS_SC_RCP_MASK | OS_SC_SWAPBUFFER | OS_SC_LAST_TASK;
|
||||
|
@ -217,13 +216,13 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
cfb = &sGraphCfbInfos[cfbIdx];
|
||||
cfbIdx = (cfbIdx + 1) % ARRAY_COUNT(sGraphCfbInfos);
|
||||
|
||||
cfb->fb1 = gfxCtx->curFrameBuffer;
|
||||
cfb->framebuffer = gfxCtx->curFrameBuffer;
|
||||
cfb->swapBuffer = gfxCtx->curFrameBuffer;
|
||||
|
||||
if (gfxCtx->updateViMode) {
|
||||
gfxCtx->updateViMode = false;
|
||||
cfb->viMode = gfxCtx->viMode;
|
||||
cfb->features = gfxCtx->viConfigFeatures;
|
||||
cfb->viFeatures = gfxCtx->viConfigFeatures;
|
||||
cfb->xScale = gfxCtx->xScale;
|
||||
cfb->yScale = gfxCtx->yScale;
|
||||
} else {
|
||||
|
@ -238,9 +237,9 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
osRecvMesg(&gfxCtx->queue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
gfxCtx->schedMsgQ = &gSchedContext.cmdQ;
|
||||
osSendMesg(&gSchedContext.cmdQ, scTask, OS_MESG_BLOCK);
|
||||
Sched_SendEntryMsg(&gSchedContext);
|
||||
gfxCtx->schedMsgQ = &gScheduler.cmdQueue;
|
||||
osSendMesg(&gScheduler.cmdQueue, scTask, OS_MESG_BLOCK);
|
||||
Sched_SendNotifyMsg(&gScheduler);
|
||||
|
||||
// @recomp Immediately wait on the task to complete to minimize latency for the next one.
|
||||
osRecvMesg(&gfxCtx->queue, &msg, OS_MESG_BLOCK);
|
||||
|
@ -248,7 +247,7 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
// @recomp Wait on the VI framebuffer to change if this task has a framebuffer swap.
|
||||
if (scTask->flags & OS_SC_SWAPBUFFER) {
|
||||
int viCounter = 0;
|
||||
while (osViGetCurrentFramebuffer() != cfb->fb1) {
|
||||
while (osViGetCurrentFramebuffer() != cfb->framebuffer) {
|
||||
osRecvMesg(&vi_queue, NULL, OS_MESG_BLOCK);
|
||||
viCounter++;
|
||||
}
|
||||
|
@ -267,7 +266,7 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
|
||||
extern SpeedMeter sGameSpeedMeter;
|
||||
extern VisCvg sGameVisCvg;
|
||||
extern VisZbuf sGameVisZbuf;
|
||||
extern VisZBuf sGameVisZBuf;
|
||||
extern VisMono sGameVisMono;
|
||||
extern ViMode sGameViMode;
|
||||
|
||||
|
@ -285,7 +284,7 @@ void GameState_Destroy(GameState* gameState) {
|
|||
Rumble_Destroy();
|
||||
SpeedMeter_Destroy(&sGameSpeedMeter);
|
||||
VisCvg_Destroy(&sGameVisCvg);
|
||||
VisZbuf_Destroy(&sGameVisZbuf);
|
||||
VisZBuf_Destroy(&sGameVisZBuf);
|
||||
VisMono_Destroy(&sGameVisMono);
|
||||
ViMode_Destroy(&sGameViMode);
|
||||
THA_Destroy(&gameState->tha);
|
||||
|
|
|
@ -128,15 +128,15 @@ void FileSelect_Init(GameState* thisx) {
|
|||
|
||||
size = SEGMENT_ROM_SIZE(title_static);
|
||||
this->staticSegment = THA_AllocTailAlign16(&this->state.tha, size);
|
||||
DmaMgr_SendRequest0(this->staticSegment, SEGMENT_ROM_START(title_static), size);
|
||||
DmaMgr_RequestSync(this->staticSegment, SEGMENT_ROM_START(title_static), size);
|
||||
|
||||
size = SEGMENT_ROM_SIZE(parameter_static);
|
||||
this->parameterSegment = THA_AllocTailAlign16(&this->state.tha, size);
|
||||
DmaMgr_SendRequest0(this->parameterSegment, SEGMENT_ROM_START(parameter_static), size);
|
||||
DmaMgr_RequestSync(this->parameterSegment, SEGMENT_ROM_START(parameter_static), size);
|
||||
|
||||
size = gObjectTable[OBJECT_MAG].vromEnd - gObjectTable[OBJECT_MAG].vromStart;
|
||||
this->titleSegment = THA_AllocTailAlign16(&this->state.tha, size);
|
||||
DmaMgr_SendRequest0(this->titleSegment, gObjectTable[OBJECT_MAG].vromStart, size);
|
||||
DmaMgr_RequestSync(this->titleSegment, gObjectTable[OBJECT_MAG].vromStart, size);
|
||||
|
||||
Audio_SetSpec(0xA);
|
||||
// Setting ioData to 1 and writing it to ioPort 7 will skip the harp intro
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#define sinf __sinf_recomp
|
||||
#define cosf __cosf_recomp
|
||||
#define bzero bzero_recomp
|
||||
#define gRandFloat sRandFloat
|
||||
#include "global.h"
|
||||
#include "rt64_extended_gbi.h"
|
||||
|
||||
|
|
|
@ -140,8 +140,8 @@ void Sched_ThreadEntry(void* arg) {
|
|||
Sched_HandleGfxCancel(sched);
|
||||
continue;
|
||||
|
||||
case ENTRY_MSG:
|
||||
Sched_HandleEntry(sched);
|
||||
case NOTIFY_MSG:
|
||||
Sched_HandleNotify(sched);
|
||||
continue;
|
||||
|
||||
case RSP_DONE_MSG:
|
||||
|
@ -164,11 +164,11 @@ void Sched_ThreadEntry(void* arg) {
|
|||
continue;
|
||||
|
||||
case OS_SC_PRE_NMI_MSG:
|
||||
Sched_HandleReset(sched);
|
||||
Sched_HandlePreNMI(sched);
|
||||
continue;
|
||||
|
||||
case OS_SC_NMI_MSG:
|
||||
Sched_HandleStop(sched);
|
||||
Sched_HandleNMI(sched);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -201,14 +201,14 @@ void DmaMgr_ThreadEntry(void* a0) {
|
|||
|
||||
req = (DmaRequest*)msg;
|
||||
|
||||
DmaMgr_ProcessMsg(req);
|
||||
DmaMgr_ProcessRequest(req);
|
||||
if (req->notifyQueue) {
|
||||
osSendMesg(req->notifyQueue, req->notifyMsg, OS_MESG_NOBLOCK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern SchedContext gSchedContext;
|
||||
extern Scheduler gScheduler;
|
||||
|
||||
void handle_quicksave_actions_main() {
|
||||
recomp_handle_quicksave_actions_main(&quicksave_enter_mq, &quicksave_exit_mq);
|
||||
|
@ -226,7 +226,7 @@ void wake_threads_for_quicksave_action() {
|
|||
// Wake up the DmaMgr thread
|
||||
osSendMesg(&sDmaMgrMsgQueue, (OSMesg)RECOMP_DMAMGR_QUICKSAVE_MESSAGE, OS_MESG_BLOCK);
|
||||
// Wake up the Sched thread
|
||||
osSendMesg(&gSchedContext.interruptQ, (OSMesg)RECOMP_QUICKSAVE_ACTION, OS_MESG_BLOCK);
|
||||
osSendMesg(&gScheduler.interruptQ, (OSMesg)RECOMP_QUICKSAVE_ACTION, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,7 +22,7 @@ void Main_Init(void) {
|
|||
// @recomp Load the code segment in the recomp runtime.
|
||||
recomp_load_overlays(SEGMENT_ROM_START(code), SEGMENT_START(code), SEGMENT_ROM_END(code) - SEGMENT_ROM_START(code));
|
||||
|
||||
DmaMgr_SendRequestImpl(&dmaReq, SEGMENT_START(code), SEGMENT_ROM_START(code),
|
||||
DmaMgr_RequestAsync(&dmaReq, SEGMENT_START(code), SEGMENT_ROM_START(code),
|
||||
SEGMENT_ROM_END(code) - SEGMENT_ROM_START(code), 0, &mq, NULL);
|
||||
Main_InitScreen();
|
||||
Main_InitMemory();
|
||||
|
@ -50,7 +50,7 @@ size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* ramStart, void
|
|||
if (gOverlayLogSeverity >= 3) {}
|
||||
|
||||
end = (uintptr_t)allocatedRamAddr + size;
|
||||
DmaMgr_SendRequest0(allocatedRamAddr, vromStart, size);
|
||||
DmaMgr_RequestSync(allocatedRamAddr, vromStart, size);
|
||||
|
||||
ovlRelocs = (OverlayRelocationSection*)(end - ((s32*)end)[-1]);
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
extern OSMesgQueue sFlashromMesgQueue;
|
||||
s32 SysFlashrom_IsInit(void);
|
||||
void Sleep_Msec(u32 ms);
|
||||
void msleep(u32 ms);
|
||||
|
||||
// @recomp Patched to not wait a hardcoded amount of time for the save to complete.
|
||||
void Sram_UpdateWriteToFlashDefault(SramContext* sramCtx) {
|
||||
|
|
|
@ -10,7 +10,7 @@ void Skybox_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId
|
|||
|
||||
Gfx_SetupDL40_Opa(gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0B, skyboxCtx->paletteStaticSegment);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0B, skyboxCtx->palette);
|
||||
gSPTexture(POLY_OPA_DISP++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON);
|
||||
|
||||
sSkyboxDrawMatrix = GRAPH_ALLOC(gfxCtx, sizeof(Mtx));
|
||||
|
@ -40,7 +40,7 @@ void Skybox_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId
|
|||
|
||||
gDPSetColorDither(POLY_OPA_DISP++, G_CD_MAGICSQ);
|
||||
gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_BILERP);
|
||||
gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->paletteStaticSegment);
|
||||
gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palette);
|
||||
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16);
|
||||
gDPSetTextureConvert(POLY_OPA_DISP++, G_TC_FILT);
|
||||
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0,
|
||||
|
@ -66,6 +66,8 @@ void Skybox_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId
|
|||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
|
||||
void MtxConv_F2L(Mtx* mtx, MtxF* mf);
|
||||
|
||||
// @recomp Draw stars with billboarding to allow for interpolation instead of rects.
|
||||
void Environment_DrawSkyboxStarBillboard(GraphicsContext* gfxCtx, MtxF* billboard_mtx, Gfx** gfxp, f32 x, f32 y, f32 z, s32 width, s32 height) {
|
||||
static Vtx star_verts[] = {
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
#include "overlays/actors/ovl_En_Test6/z_en_test6.h"
|
||||
#include "overlays/actors/ovl_En_Test7/z_en_test7.h"
|
||||
|
||||
// Decomp renames, TODO update decomp and remove these
|
||||
#define gSoaringWarpCsWindCapsuleTexAnim gameplay_keep_Matanimheader_0815D0
|
||||
#define gSoaringWarpCsWindCapsuleDL gameplay_keep_DL_080FC8
|
||||
#define EnTest7_DrawFeathers func_80AF14FC
|
||||
|
||||
void EnTest7_DrawFeathers(PlayState* play2, OwlWarpFeather* feathers);
|
||||
s32 func_80AF31D0(PlayState* play, SkeletonInfo* skeletonInfo, s32 limbIndex, Gfx** dList, u8* flags, Actor* thisx,
|
||||
Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
|
|
|
@ -12,10 +12,6 @@
|
|||
#include "overlays/actors/ovl_En_Twig/z_en_twig.h"
|
||||
#include "overlays/actors/ovl_En_Honotrap/z_en_honotrap.h"
|
||||
|
||||
// Decomp renames, TODO update decomp and remove these
|
||||
#define EnHonotrap_FlameGroup func_8092F878
|
||||
#define EnHonotrap_DrawFlameGroup func_80930190
|
||||
|
||||
extern EnTanron2* D_80BB8458[82];
|
||||
extern Boss04* D_80BB8450;
|
||||
extern f32 D_80BB8454;
|
||||
|
@ -650,21 +646,21 @@ extern Gfx gGohtStalactiteMaterialDL[];
|
|||
extern Gfx gGohtStalactiteModelDL[];
|
||||
|
||||
// @recomp Tag Goht's rocks.
|
||||
void func_80B0C398(BossHakugin* this, PlayState* play) {
|
||||
BossHakuginEffect* effect;
|
||||
void BossHakugin_DrawRockEffects(BossHakugin* this, PlayState* play) {
|
||||
GohtRockEffect* effect;
|
||||
s32 i;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, gGohtRockMaterialDL);
|
||||
for (i = 0; i < ARRAY_COUNT(this->unk_9F8); i++) {
|
||||
effect = &this->unk_9F8[i];
|
||||
if ((effect->unk_18 >= 0) && (effect->unk_1A == 0)) {
|
||||
Matrix_SetTranslateRotateYXZ(effect->unk_0.x, effect->unk_0.y, effect->unk_0.z, &effect->unk_1C);
|
||||
Matrix_Scale(effect->unk_24, effect->unk_24, effect->unk_24, MTXMODE_APPLY);
|
||||
for (i = 0; i < ARRAY_COUNT(this->rockEffects); i++) {
|
||||
effect = &this->rockEffects[i];
|
||||
if ((effect->timer >= 0) && (effect->type == GOHT_ROCK_EFFECT_TYPE_BOULDER)) {
|
||||
Matrix_SetTranslateRotateYXZ(effect->pos.x, effect->pos.y, effect->pos.z, &effect->rot);
|
||||
Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY);
|
||||
|
||||
// @recomp Tag the transform.
|
||||
gEXMatrixGroupDecomposedVerts(POLY_OPA_DISP++, GOHT_ROCKS_TRANSFORM_ID_START + i + 0 * ARRAY_COUNT(this->unk_9F8), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE);
|
||||
gEXMatrixGroupDecomposedVerts(POLY_OPA_DISP++, GOHT_ROCKS_TRANSFORM_ID_START + i + 0 * ARRAY_COUNT(this->rockEffects), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gGohtRockModelDL);
|
||||
|
@ -675,14 +671,14 @@ void func_80B0C398(BossHakugin* this, PlayState* play) {
|
|||
}
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, gGohtStalactiteMaterialDL);
|
||||
for (i = 0; i < ARRAY_COUNT(this->unk_9F8); i++) {
|
||||
effect = &this->unk_9F8[i];
|
||||
if ((effect->unk_18 >= 0) && (effect->unk_1A == 1)) {
|
||||
Matrix_SetTranslateRotateYXZ(effect->unk_0.x, effect->unk_0.y, effect->unk_0.z, &effect->unk_1C);
|
||||
Matrix_Scale(effect->unk_24, effect->unk_24, effect->unk_24, MTXMODE_APPLY);
|
||||
for (i = 0; i < ARRAY_COUNT(this->rockEffects); i++) {
|
||||
effect = &this->rockEffects[i];
|
||||
if ((effect->timer >= 0) && (effect->type == GOHT_ROCK_EFFECT_TYPE_STALACTITE)) {
|
||||
Matrix_SetTranslateRotateYXZ(effect->pos.x, effect->pos.y, effect->pos.z, &effect->rot);
|
||||
Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY);
|
||||
|
||||
// @recomp Tag the transform.
|
||||
gEXMatrixGroupDecomposedVerts(POLY_OPA_DISP++, GOHT_ROCKS_TRANSFORM_ID_START + i + 1 * ARRAY_COUNT(this->unk_9F8), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE);
|
||||
gEXMatrixGroupDecomposedVerts(POLY_OPA_DISP++, GOHT_ROCKS_TRANSFORM_ID_START + i + 1 * ARRAY_COUNT(this->rockEffects), G_EX_PUSH, G_MTX_MODELVIEW, G_EX_EDIT_NONE);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gGohtStalactiteModelDL);
|
||||
|
@ -727,7 +723,7 @@ typedef enum {
|
|||
/* 25 */ OSN_ANIM_MAX
|
||||
} OsnAnimation;
|
||||
|
||||
void EnOsn_HandleCsAction(EnOsn* this, PlayState* play);
|
||||
void EnOsn_HandleCutscene(EnOsn* this, PlayState* play);
|
||||
void EnOsn_Idle(EnOsn* this, PlayState* play);
|
||||
|
||||
// @recomp Patched to skip interpolation when the Happy Mask Salesman changes animations.
|
||||
|
@ -742,7 +738,7 @@ void EnOsn_ChooseAction(EnOsn* this, PlayState* play) {
|
|||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, OSN_ANIM_IDLE);
|
||||
if (!isSwitchFlagSet) {
|
||||
// @recomp No need to relocate as this function is replaced, so the patch compilation will pick the new address.
|
||||
this->actionFunc = EnOsn_HandleCsAction;
|
||||
this->actionFunc = EnOsn_HandleCutscene;
|
||||
} else {
|
||||
// @recomp Manual relocation, TODO remove when automated by the recompiler.
|
||||
this->actionFunc = (EnOsnActionFunc)actor_relocate(&this->actor, EnOsn_Idle);
|
||||
|
@ -757,7 +753,7 @@ void EnOsn_LookFromMask(EnOsn* this);
|
|||
void EnOsn_FadeOut(EnOsn* this);
|
||||
|
||||
// @recomp Patched to skip interpolation when the Happy Mask Salesman changes animations.
|
||||
void EnOsn_HandleCsAction(EnOsn* this, PlayState* play) {
|
||||
void EnOsn_HandleCutscene(EnOsn* this, PlayState* play) {
|
||||
u8 pad;
|
||||
s32 cueChannel;
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ sHappyMaskSalesmanAnimationInfo = 0x80AD22C0;
|
|||
D_808890F0 = 0x808890F0;
|
||||
D_8088911C = 0x8088911C;
|
||||
D_809EE4D0 = 0x809EE4D0;
|
||||
sOwlWarpEntrances = 0x801C6A58;
|
||||
|
||||
/* Dummy addresses that get recompiled into function calls */
|
||||
recomp_puts = 0x8F000000;
|
||||
|
|
|
@ -83,7 +83,7 @@ void KaleidoScope_Draw(PlayState* play) {
|
|||
KaleidoScope_SetView(pauseCtx, pauseCtx->eye.x, pauseCtx->eye.y, pauseCtx->eye.z);
|
||||
Gfx_SetupDL42_Opa(play->state.gfxCtx);
|
||||
|
||||
if (!IS_PAUSE_STATE_OWL_WARP) {
|
||||
if (!IS_PAUSE_STATE_OWL_WARP(pauseCtx)) {
|
||||
// Draw Default or Game Over Menus
|
||||
// @recomp Record the current pageIndex, then change it to a dummy value for the KaleidoScope_SetVertices.
|
||||
u16 saved_page_index = pauseCtx->pageIndex;
|
||||
|
@ -99,7 +99,7 @@ void KaleidoScope_Draw(PlayState* play) {
|
|||
|
||||
KaleidoScope_SetView(pauseCtx, 0.0f, 0.0f, 64.0f);
|
||||
|
||||
if (!IS_PAUSE_STATE_GAMEOVER) {
|
||||
if (!IS_PAUSE_STATE_GAMEOVER(pauseCtx)) {
|
||||
KaleidoScope_DrawInfoPanel(play);
|
||||
}
|
||||
|
||||
|
@ -622,7 +622,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
if (!IS_PAUSE_STATE_GAMEOVER) {
|
||||
if (!IS_PAUSE_STATE_GAMEOVER(pauseCtx)) {
|
||||
if (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) {
|
||||
|
||||
stepR =
|
||||
|
|
1314
us.rev1.syms.toml
1314
us.rev1.syms.toml
File diff suppressed because it is too large
Load Diff
|
@ -19,7 +19,9 @@ stubs = [
|
|||
|
||||
ignored = [
|
||||
# Not actually a function
|
||||
"D_80186028"
|
||||
"sNonKanjiIndices",
|
||||
# Was originally named _MakeMotorData
|
||||
"__osMakeMotorData"
|
||||
]
|
||||
|
||||
# Single-instruction patches
|
||||
|
|
Loading…
Reference in New Issue