sub_815AEE8
This commit is contained in:
+4
-60
@@ -5,62 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_815AEE8
|
|
||||||
sub_815AEE8: @ 815AEE8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r4, _0815AF48 @ =gMultiuseListMenuTemplate
|
|
||||||
adds r1, r4, 0
|
|
||||||
ldr r0, _0815AF4C @ =gUnknown_8479368
|
|
||||||
ldm r0!, {r2,r3,r5}
|
|
||||||
stm r1!, {r2,r3,r5}
|
|
||||||
ldm r0!, {r2,r3,r5}
|
|
||||||
stm r1!, {r2,r3,r5}
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r4, 0x10]
|
|
||||||
ldr r0, _0815AF50 @ =sub_815AFD8
|
|
||||||
str r0, [r4, 0x4]
|
|
||||||
movs r0, 0xB6
|
|
||||||
lsls r0, 1
|
|
||||||
movs r1, 0x1
|
|
||||||
bl CheckBagHasItem
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0815AF30
|
|
||||||
ldr r0, _0815AF54 @ =gUnknown_8479340
|
|
||||||
str r0, [r4]
|
|
||||||
movs r0, 0x5
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
strh r0, [r4, 0xE]
|
|
||||||
ldrb r2, [r4, 0x14]
|
|
||||||
lsls r1, r2, 28
|
|
||||||
lsrs r1, 28
|
|
||||||
adds r1, 0x8
|
|
||||||
movs r0, 0xF
|
|
||||||
ands r1, r0
|
|
||||||
movs r0, 0x10
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, 0x14]
|
|
||||||
_0815AF30:
|
|
||||||
ldr r0, _0815AF58 @ =gTeachyTV_StaticResources
|
|
||||||
ldrh r1, [r0, 0x6]
|
|
||||||
ldrh r2, [r0, 0x8]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ListMenuInit
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0815AF48: .4byte gMultiuseListMenuTemplate
|
|
||||||
_0815AF4C: .4byte gUnknown_8479368
|
|
||||||
_0815AF50: .4byte sub_815AFD8
|
|
||||||
_0815AF54: .4byte gUnknown_8479340
|
|
||||||
_0815AF58: .4byte gTeachyTV_StaticResources
|
|
||||||
thumb_func_end sub_815AEE8
|
|
||||||
|
|
||||||
thumb_func_start sub_815AF5C
|
thumb_func_start sub_815AF5C
|
||||||
sub_815AF5C: @ 815AF5C
|
sub_815AF5C: @ 815AF5C
|
||||||
push {lr}
|
push {lr}
|
||||||
@@ -125,8 +69,8 @@ _0815AFD0: .4byte gUnknown_203F450
|
|||||||
_0815AFD4: .4byte 0x00004007
|
_0815AFD4: .4byte 0x00004007
|
||||||
thumb_func_end sub_815AFAC
|
thumb_func_end sub_815AFAC
|
||||||
|
|
||||||
thumb_func_start sub_815AFD8
|
thumb_func_start TeachyTvAudioByInput
|
||||||
sub_815AFD8: @ 815AFD8
|
TeachyTvAudioByInput: @ 815AFD8
|
||||||
push {lr}
|
push {lr}
|
||||||
lsls r1, 24
|
lsls r1, 24
|
||||||
lsrs r1, 24
|
lsrs r1, 24
|
||||||
@@ -137,7 +81,7 @@ sub_815AFD8: @ 815AFD8
|
|||||||
_0815AFE8:
|
_0815AFE8:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
thumb_func_end sub_815AFD8
|
thumb_func_end TeachyTvAudioByInput
|
||||||
|
|
||||||
thumb_func_start TeachyTvInitIo
|
thumb_func_start TeachyTvInitIo
|
||||||
TeachyTvInitIo: @ 815AFEC
|
TeachyTvInitIo: @ 815AFEC
|
||||||
@@ -1365,7 +1309,7 @@ _0815B94C:
|
|||||||
movs r4, 0
|
movs r4, 0
|
||||||
strh r4, [r5, 0x4]
|
strh r4, [r5, 0x4]
|
||||||
strh r4, [r5, 0x6]
|
strh r4, [r5, 0x6]
|
||||||
bl sub_815AEE8
|
bl TeachyTvSetupWindow
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
strh r0, [r5]
|
strh r0, [r5]
|
||||||
|
|||||||
+32
-7
@@ -22,8 +22,8 @@ typedef struct {
|
|||||||
void (*callback)();
|
void (*callback)();
|
||||||
u8 mode;
|
u8 mode;
|
||||||
u8 param1;
|
u8 param1;
|
||||||
u16 param2;
|
u16 scrollOffset;
|
||||||
u16 param3;
|
u16 selectedRow;
|
||||||
u8 param4;
|
u8 param4;
|
||||||
u8 filler;
|
u8 filler;
|
||||||
} TeachyTv_s;
|
} TeachyTv_s;
|
||||||
@@ -40,7 +40,7 @@ void TeachyTvCreateAndRenderRbox();
|
|||||||
extern void TeachyTvInitIo();
|
extern void TeachyTvInitIo();
|
||||||
extern u8 TeachyTvSetupObj();
|
extern u8 TeachyTvSetupObj();
|
||||||
extern void TeachyTvConfigRboxAndObj(u8);
|
extern void TeachyTvConfigRboxAndObj(u8);
|
||||||
extern u8 sub_815AEE8();
|
u8 TeachyTvSetupWindow();
|
||||||
extern void sub_815AF5C();
|
extern void sub_815AF5C();
|
||||||
extern void sub_815B094();
|
extern void sub_815B094();
|
||||||
void TeachyTvSetupBg();
|
void TeachyTvSetupBg();
|
||||||
@@ -79,14 +79,13 @@ void VblankHandlerTeachyTv()
|
|||||||
|
|
||||||
void sub_815ABC4(u8 mode, void (*cb)())
|
void sub_815ABC4(u8 mode, void (*cb)())
|
||||||
{
|
{
|
||||||
// JZW: I'm sorry, but otherwise I can't make it match baserom
|
|
||||||
TeachyTv_s *v3 = &gTeachyTV_StaticResources;
|
TeachyTv_s *v3 = &gTeachyTV_StaticResources;
|
||||||
u16 v4 = 0;
|
u16 v4 = 0;
|
||||||
v3->mode = mode;
|
v3->mode = mode;
|
||||||
v3->callback = cb;
|
v3->callback = cb;
|
||||||
if(!mode) {
|
if(!mode) {
|
||||||
v3->param2 = v4;
|
v3->scrollOffset = v4;
|
||||||
v3->param3 = v4;
|
v3->selectedRow = v4;
|
||||||
v3->param1 = 0;
|
v3->param1 = 0;
|
||||||
}
|
}
|
||||||
if(mode == 1)
|
if(mode == 1)
|
||||||
@@ -117,6 +116,7 @@ void C2TeachyTvMainCallback()
|
|||||||
u32 x;
|
u32 x;
|
||||||
|
|
||||||
state = gMain.state;
|
state = gMain.state;
|
||||||
|
// tried several ways to reproduce the control flow, but all failed. Now using goto
|
||||||
if ( state == 0 )
|
if ( state == 0 )
|
||||||
goto section_0;
|
goto section_0;
|
||||||
else if ( state == 1 )
|
else if ( state == 1 )
|
||||||
@@ -154,7 +154,7 @@ void C2TeachyTvMainCallback()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
taskId = CreateTask(sub_815B2C0, 0);
|
taskId = CreateTask(sub_815B2C0, 0);
|
||||||
x = (u32)sub_815AEE8();
|
x = (u32)TeachyTvSetupWindow();
|
||||||
gTasks[taskId].data[0] = (x << 24) >> 24;
|
gTasks[taskId].data[0] = (x << 24) >> 24;
|
||||||
gTasks[taskId].data[1] = TeachyTvSetupObj();
|
gTasks[taskId].data[1] = TeachyTvSetupObj();
|
||||||
sub_815AF5C();
|
sub_815AF5C();
|
||||||
@@ -215,3 +215,28 @@ void TeachyTvCreateAndRenderRbox()
|
|||||||
PutWindowTilemap(1u);
|
PutWindowTilemap(1u);
|
||||||
CopyWindowToVram(0, 2u);
|
CopyWindowToVram(0, 2u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 *);
|
||||||
|
|
||||||
|
u8 TeachyTvSetupWindow()
|
||||||
|
{
|
||||||
|
int hasItem;
|
||||||
|
gMultiuseListMenuTemplate = gUnknown_8479368;
|
||||||
|
gMultiuseListMenuTemplate.windowId = 1;
|
||||||
|
gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
|
||||||
|
hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u);
|
||||||
|
if ( !(v0 << 24) )
|
||||||
|
{
|
||||||
|
gMultiuseListMenuTemplate.items = &gUnknown_8479340;
|
||||||
|
gMultiuseListMenuTemplate.totalItems = 5;
|
||||||
|
gMultiuseListMenuTemplate.maxShowed = 5;
|
||||||
|
gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF;
|
||||||
|
}
|
||||||
|
return ListMenuInit(
|
||||||
|
&gMultiuseListMenuTemplate,
|
||||||
|
gTeachyTV_StaticResources.scrollOffset,
|
||||||
|
gTeachyTV_StaticResources.selectedRow);
|
||||||
|
}
|
||||||
+19
-18
@@ -24,6 +24,8 @@
|
|||||||
#include "unk_810c3a4.h"
|
#include "unk_810c3a4.h"
|
||||||
#include "constants/movement_commands.h"
|
#include "constants/movement_commands.h"
|
||||||
#include "vs_seeker.h"
|
#include "vs_seeker.h"
|
||||||
|
#include "item.h"
|
||||||
|
#include "constants/items.h"
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@@ -635,6 +637,7 @@ void sub_810C444(void)
|
|||||||
#ifdef NONMATCHING
|
#ifdef NONMATCHING
|
||||||
bool8 sub_810C4EC(void)
|
bool8 sub_810C4EC(void)
|
||||||
{
|
{
|
||||||
|
s8 mask;
|
||||||
if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE)
|
if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE)
|
||||||
{
|
{
|
||||||
if ((gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) < 100)
|
if ((gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) < 100)
|
||||||
@@ -643,25 +646,23 @@ bool8 sub_810C4EC(void)
|
|||||||
|
|
||||||
if (FlagGet(0x801) == TRUE)
|
if (FlagGet(0x801) == TRUE)
|
||||||
{
|
{
|
||||||
u16 x;
|
register u8 x,y;
|
||||||
do {
|
x = gSaveBlock1Ptr->trainerRematchStepCounter >> 8;
|
||||||
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
|
if (x > 99) {
|
||||||
} while (0);
|
mask = -1;
|
||||||
if (x < 100)
|
goto section_1;
|
||||||
{
|
|
||||||
x++;
|
|
||||||
gSaveBlock1Ptr->trainerRematchStepCounter = ((u16)(x << 8)) | (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF);
|
|
||||||
}
|
|
||||||
do {
|
|
||||||
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
|
|
||||||
} while (0);
|
|
||||||
if (x == 100)
|
|
||||||
{
|
|
||||||
FlagClear(0x801);
|
|
||||||
sub_810C640();
|
|
||||||
sub_810D0D0();
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
y = ((u8)x + 1);
|
||||||
|
gSaveBlock1Ptr->trainerRematchStepCounter = (((gSaveBlock1Ptr->trainerRematchStepCounter) & (u8)0xFFFFFFFF) | (y << 8));
|
||||||
|
section_1:
|
||||||
|
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & mask;
|
||||||
|
if (x == 100)
|
||||||
|
{
|
||||||
|
FlagClear(0x801);
|
||||||
|
sub_810C640();
|
||||||
|
sub_810D0D0();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
Reference in New Issue
Block a user