130 lines
3 KiB
C
130 lines
3 KiB
C
![]() |
#include "global.h"
|
||
|
#include "constants/flags.h"
|
||
|
#include "constants/songs.h"
|
||
|
#include "bg.h"
|
||
|
#include "event_data.h"
|
||
|
#include "field_camera.h"
|
||
|
#include "field_map_obj.h"
|
||
|
#include "fieldmap.h"
|
||
|
#include "fldeff_groundshake.h"
|
||
|
#include "global.fieldmap.h"
|
||
|
#include "gpu_regs.h"
|
||
|
#include "malloc.h"
|
||
|
#include "random.h"
|
||
|
#include "script.h"
|
||
|
#include "sound.h"
|
||
|
#include "sprite.h"
|
||
|
#include "task.h"
|
||
|
#include "window.h"
|
||
|
|
||
|
//struct StructUnknown_0203CF14
|
||
|
|
||
|
struct Struct8617DA4 {
|
||
|
u8 x;
|
||
|
u8 y;
|
||
|
u16 tileId;
|
||
|
};
|
||
|
|
||
|
|
||
|
extern const struct Struct8617DA4 gUnknown_08617DA4[];
|
||
|
extern const u8 gUnknown_08617274[]; //mirage tower
|
||
|
extern const u8 gUnknown_08617B94[]; //mirage tower tilemap
|
||
|
|
||
|
extern void * gUnknown_0203CF04;
|
||
|
extern void * gUnknown_0203CF08;
|
||
|
extern u16 (*gUnknown_0203CF14)[2];
|
||
|
|
||
|
/*static*/ void sub_81BED50(u8 taskId);
|
||
|
/*static*/ void sub_81BEBF4(u8 taskId);
|
||
|
/*static*/ void sub_81BF028(u8 taskId);
|
||
|
|
||
|
void sub_81BEB24(void)
|
||
|
{
|
||
|
u8 count;
|
||
|
for(count = 0; count <= 0x11; count++)
|
||
|
MapGridSetMetatileIdAt(gUnknown_08617DA4[count].x + 7, gUnknown_08617DA4[count].y + 7, gUnknown_08617DA4[count].tileId);
|
||
|
DrawWholeMapView();
|
||
|
}
|
||
|
|
||
|
void sub_81BEB54(void)
|
||
|
{
|
||
|
CreateTask(sub_81BED50, 0x9);
|
||
|
}
|
||
|
|
||
|
void sub_81BEB68(void)
|
||
|
{
|
||
|
CreateTask(sub_81BEBF4, 0x9);
|
||
|
}
|
||
|
|
||
|
void sub_81BEB7C(void)
|
||
|
{
|
||
|
CreateTask(sub_81BF028, 0x9);
|
||
|
}
|
||
|
|
||
|
void sub_81BEB90(void)
|
||
|
{
|
||
|
SetGpuReg(REG_OFFSET_BG0HOFS, (*gUnknown_0203CF14)[0]);
|
||
|
SetGpuReg(REG_OFFSET_BG0VOFS, (*gUnknown_0203CF14)[1]);
|
||
|
}
|
||
|
|
||
|
void sub_81BEBB4(u8 taskId)
|
||
|
{
|
||
|
if(!(gTasks[taskId].data[0]))
|
||
|
{
|
||
|
(*gUnknown_0203CF14)[0] = -(*gUnknown_0203CF14)[0];
|
||
|
gTasks[taskId].data[0] = 2;
|
||
|
sub_81BEB90();
|
||
|
}
|
||
|
else
|
||
|
gTasks[taskId].data[0]--;
|
||
|
}
|
||
|
|
||
|
void sub_81BEBF4(u8 taskId)
|
||
|
{
|
||
|
u8 zero;
|
||
|
|
||
|
switch(gTasks[taskId].data[0])
|
||
|
{
|
||
|
case 0:
|
||
|
FreeAllWindowBuffers();
|
||
|
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 2);
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 1:
|
||
|
gUnknown_0203CF04 = (u8 **) AllocZeroed(0x920);
|
||
|
gUnknown_0203CF08 = (u8 **) AllocZeroed(0x800);
|
||
|
ChangeBgX(0, 0, 0);
|
||
|
ChangeBgY(0, 0, 0);
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 2:
|
||
|
CpuSet(gUnknown_08617274, gUnknown_0203CF04, 0x490);
|
||
|
LoadBgTiles(0, gUnknown_0203CF04, 0x920, 0);
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 3:
|
||
|
SetBgTilemapBuffer(0, gUnknown_0203CF08);
|
||
|
CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
|
||
|
CopyBgTilemapBufferToVram(0);
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 4:
|
||
|
ShowBg(0);
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 5:
|
||
|
sub_81BEB24();
|
||
|
gTasks[taskId].data[0]++;
|
||
|
break;
|
||
|
case 6:
|
||
|
gUnknown_0203CF14 = (u16(*)[2]) Alloc(4);
|
||
|
zero = 0;
|
||
|
(*gUnknown_0203CF14)[0] = 2;
|
||
|
(*gUnknown_0203CF14)[1] = zero;
|
||
|
CreateTask(sub_81BEBB4, 0xA);
|
||
|
DestroyTask(taskId);
|
||
|
EnableBothScriptContexts();
|
||
|
break;
|
||
|
}
|
||
|
}
|