diff --git a/include/PR/os_pi.h b/include/PR/os_pi.h index 43339fa976..0076f00c6b 100644 --- a/include/PR/os_pi.h +++ b/include/PR/os_pi.h @@ -63,7 +63,7 @@ typedef struct { u32 sectorSize; /* size of transfering sector */ u32 C1ErrNum; /* total # of C1 errors */ u32 C1ErrSector[4]; /* error sectors */ -} __OSBlockInfo; +} __OSBlockInfo; // size = 0x24 typedef struct { u32 cmdType; /* for disk only */ @@ -74,7 +74,7 @@ typedef struct { u32 bmCtlShadow; /* asic bm_ctl(510) register shadow ram */ u32 seqCtlShadow; /* asic seq_ctl(518) register shadow ram */ __OSBlockInfo block[2]; /* bolck transfer info */ -} __OSTranxInfo; +} __OSTranxInfo; // size = 0x60 typedef struct OSPiHandle_s { @@ -89,7 +89,7 @@ typedef struct OSPiHandle_s { u32 speed; /* for roms only */ /* The following are "private" elements" */ __OSTranxInfo transferInfo; /* for disk only */ -} OSPiHandle; +} OSPiHandle; // size = 0x74 typedef struct { u8 type; diff --git a/include/effects.h b/include/effects.h index b9575b6897..8ecdce8fbe 100644 --- a/include/effects.h +++ b/include/effects.h @@ -3058,7 +3058,7 @@ EffectInstance* huff_puff_breath_main(s32, f32, f32, f32, f32, f32, f32, s32); EffectInstance* cold_breath_main(s32, f32, f32, f32, f32, s32); EffectInstance* embers_main(s32, f32, f32, f32, f32, f32, f32, s32, s32, f32, f32); EffectInstance* hieroglyphs_main(s32, f32, f32, f32, f32, s32); -EffectInstance *misc_particles_main(s32, f32, f32, f32, f32, f32, f32, s32, s32); +EffectInstance* misc_particles_main(s32, f32, f32, f32, f32, f32, f32, s32, s32); EffectInstance* static_status_main(s32, f32, f32, f32, f32, s32, s32); EffectInstance* moving_cloud_main(s32, f32, f32, f32, f32, f32, f32, f32, f32); EffectInstance* effect_75_main(s32, f32, f32, f32, f32, s32); diff --git a/include/variables.h b/include/variables.h index 1158659e28..b565e0d3de 100644 --- a/include/variables.h +++ b/include/variables.h @@ -13,51 +13,26 @@ extern GameStatus gGameStatus; extern GameStatus* gGameStatusPtr; extern u32 gRandSeed; extern ItemData gItemTable[365]; -extern UNK_FUN_PTR(gCurrentUpdateFunction); extern MoveData gMoveTable[185]; extern s32 gBattleState; extern BattleStatus gBattleStatus; extern s32 gLastDrawBattleState; -extern s32 D_800DC4D4; extern s32 gDefeatedBattleSubstate; extern s32 gBattleSubState; extern s32 gDefeatedBattleState; extern s32 gCurrentBattleID; extern s32 D_800DC4E0; -extern s32 gCurrentStageID; -extern s32 D_800DC4F0; extern struct Battle* gOverrideBattlePtr; -extern s32 D_800DC4F8; - -extern s32 D_802DAC98; - -extern EntityList gWorldEntityList; -extern EntityList gBattleEntityList; -extern EntityList* gCurrentEntityListPtr; - -extern WorkerList gWorldWorkerList; -extern WorkerList gBattleWorkerList; -extern WorkerList* gCurrentWorkerListPtr; - -extern NpcList gWorldNpcList; -extern NpcList gBattleNpcList; -extern NpcList* gCurrentNpcListPtr; - -extern ShadowList gWorldShadowList; -extern ShadowList gBattleShadowList; -extern ShadowList* gCurrentShadowListPtr; extern Camera gCameras[4]; extern s32 gCurrentCameraID; extern CollisionData gCollisionData; -extern s8 D_800A0900; extern f32 GravityParamsStartFall[]; extern s16 FootstepSoundSelector; extern u8* gBackgroundFogModePtr; -extern u16 gCurrentRoomDoorSounds; extern s32 gEntityHideMode; extern s32 D_8010C92C; @@ -73,56 +48,16 @@ extern f32 D_800F7B74; extern CollisionData gZoneCollisionData; // Animation related -extern AnimatedMeshList* gCurrentAnimMeshListPtr; extern PartnerAnimations gPartnerAnimations[12]; -// Triggers -extern s16 gTriggerCount; -extern TriggerList wTriggerList; -extern TriggerList bTriggerList; -extern TriggerList* gCurrentTriggerListPtr; - -// Map transition data. Should probably be a struct -extern s16 gMapTransitionAlpha; -extern s8 D_800A0930; -extern s8 D_800A0931; -extern s16 D_800A0932[1]; -extern s16 gMapTransitionFadeRate; -extern s16 gMapTransitionState; -extern s16 gMapTransitionStateTime; -extern s16 gLoadedFromFileSelect; -extern s16 D_800A0954; -extern s16 D_800A0956; -extern s16 D_800A0958; -extern s16 D_800A095A; -extern u8 D_800A095B; -extern s16 D_800A095C; -extern u8 D_800A095D; -extern s16 D_800A095E; -extern u8 D_800A095F; -extern s32 D_800A0960; -extern s32 D_800A0964; -extern s8 gNpcPlayerCollisionsEnabled; -extern s16 D_800A0BB8; - -extern SpriteShadingProfile* gAuxSpriteShadingProfile; extern SpriteShadingProfile* gSpriteShadingProfile; extern Window gWindows[64]; extern s32 gEncounterState; -extern s16 gNpcCount; extern s32 gOverrideFlags; -extern s16 D_8009A6A0; -extern s16 D_8009A6A2; -extern s16 D_8009A6A4; -extern s16 D_8009A6A6; -extern s8 D_800A0920; -extern s32 SavedReverbMode; -extern s8 D_800A0921; -extern s16 D_800A0922; extern char wMapTexName[]; extern char wMapHitName[]; extern char wMapShapeName[]; @@ -130,22 +65,13 @@ extern char wMapBgName[]; extern u8 D_802D9D70; // player alpha1 copy? extern u8 D_802D9D71; // player alpha2 copy? -extern DisplayContext D_80164000[]; +extern DisplayContext D_80164000[2]; extern WindowStyle gWindowStyles[]; -extern MessagePrintState gMessagePrinters[3]; - -extern f32 gCurtainScale; -extern f32 gCurtainScaleGoal; -extern f32 gCurtainFade; -extern f32 gCurtainFadeGoal; -extern UNK_FUN_PTR(gCurtainDrawCallback); - extern u16 gCurrentDoorSounds; +extern u16 gCurrentRoomDoorSounds; -extern UNK_TYPE D_800E92D8; -extern UNK_TYPE D_80147574; extern b8 D_8014C248; extern UNK_FUN_PTR(TalkNotificationCallback); @@ -159,7 +85,6 @@ extern Entity* TweesterTouchingPlayer; extern s32 PrevPlayerDirection; extern s32 PeachDisguiseNpcIndex; extern s32 D_8010C980; -extern s32 D_8010C9A0; extern s32 PrevPlayerCamRelativeYaw; extern s32 D_800F7B44; extern f32 D_8010C938; @@ -174,25 +99,14 @@ extern s32 timeFreezeMode; extern s32 D_8009A678; extern u8 D_800779B0; -extern u32 D_80078174; extern s32 D_8008EEC0[12]; // partner IDs -extern u8 D_800A0963; - -extern s32 D_802EA310[]; -extern s32 Entity_WoodenCrate_RenderShatteredScript[]; - // Scripts extern EvtScript EVS_NpcDefeat; extern EvtScript ShakeCam1; extern EvtScript ShakeCamX; -extern MusicSettings gMusicSettings[4]; - -// OS -extern OSThread IdleThread; // idle thread, id 1 -extern OSThread MainThread; // id 3 -extern OSDevMgr __osPiDevMgr; +extern MusicSettings gMusicSettings[2]; // gfx extern DisplayContext* gDisplayContext; @@ -200,20 +114,6 @@ extern Gfx* gMainGfxPos; extern u16 gMatrixListPos; extern s32 gCurrentDisplayContextIndex; -extern s32 D_80291FA8[]; -extern s32 D_80291FD0[]; -extern s32 D_80291FF8[]; -extern s32 D_80292020[]; -extern s32 D_80292048[]; -extern s32 D_80292070[]; -extern s32 D_80292098[]; -extern s32 D_802920C0[]; -extern s32 D_802920E8[]; -extern s32 D_80292110[]; - -extern AnimID KoopatrolDisguiseExtraAnims[]; -extern AnimID HammerBroDisguiseExtraAnims[]; - extern s16 gCurrentCamID; extern s32 D_8029C890[10][5]; @@ -224,39 +124,6 @@ extern u32 bMarioIdleAnims[]; extern s32 bMarioDefendAnims[]; extern s32 bPeachIdleAnims[]; -extern s32 D_802EBFF0[]; -extern s32 D_802EC010[]; -extern s32 D_802EC030[]; -extern s32 D_802EC050[]; -extern s32 D_802EC070[]; -extern s32 D_802EC090[]; -extern s32 D_802EC0B0[]; -extern s32 D_802EC0D0[]; -extern s32 D_802EC0F0[]; -extern s32 D_802EC110[]; -extern s32 D_802EC130[]; -extern s32 D_802EC150[]; -extern s32 D_802EC170[]; -extern s32 D_802EC190[]; -extern s32 D_802EC1B0[]; -extern s32 D_802EC1D0[]; -extern s32 D_802EC1F0[]; -extern s32 D_802EC210[]; -extern s32 D_802EC230[]; -extern s32 D_802EC250[]; -extern s32 D_802EC270[]; -extern s32 D_802EC290[]; -extern s32 D_802EC2B0[]; -extern s32 D_802EC2D0[]; -extern s32 D_802EC2F0[]; -extern s32 D_802EC310[]; -extern s32 D_802EC330[]; -extern s32 D_802EC350[]; -extern s32 D_802EC370[]; -extern s32 D_802EC390[]; -extern s32 D_802EC3B0[]; -extern s32 D_802EC3D0[]; - extern PartnerStatus gPartnerStatus; extern UiStatus gUIStatus; extern PlayerStatus gPlayerStatus; diff --git a/src/111f0_len_860.c b/src/111f0_len_860.c index b1e10c29ba..f720b1c429 100644 --- a/src/111f0_len_860.c +++ b/src/111f0_len_860.c @@ -1,6 +1,12 @@ #include "common.h" #include "nu/nusys.h" +SHIFT_BSS s16 gMapTransitionAlpha; +SHIFT_BSS s16 gMapTransitionFadeRate; +SHIFT_BSS s16 gMapTransitionState; +SHIFT_BSS s16 gMapTransitionStateTime; +SHIFT_BSS s16 gLoadedFromFileSelect; + void set_map_change_fade_rate(s16 fadeRate) { gMapTransitionFadeRate = fadeRate; } diff --git a/src/16c8e0.c b/src/16c8e0.c index 7d3a9a4b67..7e701d8400 100644 --- a/src/16c8e0.c +++ b/src/16c8e0.c @@ -831,11 +831,11 @@ void tattle_cam_pre_render(Camera* camera) { gSPClipRatio(gMainGfxPos++, FRUSTRATIO_2); gDPPipeSync(gMainGfxPos++); gDPSetCycleType(gMainGfxPos++, G_CYC_FILL); - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(nuGfxZBuffer)); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxZBuffer)); gDPSetFillColor(gMainGfxPos++, PACK_FILL_DEPTH(G_MAXFBZ, 0)); gDPFillRectangle(gMainGfxPos++, cam->viewportStartX, cam->viewportStartY, cam->viewportStartX + cam->viewportW - 1, cam->viewportStartY + cam->viewportH - 1); gDPPipeSync(gMainGfxPos++); - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(nuGfxCfb_ptr)); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxCfb_ptr)); if (!(gGameStatusPtr->backgroundFlags & BACKGROUND_FLAG_TEXTURE)) { gDPSetCycleType(gMainGfxPos++, G_CYC_FILL); diff --git a/src/17D6A0.c b/src/17D6A0.c index e3efe3bf9f..99648dce06 100644 --- a/src/17D6A0.c +++ b/src/17D6A0.c @@ -2666,7 +2666,6 @@ PartnerDMAData bPartnerDmaTable[] = { BATTLE_PARTNER_ENTRY(twink, 30), }; -// BSS BSS PopupMessage popupMessages[32]; BSS s16 D_8029F640; BSS s16 D_8029F642; diff --git a/src/77480.c b/src/77480.c index 0dc03b11bf..c3d490d779 100644 --- a/src/77480.c +++ b/src/77480.c @@ -17,9 +17,14 @@ #define i_spy_VRAM_DEF (void*)0x802B7000 #endif +SHIFT_BSS UNK_FUN_PTR(ISpyNotificationCallback); +SHIFT_BSS UNK_FUN_PTR(PulseStoneNotificationCallback); +SHIFT_BSS UNK_FUN_PTR(TalkNotificationCallback); +SHIFT_BSS UNK_FUN_PTR(InteractNotificationCallback); +SHIFT_BSS s32 D_8010C950; + extern f32 D_800F7B48; extern s32 D_800F7B4C; -extern s8 D_8015A57A; extern s32 WorldTattleInteractionID; s32 player_raycast_down(f32*, f32*, f32*, f32*); @@ -997,7 +1002,7 @@ void player_render_interact_prompts(void) { void check_for_ispy(void) { PlayerStatus* playerStatus = &gPlayerStatus; - if (D_8015A57A != 0 && ISpyNotificationCallback == NULL) { + if (gCurrentHiddenPanels.activateISpy && ISpyNotificationCallback == NULL) { if (!(playerStatus->animFlags & (PA_FLAG_SPEECH_PROMPT_AVAILABLE | PA_FLAG_INTERACT_PROMPT_AVAILABLE))) { dma_copy(i_spy_ROM_START, i_spy_ROM_END, i_spy_VRAM_DEF); diff --git a/src/7B440.c b/src/7B440.c index 490fdcd820..70947792ed 100644 --- a/src/7B440.c +++ b/src/7B440.c @@ -1,5 +1,15 @@ #include "common.h" +SHIFT_BSS s32 PeachDisguiseNpcIndex; +SHIFT_BSS Entity* TweesterTouchingPartner; +SHIFT_BSS Entity* TweesterTouchingPlayer; +SHIFT_BSS s32 PrevPlayerDirection; +SHIFT_BSS s32 D_8010C980; +SHIFT_BSS f32 D_8010C938; +SHIFT_BSS f32 D_8010C990; +SHIFT_BSS PlayerSpinState gPlayerSpinState; +SHIFT_BSS s32 D_8010C9A0; + void update_player_input(void) { PlayerStatus* playerStatus = &gPlayerStatus; s32 inputBufPos = playerStatus->inputBufPos; diff --git a/src/7E9D0.c b/src/7E9D0.c index 668bd09b72..51c47143f8 100644 --- a/src/7E9D0.c +++ b/src/7E9D0.c @@ -13,14 +13,15 @@ #define PLAYER_ACTION_VRAM_DEF (void*) 0x802B6000 #endif -extern void* D_8010C924; -extern s32 D_8010C964; -extern s32 gSpinHistoryBufferPos; -extern s16 D_8010C9B0; -extern s32 gSpinHistoryPosY[5]; -extern s32 gSpinHistoryPosX[5]; -extern s32 gSpinHistoryPosZ[5]; -extern s16 gSpinHistoryPosAngle[5]; +SHIFT_BSS void* D_8010C924; +SHIFT_BSS s32 D_8010C92C; +SHIFT_BSS s32 D_8010C964; +SHIFT_BSS s32 gSpinHistoryBufferPos; +SHIFT_BSS s16 D_8010C9B0; +SHIFT_BSS s32 gSpinHistoryPosY[5]; +SHIFT_BSS s32 gSpinHistoryPosX[5]; +SHIFT_BSS s32 gSpinHistoryPosZ[5]; +SHIFT_BSS s16 gSpinHistoryPosAngle[5]; void func_800E5520(void) { D_8010C9B0 = 0; diff --git a/src/7bb60_len_41b0.c b/src/7bb60_len_41b0.c index d8410b451e..a92b1c4a91 100644 --- a/src/7bb60_len_41b0.c +++ b/src/7bb60_len_41b0.c @@ -2,11 +2,13 @@ #include "world/partners.h" #include "sprite/player.h" +SHIFT_BSS CollisionStatus gCollisionStatus; +SHIFT_BSS f32 D_8010C928; +SHIFT_BSS f32 JumpedOnSwitchX; +SHIFT_BSS f32 JumpedOnSwitchZ; +SHIFT_BSS f32 D_8010C984; + extern f32 GravityParamsStartJump[]; -extern f32 D_8010C928; -extern f32 JumpedOnSwitchX; -extern f32 JumpedOnSwitchZ; -extern f32 D_8010C984; s32 collision_check_player_intersecting_world(s32 mode, s32 arg1, f32 yaw); s32 phys_check_interactable_collision(void); diff --git a/src/80850_len_3060.c b/src/80850_len_3060.c index e203676b3b..2bc7eb748f 100644 --- a/src/80850_len_3060.c +++ b/src/80850_len_3060.c @@ -1,6 +1,8 @@ #include "common.h" #include "hud_element.h" +SHIFT_BSS UiStatus gUIStatus; + extern HudScript* TimesHudScript; extern HudScript* SPIncrementHudScripts[]; extern HudScript* SPStarHudScripts[]; diff --git a/src/8800.c b/src/8800.c index 7e2471d3c8..f28e751b0c 100644 --- a/src/8800.c +++ b/src/8800.c @@ -4,12 +4,17 @@ #include "hud_element.h" #include "camera.h" -//extern f32 D_8009A5EC; TODO BSS - void render_models(void); void execute_render_tasks(void); void render_item_entities(void); +SHIFT_BSS f32 D_8009A5EC; +SHIFT_BSS s16 gCurrentCamID; +SHIFT_BSS u16* nuGfxCfb_ptr; +SHIFT_BSS Gfx* gMainGfxPos; +SHIFT_BSS DisplayContext* gDisplayContext; +SHIFT_BSS Camera gCameras[4]; + void update_cameras(void) { s32 i; diff --git a/src/891b0_len_fb0.c b/src/891b0_len_fb0.c index 87d05a8933..fabee788df 100644 --- a/src/891b0_len_fb0.c +++ b/src/891b0_len_fb0.c @@ -26,8 +26,8 @@ s32 D_801094A8 = 0; s16 D_801094AC = 4; s16 D_801094AE = 4; -extern s32 D_8010CFF0; -extern s32 D_8010CFF4; +SHIFT_BSS s32 D_8010CFF0; +SHIFT_BSS s32 D_8010CFF4; void func_800EFD00(void) { } diff --git a/src/8a160_len_700.c b/src/8a160_len_700.c index 2af3230785..66b75fd202 100644 --- a/src/8a160_len_700.c +++ b/src/8a160_len_700.c @@ -44,7 +44,7 @@ typedef struct Unk8a160Outer { /* 0x00 */ Unk8a160 subs[57]; // one base + 56 others? } Unk8a160Outer; -extern Unk8a160Outer D_8010D000[1]; +SHIFT_BSS Unk8a160Outer D_8010D000[1]; void func_800F0CB0(s32 arg0, f32 x, f32 y, f32 scale) { Unk8a160Outer* outer = &D_8010D000[arg0]; diff --git a/src/8a860_len_3f30.c b/src/8a860_len_3f30.c index dd27d705ce..802c900ae8 100644 --- a/src/8a860_len_3f30.c +++ b/src/8a860_len_3f30.c @@ -51,46 +51,46 @@ s16 PopupContentScissorWidths[] = { [POPUP_MENU_POST_OFFICE] 137, }; -extern s32 gPopupState; -extern s32 D_8010D644; -extern s32 PopupMenu_SelectedIndex; -extern s32 PopupMenu_PrevSelectedIndex; -extern s32 PopupMenu_Alpha; -extern s8 PopupMenu_FirstDisplayIndex; -extern s8 PopupMenu_LastDisplayIndex; -extern s8 PopupMenu_DisplayedEntryCount; -extern s16 D_8010D658; -extern s16 D_8010D65A; -extern s32 PopupMenu_EmptybarHEID; -extern s32 PopupMenu_TitleIconHEID; -extern s32 PopupMenu_TimesHEID; -extern s32 PopupMenu_PartnerLevelHEID; -extern s32 PopupMenu_CursorHEID; -extern s32 PopupMenu_UpArrowHEID; -extern s32 PopupMenu_DownArrowHEID; -extern s32 PopupMenu_EntryIconHEID; -extern s16 D_8010D67C; -extern s16 D_8010D67E; -extern s16 D_8010D680; -extern s16 D_8010D682; -extern s16 D_8010D684; -extern s16 D_8010D686; -extern s16 PopupMenu_StarPieceCounterPosX; -extern s16 PopupMenu_StarPieceCounterPosY; -extern s16 D_8010D68C; -extern s8 PopupNotBattle; -extern s8 PopupMenu_MaxDisplayableEntryCount; -extern s8 D_8010D690; -extern s8 D_8010D691; -extern s8 D_8010D692; -extern s8 D_8010D693; -extern s32 gPopupWorker; -extern s8 PopupNotDipping; -extern s8 PopupDipMode; -extern s8 D_8010D69A; -extern PopupMenu* gPopupMenu; -extern MessagePrintState* D_8010D6A0; -extern s32 D_8010D6A4; +SHIFT_BSS s32 gPopupState; +SHIFT_BSS s32 D_8010D644; +SHIFT_BSS s32 PopupMenu_SelectedIndex; +SHIFT_BSS s32 PopupMenu_PrevSelectedIndex; +SHIFT_BSS s32 PopupMenu_Alpha; +SHIFT_BSS s8 PopupMenu_FirstDisplayIndex; +SHIFT_BSS s8 PopupMenu_LastDisplayIndex; +SHIFT_BSS s8 PopupMenu_DisplayedEntryCount; +SHIFT_BSS s16 D_8010D658; +SHIFT_BSS s16 D_8010D65A; +SHIFT_BSS s32 PopupMenu_EmptybarHEID; +SHIFT_BSS s32 PopupMenu_TitleIconHEID; +SHIFT_BSS s32 PopupMenu_TimesHEID; +SHIFT_BSS s32 PopupMenu_PartnerLevelHEID; +SHIFT_BSS s32 PopupMenu_CursorHEID; +SHIFT_BSS s32 PopupMenu_UpArrowHEID; +SHIFT_BSS s32 PopupMenu_DownArrowHEID; +SHIFT_BSS s32 PopupMenu_EntryIconHEID; +SHIFT_BSS s16 D_8010D67C; +SHIFT_BSS s16 D_8010D67E; +SHIFT_BSS s16 D_8010D680; +SHIFT_BSS s16 D_8010D682; +SHIFT_BSS s16 D_8010D684; +SHIFT_BSS s16 D_8010D686; +SHIFT_BSS s16 PopupMenu_StarPieceCounterPosX; +SHIFT_BSS s16 PopupMenu_StarPieceCounterPosY; +SHIFT_BSS s16 D_8010D68C; +SHIFT_BSS s8 PopupNotBattle; +SHIFT_BSS s8 PopupMenu_MaxDisplayableEntryCount; +SHIFT_BSS s8 D_8010D690; +SHIFT_BSS s8 D_8010D691; +SHIFT_BSS s8 D_8010D692; +SHIFT_BSS s8 D_8010D693; +SHIFT_BSS s32 gPopupWorker; +SHIFT_BSS s8 PopupNotDipping; +SHIFT_BSS s8 PopupDipMode; +SHIFT_BSS s8 D_8010D69A; +SHIFT_BSS PopupMenu* gPopupMenu; +SHIFT_BSS MessagePrintState* D_8010D6A0; +SHIFT_BSS s32 D_8010D6A4; s8 func_800E98D4(void); diff --git a/src/B0E0.c b/src/B0E0.c index 741fba003f..10c2dbbdd6 100644 --- a/src/B0E0.c +++ b/src/B0E0.c @@ -1,11 +1,11 @@ #include "common.h" -extern CamConfiguration gCurrentCamConfiguration; -extern f32 D_800A08DC; -extern f32 D_800A08E0; -extern f32 D_800A08E4; -extern f32 D_800A08E8; -extern f32 D_800A08EC; +SHIFT_BSS CamConfiguration gCurrentCamConfiguration; +SHIFT_BSS f32 D_800A08DC; +SHIFT_BSS f32 D_800A08E0; +SHIFT_BSS f32 D_800A08E4; +SHIFT_BSS f32 D_800A08E8; +SHIFT_BSS f32 D_800A08EC; void cam_interp_lookat_pos(Camera* camera, f32 arg1, f32 arg2, s16 arg3); void func_8003034C(Camera* camera); diff --git a/src/B4580.c b/src/B4580.c index 4093d0b649..fdfaad65b9 100644 --- a/src/B4580.c +++ b/src/B4580.c @@ -2,13 +2,6 @@ #include "animation_script.h" #include "model.h" -AnimScript gAnimScriptDefault = { - AS_WAIT, 60, - AS_END, -}; - -extern s32 gAnimCount; - typedef struct DisplayListBufferHandle { /* 0x0 */ s32 ttl; /* 0x4 */ void* addr; @@ -16,23 +9,25 @@ typedef struct DisplayListBufferHandle { typedef DisplayListBufferHandle AnimatedMeshVertexCopyList[0x60]; -extern AnimatedMeshVertexCopyList D_801533C0; -extern AnimatedMeshVertexCopyList D_801536C0; -extern AnimatedMeshList D_801539C0; -extern AnimatedMeshList D_80153A00; -extern s32 gAnimModelFogEnabled; -extern s32 gAnimModelFogR; -extern s32 gAnimModelFogG; -extern s32 gAnimModelFogB; -extern s32 gAnimModelFogA; -extern s32 gAnimModelFogStart; -extern s32 gAnimModelFogEnd; -extern s32 gAnimVtxSegment; -extern Matrix4f gAnimRotMtx; -extern Matrix4f gAnimScaleMtx; -extern Matrix4f gAnimTranslateMtx; -extern Matrix4f gAnimRotScaleMtx; -extern StaticAnimatorNode** gAnimTreeRoot; +SHIFT_BSS AnimatedMeshList* gCurrentAnimMeshListPtr; +SHIFT_BSS s32 gAnimCount; +SHIFT_BSS AnimatedMeshVertexCopyList D_801533C0; +SHIFT_BSS AnimatedMeshVertexCopyList D_801536C0; +SHIFT_BSS AnimatedMeshList D_801539C0; +SHIFT_BSS AnimatedMeshList D_80153A00; +SHIFT_BSS s32 gAnimModelFogEnabled; +SHIFT_BSS s32 gAnimModelFogR; +SHIFT_BSS s32 gAnimModelFogG; +SHIFT_BSS s32 gAnimModelFogB; +SHIFT_BSS s32 gAnimModelFogA; +SHIFT_BSS s32 gAnimModelFogStart; +SHIFT_BSS s32 gAnimModelFogEnd; +SHIFT_BSS s32 gAnimVtxSegment; +SHIFT_BSS Matrix4f gAnimRotMtx; +SHIFT_BSS Matrix4f gAnimScaleMtx; +SHIFT_BSS Matrix4f gAnimTranslateMtx; +SHIFT_BSS Matrix4f gAnimRotScaleMtx; +SHIFT_BSS StaticAnimatorNode** gAnimTreeRoot; extern Gfx D_8014B7F8[]; extern Gfx D_8014B820[]; @@ -49,6 +44,11 @@ extern Gfx D_8014BF18[]; extern Gfx D_8014BF40[]; extern Gfx D_8014BF68[]; +AnimScript gAnimScriptDefault = { + AS_WAIT, 60, + AS_END, +}; + void appendGfx_animator_node(ModelAnimator*, AnimatorNode*, Matrix4f); // copy Vtx array from node->fcData.vtxList, but overwrite xyz coordinates with ones from buffer diff --git a/src/C50A0.c b/src/C50A0.c index 0acaf3f8ba..e6a4c3775b 100644 --- a/src/C50A0.c +++ b/src/C50A0.c @@ -29,27 +29,27 @@ extern HudCacheEntry* gHudElementCacheTablePalette; extern u8* gHudElementCacheBuffer; extern s32* gHudElementCacheSize; -extern s32 ItemEntitiesCreated; -extern s32 D_80155D80; -extern s32 ItemEntityAlternatingSpawn; -extern s32 ItemEntityRenderGroup; -extern s16 D_80155D8C; -extern s16 D_80155D8E; -extern s16 D_80155D90; -extern ItemEntity* WorldItemEntities[MAX_ITEM_ENTITIES]; -extern ItemEntity* BattleItemEntities[MAX_ITEM_ENTITIES]; -extern ItemEntity** gCurrentItemEntities; -extern s16 isPickingUpItem; -extern s16 D_801565A6; -extern s16 D_801565A8; // some hack relating to kooper item pickups -extern PopupMenu D_801565B0; -extern s32 ItemPickupIconID; -extern s32 ItemPickupStateDelay; -extern s32 D_801568E8; -extern s32 D_801568EC; -extern EffectInstance* ItemPickupGotOutline; -extern MessagePrintState* GotItemTutorialPrinter; -extern b32 GotItemTutorialClosed; +SHIFT_BSS s32 ItemEntitiesCreated; +SHIFT_BSS s32 D_80155D80; +SHIFT_BSS s32 ItemEntityAlternatingSpawn; +SHIFT_BSS s32 ItemEntityRenderGroup; +SHIFT_BSS s16 D_80155D8C; +SHIFT_BSS s16 D_80155D8E; +SHIFT_BSS s16 D_80155D90; +SHIFT_BSS ItemEntity* WorldItemEntities[MAX_ITEM_ENTITIES]; +SHIFT_BSS ItemEntity* BattleItemEntities[MAX_ITEM_ENTITIES]; +SHIFT_BSS ItemEntity** gCurrentItemEntities; +SHIFT_BSS s16 isPickingUpItem; +SHIFT_BSS s16 D_801565A6; +SHIFT_BSS s16 D_801565A8; // some hack relating to kooper item pickups +SHIFT_BSS PopupMenu D_801565B0; +SHIFT_BSS s32 ItemPickupIconID; +SHIFT_BSS s32 ItemPickupStateDelay; +SHIFT_BSS s32 D_801568E8; +SHIFT_BSS s32 D_801568EC; +SHIFT_BSS EffectInstance* ItemPickupGotOutline; +SHIFT_BSS MessagePrintState* GotItemTutorialPrinter; +SHIFT_BSS b32 GotItemTutorialClosed; void item_entity_update(ItemEntity*); void appendGfx_item_entity(void*); diff --git a/src/audio.h b/src/audio.h index e5a2ef5122..24d1976128 100644 --- a/src/audio.h +++ b/src/audio.h @@ -1214,20 +1214,10 @@ extern u8 AuSynStereoDirty; extern AuGlobals* gSoundGlobals; extern BGMPlayer* gBGMPlayerC; extern BGMPlayer* gBGMPlayerB; -extern AuCallback BeginSoundUpdateCallback; extern AmbienceManager* gAuAmbienceManager; extern SoundManager* gSoundManager; extern BGMPlayer* gBGMPlayerA; -extern u16 AuInitialGlobalVolume; - -extern s16* AuDelayBufferMain; -extern s16* AuDelayBufferAux; -extern s32 AuDelayCounter; -extern u8 AuDelayedVoiceGroup; -extern s16 AuDelayedChannel; -extern s32 AuDelayCount; - #include "audio/private.h" #endif diff --git a/src/audio/25f00_len_940.c b/src/audio/25f00_len_940.c index 3235e6b5db..94b21a81f2 100644 --- a/src/audio/25f00_len_940.c +++ b/src/audio/25f00_len_940.c @@ -12,23 +12,27 @@ u32 nuAuFrameCounter = 0; u8 nuAuTaskStop = NU_AU_TASK_RUN; u8 volatile AuSynUseStereo = TRUE; -//bss -extern Acmd* AlCmdListBuffers[3]; -extern NUScTask nuAuTasks[3]; -extern u8* D_800A3628[3]; -extern s32 AlFrameSize; -extern s32 AlMinFrameSize; -extern OSMesgQueue nuAuDmaMesgQ; -extern OSMesg nuAuDmaMesgBuf[50]; -extern OSIoMesg nuAuDmaIOMesgBuf[]; -extern NUDMABuffer nuAuDmaBufList[50]; -extern AuSynDriver auSynDriver; -extern u64 rspbootUcodeBuffer[]; +SHIFT_BSS NUDMAState nuAuDmaState; +SHIFT_BSS Acmd* AlCmdListBuffers[3]; +SHIFT_BSS NUScTask nuAuTasks[3]; +SHIFT_BSS u8* D_800A3628[3]; +SHIFT_BSS s32 AlFrameSize; +SHIFT_BSS s32 AlMinFrameSize; +SHIFT_BSS OSMesgQueue nuAuDmaMesgQ; +SHIFT_BSS OSMesg nuAuDmaMesgBuf[50]; +SHIFT_BSS OSIoMesg nuAuDmaIOMesgBuf[50]; +SHIFT_BSS NUDMABuffer nuAuDmaBufList[50]; +SHIFT_BSS AuSynDriver auSynDriver; +SHIFT_BSS u8 rspbootUcodeBuffer[0x100] ALIGNED(16); +SHIFT_BSS u64 AuStack[NU_AU_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u16 AuInitialGlobalVolume; +SHIFT_BSS OSThread nuAuMgrThread; +SHIFT_BSS ALHeap nuAuHeap; + extern u64 n_aspMain_text_bin[]; extern u64 n_aspMain_data_bin[]; extern u8 AuHeapBase[AUDIO_HEAP_SIZE]; -extern u64 AuStack[NU_AU_STACK_SIZE / sizeof(u64)]; void create_audio_system(void) { u32 i; @@ -61,7 +65,7 @@ void create_audio_system(void) { nuAuTasks[i].list.t.ucode_boot = (u64*) rspbootTextStart; nuAuTasks[i].list.t.ucode_boot_size = (u32) rspbootTextEnd - (u32) rspbootTextStart; #else - nuAuTasks[i].list.t.ucode_boot = rspbootUcodeBuffer; + nuAuTasks[i].list.t.ucode_boot = (u64*) rspbootUcodeBuffer; nuAuTasks[i].list.t.ucode_boot_size = 0x100; #endif nuAuTasks[i].list.t.ucode = n_aspMain_text_bin; diff --git a/src/audio/2e230_len_2190.c b/src/audio/2e230_len_2190.c index 48cd14d4ab..112d99e409 100644 --- a/src/audio/2e230_len_2190.c +++ b/src/audio/2e230_len_2190.c @@ -1,13 +1,20 @@ #include "audio.h" #include "ld_addrs.h" +SHIFT_BSS AuCallback BeginSoundUpdateCallback; +SHIFT_BSS BGMPlayer* gBGMPlayerA; +SHIFT_BSS BGMPlayer* gBGMPlayerB; +SHIFT_BSS BGMPlayer* gBGMPlayerC; +SHIFT_BSS SoundManager* gSoundManager; +SHIFT_BSS AuGlobals* gSoundGlobals; +SHIFT_BSS AmbienceManager* gAuAmbienceManager; + // data extern u16 D_80078530[9]; extern u8 EnvelopePressDefault[]; extern u8 EnvelopeReleaseDefault[]; extern f32 AlTuneScaling[]; - #ifdef SHIFT #define SBN_ROM_OFFSET (s32) SBN_ROM_START #elif VERSION_JP diff --git a/src/audio/31650.c b/src/audio/31650.c index 798c4d757f..660eb91850 100644 --- a/src/audio/31650.c +++ b/src/audio/31650.c @@ -4,6 +4,13 @@ static s16 _getVol(s16 arg0, s32 arg1, s16 arg2, u16 arg3); +SHIFT_BSS s16* AuDelayBufferMain; +SHIFT_BSS s16* AuDelayBufferAux; +SHIFT_BSS s32 AuDelayCounter; +SHIFT_BSS u8 AuDelayedVoiceGroup; +SHIFT_BSS s16 AuDelayedChannel; +SHIFT_BSS s32 AuDelayCount; + AuSynDriver* gActiveSynDriverPtr = NULL; AuSynDriver* gSynDriverPtr = NULL; u8 AuUseGlobalVolume = FALSE; diff --git a/src/audio/ambience.c b/src/audio/ambience.c index 0d4de78dd6..b28810918c 100644 --- a/src/audio/ambience.c +++ b/src/audio/ambience.c @@ -23,7 +23,7 @@ AmbientSoundSettings DefaultAmbientSoundData = { .unkC = -1 }; -extern AmbientSoundSettings AmbientSoundData; +SHIFT_BSS AmbientSoundSettings AmbientSoundData; void reset_ambient_sounds(void) { AmbientSoundData = DefaultAmbientSoundData; diff --git a/src/audio/e0b30_len_b80.c b/src/audio/e0b30_len_b80.c index 6f9a8b1219..576f08d0a4 100644 --- a/src/audio/e0b30_len_b80.c +++ b/src/audio/e0b30_len_b80.c @@ -5,10 +5,11 @@ void bgm_update_volume(void); void bgm_set_target_volume(s16 volume); // these are BSS -extern s16 MusicDefaultVolume; -extern s16 MusicMaxVolume; -extern s16 MusicCurrentVolume; -extern s16 MusicTargetVolume; +SHIFT_BSS s16 MusicDefaultVolume; +SHIFT_BSS s16 MusicMaxVolume; +SHIFT_BSS s16 MusicCurrentVolume; +SHIFT_BSS s16 MusicTargetVolume; +SHIFT_BSS MusicSettings gMusicSettings[2]; MusicSettings BlankMusicSettings = { .flags = 0, @@ -62,7 +63,7 @@ s32 bgm_get_map_default_variation(s32 songID) { void bgm_reset_sequence_players(void) { s32 i; - for (i = 0; i < 2; i++) { + for (i = 0; i < ARRAY_COUNT(gMusicSettings); i++) { gMusicSettings[i] = BlankMusicSettings; } @@ -79,7 +80,7 @@ void bgm_reset_volume(void) { //TODO refactor out constants void bgm_update_music_settings(void) { - MusicSettings* music = gMusicSettings; + MusicSettings* music = &gMusicSettings[0]; s32 i = 0; s16 state2 = 2; s16 flag4 = MUSIC_SETTINGS_FLAG_4; diff --git a/src/audio/sfx.c b/src/audio/sfx.c index ddb1823632..c341f1fe72 100644 --- a/src/audio/sfx.c +++ b/src/audio/sfx.c @@ -3,6 +3,9 @@ #define MAX_SOUND_INSTANCES 10 +SHIFT_BSS u16 gCurrentDoorSounds; +SHIFT_BSS u16 gCurrentRoomDoorSounds; + // sound IDs s32 LoopingSounds[] = { SOUND_287, SOUND_2A8, SOUND_54, SOUND_56, SOUND_24, SOUND_27, SOUND_21, SOUND_22, SOUND_349, @@ -205,10 +208,10 @@ s32 OpenCloseSounds[][2] = { { SOUND_20A3, SOUND_20A4 }, }; -extern SoundInstance wEnvSounds[MAX_SOUND_INSTANCES]; -extern SoundInstance bEnvSounds[MAX_SOUND_INSTANCES]; -extern SoundInstance* gCurrentEnvSounds; -extern s32 SfxReverbMode; +SHIFT_BSS SoundInstance wEnvSounds[MAX_SOUND_INSTANCES]; +SHIFT_BSS SoundInstance bEnvSounds[MAX_SOUND_INSTANCES]; +SHIFT_BSS SoundInstance* gCurrentEnvSounds; +SHIFT_BSS s32 SfxReverbMode; void sfx_compute_spatialized_sound_params_full(f32 x, f32 y, f32 z, s16* volume, s16* pan, s32 flags) { s32 screenX, screenY, screenZ; diff --git a/src/audio/sfx_player.c b/src/audio/sfx_player.c index 8caa13a053..da3f5fa05e 100644 --- a/src/audio/sfx_player.c +++ b/src/audio/sfx_player.c @@ -418,8 +418,8 @@ f32 AlTuneScaling[] = { extern s32* AU_FX_CUSTOM_PARAMS[0]; // points to 80078290 -extern void (*CurrentSeqCmdHandler)(BGMPlayer*, BGMPlayerTrack*); -extern void (*CurrentSefCmdHandler)(SoundManager*, SoundPlayer*); +SHIFT_BSS void (*CurrentSeqCmdHandler)(BGMPlayer*, BGMPlayerTrack*); +SHIFT_BSS void (*CurrentSefCmdHandler)(SoundManager*, SoundPlayer*); void au_sfx_init(SoundManager* manager, u8 priority, u8 busId, AuGlobals* globals, u8 minVoiceIdx) { u32 i; diff --git a/src/background.c b/src/background.c index 434c0b4455..417315ee2e 100644 --- a/src/background.c +++ b/src/background.c @@ -8,9 +8,8 @@ s8 gBackroundWaveEnabled = FALSE; s16 gBackroundTextureYOffset = 0; f32 gBackroundWavePhase = 0.0f; -// BSS -extern PAL_BIN gBackgroundPalette[256]; -extern f32 gBackroundLastScrollValue; +SHIFT_BSS PAL_BIN gBackgroundPalette[256]; +SHIFT_BSS f32 gBackroundLastScrollValue; void load_map_bg(char* optAssetName) { if (optAssetName != NULL) { diff --git a/src/battle/battle.c b/src/battle/battle.c index 2fff596f41..35f0cb4459 100644 --- a/src/battle/battle.c +++ b/src/battle/battle.c @@ -5,8 +5,22 @@ #include "hud_element.h" #include "sprite.h" -extern s32 D_800DC060; -extern StageListRow* gCurrentStagePtr; +SHIFT_BSS s32 D_800DC060; +SHIFT_BSS StageListRow* gCurrentStagePtr; +SHIFT_BSS s32 gBattleState; +SHIFT_BSS BattleStatus gBattleStatus; +SHIFT_BSS s32 gLastDrawBattleState; +SHIFT_BSS s32 D_800DC4D4; +SHIFT_BSS s32 gDefeatedBattleSubstate; +SHIFT_BSS s32 gBattleSubState; +SHIFT_BSS s32 D_800DC4E0; +SHIFT_BSS s32 gDefeatedBattleState; +SHIFT_BSS s32 gCurrentBattleID; +SHIFT_BSS s32 gCurrentStageID; +SHIFT_BSS s32 D_800DC4F0; +SHIFT_BSS Battle* gOverrideBattlePtr; +SHIFT_BSS s32 D_800DC4F8; +SHIFT_BSS Battle* gCurrentBattlePtr; // standard battle area table entry #define BTL_AREA(id, jpName) { \ diff --git a/src/cd180_len_38f0.c b/src/cd180_len_38f0.c index f64f54b1dc..0896b40ea2 100644 --- a/src/cd180_len_38f0.c +++ b/src/cd180_len_38f0.c @@ -1,13 +1,12 @@ #include "common.h" #include "overlay.h" -// BSS -extern s32 screen_overlay_frontType; -extern f32 screen_overlay_frontZoom; -extern s32 screen_overlay_backType; -extern f32 screen_overlay_backZoom; -extern s32 D_80156910; -extern ScreenOverlay ScreenOverlays[2]; +SHIFT_BSS s32 screen_overlay_frontType; +SHIFT_BSS f32 screen_overlay_frontZoom; +SHIFT_BSS s32 screen_overlay_backType; +SHIFT_BSS f32 screen_overlay_backZoom; +SHIFT_BSS s32 D_80156910; +SHIFT_BSS ScreenOverlay ScreenOverlays[2]; ScreenTransition CurrentScreenTransition = TRANSITION_END_DEMO_SCENE_BLACK; diff --git a/src/collision.c b/src/collision.c index 1a6c95c7f6..05186cc83f 100644 --- a/src/collision.c +++ b/src/collision.c @@ -32,23 +32,26 @@ typedef struct HitAssetCollider { /* 0x08 */ s32 trianglesOffset; } HitAssetCollider; // size = 0x0C +SHIFT_BSS CollisionData gCollisionData; +SHIFT_BSS CollisionData gZoneCollisionData; +SHIFT_BSS f32 gCollisionRayStartX; +SHIFT_BSS f32 gCollisionRayStartY; +SHIFT_BSS f32 gCollisionRayStartZ; +SHIFT_BSS f32 gCollisionRayDirX; +SHIFT_BSS f32 gCollisionRayDirY; +SHIFT_BSS f32 gCollisionRayDirZ; +SHIFT_BSS f32 gCollisionPointX; +SHIFT_BSS f32 gCollisionPointY; +SHIFT_BSS f32 gCollisionPointZ; +SHIFT_BSS f32 gCollisionRayLength; +SHIFT_BSS f32 gCollisionNormalX; +SHIFT_BSS f32 gCollisionNormalY; +SHIFT_BSS f32 gCollisionNormalZ; +SHIFT_BSS ColliderBackupEntry* gCollisionDataBackup; +SHIFT_BSS ColliderBackupEntry* gCollisionDataZoneBackup; + extern Vec3s gEntityColliderFaces[]; extern Vec3f gEntityColliderNormals[]; -extern f32 gCollisionRayStartX; -extern f32 gCollisionRayStartY; -extern f32 gCollisionRayStartZ; -extern f32 gCollisionRayDirX; -extern f32 gCollisionRayDirY; -extern f32 gCollisionRayDirZ; -extern f32 gCollisionPointX; -extern f32 gCollisionPointY; -extern f32 gCollisionPointZ; -extern f32 gCollisionRayLength; -extern f32 gCollisionNormalX; -extern f32 gCollisionNormalY; -extern f32 gCollisionNormalZ; -extern ColliderBackupEntry* gCollisionDataBackup; -extern ColliderBackupEntry* gCollisionDataZoneBackup; s32 collision_heap_create(void); void* collision_heap_malloc(s32 size); diff --git a/src/crash_screen.c b/src/crash_screen.c index 54ef052b7b..5b0c9bf8cb 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -14,7 +14,7 @@ typedef struct { /* 0x9D2 */ u16 height; } CrashScreen; // size = 0x9D4 -extern CrashScreen gCrashScreen; // bss, externed for now until issues are figured out +SHIFT_BSS CrashScreen gCrashScreen; u8 gCrashScreencharToGlyph[128] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, diff --git a/src/curtains.c b/src/curtains.c index 308922d7f5..4c9ba196c8 100644 --- a/src/curtains.c +++ b/src/curtains.c @@ -200,8 +200,12 @@ Gfx NoControllerGfx[] = { gsSPEndDisplayList(), }; -// BSS -extern Mtx D_8009BAA8[]; +SHIFT_BSS Mtx D_8009BAA8[2]; +SHIFT_BSS f32 gCurtainScale; +SHIFT_BSS f32 gCurtainScaleGoal; +SHIFT_BSS f32 gCurtainFade; +SHIFT_BSS f32 gCurtainFadeGoal; +SHIFT_BSS UNK_FUN_PTR(gCurtainDrawCallback); void initialize_curtains(void) { gCurtainDrawCallback = NULL; diff --git a/src/draw_box.c b/src/draw_box.c index f3c6c9e35e..2a21c40266 100644 --- a/src/draw_box.c +++ b/src/draw_box.c @@ -12,7 +12,7 @@ typedef struct DefaultWindowStyle { } DefaultWindowStyle; // size = 0x0B #define BOX_QUAD_BUFFER_NUM 21 -extern Vtx gBoxQuadBuffer[BOX_QUAD_BUFFER_NUM][16]; +SHIFT_BSS Vtx gBoxQuadBuffer[BOX_QUAD_BUFFER_NUM][16]; DefaultWindowStyle gBoxDefaultStyles[] = { { @@ -329,9 +329,15 @@ Mtx gBoxMatrix = RDP_MATRIX( 0.000000, 0.000000, 0.000000, 0.000000 ); +// @bug there's an issue with the way the "quads" temp below is used, sometimes going out of bounds. +// In vanilla, this results in some data being written to an unused struct field inside gPartnerStatus, which doesn't +// cause any issues. In shiftable builds, there's no telling where quads might be, so we make some adjustments to +// prevent the overflow s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s32 width, s32 height, u8 opacity, - u8 darkening, f32 scaleX, f32 scaleY, f32 rotX, f32 rotY, f32 rotZ, void (*fpDrawContents)(s32, s32, s32, s32, s32, s32, s32), - void* drawContentsArg0, Matrix4f rotScaleMtx, s32 translateX, s32 translateY, Matrix4f outMtx) { + u8 darkening, f32 scaleX, f32 scaleY, f32 rotX, f32 rotY, f32 rotZ, + void (*fpDrawContents)(s32, s32, s32, s32, s32, s32, s32), void* drawContentsArg0, Matrix4f rotScaleMtx, + s32 translateX, s32 translateY, Matrix4f outMtx) +{ Matrix4f mtx1, mtx2, mtx3; u8 primR, primG, primB, primA, envR, envG, envB, envA; DefaultWindowStyle* defaultStyle = NULL; @@ -622,7 +628,9 @@ s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s quads[7].v.tc[0] = width * 32; quads[7].v.tc[1] = (height / 2) * 32; +#ifndef SHIFT quads += 4; +#endif break; case 2: quads[8].v.ob[0] = -width / 2; @@ -653,7 +661,9 @@ s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s quads[11].v.tc[0] = (width / 2) * 32; quads[11].v.tc[1] = height * 32; +#ifndef SHIFT quads += 8; +#endif break; case 3: quads[12].v.ob[0] = 0; @@ -684,10 +694,16 @@ s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s quads[15].v.tc[0] = width * 32; quads[15].v.tc[1] = height * 32; +#ifndef SHIFT quads += 12; +#endif break; } +#ifdef SHIFT + gSPVertex(gMainGfxPos++, &quads[idx*4], 4, 0); +#else gSPVertex(gMainGfxPos++, quads, 4, 0); +#endif gSP2Triangles(gMainGfxPos++, 0, 3, 1, 0, 0, 2, 3, 0); } else { switch (idx) { diff --git a/src/effects.c b/src/effects.c index 5f0c8ff4c8..6a51d9f5c4 100644 --- a/src/effects.c +++ b/src/effects.c @@ -5,8 +5,8 @@ typedef s32 TlbEntry[0x1000 / 4]; typedef TlbEntry TlbMappablePage[15]; -extern EffectGraphics gEffectGraphicsData[15]; -extern EffectInstance* gEffectInstances[96]; +SHIFT_BSS EffectGraphics gEffectGraphicsData[15]; +SHIFT_BSS EffectInstance* gEffectInstances[96]; extern TlbMappablePage D_80197000; extern Addr D_801A6000; @@ -183,7 +183,7 @@ void clear_effect_data(void) { } for (i = 0; i < ARRAY_COUNT(gEffectInstances); i++) { - gEffectInstances[i] = 0; + gEffectInstances[i] = NULL; } osUnmapTLBAll(); diff --git a/src/encounter.c b/src/encounter.c index 0d650bd5bc..92c126db63 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -168,16 +168,21 @@ EvtScript EnemyNpcDefeat = { EVT_END }; -extern s8 D_8009A63C; -extern s8 D_8009A654; -extern s16 gFirstStrikeMessagePos; -extern s8 D_8009A670; -extern s32 D_800A0BA0; -extern f32 D_800A0BA4; -extern Evt* D_800A0BB0; -extern s32 D_800A0BB4; -extern EffectInstance* WorldMerleeOrbEffect; -extern EffectInstance* WorldMerleeWaveEffect; +SHIFT_BSS s32 gEncounterState; +SHIFT_BSS s32 gEncounterSubState; +SHIFT_BSS EncounterStatus gCurrentEncounter; +SHIFT_BSS s8 D_8009A63C; +SHIFT_BSS s8 D_8009A654; +SHIFT_BSS s16 gFirstStrikeMessagePos; +SHIFT_BSS s8 D_8009A670; +SHIFT_BSS s32 D_8009A678; +SHIFT_BSS s32 D_800A0BA0; +SHIFT_BSS f32 D_800A0BA4; +SHIFT_BSS Evt* D_800A0BB0; +SHIFT_BSS s32 D_800A0BB4; +SHIFT_BSS s16 D_800A0BB8; +SHIFT_BSS EffectInstance* WorldMerleeOrbEffect; +SHIFT_BSS EffectInstance* WorldMerleeWaveEffect; void set_battle_formation(Battle*); void func_800E97E4(void); diff --git a/src/entity.c b/src/entity.c index 1cbf005d7d..823cf13e23 100644 --- a/src/entity.c +++ b/src/entity.c @@ -29,25 +29,36 @@ extern Addr WorldEntityHeapBase; s32 D_8014AFB0 = 255; -// BSS -extern s32 D_801516FC; -extern s32 D_801512BC; -extern s32 D_80151304; -extern s32 D_80151344; -extern s32 entity_numEntities; -extern s32 gEntityHeapBase; -extern s32 gLastCreatedEntityIndex; +SHIFT_BSS s32 CreateEntityVarArgBuffer[4]; +SHIFT_BSS HiddenPanelsData gCurrentHiddenPanels; +SHIFT_BSS s32 gEntityHideMode; -extern s32 gEntityHeapBottom; -extern s32 entity_numShadows; -extern s32 isAreaSpecificEntityDataLoaded; -extern s32 entity_updateCounter; +SHIFT_BSS s32 D_801516FC; +SHIFT_BSS s32 D_801512BC; +SHIFT_BSS s32 D_80151304; +SHIFT_BSS s32 D_80151344; +SHIFT_BSS s32 entity_numEntities; +SHIFT_BSS s32 gEntityHeapBase; +SHIFT_BSS s32 gLastCreatedEntityIndex; -extern s32 wEntityDataLoadedSize; -extern s32 bEntityDataLoadedSize; +SHIFT_BSS s32 gEntityHeapBottom; +SHIFT_BSS s32 entity_numShadows; +SHIFT_BSS s32 isAreaSpecificEntityDataLoaded; +SHIFT_BSS s32 entity_updateCounter; -extern EntityBlueprint* wEntityBlueprint[30]; -extern EntityBlueprint* bEntityBlueprint[4]; +SHIFT_BSS s32 wEntityDataLoadedSize; +SHIFT_BSS s32 bEntityDataLoadedSize; + +SHIFT_BSS EntityBlueprint* wEntityBlueprint[30]; +SHIFT_BSS EntityBlueprint* bEntityBlueprint[4]; + +SHIFT_BSS EntityList gWorldEntityList; +SHIFT_BSS EntityList gBattleEntityList; +SHIFT_BSS EntityList* gCurrentEntityListPtr; + +SHIFT_BSS ShadowList gWorldShadowList; +SHIFT_BSS ShadowList gBattleShadowList; +SHIFT_BSS ShadowList* gCurrentShadowListPtr; extern Addr BattleEntityHeapBottom; // todo ??? @@ -799,7 +810,7 @@ void clear_entity_data(s32 arg0) { } } else { bEntityDataLoadedSize = 0; - for (i = 0; i < 4; i++) { + for (i = 0; i < ARRAY_COUNT(bEntityBlueprint); i++) { bEntityBlueprint[i] = NULL; } } @@ -832,7 +843,7 @@ void init_entity_data(void) { } else { s32 i; - for (i = 0; i < 4; i++) { + for (i = 0; i < ARRAY_COUNT(bEntityBlueprint); i++) { bEntityBlueprint[i] = 0; } gEntityHeapBottom = (s32) BattleEntityHeapBottom; diff --git a/src/entity/ItemBlock.c b/src/entity/ItemBlock.c index 2e542a3020..146d94bcbd 100644 --- a/src/entity/ItemBlock.c +++ b/src/entity/ItemBlock.c @@ -15,6 +15,8 @@ extern StaticAnimatorNode* Entity_HitFloatingYellowBlock_Mesh[]; extern AnimScript Entity_HitRedBlock_AnimationHit; extern StaticAnimatorNode* Entity_HitRedBlock_Mesh[]; +extern s32 D_802EA310[]; + extern EntityBlueprint Entity_HitGroundedYellowBlock; extern EntityBlueprint Entity_HitFloatingYellowBlock; extern EntityBlueprint Entity_HitRedBlock; diff --git a/src/entity/WoodenCrate.c b/src/entity/WoodenCrate.c index fe1aee21b9..2846d1d61f 100644 --- a/src/entity/WoodenCrate.c +++ b/src/entity/WoodenCrate.c @@ -7,6 +7,7 @@ extern Gfx Entity_RenderNone[]; extern Gfx Entity_WoodenCrate_Render[]; extern Gfx* Entity_WoodenCrate_FragmentsRender[]; extern Mtx Entity_WoodenCrate_FragmentsMatrices[]; +extern s32 Entity_WoodenCrate_RenderShatteredScript[]; void entity_WoodenCrate_setupGfx(s32); diff --git a/src/entity_model.c b/src/entity_model.c index e6bdb33205..08509a28dd 100644 --- a/src/entity_model.c +++ b/src/entity_model.c @@ -7,19 +7,19 @@ EntityModelScript D_8014C260 = { }; Lights1 D_8014C268 = gdSPDefLights1(255, 255, 255, 0, 0, 0, 0, 0, 0); -extern EntityModelList gWorldEntityModelList; -extern EntityModelList gBattleEntityModelList; -extern EntityModelList* gCurrentEntityModelList; -extern s32 gEntityModelCount; +SHIFT_BSS EntityModelList gWorldEntityModelList; +SHIFT_BSS EntityModelList gBattleEntityModelList; +SHIFT_BSS EntityModelList* gCurrentEntityModelList; +SHIFT_BSS s32 gEntityModelCount; -extern s32 D_80154374; -extern s32 entity_fog_enabled; -extern s32 entity_fog_red; -extern s32 entity_fog_green; -extern s32 entity_fog_blue; -extern s32 entity_fog_alpha; -extern s32 entity_fog_dist_min; -extern s32 entity_fog_dist_max; +SHIFT_BSS s32 D_80154374; +SHIFT_BSS s32 entity_fog_enabled; +SHIFT_BSS s32 entity_fog_red; +SHIFT_BSS s32 entity_fog_green; +SHIFT_BSS s32 entity_fog_blue; +SHIFT_BSS s32 entity_fog_alpha; +SHIFT_BSS s32 entity_fog_dist_min; +SHIFT_BSS s32 entity_fog_dist_max; extern Gfx D_8014B7F8[]; extern Gfx D_8014B820[]; diff --git a/src/evt/map_api.c b/src/evt/map_api.c index 8eb3f10af4..4d051af6e1 100644 --- a/src/evt/map_api.c +++ b/src/evt/map_api.c @@ -4,6 +4,7 @@ extern LavaReset* gLavaResetList; extern s32 LastSafeFloor; +extern ModelTreeInfoList* mdl_currentModelTreeNodeInfo; ApiStatus TranslateModel(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; diff --git a/src/evt/player_api.c b/src/evt/player_api.c index 6506e62d49..9ca438ada0 100644 --- a/src/evt/player_api.c +++ b/src/evt/player_api.c @@ -4,6 +4,9 @@ #include "world/partners.h" #include "sprite/player.h" +SHIFT_BSS PlayerStatus gPlayerStatus; +SHIFT_BSS PlayerData gPlayerData; + extern Npc playerNpcData; extern u16 PlayerImgFXFlags; extern s32 D_802DB5B4[3]; // unused diff --git a/src/fio.c b/src/fio.c index 152cadecc2..93769103d6 100644 --- a/src/fio.c +++ b/src/fio.c @@ -2,10 +2,12 @@ #include "PR/os_flash.h" #include "gcc/string.h" -extern SaveData D_8009A6B0; -extern s32 logicalSaveInfo[4][2]; -extern s32 physicalSaveInfo[6][2]; -extern s32 nextAvailableSavePage; +SHIFT_BSS SaveData D_8009A6B0; +SHIFT_BSS s32 logicalSaveInfo[4][2]; +SHIFT_BSS s32 physicalSaveInfo[6][2]; +SHIFT_BSS s32 nextAvailableSavePage; +SHIFT_BSS SaveDataHeader D_800D95E8; +SHIFT_BSS SaveData gCurrentSaveFile; char magicSaveString[] = "Mario Story 006"; diff --git a/src/game_modes.c b/src/game_modes.c index 00fff887aa..393c793dce 100644 --- a/src/game_modes.c +++ b/src/game_modes.c @@ -92,8 +92,7 @@ GameMode* gameModeMap[] = { NULL, }; -// BSS -extern s16 gameMode; +SHIFT_BSS s16 gameMode; GameMode* set_game_mode_slot(s32 i, GameMode* mode); diff --git a/src/game_states.c b/src/game_states.c index 77f279b994..23169cb537 100644 --- a/src/game_states.c +++ b/src/game_states.c @@ -1,6 +1,6 @@ #include "common.h" -extern GameMode gMainGameState[2]; // TODO rename +SHIFT_BSS GameMode gMainGameState[2]; // TODO rename void state_delegate_NOP(void) { } diff --git a/src/hud_element.c b/src/hud_element.c index 5730d73375..5cef49cd85 100644 --- a/src/hud_element.c +++ b/src/hud_element.c @@ -105,23 +105,23 @@ Vtx D_8014F0C8[] = { Lights1 D_8014F108 = gdSPDefLights1(255, 255, 255, 0, 0, 0, 0, 0, 0); -extern s32 gHudElementsNumber; -extern s32 D_80159180; -extern HudElementList* gHudElements; -extern HudElementList gHudElementsWorld; -extern HudElementList gHudElementsBattle; -extern s32* gHudElementCacheSize; -extern s32 gHudElementCacheSizeWorld; -extern s32 gHudElementCacheSizeBattle; -extern HudCacheEntry* gHudElementCacheTableRaster; -extern HudCacheEntry* gHudElementCacheTablePalette; -extern HudCacheEntry gHudElementCacheTableRasterWorld[]; -extern HudCacheEntry gHudElementCacheTablePaletteWorld[]; -extern HudCacheEntry gHudElementCacheTableRasterBattle[]; -extern HudCacheEntry gHudElementCacheTablePaletteBattle[]; -extern u8* gHudElementCacheBufferWorld; -extern u8* gHudElementCacheBufferBattle; -extern u8* gHudElementCacheBuffer; +SHIFT_BSS s32 gHudElementsNumber; +SHIFT_BSS s32 D_80159180; +SHIFT_BSS HudElementList* gHudElements; +SHIFT_BSS HudElementList gHudElementsWorld; +SHIFT_BSS HudElementList gHudElementsBattle; +SHIFT_BSS s32* gHudElementCacheSize; +SHIFT_BSS s32 gHudElementCacheSizeWorld; +SHIFT_BSS s32 gHudElementCacheSizeBattle; +SHIFT_BSS HudCacheEntry* gHudElementCacheTableRaster; +SHIFT_BSS HudCacheEntry* gHudElementCacheTablePalette; +SHIFT_BSS HudCacheEntry gHudElementCacheTableRasterWorld[192]; +SHIFT_BSS HudCacheEntry gHudElementCacheTablePaletteWorld[192]; +SHIFT_BSS HudCacheEntry gHudElementCacheTableRasterBattle[192]; +SHIFT_BSS HudCacheEntry gHudElementCacheTablePaletteBattle[192]; +SHIFT_BSS u8* gHudElementCacheBufferWorld; +SHIFT_BSS u8* gHudElementCacheBufferBattle; +SHIFT_BSS u8* gHudElementCacheBuffer; void func_801413F8(void); diff --git a/src/hud_element.h b/src/hud_element.h index f149adbb1d..cd1d85fd0d 100644 --- a/src/hud_element.h +++ b/src/hud_element.h @@ -113,7 +113,7 @@ enum { typedef struct HudCacheEntry { /* 0x00 */ s32 id; /* 0x04 */ u8* data; -} HudCacheEntry; // size = 0x08; +} HudCacheEntry; // size = 0x8; typedef struct PopupMenu { /* 0x000 */ HudScript* ptrIcon[32]; diff --git a/src/imgfx.c b/src/imgfx.c index dfd553b091..e3426c62fc 100644 --- a/src/imgfx.c +++ b/src/imgfx.c @@ -113,16 +113,16 @@ typedef ImgFXState ImgFXInstanceList[MAX_IMGFX_INSTANCES]; extern HeapNode heap_spriteHead; -// BSS -extern ImgFXWorkingTexture ImgFXCurrentTexture; -extern Vtx* ImgFXVtxBuffers[2]; -extern Vtx* imgfx_vtxBuf; -extern ImgFXInstanceList* ImgFXInstances; -extern s8 D_80156958[2]; -extern s32 D_80156960[2]; -extern s32 D_80156968[2]; -extern s8 D_80156970; -extern ImgFXAnimHeader ImgFXAnimHeaders[4]; +SHIFT_BSS ImgFXWorkingTexture ImgFXCurrentTexture; +SHIFT_BSS Vtx* ImgFXVtxBuffers[2]; +SHIFT_BSS Vtx* imgfx_vtxBuf; +SHIFT_BSS ImgFXInstanceList* ImgFXInstances; +SHIFT_BSS s8 D_80156958[2]; +SHIFT_BSS s32 D_80156960[2]; +SHIFT_BSS s32 D_80156968[2]; +SHIFT_BSS s8 D_80156970; +SHIFT_BSS ImgFXAnimHeader ImgFXAnimHeaders[MAX_IMGFX_INSTANCES]; +SHIFT_BSS ImgFXCacheEntry ImgFXDataCache[8]; // Data ImgFXWorkingTexture* ImgFXCurrentTexturePtr = &ImgFXCurrentTexture; @@ -223,8 +223,6 @@ u8* ImgFXAnimOffsets[] = { [IMGFX_ANIM_CYMBAL_CRUSH] cymbal_crush_header, }; -extern ImgFXCacheEntry ImgFXDataCache[8]; - void imgfx_cache_instance_data(ImgFXState* state); void imgfx_clear_instance_data(ImgFXState* state); void imgfx_init_instance(ImgFXState* state); diff --git a/src/input.c b/src/input.c index 811a536492..aaee101fce 100644 --- a/src/input.c +++ b/src/input.c @@ -1,7 +1,11 @@ #include "common.h" #include "nu/nusys.h" -extern OSContPad D_8009A5B8; +SHIFT_BSS OSContPad D_8009A5B8; +SHIFT_BSS s16 D_8009A6A0; +SHIFT_BSS s16 D_8009A6A2; +SHIFT_BSS s16 D_8009A6A4; +SHIFT_BSS s16 D_8009A6A6; void func_800287F0(void) { gGameStatusPtr->currentButtons[0] = 0; diff --git a/src/main.c b/src/main.c index e1120cd957..57ae0eb519 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,98 @@ #include "common.h" #include "nu/nusys.h" +// +// Start of libultra BSS +// + +#include "PR/controller.h" +#include "PR/osint.h" +SHIFT_BSS OSPifRam __osEepPifRam; +SHIFT_BSS OSPifRam __osPfsPifRam; +SHIFT_BSS __OSEventState __osEventStateTab[OS_NUM_EVENTS]; +SHIFT_BSS u32 __osFinalrom; +SHIFT_BSS __OSInode __osPfsInodeCache; +SHIFT_BSS OSPifRam __MotorDataBuf[MAXCONTROLLERS]; +SHIFT_BSS u16 retrace; +SHIFT_BSS OSThread viThread; +SHIFT_BSS unsigned char viThreadStack[OS_VIM_STACKSIZE] ALIGNED(16); +SHIFT_BSS char piThreadStack[OS_PIM_STACKSIZE] ALIGNED(16); +SHIFT_BSS OSMesgQueue viEventQueue; +SHIFT_BSS OSMesg viEventBuf[5] ALIGNED(8); +SHIFT_BSS OSIoMesg viRetraceMsg ALIGNED(8); +SHIFT_BSS OSIoMesg viCounterMsg ALIGNED(8); +SHIFT_BSS OSTask tmp_task; +SHIFT_BSS OSMesg piAccessBuf[1] ALIGNED(16); +SHIFT_BSS OSMesgQueue __osPiAccessQueue; +SHIFT_BSS OSThread piThread; +SHIFT_BSS OSMesgQueue piEventQueue; +SHIFT_BSS OSMesg piEventBuf[1]; +SHIFT_BSS OSContStatus nuContStatus[5]; // ??? enough space for 5, but it makes no sense +SHIFT_BSS OSMesgQueue nuSiMesgQ; +SHIFT_BSS u32 nuContDataLockKey; +SHIFT_BSS OSMesg nuContWaitMesgBuf; +SHIFT_BSS OSMesg nuContDataMutexBuf; +SHIFT_BSS OSMesgQueue nuContDataMutexQ ALIGNED(16); +SHIFT_BSS OSMesgQueue nuContWaitMesgQ; +SHIFT_BSS OSContPad nuContData[4]; +SHIFT_BSS u32 nuContNum; +SHIFT_BSS volatile u32 nuGfxTaskSpool; +SHIFT_BSS OSMesgQueue nuGfxMesgQ; +SHIFT_BSS char GfxStack[NU_GFX_STACK_SIZE] ALIGNED(16); +SHIFT_BSS OSThread D_800B1B90; +SHIFT_BSS OSMesg nuGfxMesgBuf[NU_GFX_MESGS]; +SHIFT_BSS OSPiHandle* nuPiCartHandle; +SHIFT_BSS NUContRmbCtl nuContRmbCtl[4]; +SHIFT_BSS OSPfs nuContPfs[4]; +SHIFT_BSS NUUcode* nuGfxUcode; +SHIFT_BSS OSMesgQueue D_800AC5D0; +SHIFT_BSS OSMesg D_800AC5E8[NU_PI_MESG_NUM]; +SHIFT_BSS u32 nuGfxDisplay; +SHIFT_BSS u32 nuGfxCfbCounter; +SHIFT_BSS NUSched nusched; +SHIFT_BSS u8 nuScPreNMIFlag; +SHIFT_BSS u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u64 nuScAudioStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u64 nuScGraphicsStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS NUIdleFunc nuIdleFunc; +SHIFT_BSS OSMesgQueue nuSiMgrMesgQ; +SHIFT_BSS OSMesg nuSiMesgBuf[8]; +SHIFT_BSS OSThread siMgrThread; +SHIFT_BSS u64 siMgrStack[NU_SI_STACK_SIZE/sizeof(u64)]; +SHIFT_BSS OSMesg D_8009E6D0[NU_GFX_TASKMGR_MESGS]; +SHIFT_BSS OSMesgQueue D_800DAC90; +SHIFT_BSS NUScTask* nuGfxTask_ptr; +SHIFT_BSS s16 taskDoneMsg; +SHIFT_BSS s16 swapBufMsg; +SHIFT_BSS OSThread GfxTaskMgrThread; +SHIFT_BSS NUScTask nuGfxTask[NU_GFX_TASK_NUM]; +SHIFT_BSS u64 D_800DA040[0x400 / sizeof(u64)]; +SHIFT_BSS s32 D_800B91D0[NU_GFX_RDP_OUTPUTBUFF_SIZE / sizeof(u32)]; +SHIFT_BSS u64 GfxTaskMgrStack[NU_GFX_TASKMGR_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u8 nuYieldBuf[0xC10] ALIGNED(16); +SHIFT_BSS OSMesg siAccessBuf[1] ALIGNED(8); +SHIFT_BSS OSMesgQueue __osSiAccessQueue; +SHIFT_BSS OSThread __osThreadSave; + +// boot.s +SHIFT_BSS u8 nuBootStack[0x2000] ALIGNED(8); + +//osFlash.c (IDO) +SHIFT_BSS u32 __osFlashID[4]; +SHIFT_BSS OSIoMesg __osFlashMsg; +SHIFT_BSS OSMesgQueue __osFlashMessageQ; +SHIFT_BSS OSPiHandle __osFlashHandler; +SHIFT_BSS OSMesg __osFlashMsgBuf; +SHIFT_BSS s32 __osFlashVersion; + +// +// End of libultra BSS +// + +// used in effects/gfx/flame.c +SHIFT_BSS unsigned char D_800B32E0[0x800] ALIGNED(16); +SHIFT_BSS unsigned char D_800B3AE0[0x800] ALIGNED(16); + s16 D_80074010 = 8; // might be an array, could be size 1-8 void gfxRetrace_Callback(s32); @@ -18,13 +110,15 @@ extern u16* D_80073E04; extern s16 D_80073E08; extern s16 D_80073E0A; extern s32 D_80073E10[]; -extern u16* D_8009A680; #ifdef SHIFT #define shim_create_audio_system_obfuscated create_audio_system #define shim_load_engine_data_obfuscated load_engine_data #endif +SHIFT_BSS u16* D_8009A680; +SHIFT_BSS u16* nuGfxZBuffer; + void boot_main(void* data) { #if VERSION_JP if (osTvType == OS_TV_NTSC) { diff --git a/src/main_loop.c b/src/main_loop.c index 616ee78ba4..e856db4784 100644 --- a/src/main_loop.c +++ b/src/main_loop.c @@ -5,6 +5,12 @@ #include "sprite.h" #include "overlay.h" +SHIFT_BSS s32 gOverrideFlags; +SHIFT_BSS s32 timeFreezeMode; +SHIFT_BSS u16** nuGfxCfb; +SHIFT_BSS s16 D_8009A690; +SHIFT_BSS DisplayContext D_80164000[2]; + s8 gGameStepDelayAmount = 1; s8 gGameStepDelayCount = 5; @@ -38,8 +44,6 @@ s32 gCurrentDisplayContextIndex = 0; s32 gPauseBackgroundFade = 0; s32 D_800741FC = 0; -extern s16 D_8009A690; - void gfx_init_state(void); void gfx_draw_background(void); diff --git a/src/model.c b/src/model.c index 565a40d7b3..7b050b1a84 100644 --- a/src/model.c +++ b/src/model.c @@ -8,6 +8,11 @@ #define MAP_TEXTURE_MEMORY_SIZE 0x20000 #define BTL_TEXTURE_MEMORY_SIZE 0x8000 + +SHIFT_BSS u8* gBackgroundFogModePtr; +SHIFT_BSS ModelList* gCurrentModels; +SHIFT_BSS ModelTreeInfoList* mdl_currentModelTreeNodeInfo; + extern Addr MapTextureMemory; typedef struct Fog { @@ -1076,68 +1081,59 @@ s32 mdl_renderTaskBasePriorities[RENDER_MODE_COUNT] = { b8 D_8014C248 = FALSE; -// BSS -extern ModelCustomGfxBuilderList* gCurrentCustomModelGfxBuildersPtr; -extern s32 D_801512BC; -extern s32 D_80151304; -extern s32 D_80151344; -extern s32 entity_numEntities; -extern s32 gEntityHeapBase; -extern HudCacheEntry* gHudElementCacheTableRaster; -extern HudCacheEntry* gHudElementCacheTablePalette; -extern ModelNode** gCurrentModelTreeRoot; -extern ModelTransformGroupList* gCurrentTransformGroups; -extern ModelCustomGfxList* gCurrentCustomModelGfxPtr; +SHIFT_BSS ModelCustomGfxBuilderList* gCurrentCustomModelGfxBuildersPtr; +SHIFT_BSS ModelNode** gCurrentModelTreeRoot; +SHIFT_BSS ModelTransformGroupList* gCurrentTransformGroups; +SHIFT_BSS ModelCustomGfxList* gCurrentCustomModelGfxPtr; -extern TextureHeader gCurrentTextureHeader; +SHIFT_BSS TextureHeader gCurrentTextureHeader ALIGNED(16); -extern ModelList wModelList; -extern ModelList bModelList; +SHIFT_BSS ModelList wModelList; +SHIFT_BSS ModelList bModelList; -extern ModelTransformGroupList wTransformGroups; -extern ModelTransformGroupList bTransformGroups; +SHIFT_BSS ModelTransformGroupList wTransformGroups; +SHIFT_BSS ModelTransformGroupList bTransformGroups; -extern ModelCustomGfxList wCustomModelGfx; -extern ModelCustomGfxList bCustomModelGfx; +SHIFT_BSS ModelCustomGfxList wCustomModelGfx; +SHIFT_BSS ModelCustomGfxList bCustomModelGfx; -extern ModelCustomGfxBuilderList wCustomModelGfxBuilders; -extern ModelCustomGfxBuilderList bCustomModelGfxBuilders; -extern ModelLocalVertexCopyList wModelLocalVtxBuffers; -extern ModelLocalVertexCopyList bModelLocalVtxBuffers; -extern ModelLocalVertexCopyList* gCurrentModelLocalVtxBuffers; +SHIFT_BSS ModelCustomGfxBuilderList wCustomModelGfxBuilders; +SHIFT_BSS ModelCustomGfxBuilderList bCustomModelGfxBuilders; +SHIFT_BSS ModelLocalVertexCopyList wModelLocalVtxBuffers; +SHIFT_BSS ModelLocalVertexCopyList bModelLocalVtxBuffers; +SHIFT_BSS ModelLocalVertexCopyList* gCurrentModelLocalVtxBuffers; -extern ModelNode* wModelTreeRoot; -extern ModelNode* bModelTreeRoot; -extern ModelTreeInfoList D_80152220; -extern ModelTreeInfoList D_80152A20; +SHIFT_BSS ModelNode* wModelTreeRoot; +SHIFT_BSS ModelNode* bModelTreeRoot; +SHIFT_BSS ModelTreeInfoList D_80152220; +SHIFT_BSS ModelTreeInfoList D_80152A20; -extern s8 wBackgroundFogMode; -extern s8 bBackgroundFogMode; -extern s32 mdl_treeIterPos; -extern Fog wFogSettings; -extern Fog bFogSettings; -extern Fog* gCurrentFogSettings; -extern s32 texPannerMainU[MAX_TEX_PANNERS]; -extern s32 texPannerMainV[MAX_TEX_PANNERS]; -extern s32 texPannerAuxU[MAX_TEX_PANNERS]; -extern s32 texPannerAuxV[MAX_TEX_PANNERS]; -extern void* TextureHeapPos; -extern u16 mtg_IterIdx; -extern u16 D_80153226; -extern ModelNode* mtg_FoundModelNode; -extern u16 mtg_MinChild; -extern u16 mtg_MaxChild; -extern u16 mtg_SearchModelID; -extern RenderTask* mdl_renderTaskLists[3]; -extern s32 mdl_renderTaskQueueIdx; -extern s32 mdl_renderTaskCount; +SHIFT_BSS s8 wBackgroundFogMode; +SHIFT_BSS s8 bBackgroundFogMode; +SHIFT_BSS s32 mdl_treeIterPos; +SHIFT_BSS Fog wFogSettings; +SHIFT_BSS Fog bFogSettings; +SHIFT_BSS Fog* gCurrentFogSettings; +SHIFT_BSS s32 texPannerMainU[MAX_TEX_PANNERS]; +SHIFT_BSS s32 texPannerMainV[MAX_TEX_PANNERS]; +SHIFT_BSS s32 texPannerAuxU[MAX_TEX_PANNERS]; +SHIFT_BSS s32 texPannerAuxV[MAX_TEX_PANNERS]; +SHIFT_BSS void* TextureHeapPos; +SHIFT_BSS u16 mtg_IterIdx; +SHIFT_BSS ModelNode* mtg_FoundModelNode; +SHIFT_BSS u16 mtg_MinChild; +SHIFT_BSS u16 mtg_MaxChild; +SHIFT_BSS u16 mtg_SearchModelID; +SHIFT_BSS RenderTask* mdl_renderTaskLists[3]; +SHIFT_BSS s32 mdl_renderTaskQueueIdx; +SHIFT_BSS s32 mdl_renderTaskCount; -extern TextureHandle mdl_textureHandles[128]; +SHIFT_BSS TextureHandle mdl_textureHandles[128]; + +SHIFT_BSS u16 depthCopyBuffer[16]; extern Addr BattleEntityHeapBottom; // todo ??? -extern u16 depthCopyBuffer[16]; - void func_80117D00(Model* model); void appendGfx_model_group(void* model); void render_transform_group_node(ModelNode* node); @@ -2049,12 +2045,12 @@ void load_texture_variants(u32 romOffset, s32 textureID, s32 baseOffset, s32 siz auxPaletteSize = 0; auxRasterSize = 0; } - + textureID++; currentTextureID = textureID; textureHandle = &mdl_textureHandles[currentTextureID]; load_texture_impl(offset + sizeof(*header), textureHandle, header, rasterSize, paletteSize, auxRasterSize, auxPaletteSize); - + mainSize = rasterSize + paletteSize + sizeof(*header); offset += mainSize; offset += auxRasterSize + auxPaletteSize; @@ -2100,7 +2096,7 @@ void load_next_model_textures(ModelNode* model, s32 romOffset, s32 texSize) { // load all textures used by models, starting from the root void mdl_load_all_textures(ModelNode* rootModel, s32 romOffset, s32 size) { s32 baseOffset = 0; - + // textures are loaded to the upper half of the texture heap when not in the world if (gGameStatusPtr->isBattle != 0) { baseOffset = MAP_TEXTURE_MEMORY_SIZE; @@ -2286,7 +2282,7 @@ void mdl_create_model(ModelBlueprint* bp, s32 unused) { (*gCurrentModels)[modelIdx] = model = heap_malloc(sizeof(*model)); model->flags = bp->flags | MODEL_FLAG_VALID; - model->modelID = D_80153226; + model->modelID = mdl_treeIterPos; model->modelNode = bp->mdlNode; model->groupData = bp->groupData; model->matrixFreshness = 0; @@ -3250,11 +3246,11 @@ void func_8011B1D8(ModelNode* node) { // stop searching if node is a model if (node->type == SHAPE_TYPE_MODEL) { - mtg_MaxChild = D_80153226; + mtg_MaxChild = mdl_treeIterPos; return; } - // stop searching if node is a group with GROUP_TYPE_0 + // stop searching if node is a group with GROUP_TYPE_0 if (node->type == SHAPE_TYPE_GROUP) { prop = get_model_property(node, MODEL_PROP_KEY_GROUP_INFO); if (prop != NULL && prop->data.s != GROUP_TYPE_0) { @@ -4110,7 +4106,7 @@ s32 is_model_center_visible(u16 modelID, s32 depthQueryID, f32* screenX, f32* sc if (outX >= 0.0f && outY >= 0.0f && outX < 320.0f && outY < 240.0f) { gDPPipeSync(gMainGfxPos++); // Load a 4x1 pixel tile of the depth buffer - gDPLoadTextureTile(gMainGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, + gDPLoadTextureTile(gMainGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * SCREEN_WIDTH]), G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, 1, (s32) outX, 0, (s32) outX + 3, 0, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, @@ -4118,7 +4114,7 @@ s32 is_model_center_visible(u16 modelID, s32 depthQueryID, f32* screenX, f32* sc G_TX_NOLOD, G_TX_NOLOD); gDPPipeSync(gMainGfxPos++); // Set the current color image to the buffer where copied depth values are stored. - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, depthCopyBuffer); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, depthCopyBuffer); gDPPipeSync(gMainGfxPos++); // Set up 1 cycle mode and all other relevant othermode params. // One cycle mode must be used here because only one pixel is copied, and copy mode only supports multiples of 4 pixels. @@ -4137,7 +4133,7 @@ s32 is_model_center_visible(u16 modelID, s32 depthQueryID, f32* screenX, f32* sc gSPTextureRectangle(gMainGfxPos++, depthQueryID << 2, 0 << 2, 4 << 2, 1 << 2, G_TX_RENDERTILE, (s32) outX << 5, 0, 1 << 10, 1 << 10); // Sync and swap the color image back to the current framebuffer. gDPPipeSync(gMainGfxPos++); - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(nuGfxCfb_ptr)); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxCfb_ptr)); gDPPipeSync(gMainGfxPos++); // Reconfigure the frame's normal scissor. gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, camera->viewportStartX, camera->viewportStartY, camera->viewportStartX + camera->viewportW, camera->viewportStartY + camera->viewportH); @@ -4216,7 +4212,7 @@ s32 is_point_visible(f32 x, f32 y, f32 z, s32 depthQueryID, f32* screenX, f32* s if (outX >= 0.0f && outY >= 0.0f && outX < 320.0f && outY < 240.0f) { gDPPipeSync(gMainGfxPos++); // Load a 4x1 pixel tile of the depth buffer - gDPLoadTextureTile(gMainGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, + gDPLoadTextureTile(gMainGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * SCREEN_WIDTH]), G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, 1, (s32) outX, 0, (s32) outX + 3, 0, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, @@ -4224,7 +4220,7 @@ s32 is_point_visible(f32 x, f32 y, f32 z, s32 depthQueryID, f32* screenX, f32* s G_TX_NOLOD, G_TX_NOLOD); gDPPipeSync(gMainGfxPos++); // Set the current color image to the buffer where copied depth values are stored. - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, depthCopyBuffer); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, depthCopyBuffer); gDPPipeSync(gMainGfxPos++); // Set up 1 cycle mode and all other relevant othermode params. // One cycle mode must be used here because only one pixel is copied, and copy mode only supports multiples of 4 pixels. @@ -4243,7 +4239,7 @@ s32 is_point_visible(f32 x, f32 y, f32 z, s32 depthQueryID, f32* screenX, f32* s gSPTextureRectangle(gMainGfxPos++, depthQueryID << 2, 0 << 2, (depthQueryID + 1) << 2, 1 << 2, G_TX_RENDERTILE, (s32) outX << 5, 0, 1 << 10, 1 << 10); // Sync and swap the color image back to the current framebuffer. gDPPipeSync(gMainGfxPos++); - gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(nuGfxCfb_ptr)); + gDPSetColorImage(gMainGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxCfb_ptr)); gDPPipeSync(gMainGfxPos++); // Reconfigure the frame's normal scissor. gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, camera->viewportStartX, camera->viewportStartY, camera->viewportStartX + camera->viewportW, camera->viewportStartY + camera->viewportH); diff --git a/src/msg.c b/src/msg.c index 5cb1843517..51600b09e6 100644 --- a/src/msg.c +++ b/src/msg.c @@ -68,23 +68,21 @@ Gfx D_8014C2D8[] = { gsSPEndDisplayList(), }; -// unsorted -extern u8* D_8015131C; -extern MessageDrawState D_80155D20; -extern IMG_BIN D_80159B50[]; -extern PAL_BIN D_8015C7E0[]; - -// BSS -extern s32 gMsgBGScrollAmtX; -extern u16 gMsgGlobalWaveCounter; -extern MessageImageDataList gMsgVarImages; -extern s32 gMsgBGScrollAmtY; -extern Gfx* D_80151338; -extern char gMessageBuffers[2][1024]; -extern u8 gMessageMsgVars[3][32]; -extern s16 D_80155C98; -extern Mtx gMessageWindowProjMatrix[2]; -extern MessageDrawState* msg_drawState; +SHIFT_BSS s32 gMsgBGScrollAmtX; +SHIFT_BSS u16 gMsgGlobalWaveCounter; +SHIFT_BSS MessageImageDataList gMsgVarImages; +SHIFT_BSS s32 gMsgBGScrollAmtY; +SHIFT_BSS u8* D_8015131C; +SHIFT_BSS Gfx* D_80151338; +SHIFT_BSS char gMessageBuffers[2][1024]; +SHIFT_BSS u8 gMessageMsgVars[3][32]; +SHIFT_BSS s16 D_80155C98; +SHIFT_BSS Mtx gMessageWindowProjMatrix[2]; +SHIFT_BSS MessageDrawState D_80155D20; +SHIFT_BSS MessageDrawState* msg_drawState; +SHIFT_BSS IMG_BIN D_80159B50[0x200]; +SHIFT_BSS PAL_BIN D_8015C7E0[0x10]; +SHIFT_BSS MessagePrintState gMessagePrinters[3]; extern s16 D_802EB644[22]; diff --git a/src/npc.c b/src/npc.c index 65f289dcd2..6b8b05985e 100644 --- a/src/npc.c +++ b/src/npc.c @@ -5,6 +5,12 @@ #include "sprite.h" #include "world/partners.h" +SHIFT_BSS s16 gNpcCount; +SHIFT_BSS NpcList gWorldNpcList; +SHIFT_BSS NpcList gBattleNpcList; +SHIFT_BSS NpcList* gCurrentNpcListPtr; +SHIFT_BSS b8 gNpcPlayerCollisionsEnabled; + u8 D_80077BF0[] = { 1, 2, 0, 52, diff --git a/src/npc_collision.c b/src/npc_collision.c index 8710aace38..5e0af76241 100644 --- a/src/npc_collision.c +++ b/src/npc_collision.c @@ -1,10 +1,11 @@ #include "common.h" -extern s32 D_8010C94C; -extern s32 D_8010C968; -extern s32 D_8010C970; -extern s32 D_8010C974; -extern s32 D_8010C98C; +SHIFT_BSS s32 D_8010C94C; +SHIFT_BSS s32 D_8010C968; +SHIFT_BSS s32 D_8010C98C; +SHIFT_BSS s32 D_8010C970; +SHIFT_BSS s32 D_8010C974; +SHIFT_BSS s32 NpcHitQueryColliderID; PlayerStatus* gPlayerStatusPtr = &gPlayerStatus; // maybe wPlayerStatus diff --git a/src/os/contpfs.c b/src/os/contpfs.c index 1e34c67adc..9fe5388ed2 100644 --- a/src/os/contpfs.c +++ b/src/os/contpfs.c @@ -2,6 +2,7 @@ #include "macros.h" extern __OSInode __osPfsInodeCache; + s32 __osPfsInodeCacheChannel = -1; u8 __osPfsInodeCacheBank = 250; diff --git a/src/os/nusys/nuboot.c b/src/os/nusys/nuboot.c index c9b7c40d9c..1e9f03c03c 100644 --- a/src/os/nusys/nuboot.c +++ b/src/os/nusys/nuboot.c @@ -5,8 +5,10 @@ NOP_FIX -extern u64 nuMainStack[NU_SC_STACK_SIZE / sizeof(u64)]; -extern u64 IdleStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u64 nuMainStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u64 IdleStack[NU_SC_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS OSThread IdleThread; // idle thread, id 1 +SHIFT_BSS OSThread MainThread; // id 3 void nuBoot(void) { osInitialize(); diff --git a/src/os/nusys/nugfxthread.c b/src/os/nusys/nugfxthread.c index e3361887a6..6cec569bd2 100644 --- a/src/os/nusys/nugfxthread.c +++ b/src/os/nusys/nugfxthread.c @@ -3,12 +3,12 @@ void gfxThread(void*); -extern s32 GfxStack[NU_GFX_STACK_SIZE / 4]; +extern char GfxStack[NU_GFX_STACK_SIZE]; extern OSThread D_800B1B90; extern OSMesg nuGfxMesgBuf[NU_GFX_MESGS]; void nuGfxThreadStart(void) { - osCreateThread(&D_800B1B90, 4, gfxThread, NULL, &GfxStack[NU_GFX_STACK_SIZE / 4], NU_GFX_THREAD_PRI); + osCreateThread(&D_800B1B90, 4, gfxThread, NULL, &GfxStack[NU_GFX_STACK_SIZE], NU_GFX_THREAD_PRI); osStartThread(&D_800B1B90); } diff --git a/src/os/nusys/nusimgr.c b/src/os/nusys/nusimgr.c index 4b1190aa9d..616cd20b7e 100644 --- a/src/os/nusys/nusimgr.c +++ b/src/os/nusys/nusimgr.c @@ -5,7 +5,6 @@ NUCallBackList* nuSiCallBackList = NULL; extern OSMesg nuSiMesgBuf[8]; extern OSThread siMgrThread; -extern s32 D_800A08C0; static void nuSiMgrThread(void* arg); diff --git a/src/os/pimgr.c b/src/os/pimgr.c index bebede364d..8491ce9e79 100644 --- a/src/os/pimgr.c +++ b/src/os/pimgr.c @@ -1,15 +1,3 @@ -// #include "ultra64.h" -// #include "include_asm.h" - -// OSDevMgr __osPiDevMgr = {0}; -// OSPiHandle* __osPiTable = NULL; - -// extern OSPiHandle __Dom1SpeedParam; -// extern OSPiHandle __Dom2SpeedParam; -// OSPiHandle* __osCurrentHandle[2] = {&__Dom1SpeedParam, &__Dom2SpeedParam}; - -// INCLUDE_ASM(void, "os/osCreatePiManager", osCreatePiManager, OSPri prio, OSMesgQueue* queue, OSMesg* mesg, s32 unk); - #include "macros.h" #include "PR/os_internal.h" #include "PR/piint.h" diff --git a/src/os/siacs.c b/src/os/siacs.c index 6777a46fd5..e288f0cbff 100644 --- a/src/os/siacs.c +++ b/src/os/siacs.c @@ -2,6 +2,7 @@ #define SI_Q_BUF_LEN 1 u32 __osSiAccessQueueEnabled = 0; + extern OSMesg siAccessBuf[SI_Q_BUF_LEN]; extern OSMesgQueue __osSiAccessQueue; diff --git a/src/sprite_shading.c b/src/sprite_shading.c index e194a717db..6f9da93155 100644 --- a/src/sprite_shading.c +++ b/src/sprite_shading.c @@ -2,11 +2,13 @@ #include "sprite.h" #include "nu/nusys.h" -extern SpriteShadingProfile wSpriteShadingProfile; -extern SpriteShadingProfile bSpriteShadingProfile; -extern SpriteShadingProfile wSpriteShadingProfileAux; -extern SpriteShadingProfile bSpriteShadingProfileAux; -extern PAL_BIN SpriteShadingPalette[16]; +SHIFT_BSS SpriteShadingProfile* gSpriteShadingProfile; +SHIFT_BSS SpriteShadingProfile wSpriteShadingProfile; +SHIFT_BSS SpriteShadingProfile bSpriteShadingProfile; +SHIFT_BSS SpriteShadingProfile wSpriteShadingProfileAux; +SHIFT_BSS SpriteShadingProfile bSpriteShadingProfileAux; +SHIFT_BSS SpriteShadingProfile* gAuxSpriteShadingProfile; +SHIFT_BSS PAL_BIN SpriteShadingPalette[16]; void appendGfx_shading_palette(Matrix4f mtx, s32 uls, s32 ult, s32 lrs, s32 lrt, s32 alpha, f32 shadowX, f32 shadowY, f32 shadowZ, diff --git a/src/state_battle.c b/src/state_battle.c index bef0772e83..f5a2f63aa3 100644 --- a/src/state_battle.c +++ b/src/state_battle.c @@ -18,9 +18,9 @@ s32 D_800778AC[] = { 0x00000000, 0xFFFFFF00, 0xFFFFFF00, 0x00000000, 0x00000000 }; -// BSS -extern s32 D_800A0904; -extern s32 D_800A0908; +SHIFT_BSS s8 D_800A0900; +SHIFT_BSS s32 D_800A0904; +SHIFT_BSS s32 D_800A0908; #ifdef SHIFT #define shim_battle_heap_create_obfuscated battle_heap_create diff --git a/src/state_file_select.c b/src/state_file_select.c index 7a96ed02b7..3bc42f3e8c 100644 --- a/src/state_file_select.c +++ b/src/state_file_select.c @@ -41,6 +41,10 @@ u8 D_800779B0 = 0; extern s32 D_80200000; extern ShapeFile gMapShapeData; +SHIFT_BSS s8 D_800A0930; +SHIFT_BSS s8 D_800A0931; +SHIFT_BSS s16 D_800A0932[1]; + void state_init_language_select(void) { D_800A0931 = 0; D_800A0932[0] = 0; diff --git a/src/state_intro.c b/src/state_intro.c index 3d97e0925f..f1ddd1f2fc 100644 --- a/src/state_intro.c +++ b/src/state_intro.c @@ -2,7 +2,15 @@ #include "hud_element.h" #include "sprite.h" -extern s32 D_800A0950; +SHIFT_BSS s32 D_800A0950; +SHIFT_BSS s16 D_800A0954; +SHIFT_BSS s16 D_800A0956; +SHIFT_BSS s16 D_800A0958; +SHIFT_BSS s16 D_800A095A; +SHIFT_BSS s16 D_800A095C; +SHIFT_BSS s16 D_800A095E; +SHIFT_BSS s32 D_800A0960; +SHIFT_BSS s32 D_800A0964; void state_init_intro(void) { s8 unk_A8; @@ -66,8 +74,8 @@ void state_init_intro(void) { break; } - set_screen_overlay_params_back(D_800A0963, D_800A0954); - set_screen_overlay_color(SCREEN_LAYER_BACK, D_800A095B, D_800A095D, D_800A095F); + set_screen_overlay_params_back(D_800A0960, D_800A0954); + set_screen_overlay_color(SCREEN_LAYER_BACK, D_800A095A, D_800A095C, D_800A095E); intro_logos_update_fade(); } @@ -227,8 +235,8 @@ void state_step_intro(void) { break; } - set_screen_overlay_params_back(D_800A0963, D_800A0954); - set_screen_overlay_color(SCREEN_LAYER_BACK, D_800A095B, D_800A095D, D_800A095F); + set_screen_overlay_params_back(D_800A0960, D_800A0954); + set_screen_overlay_color(SCREEN_LAYER_BACK, D_800A095A, D_800A095C, D_800A095E); intro_logos_update_fade(); } diff --git a/src/state_logos.c b/src/state_logos.c index 92188e0a4c..97fc7ce51f 100644 --- a/src/state_logos.c +++ b/src/state_logos.c @@ -40,11 +40,10 @@ Gfx D_80077908[] = { gsSPEndDisplayList(), }; -// BSS -extern u8* gLogosImages; -extern u8* gLogosImage3; -extern u8* gLogosImage1; -extern u8* gLogosImage2; +SHIFT_BSS u8* gLogosImages; +SHIFT_BSS u8* gLogosImage3; +SHIFT_BSS u8* gLogosImage1; +SHIFT_BSS u8* gLogosImage2; void state_init_logos(void) { s8* romStart; diff --git a/src/state_pause.c b/src/state_pause.c index 2d22d6ec7b..7f05b0aab7 100644 --- a/src/state_pause.c +++ b/src/state_pause.c @@ -38,6 +38,11 @@ NUPiOverlaySegment D_8007795C = { .bssEnd = pause_BSS_END, }; +SHIFT_BSS s8 D_800A0920; +SHIFT_BSS s8 D_800A0921; +SHIFT_BSS s16 D_800A0922; +SHIFT_BSS s32 SavedReverbMode; + void state_init_pause(void) { D_800A0921 = 0; D_800A0922 = 0; diff --git a/src/state_title_screen.c b/src/state_title_screen.c index b4e58f047f..808d30456b 100644 --- a/src/state_title_screen.c +++ b/src/state_title_screen.c @@ -76,15 +76,15 @@ typedef struct TitleDataStruct { #define COPYRIGHT_WIDTH 144 #endif -extern s16 D_800A0970; -extern TitleDataStruct* TitleScreen_ImgList; -extern s32* TitleScreen_ImgList_Logo; -extern u8 (*TitleScreen_ImgList_Copyright)[COPYRIGHT_WIDTH]; -extern s32* TitleScreen_ImgList_PressStart; +SHIFT_BSS s16 D_800A0970; +SHIFT_BSS TitleDataStruct* TitleScreen_ImgList; +SHIFT_BSS s32* TitleScreen_ImgList_Logo; +SHIFT_BSS u8 (*TitleScreen_ImgList_Copyright)[COPYRIGHT_WIDTH]; +SHIFT_BSS s32* TitleScreen_ImgList_PressStart; #if VERSION_JP -extern s32* TitleScreen_ImgList_CopyrightPalette; +SHIFT_BSS s32* TitleScreen_ImgList_CopyrightPalette; #endif -extern s16 D_800A0988; +SHIFT_BSS s16 D_800A0988; void appendGfx_title_screen(void); void draw_title_screen_NOP(void); diff --git a/src/status_icons.c b/src/status_icons.c index 370c81d832..42d324c64b 100644 --- a/src/status_icons.c +++ b/src/status_icons.c @@ -80,12 +80,11 @@ s32 D_80078168[] = { MSG_Menus_Merlee_Exhausted, }; +SHIFT_BSS PopupMessage D_800A0BC0[32]; +SHIFT_BSS s32 D_800A0F40; +SHIFT_BSS HudStatusIcon* D_800A0F44; + extern HudScript HES_Item_Present; - -extern PopupMessage D_800A0BC0[32]; -extern s32 D_800A0F40; -extern HudStatusIcon* D_800A0F44; - extern HudScript HES_AsleepBegin; extern HudScript HES_AsleepEnd; extern HudScript HES_ElectrifiedBegin; diff --git a/src/trigger.c b/src/trigger.c index 953d46116f..209965d8bb 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -1,5 +1,10 @@ #include "common.h" +SHIFT_BSS s16 gTriggerCount; +SHIFT_BSS TriggerList wTriggerList; +SHIFT_BSS TriggerList bTriggerList; +SHIFT_BSS TriggerList* gCurrentTriggerListPtr; + void default_trigger_on_activate(Trigger* self) { self->flags.flags |= TRIGGER_ACTIVATED; } diff --git a/src/windows.c b/src/windows.c index 41ba6fcdce..93179b3310 100644 --- a/src/windows.c +++ b/src/windows.c @@ -20,6 +20,8 @@ typedef struct WindowGroup { /* 0x01 */ u8 max; } WindowGroup; // size = 0x02 +SHIFT_BSS Window gWindows[64]; + WindowStyle gWindowStyles[64] = { { WINDOW_STYLE_3 }, { WINDOW_STYLE_3 }, { WINDOW_STYLE_11 }, { WINDOW_STYLE_12 }, { WINDOW_STYLE_13 }, { WINDOW_STYLE_14 }, { WINDOW_STYLE_3 }, { WINDOW_STYLE_21 }, diff --git a/src/worker.c b/src/worker.c index 4ec998ef48..74de70d890 100644 --- a/src/worker.c +++ b/src/worker.c @@ -1,5 +1,9 @@ #include "common.h" +SHIFT_BSS WorkerList gWorldWorkerList; +SHIFT_BSS WorkerList gBattleWorkerList; +SHIFT_BSS WorkerList* gCurrentWorkerListPtr; + void worker_delegate_do_nothing(void) { } diff --git a/src/world/partners.c b/src/world/partners.c index f03cd43fb1..7464f5531a 100644 --- a/src/world/partners.c +++ b/src/world/partners.c @@ -41,25 +41,27 @@ extern s32 D_8010CD20; -// BSS +SHIFT_BSS PartnerStatus gPartnerStatus; +SHIFT_BSS Npc* wPartnerNpc; + BSS s32 PartnerCommandState; BSS PlayerPathElement gPlayerMoveHistory[40]; BSS s32 gPlayerMoveHistoryIndex; BSS s32 D_8010CFBC; -extern f32 wPartnerTetherDistance; -extern s32 D_8010CFC4; -extern s16 wPartnerFollowState; -extern s16 D_8010CFCA; -extern s16 D_8010CFCC; -extern s16 D_8010CFCE; -extern s32 wPartnerNpcIndex; -extern Evt* wPartnerCurrentScript; -extern s32 wCurrentPartnerId; -extern s32 wPartnerCurrentScriptID; -extern s32 D_8010CFE0; -extern s32 NextPartnerID; -extern s32 NextPartnerCommand; -extern WorldPartner* wPartner; +SHIFT_BSS f32 wPartnerTetherDistance; +SHIFT_BSS s32 D_8010CFC4; +SHIFT_BSS s16 wPartnerFollowState; +SHIFT_BSS s16 D_8010CFCA; +SHIFT_BSS s16 D_8010CFCC; +SHIFT_BSS s16 D_8010CFCE; +SHIFT_BSS s32 wPartnerNpcIndex; +SHIFT_BSS Evt* wPartnerCurrentScript; +SHIFT_BSS s32 wCurrentPartnerId; +SHIFT_BSS s32 wPartnerCurrentScriptID; +SHIFT_BSS s32 D_8010CFE0; +SHIFT_BSS s32 NextPartnerID; +SHIFT_BSS s32 NextPartnerCommand; +SHIFT_BSS WorldPartner* wPartner; extern HudScript HES_Partner0; extern HudScript HES_Goombario; diff --git a/src/world/world.c b/src/world/world.c index 2ee8d1a903..ca9bfb9395 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -34,7 +34,7 @@ Vec3f gEntityColliderNormals[] = { s32 pad_map_table[] = { 0, 0 }; #ifdef SHIFT -#define ASSET_TABLE_ROM_START mapfs_ROM_START +#define ASSET_TABLE_ROM_START (s32) mapfs_ROM_START #elif VERSION_JP #define ASSET_TABLE_ROM_START 0x1E00000 #else @@ -44,9 +44,12 @@ s32 pad_map_table[] = { 0, 0 }; #define ASSET_TABLE_HEADER_SIZE 0x20 #define ASSET_TABLE_FIRST_ENTRY (ASSET_TABLE_ROM_START + ASSET_TABLE_HEADER_SIZE) -// bss -extern MapSettings gMapSettings; -extern MapConfig* gMapConfig; +SHIFT_BSS MapSettings gMapSettings; +SHIFT_BSS MapConfig* gMapConfig; +SHIFT_BSS char wMapHitName[0x18]; +SHIFT_BSS char wMapShapeName[0x18]; +SHIFT_BSS char wMapTexName[0x18]; +SHIFT_BSS char wMapBgName[0x18]; typedef struct { /* 0x00 */ char name[16]; diff --git a/tools/build/configure.py b/tools/build/configure.py index 2ac03252dd..ef74d0d8d7 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -195,7 +195,7 @@ def write_ninja_rules( ninja.rule( "as", description="as $in", - command=f"{cross}as -EB -march=vr4300 -mtune=vr4300 -Iinclude $in -o $out", + command=f"{cpp} {CPPFLAGS} {extra_cppflags} $cppflags $in -o - | {cross}as -EB -march=vr4300 -mtune=vr4300 -Iinclude -o $out", ) ninja.rule( @@ -618,7 +618,7 @@ class Configure: ) # Not dead cod else: - if seg.get_most_parent().name not in ["main", "engine1", "engine2"]: + if non_matching or seg.get_most_parent().name not in ["main", "engine1", "engine2"]: cflags += " -fno-common" build( entry.object_path, @@ -1287,7 +1287,7 @@ if __name__ == "__main__": if args.shift: extra_cppflags += " -DSHIFT" - extra_cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes" + extra_cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls" # add splat to python import path sys.path.insert(0, str((ROOT / args.splat).resolve())) diff --git a/ver/ique/asm/bss.s b/ver/ique/asm/bss.s index 241b1cc8fb..92bb761ec8 100644 --- a/ver/ique/asm/bss.s +++ b/ver/ique/asm/bss.s @@ -374,28 +374,16 @@ dlabel D_800A0958 .space 2 dlabel D_800A095A -.space 1 - -dlabel D_800A095B -.space 1 +.space 2 dlabel D_800A095C -.space 1 - -dlabel D_800A095D -.space 1 +.space 2 dlabel D_800A095E -.space 1 - -dlabel D_800A095F -.space 1 +.space 2 dlabel D_800A0960 -.space 0x00000003 - -dlabel D_800A0963 -.space 1 +.space 0x00000004 dlabel D_800A0964 .space 4 @@ -515,10 +503,7 @@ dlabel D_800A363C .space 4 dlabel nuAuDmaMesgQ -.space 4 - -dlabel D_800A3644 -.space 0x00000014 +.space 0x18 dlabel nuAuDmaMesgBuf .space 0x000000c8 @@ -569,16 +554,7 @@ dlabel D_800A3FF4 .space 0x0000000c dlabel gEffectGraphicsData -.space 0x000001b4 - -dlabel D_800A41B4 -.space 0x0000000c - -dlabel D_800A41C0 -.space 4 - -dlabel D_800A41C4 -.space 0x0000001c +.space 0x000001E0 dlabel gMapConfig .space 4 @@ -587,10 +563,9 @@ dlabel D_800A41E4 .space 4 dlabel gMapSettings -.space 4 +.space 0x40 -dlabel D_800A41EC -.space 0x00000044 +.space 8 dlabel gCollisionRayStartX .space 4 @@ -735,23 +710,16 @@ dlabel piEventQueue .space 0x18 dlabel piEventBuf -.space 4 - -dlabel D_800AF8AC -.space 4 +.space 0x8 dlabel piAccessBuf -.space 4 +.space 0x8 -.space 0x24 +.space 0x20 dlabel wMapTexName -.space 4 +.space 0x18 -dlabel D_800B0CF4 -.space 0x00000014 - -dlabel D_800B0D08 dlabel __osThreadSave .space 0x1b0 diff --git a/ver/ique/asm/bss3.s b/ver/ique/asm/bss3.s index f86fc624ac..e82d13275d 100644 --- a/ver/ique/asm/bss3.s +++ b/ver/ique/asm/bss3.s @@ -38,10 +38,7 @@ dlabel gAnimCount .space 4 dlabel gMsgBGScrollAmtX -.space 2 - -dlabel D_801512DA -.space 2 +.space 4 dlabel D_801512DC .space 4 @@ -161,12 +158,8 @@ dlabel D_80151664 .space 4 dlabel wEntityBlueprint -.space 0x00000074 +.space 0x00000078 -dlabel D_801516DC -.space 4 - -dlabel D_8015DCE0 .space 8 dlabel bEntityBlueprint @@ -242,10 +235,7 @@ dlabel D_80153223 .space 1 dlabel mdl_treeIterPos -.space 2 - -dlabel D_80153226 -.space 2 +.space 4 dlabel wFogSettings .space 0x00000020 @@ -374,52 +364,16 @@ dlabel entity_fog_enabled .space 4 dlabel entity_fog_red -.space 1 - -dlabel D_8015437D -.space 1 - -dlabel D_8015437E -.space 1 - -dlabel D_8015437F -.space 1 +.space 4 dlabel entity_fog_green -.space 1 - -dlabel D_80154381 -.space 1 - -dlabel D_80154382 -.space 1 - -dlabel D_80154383 -.space 1 +.space 4 dlabel entity_fog_blue -.space 1 - -dlabel D_80154385 -.space 1 - -dlabel D_80154386 -.space 1 - -dlabel D_80154387 -.space 1 +.space 4 dlabel entity_fog_alpha -.space 1 - -dlabel D_80154389 -.space 1 - -dlabel D_8015438A -.space 1 - -dlabel D_8015438B -.space 1 +.space 4 dlabel entity_fog_dist_min .space 4 @@ -643,10 +597,7 @@ dlabel D_80159394 .space 0x0000000c dlabel gBackgroundPalette -.space 0x000001fe - -dlabel D_8015959E -.space 2 +.space 0x00000200 dlabel gBackroundLastScrollValue .space 0x00000020 @@ -709,13 +660,9 @@ dlabel gCollisionStatus .space 0x00000028 dlabel gCurrentHiddenPanels -.space 2 +.space 0x10 -dlabel D_8015A57A -.space 2 - -dlabel D_8015A57C -.space 0x00000014 +.space 8 dlabel mdl_textureHandles .space 0x00002200 diff --git a/ver/jp/asm/main.bss.s b/ver/jp/asm/main.bss.s index 22fe7ad157..c4139fd029 100644 --- a/ver/jp/asm/main.bss.s +++ b/ver/jp/asm/main.bss.s @@ -296,28 +296,16 @@ dlabel D_800A0958 .space 2 dlabel D_800A095A -.space 1 - -dlabel D_800A095B -.space 1 +.space 2 dlabel D_800A095C -.space 1 - -dlabel D_800A095D -.space 1 +.space 2 dlabel D_800A095E -.space 1 - -dlabel D_800A095F -.space 1 +.space 2 dlabel D_800A0960 -.space 3 - -dlabel D_800A0963 -.space 1 +.space 4 dlabel D_800A0964 .space 12 diff --git a/ver/us/asm/bss.s b/ver/us/asm/bss.s index 7095d3fbe0..7f95727eac 100644 --- a/ver/us/asm/bss.s +++ b/ver/us/asm/bss.s @@ -5,6 +5,8 @@ .set noreorder # don't insert nops after branches .set gp=64 # allow use of 64-bit general purpose registers +#ifndef SHIFT + .section .bss dlabel nuScPreNMIFlag @@ -366,28 +368,16 @@ dlabel D_800A0958 .space 2 dlabel D_800A095A -.space 1 - -dlabel D_800A095B -.space 1 +.space 2 dlabel D_800A095C -.space 1 - -dlabel D_800A095D -.space 1 +.space 2 dlabel D_800A095E -.space 1 - -dlabel D_800A095F -.space 1 +.space 2 dlabel D_800A0960 -.space 0x00000003 - -dlabel D_800A0963 -.space 1 +.space 0x00000004 dlabel D_800A0964 .space 4 @@ -504,10 +494,7 @@ dlabel D_800A363C .space 4 dlabel nuAuDmaMesgQ -.space 4 - -dlabel D_800A3644 -.space 0x00000014 +.space 0x18 dlabel nuAuDmaMesgBuf .space 0x000000c8 @@ -554,16 +541,7 @@ dlabel D_800A3FF4 .space 0x0000000c dlabel gEffectGraphicsData -.space 0x000001b4 - -dlabel D_800A41B4 -.space 0x0000000c - -dlabel D_800A41C0 -.space 4 - -dlabel D_800A41C4 -.space 0x0000001c +.space 0x000001E0 dlabel gMapConfig .space 4 @@ -572,10 +550,9 @@ dlabel D_800A41E4 .space 4 dlabel gMapSettings -.space 4 +.space 0x40 -dlabel D_800A41EC -.space 0x00000044 +.space 8 dlabel gCollisionRayStartX .space 4 @@ -674,22 +651,13 @@ dlabel piThreadStack .space 0x1000 dlabel piEventQueue -.space 4 - -dlabel D_800AF890 -.space 0x00000014 +.space 0x18 dlabel piEventBuf -.space 4 - -dlabel D_800AF8AC -.space 4 +.space 0x8 dlabel piAccessBuf -.space 4 - -dlabel D_800AF8B4 -.space 0x0000000c +.space 0x10 dlabel tmp_task .space 0x00000040 @@ -707,85 +675,37 @@ dlabel D_800AF914 .space 4 dlabel viThread -.space 4 - -dlabel D_800AF91C -.space 0x1B4 +.space 0x1B8 dlabel viThreadStack .space 0x1000 dlabel viEventQueue -.space 4 - -dlabel D_800B0AD4 -.space 0x00000014 +.space 0x18 dlabel viEventBuf -.space 4 - -dlabel D_800B0AEC -.space 0x00000014 +.space 0x18 dlabel viRetraceMsg -.space 2 - -dlabel D_800B0B02 -.space 2 - -dlabel D_800B0B04 -.space 4 - -dlabel D_800B0B08 -.space 0x00000010 +.space 0x18 dlabel viCounterMsg -.space 2 - -dlabel D_800B0B1A -.space 2 - -dlabel D_800B0B1C -.space 4 - -dlabel D_800B0B20 -.space 0x00000010 +.space 0x18 dlabel __MotorDataBuf -.space 4 - -dlabel D_800B0B34 -.space 0x00000038 - -dlabel D_800B0B6C -.space 4 - -dlabel D_800B0B70 -.space 0x000000c0 +.space 0x100 dlabel __osFlashID -.space 4 - -dlabel D_800B0C34 -.space 0x0000000c +.space 0x10 dlabel __osFlashMsg -.space 4 - -dlabel D_800B0C44 -.space 0x00000014 +.space 0x18 dlabel __osFlashMessageQ -.space 4 - -dlabel D_800B0C5C -.space 0x00000014 +.space 0x18 dlabel __osFlashHandler -.space 4 - -dlabel D_800B0C74 -.space 0x00000070 +.space 0x74 dlabel __osFlashMsgBuf .space 4 @@ -797,34 +717,16 @@ dlabel D_800B0CEC .space 4 dlabel wMapTexName -.space 4 +.space 0x18 -dlabel D_800B0CF4 -.space 0x00000014 - -dlabel D_800B0D08 -.space 4 - -dlabel D_800B0D0C -.space 0x000001ac +dlabel __osThreadSave +.space 0x000001B0 dlabel nuContWaitMesgQ -.space 4 - -dlabel D_800B0EBC -.space 0x00000014 +.space 0x18 dlabel __osContPifRam -.space 4 - -dlabel D_800B0ED4 -.space 0x00000034 - -dlabel D_800B0F08 -.space 4 - -dlabel D_800B0F0C -.space 4 +.space 0x40 dlabel gCurrentEncounter .space 0x00000bf8 @@ -872,16 +774,10 @@ dlabel D_800B3AE0 .space 0x800 dlabel gCollisionData -.space 4 - -dlabel D_800B42E4 -.space 0x0000000c +.space 0x10 dlabel nuGfxMesgQ -.space 4 - -dlabel D_800B42F4 -.space 0x00000014 +.space 0x18 dlabel __CartRomHandle .space 4 @@ -914,10 +810,7 @@ dlabel D_800B431C .space 0x00000064 dlabel __osPiAccessQueue -.space 4 - -dlabel D_800B4384 -.space 0x00000014 +.space 0x18 dlabel gEffectInstances .space 0x00000180 @@ -998,10 +891,7 @@ dlabel __osEventStateTab .space 0x00000080 dlabel __osPfsPifRam -.space 0x0000003c - -dlabel D_800DA03C -.space 4 +.space 0x00000040 dlabel D_800DA040 .space 0x00000400 @@ -1080,3 +970,5 @@ dlabel D_800DC4F8 dlabel gCurrentBattlePtr .space 4 + +#endif diff --git a/ver/us/asm/bss2.s b/ver/us/asm/bss2.s index fae319824e..773ffd9c7f 100644 --- a/ver/us/asm/bss2.s +++ b/ver/us/asm/bss2.s @@ -5,6 +5,8 @@ .set noreorder # don't insert nops after branches .set gp=64 # allow use of 64-bit general purpose registers +#ifndef SHIFT + .section .bss dlabel PulseStoneNotificationCallback @@ -108,3 +110,5 @@ dlabel D_8010C9B0 dlabel D_8010C9B4 .space 0x0000000c + +#endif diff --git a/ver/us/asm/bss2_2.s b/ver/us/asm/bss2_2.s index 7b99643372..936065bab4 100644 --- a/ver/us/asm/bss2_2.s +++ b/ver/us/asm/bss2_2.s @@ -5,6 +5,8 @@ .set noreorder # don't insert nops after branches .set gp=64 # allow use of 64-bit general purpose registers +#ifndef SHIFT + .section .bss dlabel wPartnerTetherDistance @@ -59,11 +61,11 @@ dlabel D_8010CFF8 .space 8 dlabel D_8010D000 -.space 4 - -dlabel D_8010D004 .space 0x63C +dlabel D_8010D63C +.space 0x4 + dlabel gPopupState .space 4 @@ -219,3 +221,5 @@ dlabel gPlayerData dlabel gSpinHistoryPosAngle .space 0x10 + +#endif diff --git a/ver/us/asm/bss3.s b/ver/us/asm/bss3.s index 0e8901a278..def2bed6f7 100644 --- a/ver/us/asm/bss3.s +++ b/ver/us/asm/bss3.s @@ -5,6 +5,8 @@ .set noreorder # don't insert nops after branches .set gp=64 # allow use of 64-bit general purpose registers +#ifndef SHIFT + .section .bss dlabel gAuxSpriteShadingProfile @@ -38,10 +40,7 @@ dlabel gAnimCount .space 4 dlabel gMsgBGScrollAmtX -.space 2 - -dlabel D_801512DA -.space 2 +.space 4 dlabel D_801512DC .space 4 @@ -161,12 +160,8 @@ dlabel D_80151664 .space 4 dlabel wEntityBlueprint -.space 0x00000074 +.space 0x00000078 -dlabel D_801516DC -.space 4 - -dlabel D_8015DCE0 .space 8 dlabel bEntityBlueprint @@ -242,10 +237,7 @@ dlabel D_80153223 .space 1 dlabel mdl_treeIterPos -.space 2 - -dlabel D_80153226 -.space 2 +.space 4 dlabel wFogSettings .space 0x00000020 @@ -374,52 +366,16 @@ dlabel entity_fog_enabled .space 4 dlabel entity_fog_red -.space 1 - -dlabel D_8015437D -.space 1 - -dlabel D_8015437E -.space 1 - -dlabel D_8015437F -.space 1 +.space 4 dlabel entity_fog_green -.space 1 - -dlabel D_80154381 -.space 1 - -dlabel D_80154382 -.space 1 - -dlabel D_80154383 -.space 1 +.space 4 dlabel entity_fog_blue -.space 1 - -dlabel D_80154385 -.space 1 - -dlabel D_80154386 -.space 1 - -dlabel D_80154387 -.space 1 +.space 4 dlabel entity_fog_alpha -.space 1 - -dlabel D_80154389 -.space 1 - -dlabel D_8015438A -.space 1 - -dlabel D_8015438B -.space 1 +.space 4 dlabel entity_fog_dist_min .space 4 @@ -638,10 +594,7 @@ dlabel D_80159394 .space 0x0000000c dlabel gBackgroundPalette -.space 0x000001fe - -dlabel D_8015959E -.space 2 +.space 0x00000200 dlabel gBackroundLastScrollValue .space 0x00000020 @@ -704,13 +657,9 @@ dlabel gCollisionStatus .space 0x00000028 dlabel gCurrentHiddenPanels -.space 2 +.space 0x10 -dlabel D_8015A57A -.space 2 - -dlabel D_8015A57C -.space 0x00000014 +.space 8 dlabel mdl_textureHandles .space 0x00002200 @@ -725,7 +674,12 @@ dlabel CreateEntityVarArgBuffer .space 0x00000010 dlabel D_8015C7E0 -.space 0x7820 +.space 0x20 + +dlabel D_8015C800 +.space 0x7800 dlabel D_80164000 .space 0x32C60 + +#endif diff --git a/ver/us/asm/entry_point.s b/ver/us/asm/entry_point.s index 256c510c25..29e3e9838a 100644 --- a/ver/us/asm/entry_point.s +++ b/ver/us/asm/entry_point.s @@ -8,10 +8,10 @@ .section .text, "ax" glabel entry_point -/* 1000 80025C00 3C08800A */ lui $t0, %hi(nuScPreNMIFlag) -/* 1004 80025C04 2508A5B0 */ addiu $t0, $t0, %lo(nuScPreNMIFlag) -/* 1008 80025C08 3C090004 */ lui $t1, 4 -/* 100C 80025C0C 25291F50 */ addiu $t1, $t1, 0x1f50 +/* 1000 80025C00 3C08800A */ lui $t0, %hi(main_BSS_START) +/* 1004 80025C04 2508A5B0 */ addiu $t0, $t0, %lo(main_BSS_START) +/* 1008 80025C08 3C090004 */ lui $t1, %hi(main_BSS_SIZE) +/* 100C 80025C0C 25291F50 */ addiu $t1, $t1, %lo(main_BSS_SIZE) .L80025C10: /* 1010 80025C10 AD000000 */ sw $zero, ($t0) /* 1014 80025C14 AD000004 */ sw $zero, 4($t0) diff --git a/ver/us/asm/os/exceptasm.s b/ver/us/asm/os/exceptasm.s index 1005c0a123..aed93c4a01 100644 --- a/ver/us/asm/os/exceptasm.s +++ b/ver/us/asm/os/exceptasm.s @@ -16,14 +16,14 @@ dlabel jtbl_80099DA0 .section .text, "ax" glabel __osExceptionPreamble -/* 45DF0 8006A9F0 3C1A8007 */ lui $k0, %hi(osExceptionPreamble) -/* 45DF4 8006A9F4 275AAA00 */ addiu $k0, $k0, %lo(osExceptionPreamble) +/* 45DF0 8006A9F0 3C1A8007 */ lui $k0, %hi(__osException) +/* 45DF4 8006A9F4 275AAA00 */ addiu $k0, $k0, %lo(__osException) /* 45DF8 8006A9F8 03400008 */ jr $k0 /* 45DFC 8006A9FC 00000000 */ nop -glabel osExceptionPreamble -/* 45E00 8006AA00 3C1A800B */ lui $k0, %hi(D_800B0D08) -/* 45E04 8006AA04 275A0D08 */ addiu $k0, $k0, %lo(D_800B0D08) +glabel __osException +/* 45E00 8006AA00 3C1A800B */ lui $k0, %hi(__osThreadSave) +/* 45E04 8006AA04 275A0D08 */ addiu $k0, $k0, %lo(__osThreadSave) /* 45E08 8006AA08 FF410020 */ sd $at, 0x20($k0) /* 45E0C 8006AA0C 401B6000 */ mfc0 $k1, $12 /* 45E10 8006AA10 AF5B0118 */ sw $k1, 0x118($k0) diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index f22f106512..8e79cb1a49 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -2742,13 +2742,9 @@ D_800A0954 = 0x800A0954; // rom:0x7BD54 D_800A0956 = 0x800A0956; // rom:0x7BD56 D_800A0958 = 0x800A0958; // rom:0x7BD58 D_800A095A = 0x800A095A; // rom:0x7BD5A -D_800A095B = 0x800A095B; // rom:0x7BD5B D_800A095C = 0x800A095C; // rom:0x7BD5C -D_800A095D = 0x800A095D; // rom:0x7BD5D D_800A095E = 0x800A095E; // rom:0x7BD5E -D_800A095F = 0x800A095F; // rom:0x7BD5F D_800A0960 = 0x800A0960; // rom:0x7BD60 -D_800A0963 = 0x800A0963; // rom:0x7BD63 D_800A0964 = 0x800A0964; // rom:0x7BD64 D_800A0968 = 0x800A0968; // rom:0x7BD68 D_800A0970 = 0x800A0970; // rom:0x7BD70 @@ -2820,7 +2816,6 @@ AlFrameSize = 0x800A3634; // rom:0x7EA34 AlMinFrameSize = 0x800A3638; // rom:0x7EA38 D_800A363C = 0x800A363C; // rom:0x7EA3C nuAuDmaMesgQ = 0x800A3640; // rom:0x7EA40 -D_800A3644 = 0x800A3644; // rom:0x7EA44 nuAuDmaMesgBuf = 0x800A3658; // rom:0x7EA58 nuAuDmaIOMesgBuf = 0x800A3720; // rom:0x7EB20 phys_clear_spin_history = 0x800E58F0; // type:func rom:0x7EDA0 @@ -2847,13 +2842,9 @@ start_falling = 0x800E5FD0; // type:func rom:0x7F480 start_bounce_a = 0x800E6034; // type:func rom:0x7F4E4 start_bounce_b = 0x800E608C; // type:func rom:0x7F53C check_input_hammer = 0x800E60E0; // type:func rom:0x7F590 -D_800A41B4 = 0x800A41B4; // rom:0x7F5B4 -D_800A41C0 = 0x800A41C0; // rom:0x7F5C0 -D_800A41C4 = 0x800A41C4; // rom:0x7F5C4 gMap = 0x800A41E0; // rom:0x7F5E0 D_800A41E4 = 0x800A41E4; // rom:0x7F5E4 gMapSettings = 0x800A41E8; // rom:0x7F5E8 -D_800A41EC = 0x800A41EC; // rom:0x7F5EC check_input_jump = 0x800E6160; // type:func rom:0x7F610 gCollisionRayStartX = 0x800A4230; // rom:0x7F630 gCollisionRayStartY = 0x800A4234; // rom:0x7F634 @@ -3037,50 +3028,25 @@ func_800F102C = 0x800F102C; // type:func rom:0x8A4DC hide_popup_menu = 0x800F13B0; // type:func rom:0x8A860 destroy_popup_menu = 0x800F1538; // type:func rom:0x8A9E8 func_800F16CC = 0x800F16CC; // type:func rom:0x8AB7C -D_800AF890 = 0x800AF894; // rom:0x8AC94 piEventBuf = 0x800AF8A8; // rom:0x8ACA8 -D_800AF8AC = 0x800AF8AC; // rom:0x8ACAC piAccessBuf = 0x800AF8B0; // rom:0x8ACB0 -D_800AF8B4 = 0x800AF8B4; // rom:0x8ACB4 tmp_task = 0x800AF8C0; // rom:0x8ACC0 siAccessBuf = 0x800AF900; // rom:0x8AD00 D_800AF904 = 0x800AF904; // rom:0x8AD04 retrace = 0x800AF910; // rom:0x8AD10 D_800AF914 = 0x800AF914; // rom:0x8AD14 viThread = 0x800AF918; // rom:0x8AD18 -D_800AF91C = 0x800AF91C; // rom:0x8AD1C popup_menu_update = 0x800F1A10; // type:func rom:0x8AEC0 viEventQueue = 0x800B0AD0; // rom:0x8BED0 D_800B0AD4 = 0x800B0AD4; // rom:0x8BED4 viEventBuf = 0x800B0AE8; // rom:0x8BEE8 -D_800B0AEC = 0x800B0AEC; // rom:0x8BEEC viRetraceMsg = 0x800B0B00; // rom:0x8BF00 -D_800B0B02 = 0x800B0B02; // rom:0x8BF02 -D_800B0B04 = 0x800B0B04; // rom:0x8BF04 -D_800B0B08 = 0x800B0B08; // rom:0x8BF08 viCounterMsg = 0x800B0B18; // rom:0x8BF18 -D_800B0B1A = 0x800B0B1A; // rom:0x8BF1A -D_800B0B1C = 0x800B0B1C; // rom:0x8BF1C -D_800B0B20 = 0x800B0B20; // rom:0x8BF20 __MotorDataBuf = 0x800B0B30; // rom:0x8BF30 -D_800B0B34 = 0x800B0B34; // rom:0x8BF34 -D_800B0B6C = 0x800B0B6C; // rom:0x8BF6C -D_800B0B70 = 0x800B0B70; // rom:0x8BF70 -D_800B0C34 = 0x800B0C34; // rom:0x8C034 -D_800B0C44 = 0x800B0C44; // rom:0x8C044 -D_800B0C5C = 0x800B0C5C; // rom:0x8C05C -D_800B0C74 = 0x800B0C74; // rom:0x8C074 D_800B0CEC = 0x800B0CEC; // rom:0x8C0EC wMapTexName = 0x800B0CF0; // rom:0x8C0F0 -D_800B0CF4 = 0x800B0CF4; // rom:0x8C0F4 -D_800B0D08 = 0x800B0D08; // rom:0x8C108 -D_800B0D0C = 0x800B0D0C; // rom:0x8C10C nuContWaitMesgQ = 0x800B0EB8; // rom:0x8C2B8 -D_800B0EBC = 0x800B0EBC; // rom:0x8C2BC __osContPifRam = 0x800B0ED0; // rom:0x8C2D0 -D_800B0ED4 = 0x800B0ED4; // rom:0x8C2D4 -D_800B0F08 = 0x800B0F08; // rom:0x8C308 -D_800B0F0C = 0x800B0F0C; // rom:0x8C30C gCurrentEncounter = 0x800B0F10; // rom:0x8C310 size:0xB0 popup_menu_draw_menu_contents = 0x800F3680; // type:func rom:0x8CB30 __Dom2SpeedParam = 0x800B1B08; // rom:0x8CF08 @@ -3108,9 +3074,7 @@ create_battle_popup_menu = 0x800F513C; // type:func rom:0x8E5EC func_800F52BC = 0x800F52BC; // type:func rom:0x8E76C draw_box = 0x800F52E0; // type:func rom:0x8E790 gCollisionData = 0x800B42E0; // rom:0x8F6E0 size:0x10 -D_800B42E4 = 0x800B42E4; // rom:0x8F6E4 nuGfxMesgQ = 0x800B42F0; // rom:0x8F6F0 -D_800B42F4 = 0x800B42F4; // rom:0x8F6F4 __CartRomHandle = 0x800B4308; // rom:0x8F708 D_800B430C = 0x800B430C; // rom:0x8F70C D_800B430D = 0x800B430D; // rom:0x8F70D @@ -3122,7 +3086,6 @@ D_800B4314 = 0x800B4314; // rom:0x8F714 D_800B4318 = 0x800B4318; // rom:0x8F718 D_800B431C = 0x800B431C; // rom:0x8F71C __osPiAccessQueue = 0x800B4380; // rom:0x8F780 -D_800B4384 = 0x800B4384; // rom:0x8F784 gEffectInstances = 0x800B4398; // rom:0x8F798 __Dom1SpeedParam = 0x800B4518; // rom:0x8F918 D_800B451C = 0x800B451C; // rom:0x8F91C @@ -4104,7 +4067,6 @@ update_model_animator_with_transform = 0x8011EA54; // type:func rom:0xB5154 step_model_animator = 0x8011EBF0; // type:func rom:0xB52F0 __osEventStateTab = 0x800D9F80; // rom:0xB5380 __osPfsPifRam = 0x800DA000; // rom:0xB5400 -D_800DA03C = 0x800DA03C; // rom:0xB543C D_800DA040 = 0x800DA040; // rom:0xB5440 animator_update_model_transforms = 0x8011F058; // type:func rom:0xB5758 animator_node_update_model_transform = 0x8011F118; // type:func rom:0xB5818 @@ -4811,7 +4773,6 @@ gCurrentModels = 0x801512CC; // rom:0xE79CC gHudElementCacheTablePalette = 0x801512D0; // rom:0xE79D0 gAnimCount = 0x801512D4; // rom:0xE79D4 gMsgBGScrollAmtX = 0x801512D8; // rom:0xE79D8 -D_801512DA = 0x801512DA; // rom:0xE79DA D_801512DC = 0x801512DC; // rom:0xE79DC gCurrentTransformGroups = 0x801512E0; // rom:0xE79E0 gMsgGlobalWaveCounter = 0x801512E4; // rom:0xE79E4 @@ -4856,8 +4817,6 @@ bEntityBlueprintSize = 0x80151660; // rom:0xE7D60 D_80151664 = 0x80151664; // rom:0xE7D64 wEntityBlueprint = 0x80151668; // rom:0xE7D68 start_script = 0x802C33E0; // type:func rom:0xE7D90 -D_801516DC = 0x801516DC; // rom:0xE7DDC -D_8015DCE0 = 0x801516E0; // rom:0xE7DE0 bEntityBlueprint = 0x801516E8; // rom:0xE7DE8 D_801516FC = 0x801516FC; // rom:0xE7DFC gMainGameState = 0x80151700; // rom:0xE7E00 @@ -4936,7 +4895,6 @@ bBackgroundFogMode = 0x80153221; // rom:0xE9921 D_80153222 = 0x80153222; // rom:0xE9922 D_80153223 = 0x80153223; // rom:0xE9923 evt_handle_switch = 0x802C4F74; // type:func rom:0xE9924 -D_80153226 = 0x80153226; // rom:0xE9926 wFogSettings = 0x80153228; // rom:0xE9928 bFogSettings = 0x80153248; // rom:0xE9948 gCurrentFogSettings = 0x80153264; // rom:0xE9964 @@ -5027,21 +4985,9 @@ gCurrentEntityModelList = 0x80154370; // rom:0xEAA70 D_80154374 = 0x80154374; // rom:0xEAA74 entity_fog_enabled = 0x80154378; // rom:0xEAA78 entity_fog_red = 0x8015437C; // rom:0xEAA7C -D_8015437D = 0x8015437D; // rom:0xEAA7D -D_8015437E = 0x8015437E; // rom:0xEAA7E -D_8015437F = 0x8015437F; // rom:0xEAA7F entity_fog_green = 0x80154380; // rom:0xEAA80 -D_80154381 = 0x80154381; // rom:0xEAA81 -D_80154382 = 0x80154382; // rom:0xEAA82 -D_80154383 = 0x80154383; // rom:0xEAA83 entity_fog_blue = 0x80154384; // rom:0xEAA84 -D_80154385 = 0x80154385; // rom:0xEAA85 -D_80154386 = 0x80154386; // rom:0xEAA86 -D_80154387 = 0x80154387; // rom:0xEAA87 entity_fog_alpha = 0x80154388; // rom:0xEAA88 -D_80154389 = 0x80154389; // rom:0xEAA89 -D_8015438A = 0x8015438A; // rom:0xEAA8A -D_8015438B = 0x8015438B; // rom:0xEAA8B entity_fog_dist_min = 0x8015438C; // rom:0xEAA8C entity_fog_dist_max = 0x80154390; // rom:0xEAA90 D_80154394 = 0x80154394; // rom:0xEAA94 @@ -5224,7 +5170,6 @@ gCurrentTriggerListPtr = 0x80159390; // rom:0xEFA90 D_80159394 = 0x80159394; // rom:0xEFA94 gBackgroundPalette = 0x801593A0; // rom:0xEFAA0 ShakeCam = 0x802CB2A8; // type:func rom:0xEFC58 -D_8015959E = 0x8015959E; // rom:0xEFC9E gBackroundLastScrollValue = 0x801595A0; // rom:0xEFCA0 wSpriteShadingProfile = 0x801595C0; // rom:0xEFCC0 bSpriteShadingProfile = 0x80159670; // rom:0xEFD70 @@ -5288,8 +5233,6 @@ GetCamPosC = 0x802CC214; // type:func rom:0xF0BC4 gCollisionStatus = 0x8015A550; // rom:0xF0C50 size:0x28 GetCamPosition = 0x802CC2A4; // type:func rom:0xF0C54 gCurrentHiddenPanels = 0x8015A578; // rom:0xF0C78 -D_8015A57A = 0x8015A57A; // rom:0xF0C7A -D_8015A57C = 0x8015A57C; // rom:0xF0C7C mdl_textureHandles = 0x8015A590; // rom:0xF0C90 WaitForCam = 0x802CC354; // type:func rom:0xF0D04 SetCamProperties = 0x802CC3EC; // type:func rom:0xF0D9C