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
+3 -3
View File
@@ -1550,8 +1550,8 @@ MakeObjectTemplateFromFieldObjectTemplate: @ 805E960
bx r0
thumb_func_end MakeObjectTemplateFromFieldObjectTemplate
thumb_func_start AddPseudoFieldObject
AddPseudoFieldObject: @ 805E978
thumb_func_start AddPseudoEventObject
AddPseudoEventObject: @ 805E978
push {r4-r6,lr}
sub sp, 0x1C
ldr r4, [sp, 0x2C]
@@ -1612,7 +1612,7 @@ _0805E9E4:
.align 2, 0
_0805E9F0: .4byte 0x0000ffff
_0805E9F4: .4byte gSprites
thumb_func_end AddPseudoFieldObject
thumb_func_end AddPseudoEventObject
thumb_func_start sprite_new
sprite_new: @ 805E9F8
+1 -1
View File
@@ -2789,7 +2789,7 @@ sub_809EF54: @ 809EF54
str r2, [sp]
movs r2, 0x38
movs r3, 0x25
bl AddPseudoFieldObject
bl AddPseudoEventObject
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
+1 -1
View File
@@ -7888,7 +7888,7 @@ _080588C6:
movs r2, 0
str r2, [sp]
movs r3, 0
bl AddPseudoFieldObject
bl AddPseudoEventObject
strb r0, [r4, 0x4]
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
+1 -1
View File
@@ -2017,7 +2017,7 @@ _0809BA56:
str r0, [sp]
adds r0, r4, 0
ldr r1, _0809BAF4 @ =SpriteCallbackDummy
bl AddPseudoFieldObject
bl AddPseudoEventObject
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
+9 -204
View File
@@ -5,201 +5,6 @@
.text
thumb_func_start sub_815AF5C
sub_815AF5C: @ 815AF5C
push {lr}
movs r0, 0xB6
lsls r0, 1
movs r1, 0x1
bl CheckBagHasItem
lsls r0, 24
cmp r0, 0
bne _0815AF84
ldr r0, _0815AF7C @ =gUnknown_203F450
ldr r0, [r0]
ldr r1, _0815AF80 @ =0x00004007
adds r0, r1
movs r1, 0xFF
strb r1, [r0]
b _0815AF96
.align 2, 0
_0815AF7C: .4byte gUnknown_203F450
_0815AF80: .4byte 0x00004007
_0815AF84:
ldr r0, _0815AF9C @ =gUnknown_8479380
ldr r1, _0815AFA0 @ =gTeachyTV_StaticResources+6
bl AddScrollIndicatorArrowPair
ldr r1, _0815AFA4 @ =gUnknown_203F450
ldr r1, [r1]
ldr r2, _0815AFA8 @ =0x00004007
adds r1, r2
strb r0, [r1]
_0815AF96:
pop {r0}
bx r0
.align 2, 0
_0815AF9C: .4byte gUnknown_8479380
_0815AFA0: .4byte gTeachyTV_StaticResources+6
_0815AFA4: .4byte gUnknown_203F450
_0815AFA8: .4byte 0x00004007
thumb_func_end sub_815AF5C
thumb_func_start sub_815AFAC
sub_815AFAC: @ 815AFAC
push {r4,lr}
ldr r4, _0815AFD0 @ =gUnknown_203F450
ldr r0, [r4]
ldr r2, _0815AFD4 @ =0x00004007
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, 0xFF
beq _0815AFCA
bl RemoveScrollIndicatorArrowPair
ldr r0, [r4]
ldr r1, _0815AFD4 @ =0x00004007
adds r0, r1
movs r1, 0xFF
strb r1, [r0]
_0815AFCA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0815AFD0: .4byte gUnknown_203F450
_0815AFD4: .4byte 0x00004007
thumb_func_end sub_815AFAC
thumb_func_start TeachyTvAudioByInput
TeachyTvAudioByInput: @ 815AFD8
push {lr}
lsls r1, 24
lsrs r1, 24
cmp r1, 0x1
beq _0815AFE8
movs r0, 0x5
bl PlaySE
_0815AFE8:
pop {r0}
bx r0
thumb_func_end TeachyTvAudioByInput
thumb_func_start TeachyTvInitIo
TeachyTvInitIo: @ 815AFEC
push {lr}
movs r0, 0x48
movs r1, 0x3F
bl SetGpuReg
movs r0, 0x4A
movs r1, 0x1F
bl SetGpuReg
movs r0, 0x50
movs r1, 0xCC
bl SetGpuReg
movs r0, 0x54
movs r1, 0x5
bl SetGpuReg
pop {r0}
bx r0
thumb_func_end TeachyTvInitIo
thumb_func_start TeachyTvSetupObj
TeachyTvSetupObj: @ 815B014
push {lr}
sub sp, 0x4
ldr r1, _0815B054 @ =SpriteCallbackDummy
movs r0, 0x8
str r0, [sp]
movs r0, 0x5A
movs r2, 0
movs r3, 0
bl AddPseudoFieldObject
lsls r0, 24
lsrs r0, 24
ldr r1, _0815B058 @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r1
ldrb r3, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
movs r3, 0x8
orrs r1, r3
strb r1, [r2, 0x5]
adds r2, 0x3E
ldrb r1, [r2]
movs r3, 0x4
orrs r1, r3
strb r1, [r2]
add sp, 0x4
pop {r1}
bx r1
.align 2, 0
_0815B054: .4byte SpriteCallbackDummy
_0815B058: .4byte gSprites
thumb_func_end TeachyTvSetupObj
thumb_func_start sub_815B05C
sub_815B05C: @ 815B05C
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r3, 24
lsrs r3, 24
ldr r5, _0815B090 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r5
strh r1, [r0, 0x24]
strh r2, [r0, 0x26]
adds r4, r0, 0
adds r4, 0x3E
ldrb r2, [r4]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r4]
adds r1, r3, 0
bl StartSpriteAnim
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0815B090: .4byte gSprites
thumb_func_end sub_815B05C
thumb_func_start sub_815B094
sub_815B094: @ 815B094
push {lr}
ldr r1, _0815B0AC @ =0x00000c64
movs r0, 0x44
bl SetGpuReg
ldr r1, _0815B0B0 @ =0x00001cd4
movs r0, 0x40
bl SetGpuReg
pop {r0}
bx r0
.align 2, 0
_0815B0AC: .4byte 0x00000c64
_0815B0B0: .4byte 0x00001cd4
thumb_func_end sub_815B094
thumb_func_start sub_815B0B4
sub_815B0B4: @ 815B0B4
push {lr}
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x40
movs r1, 0
bl SetGpuReg
pop {r0}
bx r0
thumb_func_end sub_815B0B4
thumb_func_start sub_815B0CC
sub_815B0CC: @ 815B0CC
push {r4-r7,lr}
@@ -261,7 +66,7 @@ TeachyTvConfigRboxAndObj: @ 815B118
adds r7, r0, r1
movs r0, 0x1
bl ClearWindowTilemap
bl sub_815B0B4
bl TeachyTvClearWindowRegs
ldr r0, _0815B198 @ =gTeachyTV_StaticResources
ldrb r0, [r0, 0x5]
cmp r0, 0
@@ -272,7 +77,7 @@ TeachyTvConfigRboxAndObj: @ 815B118
movs r1, 0x78
movs r2, 0x38
movs r3, 0
bl sub_815B05C
bl TeachyTvSetSpriteCoordsAndSwitchFrame
movs r4, 0xC0
lsls r4, 6
movs r0, 0x3
@@ -311,7 +116,7 @@ _0815B1A8:
movs r1, 0x78
movs r2, 0x38
movs r3, 0
bl sub_815B05C
bl TeachyTvSetSpriteCoordsAndSwitchFrame
_0815B1B8:
movs r0, 0
strh r0, [r5, 0x8]
@@ -517,12 +322,12 @@ _0815B33E:
adds r1, r2, 0x6
adds r2, 0x8
bl DestroyListMenu
bl sub_815B0B4
bl TeachyTvClearWindowRegs
movs r0, 0x1
bl ClearWindowTilemap
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
bl sub_815AFAC
bl TeachyTvRemoveScrollIndicatorArrowPair
strh r4, [r6, 0x6]
strh r4, [r6, 0x4]
ldr r1, _0815B384 @ =gTasks
@@ -578,7 +383,7 @@ sub_815B38C: @ 815B38C
movs r1, 0x8
movs r2, 0x38
movs r3, 0x7
bl sub_815B05C
bl TeachyTvSetSpriteCoordsAndSwitchFrame
movs r0, 0x2
bl schedule_bg_copy_tilemap_to_vram
movs r0, 0
@@ -752,7 +557,7 @@ sub_815B4EC: @ 815B4EC
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_815B05C
bl TeachyTvSetSpriteCoordsAndSwitchFrame
movs r0, 0
movs r1, 0xCC
bl FillWindowPixelBuffer
@@ -1320,8 +1125,8 @@ _0815B94C:
str r1, [r0]
movs r0, 0
bl PutWindowTilemap
bl sub_815AF5C
bl sub_815B094
bl TeachyTvSetupScrollIndicatorArrowPair
bl TeachyTvSetWindowRegs
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
movs r0, 0x3
+1 -1
View File
@@ -46,7 +46,7 @@ void FieldObjectClearAnim(struct MapObject *);
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
void SpawnFieldObjectsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8);
u8 AddPseudoEventObject(u16, void (*)(struct Sprite *), s16, s16, u8);
u8 show_sprite(u8, u8, u8);
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
+2 -2
View File
@@ -7,7 +7,7 @@
// Exported RAM declarations
struct ScrollIndicatorArrowPairTemplate
struct ScrollArrowsTemplate
{
u8 unk_00;
u8 unk_01;
@@ -25,7 +25,7 @@ struct ScrollIndicatorArrowPairTemplate
// Exported ROM declarations
u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
u8 AddScrollIndicatorArrowPair(const struct ScrollIndicatorArrowPairTemplate * template, u16 * a1);
u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
#endif //GUARD_MENU_INDICATORS_H
+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);
}