mirror of
https://github.com/zeldaret/tmc
synced 2026-05-27 16:14:05 -04:00
536 lines
17 KiB
C
536 lines
17 KiB
C
/**
|
|
* @file templeOfDropletsManager.c
|
|
* @ingroup Managers
|
|
*
|
|
* @brief Various managers in Temple of Droplets, e.g. Light rays
|
|
*/
|
|
#include "manager/templeOfDropletsManager.h"
|
|
#include "enemy.h"
|
|
#include "flags.h"
|
|
#include "functions.h"
|
|
#include "object.h"
|
|
#include "screen.h"
|
|
#include "sound.h"
|
|
#include "structures.h"
|
|
|
|
static const u16 gUnk_081085B8[] = { 0x1008, 0x1007, 0x1006, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
|
|
0x1008, 0x1007, 0x1006, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009 };
|
|
|
|
void TempleOfDropletsManager_Type0(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type5(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type6(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type7(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1_Action1(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1_Action2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1_Action3(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1_Action4(TempleOfDropletsManager*);
|
|
void sub_0805A89C(TempleOfDropletsManager*);
|
|
void sub_0805A8EC(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type2_Action4(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type2_Action3(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type2_Action2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type1_Action1(TempleOfDropletsManager*);
|
|
void sub_0805AAF0(u32);
|
|
void sub_0805AA58(TempleOfDropletsManager*);
|
|
void sub_0805A9CC(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4_Action1(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4_Action2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4_Action3(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4_Action4(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type4_Action5(TempleOfDropletsManager*);
|
|
void sub_0805A68C(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type6_Action3(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type6_Action2(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type6_Action1(TempleOfDropletsManager*);
|
|
void TempleOfDropletsManager_Type6_Init(TempleOfDropletsManager*);
|
|
|
|
void TempleOfDropletsManager_Main(TempleOfDropletsManager* this) {
|
|
static void (*const TempleOfDropletsManager_Types[])(TempleOfDropletsManager*) = {
|
|
TempleOfDropletsManager_Type0, TempleOfDropletsManager_Type1, TempleOfDropletsManager_Type2,
|
|
TempleOfDropletsManager_Type2, TempleOfDropletsManager_Type4, TempleOfDropletsManager_Type5,
|
|
TempleOfDropletsManager_Type6, TempleOfDropletsManager_Type7,
|
|
};
|
|
TempleOfDropletsManager_Types[super->type](this);
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type0(TempleOfDropletsManager* this) {
|
|
if (super->action == 0) {
|
|
sub_0805A89C(this);
|
|
if (!CheckLocalFlag(this->unk_3e)) {
|
|
this->unk_23 = 1;
|
|
} else {
|
|
this->unk_23 = 2;
|
|
}
|
|
sub_0805AAF0(this->unk_23);
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
}
|
|
sub_0805A8EC(this);
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type1(TempleOfDropletsManager* this) {
|
|
static void (*const TempleOfDropletsManager_Type1_Actions[])(TempleOfDropletsManager*) = {
|
|
NULL,
|
|
TempleOfDropletsManager_Type1_Action1,
|
|
TempleOfDropletsManager_Type1_Action2,
|
|
TempleOfDropletsManager_Type1_Action3,
|
|
TempleOfDropletsManager_Type1_Action4,
|
|
};
|
|
if (super->action == 0) {
|
|
sub_0805A89C(this);
|
|
this->unk_23 = 1;
|
|
sub_0805AAF0(1);
|
|
if (!CheckLocalFlag(this->unk_3e)) {
|
|
super->action = 1;
|
|
gScreen.lcd.displayControl &= 0xB7FF;
|
|
} else {
|
|
if (CheckLocalFlag(0x48)) {
|
|
super->action = 4;
|
|
} else {
|
|
super->action = 3;
|
|
}
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
}
|
|
} else {
|
|
TempleOfDropletsManager_Type1_Actions[super->action](this);
|
|
}
|
|
if (super->next) {
|
|
sub_0805A8EC(this);
|
|
}
|
|
}
|
|
|
|
extern Entity gUnk_080E4C08;
|
|
|
|
void TempleOfDropletsManager_Type1_Action2(TempleOfDropletsManager* this) {
|
|
if (super->subAction != 0) {
|
|
LoadRoomEntityList((EntityData*)&gUnk_080E4C08);
|
|
super->action = 3;
|
|
SoundReq(SONG_STOP_BGM);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type1_Action3(TempleOfDropletsManager* this) {
|
|
Entity* ent;
|
|
if ((ent = FindEntityByID(ENEMY, CHUCHU_BOSS, 0x4))) {
|
|
if (ent->type != 4) {
|
|
return;
|
|
}
|
|
}
|
|
SetLocalFlag(LV1_16_1STEND);
|
|
ClearRoomFlag(0);
|
|
gScreen.lcd.displayControl &= ~(DISPCNT_WIN1_ON | DISPCNT_BG3_ON);
|
|
DeleteThisEntity();
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type1_Action4(TempleOfDropletsManager* this) {
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type2(TempleOfDropletsManager* this) {
|
|
static void (*const TempleOfDropletsManager_Type2_Actions[])(TempleOfDropletsManager*) = {
|
|
NULL,
|
|
TempleOfDropletsManager_Type1_Action1,
|
|
TempleOfDropletsManager_Type2_Action2,
|
|
TempleOfDropletsManager_Type2_Action3,
|
|
TempleOfDropletsManager_Type2_Action4,
|
|
};
|
|
if (super->action == 0) {
|
|
sub_0805A89C(this);
|
|
if (super->type == 3) {
|
|
this->unk_23 = 2;
|
|
} else {
|
|
this->unk_23 = 1;
|
|
}
|
|
sub_0805AAF0(this->unk_23);
|
|
if (!CheckLocalFlag(this->unk_3e)) {
|
|
ClearFlag(this->unk_3c);
|
|
super->action = 1;
|
|
gScreen.lcd.displayControl &= ~(DISPCNT_WIN1_ON | DISPCNT_BG3_ON);
|
|
} else {
|
|
SetFlag(this->unk_3c);
|
|
super->action = 3;
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
}
|
|
} else {
|
|
TempleOfDropletsManager_Type2_Actions[super->action](this);
|
|
}
|
|
sub_0805A8EC(this);
|
|
}
|
|
|
|
void sub_0805A4CC(TempleOfDropletsManager*, u32);
|
|
|
|
void TempleOfDropletsManager_Type1_Action1(TempleOfDropletsManager* this) {
|
|
if (CheckLocalFlag(this->unk_3e)) {
|
|
super->action = 2;
|
|
sub_0805A4CC(this, 0);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type2_Action2(TempleOfDropletsManager* this) {
|
|
if (super->subAction != 0) {
|
|
super->action = 3;
|
|
SetFlag(this->unk_3c);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type2_Action3(TempleOfDropletsManager* this) {
|
|
if (!CheckLocalFlag(this->unk_3e)) {
|
|
super->action = 4;
|
|
sub_0805A4CC(this, 1);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type2_Action4(TempleOfDropletsManager* this) {
|
|
if (super->subAction != 0) {
|
|
super->action = 1;
|
|
ClearFlag(this->unk_3c);
|
|
}
|
|
}
|
|
|
|
void sub_0805A4CC(TempleOfDropletsManager* this, u32 unk_0) {
|
|
Entity* tmp;
|
|
tmp = CreateObject(LIGHT_RAY, unk_0, 0);
|
|
if (tmp) {
|
|
tmp->x.HALF.HI = this->unk_38 + gRoomControls.origin_x;
|
|
tmp->y.HALF.HI = this->unk_3a + gRoomControls.origin_y - 0x30;
|
|
tmp->parent = (Entity*)this;
|
|
super->subAction = 0;
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4(TempleOfDropletsManager* this) {
|
|
static void (*const TempleOfDropletsManager_Type4_Actions[])(TempleOfDropletsManager*) = {
|
|
NULL,
|
|
TempleOfDropletsManager_Type4_Action1,
|
|
TempleOfDropletsManager_Type4_Action2,
|
|
TempleOfDropletsManager_Type4_Action3,
|
|
TempleOfDropletsManager_Type4_Action4,
|
|
TempleOfDropletsManager_Type4_Action5,
|
|
};
|
|
if (super->action == 0) {
|
|
sub_0805A89C(this);
|
|
this->unk_28 = 0;
|
|
if (CheckLocalFlag(0x36)) {
|
|
this->unk_23 = 3;
|
|
super->action = 5;
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
} else {
|
|
if (CheckLocalFlag(0x34)) {
|
|
this->unk_23 = 4;
|
|
super->action = 3;
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
} else {
|
|
this->unk_23 = 4;
|
|
super->action = 1;
|
|
gScreen.lcd.displayControl &= ~(DISPCNT_WIN1_ON | DISPCNT_BG3_ON);
|
|
}
|
|
}
|
|
sub_0805AAF0(this->unk_23);
|
|
} else {
|
|
TempleOfDropletsManager_Type4_Actions[super->action](this);
|
|
}
|
|
sub_0805AA58(this);
|
|
sub_0805A9CC(this);
|
|
if (gRoomControls.reload_flags == 1) {
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON;
|
|
super->subAction = 1;
|
|
return;
|
|
}
|
|
if (super->subAction == 0)
|
|
return;
|
|
super->subAction = 0;
|
|
if (this->unk_20 == gRoomControls.room)
|
|
return;
|
|
gScreen.lcd.displayControl &= ~(DISPCNT_WIN1_ON | DISPCNT_BG3_ON);
|
|
DeleteThisEntity();
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4_Action1(TempleOfDropletsManager* this) {
|
|
if (CheckLocalFlag(0x34)) {
|
|
super->action = 2;
|
|
sub_0805A4CC(this, 2);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4_Action2(TempleOfDropletsManager* this) {
|
|
if (super->subAction != 0) {
|
|
super->action = 3;
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4_Action3(TempleOfDropletsManager* this) {
|
|
if (CheckLocalFlag(0x36)) {
|
|
super->action = 4;
|
|
this->unk_23 = 3;
|
|
sub_0805A4CC(this, 3);
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4_Action4(TempleOfDropletsManager* this) {
|
|
if (super->subAction != 0) {
|
|
super->action = 5;
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type4_Action5(TempleOfDropletsManager* this) {
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type5(TempleOfDropletsManager* this) {
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type6(TempleOfDropletsManager* this) {
|
|
static void (*const TempleOfDropletsManager_Type6_Actions[])(TempleOfDropletsManager*) = {
|
|
TempleOfDropletsManager_Type6_Init,
|
|
TempleOfDropletsManager_Type6_Action1,
|
|
TempleOfDropletsManager_Type6_Action2,
|
|
TempleOfDropletsManager_Type6_Action3,
|
|
};
|
|
TempleOfDropletsManager_Type6_Actions[super->action](this);
|
|
sub_0805A8EC(this);
|
|
sub_0805A68C(this);
|
|
}
|
|
|
|
void sub_0805A68C(TempleOfDropletsManager* this) {
|
|
if (CheckPlayerProximity(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) {
|
|
if (this->unk_2c <= 0x1007) {
|
|
gScreen.controls.alphaBlend = ++this->unk_2c;
|
|
this->unk_22 = 0;
|
|
}
|
|
} else {
|
|
if (this->unk_2c > 0x1000) {
|
|
this->unk_2c--;
|
|
}
|
|
gScreen.controls.alphaBlend = this->unk_2c;
|
|
}
|
|
}
|
|
|
|
u32 sub_0805A73C(TempleOfDropletsManager*);
|
|
|
|
void TempleOfDropletsManager_Type6_Init(TempleOfDropletsManager* this) {
|
|
u16 tmp;
|
|
sub_0805A89C(this);
|
|
this->unk_23 = 0;
|
|
sub_0805AAF0(0);
|
|
this->unk_38 += gRoomControls.origin_x;
|
|
this->unk_3a += gRoomControls.origin_y;
|
|
if (!sub_0805A73C(this)) {
|
|
super->action++;
|
|
}
|
|
this->unk_2c = 0x1000;
|
|
tmp = gScreen.lcd.displayControl | DISPCNT_WIN1_ON | DISPCNT_BG3_ON;
|
|
gScreen.lcd.displayControl = tmp;
|
|
}
|
|
|
|
u32 sub_0805A73C(TempleOfDropletsManager* this) {
|
|
return CheckPlayerProximity(this->unk_38 - 6, this->unk_3a - 6, 12, 12);
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type6_Action1(TempleOfDropletsManager* this) {
|
|
if (!sub_0805A73C(this)) {
|
|
super->action++;
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type6_Action2(TempleOfDropletsManager* this) {
|
|
if ((gPlayerEntity.base.health != 0) && (gPlayerEntity.base.z.HALF.HI == 0) && (!gPlayerState.item)) {
|
|
switch (gPlayerState.framestate_last) {
|
|
case PL_STATE_IDLE:
|
|
case PL_STATE_WALK:
|
|
if (sub_0805A73C(this)) {
|
|
super->action++;
|
|
SnapToTile(&gPlayerEntity.base);
|
|
gPlayerEntity.base.animationState = 4;
|
|
RequestPriorityDuration((Entity*)this, 600);
|
|
SetPlayerControl(0xFF);
|
|
gPauseMenuOptions.disabled = 1;
|
|
gRoomControls.camera_target = NULL;
|
|
PutAwayItems();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type6_Action3(TempleOfDropletsManager* this) {
|
|
if (gPlayerState.queued_action != PLAYER_WARP) {
|
|
gPlayerState.queued_action = PLAYER_WARP;
|
|
gPlayerState.field_0x38 = 0;
|
|
gPlayerState.field_0x39 = 0;
|
|
}
|
|
}
|
|
|
|
void TempleOfDropletsManager_Type7(TempleOfDropletsManager* this) {
|
|
switch (super->action) {
|
|
case 0:
|
|
if (CheckLocalFlag(this->unk_3e)) {
|
|
super->action = 1;
|
|
} else {
|
|
super->action = 2;
|
|
}
|
|
super->subAction = 1;
|
|
super->flags |= ENT_PERSIST;
|
|
SetEntityPriority((Entity*)this, PRIO_PLAYER_EVENT);
|
|
break;
|
|
case 1:
|
|
if (CheckLocalFlag(this->unk_3e))
|
|
break;
|
|
super->action = 2;
|
|
sub_0805A4CC(this, 4);
|
|
break;
|
|
case 2:
|
|
if (super->subAction != 0) {
|
|
super->action = 3;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (!CheckLocalFlag(this->unk_3e))
|
|
break;
|
|
super->action = 4;
|
|
sub_0805A4CC(this, 4);
|
|
break;
|
|
case 4:
|
|
if (super->subAction != 0) {
|
|
super->action = 1;
|
|
}
|
|
break;
|
|
default:
|
|
DeleteThisEntity();
|
|
}
|
|
}
|
|
|
|
void sub_0805AAC8(TempleOfDropletsManager*);
|
|
|
|
void sub_0805A89C(TempleOfDropletsManager* this) {
|
|
SetEntityPriority((Entity*)this, PRIO_PLAYER_EVENT);
|
|
super->action = 1;
|
|
super->flags |= ENT_PERSIST;
|
|
super->timer = 8;
|
|
super->subtimer = 16;
|
|
this->unk_21 = 0;
|
|
this->unk_22 = 0;
|
|
this->unk_20 = gRoomControls.room;
|
|
this->unk_24 = gRoomControls.origin_x;
|
|
this->unk_26 = gRoomControls.origin_y;
|
|
RegisterTransitionManager(this, sub_0805AAC8, 0);
|
|
}
|
|
|
|
void sub_0805A94C(TempleOfDropletsManager* this);
|
|
|
|
void sub_0805A8EC(TempleOfDropletsManager* this) {
|
|
sub_0805AA58(this);
|
|
sub_0805A94C(this);
|
|
if (gRoomControls.reload_flags == 1) {
|
|
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON;
|
|
super->subAction = 1;
|
|
} else {
|
|
if (super->subAction == 0)
|
|
return;
|
|
super->subAction = 0;
|
|
if (this->unk_20 == gRoomControls.room)
|
|
return;
|
|
gScreen.lcd.displayControl &= ~(DISPCNT_WIN1_ON | DISPCNT_BG3_ON);
|
|
DeleteThisEntity();
|
|
}
|
|
}
|
|
|
|
void sub_0805A94C(TempleOfDropletsManager* this) {
|
|
int tmp1, tmp2;
|
|
gScreen.bg3.xOffset = gRoomControls.scroll_x - this->unk_24 + this->unk_34;
|
|
gScreen.bg3.yOffset = gRoomControls.scroll_y - this->unk_26 + this->unk_36;
|
|
tmp1 = -gScreen.bg3.xOffset;
|
|
tmp2 = tmp1 + 0x100;
|
|
if (tmp1 < 0)
|
|
tmp1 = 0;
|
|
if (tmp1 > DISPLAY_WIDTH)
|
|
tmp1 = DISPLAY_WIDTH;
|
|
if (tmp2 < 0)
|
|
tmp2 = 0;
|
|
if (tmp2 > DISPLAY_WIDTH)
|
|
tmp2 = DISPLAY_WIDTH;
|
|
gScreen.controls.window1HorizontalDimensions = (tmp1 << 8 | tmp2);
|
|
tmp1 = -gScreen.bg3.yOffset;
|
|
tmp2 = tmp1 + 0x100;
|
|
if (tmp1 < 0)
|
|
tmp1 = 0;
|
|
if (tmp1 > DISPLAY_HEIGHT)
|
|
tmp1 = DISPLAY_HEIGHT;
|
|
if (tmp2 < 0)
|
|
tmp2 = 0;
|
|
if (tmp2 > DISPLAY_HEIGHT)
|
|
tmp2 = DISPLAY_HEIGHT;
|
|
gScreen.controls.window1VerticalDimensions = (tmp1 << 8 | tmp2);
|
|
}
|
|
|
|
void sub_0805A9CC(TempleOfDropletsManager* this) {
|
|
int tmp1, tmp2;
|
|
void* tmp3;
|
|
gScreen.bg3.xOffset = gRoomControls.scroll_x - this->unk_24 + this->unk_34;
|
|
tmp1 = -gScreen.bg3.xOffset;
|
|
tmp2 = tmp1 + 0x100;
|
|
if (tmp1 < 0)
|
|
tmp1 = 0;
|
|
if (tmp1 > DISPLAY_WIDTH)
|
|
tmp1 = DISPLAY_WIDTH;
|
|
if (tmp2 < 0)
|
|
tmp2 = 0;
|
|
if (tmp2 > DISPLAY_WIDTH)
|
|
tmp2 = DISPLAY_WIDTH;
|
|
gScreen.controls.window1HorizontalDimensions = tmp1 << 8 | tmp2;
|
|
tmp1 = gRoomControls.scroll_y - this->unk_26 + this->unk_36;
|
|
gScreen.bg3.yOffset = tmp1 & 0x3F;
|
|
tmp3 = (&gBG3Buffer[((tmp1 / 0x40) << 8)]);
|
|
gScreen.bg3.tilemap = (u32*)tmp3;
|
|
gScreen.controls.window1VerticalDimensions = DISPLAY_HEIGHT;
|
|
if (this->unk_28 == tmp3)
|
|
return;
|
|
this->unk_28 = tmp3;
|
|
gScreen.bg3.updated = 1;
|
|
}
|
|
|
|
extern struct { u8 unk_00[0x20]; } gUnk_085A97A0[];
|
|
|
|
void sub_0805AA58(TempleOfDropletsManager* this) {
|
|
if (--super->timer == 0) {
|
|
super->timer = 8;
|
|
this->unk_21++;
|
|
this->unk_21 &= 3;
|
|
LoadPalettes(gUnk_085A97A0[this->unk_21].unk_00, 5, 1);
|
|
}
|
|
if (--super->subtimer == 0) {
|
|
super->subtimer = 16;
|
|
this->unk_22++;
|
|
this->unk_22 &= 0xF;
|
|
gScreen.controls.alphaBlend = gUnk_081085B8[this->unk_22];
|
|
}
|
|
}
|
|
|
|
void sub_0805AAC8(TempleOfDropletsManager* this) {
|
|
sub_0805AAF0(this->unk_23);
|
|
TempleOfDropletsManager_Main(this);
|
|
}
|
|
|
|
void sub_0805AADC(u32 unk0) {
|
|
static const u16 gUnk_08108648[] = {
|
|
0x31, 0x32, 0x33, 0x34, 0x35, 0,
|
|
};
|
|
LoadGfxGroup(gUnk_08108648[unk0]);
|
|
}
|
|
|
|
void sub_0805AAF0(u32 unk0) {
|
|
sub_0805AADC(unk0);
|
|
gScreen.controls.layerFXControl = 0x3E48;
|
|
gScreen.controls.alphaBlend = BLDALPHA_BLEND(8, 16);
|
|
gScreen.bg3.control = BGCNT_SCREENBASE(30) | BGCNT_CHARBASE(1);
|
|
gScreen.bg3.tilemap = &gBG3Buffer;
|
|
gScreen.bg3.xOffset = 0;
|
|
gScreen.bg3.yOffset = 0;
|
|
gScreen.bg3.updated = 1;
|
|
gScreen.controls.windowInsideControl =
|
|
WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN0_CLR | WININ_WIN1_CLR;
|
|
gScreen.controls.windowOutsideControl =
|
|
WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
|
|
gScreen.controls.window1HorizontalDimensions = DISPLAY_WIDTH;
|
|
gScreen.controls.window1VerticalDimensions = DISPLAY_HEIGHT;
|
|
}
|