diff options
Diffstat (limited to 'arm9/src/GX_layers.c')
-rw-r--r-- | arm9/src/GX_layers.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c index f0ac9472..28147dbd 100644 --- a/arm9/src/GX_layers.c +++ b/arm9/src/GX_layers.c @@ -3,19 +3,19 @@ #include "gx.h" #include "main.h" - -struct GX_LayerData layer_data; +static u32 EngineA_DISPCNT_LayerMask; +static u32 EngineB_DISPCNT_LayerMask; THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks) { GX_ResetBankForBG(); GX_ResetBankForBGExtPltt(); GX_ResetBankForSubBG(); - FUN_020C6034(); + GX_ResetBankForSubBGExtPltt(); GX_ResetBankForOBJ(); GX_ResetBankForOBJExtPltt(); - FUN_020C605C(); GX_ResetBankForSubOBJ(); + GX_ResetBankForSubOBJExtPltt(); GX_ResetBankForTex(); GX_ResetBankForTexPltt(); @@ -34,80 +34,79 @@ THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks) THUMB_FUNC void GX_DisableEngineALayers() { - layer_data.EngineA_DISPCNT_LayerMask = 0; + EngineA_DISPCNT_LayerMask = 0; } THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle) { if (layer_toggle == GX_LAYER_TOGGLE_ON) { - if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) != 0) + if ((EngineA_DISPCNT_LayerMask & layer_mask) != 0) { return; } } else { - if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) == 0) + if ((EngineA_DISPCNT_LayerMask & layer_mask) == 0) { return; } } - reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineA_DISPCNT_LayerMask ^= layer_mask) << 8; + GX_SetVisiblePlane(EngineA_DISPCNT_LayerMask ^= layer_mask); } THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask) { - layer_data.EngineA_DISPCNT_LayerMask = layer_mask; - reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | layer_mask << 8; + EngineA_DISPCNT_LayerMask = layer_mask; + GX_SetVisiblePlane(layer_mask); } THUMB_FUNC void GX_DisableEngineBLayers() { - layer_data.EngineB_DISPCNT_LayerMask = 0; + EngineB_DISPCNT_LayerMask = 0; } THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle) { if (layer_toggle == GX_LAYER_TOGGLE_ON) { - if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) != 0) + if ((EngineB_DISPCNT_LayerMask & layer_mask) != 0) { return; } } else { - if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) == 0) + if ((EngineB_DISPCNT_LayerMask & layer_mask) == 0) { return; } } - reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineB_DISPCNT_LayerMask ^= layer_mask) << 8; + GXS_SetVisiblePlane(EngineB_DISPCNT_LayerMask ^= layer_mask); } THUMB_FUNC void GX_BothDispOn() { GX_DispOn(); - - reg_GXS_DB_DISPCNT |= 0x10000; + GXS_DispOn(); } THUMB_FUNC void GX_SwapDisplay() { if (gMain.unk65 == 0) { - reg_GX_POWCNT |= 0x8000; //send display A to lower screen + GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB); } else { - reg_GX_POWCNT &= 0xFFFF7FFF; // sned display A to upper screen + GX_SetDispSelect(GX_DISP_SELECT_SUB_MAIN); } } THUMB_FUNC u32 GX_GetEngineALayers() { - return layer_data.EngineA_DISPCNT_LayerMask; + return EngineA_DISPCNT_LayerMask; } |