diff options
author | KDSKardabox <bollygame94@gmail.com> | 2018-02-19 15:37:02 +0530 |
---|---|---|
committer | KDSKardabox <bollygame94@gmail.com> | 2018-02-19 15:37:02 +0530 |
commit | 9719e2fa22d98a5f97c8d213b285a19ac4e25c57 (patch) | |
tree | 814bbfea4d02f96566b9f08c9286be0ac2bbe21a /src/fossil_specials.c | |
parent | caaf41fd4997b0ec5e406c4590711d09ad6f3a66 (diff) |
Start decompile fossil_specials.s
Diffstat (limited to 'src/fossil_specials.c')
-rw-r--r-- | src/fossil_specials.c | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/src/fossil_specials.c b/src/fossil_specials.c new file mode 100644 index 000000000..c5539114d --- /dev/null +++ b/src/fossil_specials.c @@ -0,0 +1,129 @@ +#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; + } +} |