diff --git a/include/effects.h b/include/effects.h index b9575b6897d..8ecdce8fbe3 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 1158659e287..04260641a3b 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,13 +99,7 @@ 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; @@ -189,31 +108,12 @@ extern EvtScript ShakeCamX; extern MusicSettings gMusicSettings[4]; -// OS -extern OSThread IdleThread; // idle thread, id 1 -extern OSThread MainThread; // id 3 -extern OSDevMgr __osPiDevMgr; - // gfx extern DisplayContext* gDisplayContext; 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 b1e10c29ba0..f720b1c429c 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 7d3a9a4b677..7e701d8400e 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 e3efe3bf9f1..99648dce06b 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 0dc03b11bfb..2cd5e7c7214 100644 --- a/src/77480.c +++ b/src/77480.c @@ -17,9 +17,15 @@ #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; +SHIFT_BSS s8 D_8015A57A; + extern f32 D_800F7B48; extern s32 D_800F7B4C; -extern s8 D_8015A57A; extern s32 WorldTattleInteractionID; s32 player_raycast_down(f32*, f32*, f32*, f32*); diff --git a/src/7B440.c b/src/7B440.c index 490fdcd820f..70947792ed8 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 668bd09b723..51c47143f86 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 d8410b451e1..a92b1c4a913 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 e203676b3bf..2bc7eb748f9 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 7e2471d3c86..f28e751b0cd 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 87d05a89339..fabee788dfb 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 2af3230785d..66b75fd2023 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 dd27d705cea..802c900ae83 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 741fba003f0..10c2dbbdd60 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 4093d0b6498..fdfaad65b90 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 0acaf3f8baf..e6a4c3775ba 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 e5a2ef51222..24d19761283 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 3235e6b5db2..07f9c23109d 100644 --- a/src/audio/25f00_len_940.c +++ b/src/audio/25f00_len_940.c @@ -13,22 +13,27 @@ 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 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]; +SHIFT_BSS u64 AuStack[NU_AU_STACK_SIZE / sizeof(u64)]; +SHIFT_BSS u16 AuInitialGlobalVolume; +SHIFT_BSS NUDMAState nuAuDmaState; +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 +66,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 48cd14d4ab2..112d99e4090 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 798c4d757f7..660eb91850e 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 0d4de78dd6d..b28810918cd 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 6f9a8b12190..d645b72652b 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[4]; MusicSettings BlankMusicSettings = { .flags = 0, diff --git a/src/audio/sfx.c b/src/audio/sfx.c index ddb1823632f..c341f1fe72e 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 8caa13a053b..da3f5fa05e0 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 434c0b44558..417315ee2e2 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 2fff596f41b..35f0cb4459d 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 f64f54b1dc3..0896b40ea2a 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 1a6c95c7f6b..05186cc83f5 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 54ef052b7b1..5b0c9bf8cb9 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 308922d7f5e..4c9ba196c8e 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 f3c6c9e35e9..2a6174ff321 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[] = { { diff --git a/src/effects.c b/src/effects.c index 5f0c8ff4c84..66cbcbd947f 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; diff --git a/src/effects/gfx/flame.c b/src/effects/gfx/flame.c index 9fdfb00702e..48d9d4ca64a 100644 --- a/src/effects/gfx/flame.c +++ b/src/effects/gfx/flame.c @@ -1,10 +1,12 @@ +#include "macros.h" + #include "effects/gfx/D_09000000_353BB0.png.inc.c" #include "effects/gfx/D_09000200_353DB0.png.inc.c" #include "effects/gfx/D_09000400_353FB0.png.inc.c" #include "effects/gfx/D_09000600_3541B0.png.inc.c" -extern unsigned char D_800B32E0[]; -extern unsigned char D_800B3AE0[]; +SHIFT_BSS unsigned char D_800B32E0[0x800]; +SHIFT_BSS unsigned char D_800B3AE0[0x800]; //#include "effects/gfx/D_09000800_3543B0.gfx.inc.c" #include "common.h" diff --git a/src/encounter.c b/src/encounter.c index 0d650bd5bc9..92c126db632 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 1cbf005d7d4..be94fd9e603 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; - -extern s32 gEntityHeapBottom; -extern s32 entity_numShadows; -extern s32 isAreaSpecificEntityDataLoaded; -extern s32 entity_updateCounter; - -extern s32 wEntityDataLoadedSize; -extern s32 bEntityDataLoadedSize; - -extern EntityBlueprint* wEntityBlueprint[30]; -extern EntityBlueprint* bEntityBlueprint[4]; +SHIFT_BSS s32 CreateEntityVarArgBuffer[4]; +SHIFT_BSS HiddenPanelsData gCurrentHiddenPanels; +SHIFT_BSS s32 gEntityHideMode; + +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; + +SHIFT_BSS s32 gEntityHeapBottom; +SHIFT_BSS s32 entity_numShadows; +SHIFT_BSS s32 isAreaSpecificEntityDataLoaded; +SHIFT_BSS s32 entity_updateCounter; + +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 ??? diff --git a/src/entity/ItemBlock.c b/src/entity/ItemBlock.c index 2e542a30204..28d8c08c17f 100644 --- a/src/entity/ItemBlock.c +++ b/src/entity/ItemBlock.c @@ -5,6 +5,7 @@ #include "entity.h" #include "model.h" + extern Gfx Entity_YellowBlock_Render[]; extern Gfx Entity_RedBlock_Render[]; extern AnimScript Entity_HitYellowBlock_AnimationHit; @@ -15,6 +16,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 fe1aee21b97..2846d1d61fe 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 e6bdb332052..08509a28dd6 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; - -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 EntityModelList gWorldEntityModelList; +SHIFT_BSS EntityModelList gBattleEntityModelList; +SHIFT_BSS EntityModelList* gCurrentEntityModelList; +SHIFT_BSS s32 gEntityModelCount; + +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 8eb3f10af4a..4d051af6e14 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 6506e62d492..9ca438ada05 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 152cadecc22..93769103d6d 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 00fff887aaf..393c793dce1 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 77f279b9942..23169cb5376 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 5730d73375d..5cef49cd85a 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 f149adbb1d7..cd1d85fd0d4 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 dfd553b091a..792ce1c49e9 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[4]; +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 811a5364920..aaee101fcef 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 e1120cd9575..6ef29e5227f 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,86 @@ #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 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]; +SHIFT_BSS OSMesgQueue __osPiAccessQueue; +SHIFT_BSS OSThread piThread; +SHIFT_BSS char piThreadStack[OS_PIM_STACKSIZE]; +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; +SHIFT_BSS OSMesgQueue nuContWaitMesgQ; +SHIFT_BSS OSContPad nuContData[3]; // 0x8 each, size 0x18 ??? +SHIFT_BSS u32 nuContNum; +SHIFT_BSS volatile u32 nuGfxTaskSpool; +SHIFT_BSS OSMesgQueue nuGfxMesgQ; +SHIFT_BSS s32 GfxStack[NU_GFX_STACK_SIZE / 4]; +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 s32 D_800DA040; +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]; + +// exceptasm.s +SHIFT_BSS s32 D_800B0D08; + +// boot.s +SHIFT_BSS u8 nuBootStack[0x2000]; + +// +// End of libultra BSS +// + s16 D_80074010 = 8; // might be an array, could be size 1-8 void gfxRetrace_Callback(s32); @@ -18,13 +98,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 616ee78ba49..e856db47844 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 565a40d7b30..7f5ce7eb201 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,60 @@ 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; - -extern TextureHeader gCurrentTextureHeader; - -extern ModelList wModelList; -extern ModelList bModelList; - -extern ModelTransformGroupList wTransformGroups; -extern ModelTransformGroupList bTransformGroups; - -extern ModelCustomGfxList wCustomModelGfx; -extern ModelCustomGfxList bCustomModelGfx; - -extern ModelCustomGfxBuilderList wCustomModelGfxBuilders; -extern ModelCustomGfxBuilderList bCustomModelGfxBuilders; -extern ModelLocalVertexCopyList wModelLocalVtxBuffers; -extern ModelLocalVertexCopyList bModelLocalVtxBuffers; -extern ModelLocalVertexCopyList* gCurrentModelLocalVtxBuffers; - -extern ModelNode* wModelTreeRoot; -extern ModelNode* bModelTreeRoot; -extern ModelTreeInfoList D_80152220; -extern 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; - -extern TextureHandle mdl_textureHandles[128]; +SHIFT_BSS ModelCustomGfxBuilderList* gCurrentCustomModelGfxBuildersPtr; +SHIFT_BSS ModelNode** gCurrentModelTreeRoot; +SHIFT_BSS ModelTransformGroupList* gCurrentTransformGroups; +SHIFT_BSS ModelCustomGfxList* gCurrentCustomModelGfxPtr; + +SHIFT_BSS TextureHeader gCurrentTextureHeader; + +SHIFT_BSS ModelList wModelList; +SHIFT_BSS ModelList bModelList; + +SHIFT_BSS ModelTransformGroupList wTransformGroups; +SHIFT_BSS ModelTransformGroupList bTransformGroups; + +SHIFT_BSS ModelCustomGfxList wCustomModelGfx; +SHIFT_BSS ModelCustomGfxList bCustomModelGfx; + +SHIFT_BSS ModelCustomGfxBuilderList wCustomModelGfxBuilders; +SHIFT_BSS ModelCustomGfxBuilderList bCustomModelGfxBuilders; +SHIFT_BSS ModelLocalVertexCopyList wModelLocalVtxBuffers; +SHIFT_BSS ModelLocalVertexCopyList bModelLocalVtxBuffers; +SHIFT_BSS ModelLocalVertexCopyList* gCurrentModelLocalVtxBuffers; + +SHIFT_BSS ModelNode* wModelTreeRoot; +SHIFT_BSS ModelNode* bModelTreeRoot; +SHIFT_BSS ModelTreeInfoList D_80152220; +SHIFT_BSS ModelTreeInfoList D_80152A20; + +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 u16 D_80153226; +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; + +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 +2046,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 +2097,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; @@ -3254,7 +3251,7 @@ void func_8011B1D8(ModelNode* node) { 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 +4107,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 +4115,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 +4134,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 +4213,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 +4221,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 +4240,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 5cb18435178..51600b09e67 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 65f289dcd22..6b8b05985eb 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 8710aace38b..5e0af762413 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 1e34c67adc9..9fe5388ed27 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 c9b7c40d9cb..1e9f03c03c4 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/nugfxtaskmgr.c b/src/os/nusys/nugfxtaskmgr.c index d8b65eefe10..3e9e860e6ac 100644 --- a/src/os/nusys/nugfxtaskmgr.c +++ b/src/os/nusys/nugfxtaskmgr.c @@ -16,7 +16,7 @@ extern NUScTask nuGfxTask[NU_GFX_TASK_NUM]; extern s32 D_800DA040; extern s32 D_800B91D0[NU_GFX_RDP_OUTPUTBUFF_SIZE / sizeof(u32)]; extern u64 GfxTaskMgrStack[NU_GFX_TASKMGR_STACK_SIZE / sizeof(u64)]; -extern u8 rspbootUcodeBuffer[]; +extern u8 rspbootUcodeBuffer[0x100]; void nuGfxTaskMgr(void* data) { NUScTask* task; diff --git a/src/os/nusys/nusimgr.c b/src/os/nusys/nusimgr.c index 4b1190aa9dd..616cd20b7e7 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/osFlash.c b/src/os/osFlash.c index 0e6ee1cc857..22be78c3a44 100644 --- a/src/os/osFlash.c +++ b/src/os/osFlash.c @@ -1,13 +1,19 @@ #include "ultra64.h" #include "PR/os_flash.h" -// BSS -extern u32 __osFlashID[4]; -extern OSIoMesg __osFlashMsg; -extern OSMesgQueue __osFlashMessageQ; -extern OSPiHandle __osFlashHandler; -extern OSMesg __osFlashMsgBuf; -extern s32 __osFlashVersion; +#ifdef SHIFT +#define SHIFT_BSS +#else +#define SHIFT_BSS extern +#endif + +// TODO did this work? +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; OSPiHandle* osFlashReInit(u8 latency, u8 pulse, u8 page_size, u8 rel_duration, u32 start) { __osFlashHandler.baseAddress = PHYS_TO_K1(start); diff --git a/src/os/siacs.c b/src/os/siacs.c index 6777a46fd50..48aa647d710 100644 --- a/src/os/siacs.c +++ b/src/os/siacs.c @@ -1,9 +1,11 @@ #include +#include "macros.h" #define SI_Q_BUF_LEN 1 u32 __osSiAccessQueueEnabled = 0; -extern OSMesg siAccessBuf[SI_Q_BUF_LEN]; -extern OSMesgQueue __osSiAccessQueue; + +SHIFT_BSS OSMesg siAccessBuf[SI_Q_BUF_LEN]; +SHIFT_BSS OSMesgQueue __osSiAccessQueue; void __osSiCreateAccessQueue(void) { __osSiAccessQueueEnabled = 1; diff --git a/src/sprite_shading.c b/src/sprite_shading.c index e194a717dbb..6f9da93155d 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 bef0772e833..f5a2f63aa33 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 7a96ed02b79..3bc42f3e8c8 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 3d97e0925f4..fbd90fda06e 100644 --- a/src/state_intro.c +++ b/src/state_intro.c @@ -2,7 +2,19 @@ #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 u8 D_800A095B; // todo doesn't fit +SHIFT_BSS s16 D_800A095C; +SHIFT_BSS u8 D_800A095D; // todo doesn't fit +SHIFT_BSS s16 D_800A095E; +SHIFT_BSS u8 D_800A095F; // todo doesn't fit +SHIFT_BSS s32 D_800A0960; +SHIFT_BSS u8 D_800A0963; // todo doesn't fit +SHIFT_BSS s32 D_800A0964; void state_init_intro(void) { s8 unk_A8; diff --git a/src/state_logos.c b/src/state_logos.c index 92188e0a4c6..97fc7ce51fd 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 2d22d6ec7b5..7f05b0aab7a 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 b4e58f047f9..808d30456b0 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 370c81d8320..42d324c64b6 100644 --- a/src/status_icons.c +++ b/src/status_icons.c @@ -80,12 +80,11 @@ s32 D_80078168[] = { MSG_Menus_Merlee_Exhausted, }; -extern HudScript HES_Item_Present; - -extern PopupMessage D_800A0BC0[32]; -extern s32 D_800A0F40; -extern HudStatusIcon* D_800A0F44; +SHIFT_BSS PopupMessage D_800A0BC0[32]; +SHIFT_BSS s32 D_800A0F40; +SHIFT_BSS HudStatusIcon* D_800A0F44; +extern HudScript HES_Item_Present; extern HudScript HES_AsleepBegin; extern HudScript HES_AsleepEnd; extern HudScript HES_ElectrifiedBegin; diff --git a/src/trigger.c b/src/trigger.c index 953d46116f0..209965d8bb8 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 41ba6fcdcef..93179b33106 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 4ec998ef482..74de70d8902 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 f03cd43fb1a..7464f5531a7 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 2ee8d1a9034..ca9bfb9395d 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 2ac03252dd0..99d2af623ff 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -75,7 +75,7 @@ def write_ninja_rules( CPPFLAGS = "-w " + CPPFLAGS_COMMON + " -nostdinc" - cflags = f"-c -G0 -O2 -gdwarf-2 -x c -B {BUILD_TOOLS}/cc/gcc/ {extra_cflags}" + cflags = f"-c -G0 -O2 -gdwarf-2 -x c -B {BUILD_TOOLS}/cc/gcc/ {extra_cflags} -Wno-redundant-decls" cflags_modern = f"-c -G0 -O2 -gdwarf-2 -fno-builtin-bcopy -fno-tree-loop-distribute-patterns -funsigned-char -mgp32 -mfp32 -mabi=32 -mfix4300 -march=vr4300 -mno-gpopt -fno-toplevel-reorder -mno-abicalls -fno-pic -fno-exceptions -fno-stack-protector -fno-zero-initialized-in-bss -Wno-builtin-declaration-mismatch -x c {extra_cflags}" @@ -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 @@ def build( ) # 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, diff --git a/ver/us/asm/bss.s b/ver/us/asm/bss.s index 7095d3fbe01..8517ac2c5f4 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 @@ -797,10 +799,7 @@ dlabel D_800B0CEC .space 4 dlabel wMapTexName -.space 4 - -dlabel D_800B0CF4 -.space 0x00000014 +.space 0x18 dlabel D_800B0D08 .space 4 @@ -1080,3 +1079,5 @@ dlabel D_800DC4F8 dlabel gCurrentBattlePtr .space 4 + +#endif diff --git a/ver/us/asm/bss2.s b/ver/us/asm/bss2.s index fae319824e4..773ffd9c7f0 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 7b99643372e..936065bab4b 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 0e8901a278f..d33796b1a4f 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 @@ -410,16 +412,7 @@ dlabel D_80154387 .space 1 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 @@ -725,7 +718,12 @@ dlabel CreateEntityVarArgBuffer .space 0x00000010 dlabel D_8015C7E0 -.space 0x7820 +.space 0x20 + +dlabel D_8015C800 +.space 0x7800 dlabel D_80164000 .space 0x32C60 + +#endif