summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-20 14:14:54 -0400
committerscnorton <scnorton@biociphers.org>2017-06-20 14:14:54 -0400
commit27ce8721331d5970c2d15d1a0459e37d094e0aa1 (patch)
tree3b85297cd47ffe04d1bfbdab237dde1ce56a8bd0
parentc8993068c9a9b25b9ea573737646872098829d24 (diff)
Elevator menu main task
-rwxr-xr-xasm/field_specials.s175
-rw-r--r--include/field_specials.h4
-rw-r--r--include/script.h1
-rwxr-xr-xsrc/field_specials.c59
4 files changed, 62 insertions, 177 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
index c09151173..dcfe9d7dc 100755
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -6,181 +6,6 @@
.text
- thumb_func_start sub_810E944
-sub_810E944: @ 810E944
- push {lr}
- movs r0, 0x14
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x5
- bl MenuDrawTextWindow
- ldr r0, _0810E978 @ =gOtherText_NowOn
- movs r1, 0x15
- movs r2, 0x1
- movs r3, 0x40
- bl sub_8072BD8
- ldr r1, _0810E97C @ =gUnknown_083F8380
- ldr r0, _0810E980 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x15
- movs r2, 0x3
- movs r3, 0x40
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_0810E978: .4byte gOtherText_NowOn
-_0810E97C: .4byte gUnknown_083F8380
-_0810E980: .4byte gSpecialVar_0x8005
- thumb_func_end sub_810E944
-
- thumb_func_start sub_810E984
-sub_810E984: @ 810E984
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0810EA44 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x40
- bne _0810E9B8
- ldr r1, _0810EA48 @ =gUnknown_0203925B
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810E9B8
- subs r0, 0x1
- strb r0, [r1]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x40
- bl sub_810EAC8
-_0810E9B8:
- ldr r0, _0810EA44 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x80
- bne _0810E9E8
- ldr r2, _0810EA48 @ =gUnknown_0203925B
- ldrb r1, [r2]
- ldr r0, _0810EA4C @ =gUnknown_0203925A
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- beq _0810E9E8
- adds r0, r1, 0x1
- strb r0, [r2]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x80
- bl sub_810EAC8
-_0810E9E8:
- ldr r0, _0810EA44 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r2
- cmp r1, 0
- beq _0810EA94
- ldr r1, _0810EA50 @ =gUnknown_03000760
- ldr r4, _0810EA48 @ =gUnknown_0203925B
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- movs r1, 0x1
- ldrsb r1, [r0, r1]
- movs r2, 0x2
- ldrsb r2, [r0, r2]
- movs r3, 0x1
- negs r3, r3
- movs r0, 0x2
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- bl saved_warp2_set_2
- ldr r1, _0810EA54 @ =gSpecialVar_0x8005
- ldrh r0, [r1]
- ldrb r2, [r4]
- cmp r0, r2
- bne _0810EA5C
- ldr r1, _0810EA58 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl sub_810EC9C
- b _0810EABC
- .align 2, 0
-_0810EA44: .4byte gMain
-_0810EA48: .4byte gUnknown_0203925B
-_0810EA4C: .4byte gUnknown_0203925A
-_0810EA50: .4byte gUnknown_03000760
-_0810EA54: .4byte gSpecialVar_0x8005
-_0810EA58: .4byte gScriptResult
-_0810EA5C:
- ldr r0, _0810EA88 @ =gScriptResult
- strh r5, [r0]
- ldrb r0, [r4]
- strh r0, [r1]
- bl sub_810EBEC
- ldr r0, _0810EA8C @ =gScriptLastTalked
- ldrb r0, [r0]
- ldr r2, _0810EA90 @ =gSaveBlock1
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- movs r3, 0x1
- bl FieldObjectTurnByLocalIdAndMap
- bl sub_810EEDC
- bl MenuZeroFillScreen
- adds r0, r6, 0
- bl DestroyTask
- b _0810EABC
- .align 2, 0
-_0810EA88: .4byte gScriptResult
-_0810EA8C: .4byte gScriptLastTalked
-_0810EA90: .4byte gSaveBlock1
-_0810EA94:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0810EABC
- ldr r0, _0810EAC4 @ =gScriptResult
- strh r1, [r0]
- movs r0, 0x5
- bl PlaySE
- bl sub_810EEDC
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl sub_810EC9C
-_0810EABC:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EAC4: .4byte gScriptResult
- thumb_func_end sub_810E984
-
thumb_func_start sub_810EAC8
sub_810EAC8: @ 810EAC8
push {r4-r7,lr}
diff --git a/include/field_specials.h b/include/field_specials.h
index ee7b80e1a..02b70f99b 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -3,8 +3,8 @@
struct ElevatorMenu {
u8 var0;
- u8 var1;
- u8 var2;
+ s8 var1;
+ s8 var2;
u8 var3;
};
diff --git a/include/script.h b/include/script.h
index 4070a838f..5577fcb01 100644
--- a/include/script.h
+++ b/include/script.h
@@ -56,5 +56,6 @@ void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
u16 gScriptResult;
+extern u16 gScriptLastTalked;
#endif // GUARD_SCRIPT_H
diff --git a/src/field_specials.c b/src/field_specials.c
index 83aede229..cdfa3810d 100755
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -934,7 +934,11 @@ void EndLotteryCornerComputerEffect(void)
static void sub_810E874(void);
void sub_810E944(void);
void sub_810E984(u8);
+void sub_810EAC8(u8, u8);
+void sub_810EBEC(void);
+void sub_810EC9C(u8);
void sub_810ECD4(void);
+void sub_810EEDC(void);
const u8 *const gUnknown_083F8380[] = {
OtherText_1F,
@@ -1041,3 +1045,58 @@ static void sub_810E874(void)
sub_810E944();
CreateTask(sub_810E984, 8);
}
+
+void sub_810E944(void)
+{
+ MenuDrawTextWindow(20, 0, 29, 5);
+ sub_8072BD8(gOtherText_NowOn, 21, 1, 64);
+ sub_8072BD8(gUnknown_083F8380[gSpecialVar_0x8005], 21, 3, 64);
+}
+
+void sub_810E984(u8 taskId)
+{
+ u8 curMenuPos;
+ if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0)
+ {
+ gUnknown_0203925B--;
+ curMenuPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(-1);
+ sub_810EAC8(curMenuPos, DPAD_UP);
+ }
+ if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1)
+ {
+ gUnknown_0203925B++;
+ curMenuPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(+1);
+ sub_810EAC8(curMenuPos, DPAD_DOWN);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ saved_warp2_set_2(0, gUnknown_03000760[gUnknown_0203925B].var1, gUnknown_03000760[gUnknown_0203925B].var2, -1, 2, 1);
+ if (gSpecialVar_0x8005 == gUnknown_0203925B)
+ {
+ gScriptResult = 0;
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+ else
+ {
+ gScriptResult = 1;
+ gSpecialVar_0x8005 = gUnknown_0203925B;
+ sub_810EBEC();
+ FieldObjectTurnByLocalIdAndMap(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
+ sub_810EEDC();
+ MenuZeroFillScreen();
+ DestroyTask(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gScriptResult = 0;
+ PlaySE(SE_SELECT);
+ sub_810EEDC();
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+}