some more functions

This commit is contained in:
jiangzhengwenjz
2019-06-02 15:25:04 +08:00
parent f7a81f2aa7
commit 0a13397b85
10 changed files with 108 additions and 227 deletions
+1 -1
View File
@@ -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,
+2 -2
View File
@@ -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
};
+87 -11
View File
@@ -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);
}
}
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);
}