summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-02 15:25:04 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-02 15:25:04 +0800
commit0a13397b8586bb4147d9e35c80a3c5aebff41d5b (patch)
tree5a198d4f0ce765a9ab326b8fa7c8fa4b8112e099 /src
parentf7a81f2aa757fedc861d94deb363e1e3c460e5d3 (diff)
some more functions
Diffstat (limited to 'src')
-rw-r--r--src/fame_checker.c2
-rw-r--r--src/mevent_8145654.c4
-rw-r--r--src/teachy_tv.c98
3 files changed, 90 insertions, 14 deletions
diff --git a/src/fame_checker.c b/src/fame_checker.c
index 4b9feb45b..aff9733e9 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -1400,7 +1400,7 @@ static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId)
static void FC_CreateScrollIndicatorArrowPair(void)
{
- struct ScrollIndicatorArrowPairTemplate template = {
+ struct ScrollArrowsTemplate template = {
2,
40,
26,
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index af3024bff..00936f9f1 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -460,7 +460,7 @@ struct UnkStruct_203F3CC
/*01cc*/ u8 filler_01CC[2];
/*01ce*/ u8 unk_01CE[41];
/*01f7*/ u8 unk_01F7[10][41];
- /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394;
+ /*0394*/ struct ScrollArrowsTemplate unk_0394;
/*03a4*/ u8 buffer_03A4[0x1000];
};
@@ -478,7 +478,7 @@ const struct WindowTemplate gUnknown_8468040[] = {
{0, 1, 0, 28, 3, 15, 0x000},
{2, 1, 3, 28, 20, 15, 0x000}
};
-const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = {
+const struct ScrollArrowsTemplate gUnknown_8468050 = {
0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000
};
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index c20e7b419..c62b6d6f1 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -15,6 +15,8 @@
#include "window.h"
#include "list_menu.h"
#include "item.h"
+#include "menu_indicators.h"
+#include "field_map_obj.h"
#include "constants/songs.h"
#include "constants/items.h"
@@ -37,12 +39,12 @@ void sub_815ABC4(u8 mode, void (*cb)());
void CB2_ReturnToTeachyTV();
extern void sub_815AC20();
void TeachyTvCreateAndRenderRbox();
-extern void TeachyTvInitIo();
-extern u8 TeachyTvSetupObj();
+void TeachyTvInitIo();
+u8 TeachyTvSetupObjEventAndOam();
extern void TeachyTvConfigRboxAndObj(u8);
u8 TeachyTvSetupWindow();
-extern void sub_815AF5C();
-extern void sub_815B094();
+void TeachyTvSetupScrollIndicatorArrowPair();
+void TeachyTvSetWindowRegs();
void TeachyTvSetupBg();
void TeachyTvLoadGraphic();
extern void TeachyTvTaskFunction(u8);
@@ -148,7 +150,7 @@ void C2TeachyTvMainCallback()
if ( gTeachyTV_StaticResources.mode == 2 )
{
taskId = CreateTask(TeachyTvTaskFunction, 0);
- gTasks[taskId].data[1] = TeachyTvSetupObj();
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
TeachyTvConfigRboxAndObj(taskId);
}
else
@@ -156,10 +158,10 @@ void C2TeachyTvMainCallback()
taskId = CreateTask(sub_815B2C0, 0);
x = (u32)TeachyTvSetupWindow();
gTasks[taskId].data[0] = (x << 24) >> 24;
- gTasks[taskId].data[1] = TeachyTvSetupObj();
- sub_815AF5C();
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
+ TeachyTvSetupScrollIndicatorArrowPair();
PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
- sub_815B094();
+ TeachyTvSetWindowRegs();
}
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1u);
@@ -219,7 +221,7 @@ void TeachyTvCreateAndRenderRbox()
extern struct ListMenuTemplate gUnknown_8479368;
extern struct ListMenuItem gUnknown_8479340;
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
-extern void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
+void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
u8 TeachyTvSetupWindow()
{
@@ -228,7 +230,7 @@ u8 TeachyTvSetupWindow()
gMultiuseListMenuTemplate.windowId = 1;
gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u);
- if ( !(v0 << 24) )
+ if ( !(hasItem << 24) )
{
gMultiuseListMenuTemplate.items = &gUnknown_8479340;
gMultiuseListMenuTemplate.totalItems = 5;
@@ -239,4 +241,78 @@ u8 TeachyTvSetupWindow()
&gMultiuseListMenuTemplate,
gTeachyTV_StaticResources.scrollOffset,
gTeachyTV_StaticResources.selectedRow);
-} \ No newline at end of file
+}
+
+extern const struct ScrollArrowsTemplate gUnknown_8479380;
+
+void TeachyTvSetupScrollIndicatorArrowPair()
+{
+ int hasItem;
+ hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u);
+ if ( ! hasItem << 24 ) {
+ u8 * temp = (u8 *)gUnknown_203F450;
+ *((u8 *)temp + 0x4007) = 0xFF;
+ }
+
+ else {
+ u8 *temp, res;
+ res = AddScrollIndicatorArrowPair(
+ &gUnknown_8479380,
+ &(gTeachyTV_StaticResources.scrollOffset));
+ temp = (u8 *)gUnknown_203F450;
+ *((u8 *)temp + 0x4007) = res;
+ }
+}
+
+void TeachyTvRemoveScrollIndicatorArrowPair()
+{
+ u8 *temp = ((u8*)gUnknown_203F450 + 0x4007);
+ if ( *temp != 0xFF )
+ {
+ RemoveScrollIndicatorArrowPair(*temp);
+ *((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
+ }
+}
+
+void TeachyTvAudioByInput(s32 notUsed, bool8 play, struct ListMenu *notUsedAlt)
+{
+ if ( play != 1 )
+ PlaySE(SE_SELECT);
+}
+
+void TeachyTvInitIo()
+{
+ SetGpuReg(0x48u, 0x3Fu);
+ SetGpuReg(0x4Au, 0x1Fu);
+ SetGpuReg(0x50u, 0xCCu);
+ SetGpuReg(0x54u, 5u);
+}
+
+u8 TeachyTvSetupObjEventAndOam()
+{
+ u8 temp = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8);
+ gSprites[temp].oam.priority = 2;
+ gSprites[temp].invisible = 1;
+ return temp;
+}
+
+void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
+{
+ gSprites[objId].pos2.x = x;
+ gSprites[objId].pos2.y = y;
+ gSprites[objId].invisible = 0;
+ StartSpriteAnim(&gSprites[objId], frame);
+}
+
+void TeachyTvSetWindowRegs()
+{
+ SetGpuReg(0x44u, 0xC64u);
+ SetGpuReg(0x40u, 0x1CD4u);
+}
+
+void TeachyTvClearWindowRegs()
+{
+ SetGpuReg(0x44u, 0);
+ SetGpuReg(0x40u, 0);
+}
+