mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-23 09:14:55 -05:00
DrawFieldMenu
This commit is contained in:
@@ -6,296 +6,6 @@
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start DrawFieldMenu
|
||||
DrawFieldMenu:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x10
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
ldr r4, _0805F994
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x18]
|
||||
movs r1, 0x5
|
||||
strh r1, [r4, 0x1A]
|
||||
strh r1, [r4, 0x1C]
|
||||
strh r0, [r4, 0x1E]
|
||||
strh r0, [r4, 0x4]
|
||||
movs r1, 0x2
|
||||
strh r1, [r4, 0x6]
|
||||
strh r0, [r4, 0xC]
|
||||
strh r0, [r4, 0xE]
|
||||
str r0, [r4]
|
||||
strh r0, [r4, 0x14]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x28
|
||||
bl sub_801317C
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x38
|
||||
bl sub_80137B0
|
||||
cmp r5, 0
|
||||
beq _0805F998
|
||||
movs r0, 0x7
|
||||
movs r1, 0
|
||||
bl sub_803EAF0
|
||||
b _0805F9A0
|
||||
.align 2, 0
|
||||
_0805F994: .4byte gUnknown_202EE10
|
||||
_0805F998:
|
||||
movs r0, 0x6
|
||||
movs r1, 0
|
||||
bl sub_803EAF0
|
||||
_0805F9A0:
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
bl GetLeader
|
||||
movs r1, 0x1
|
||||
bl ShouldMonsterRunAwayAndShowEffect
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805F9CC
|
||||
ldr r0, _0805F9C8
|
||||
movs r2, 0x2
|
||||
strb r2, [r0, 0x1]
|
||||
strb r2, [r0, 0x2]
|
||||
strb r2, [r0, 0x3]
|
||||
movs r1, 0x7
|
||||
strb r1, [r0, 0x4]
|
||||
strb r2, [r0, 0x5]
|
||||
b _0805F9DA
|
||||
.align 2, 0
|
||||
_0805F9C8: .4byte gUnknown_202749A
|
||||
_0805F9CC:
|
||||
ldr r1, _0805FBA0
|
||||
movs r0, 0x7
|
||||
strb r0, [r1, 0x1]
|
||||
strb r0, [r1, 0x2]
|
||||
strb r0, [r1, 0x3]
|
||||
strb r0, [r1, 0x4]
|
||||
strb r0, [r1, 0x5]
|
||||
_0805F9DA:
|
||||
ldr r4, _0805FBA4
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0805FBA8
|
||||
ldr r2, [r0]
|
||||
movs r6, 0
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
movs r3, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0805FBAC
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
movs r3, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x2
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0805FBB0
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
movs r3, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x3
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0805FBB4
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
movs r3, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x4
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0805FBB8
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
movs r3, 0
|
||||
bl xxx_call_draw_string
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
cmp r5, 0
|
||||
bne _0805FA62
|
||||
b _0805FB92
|
||||
_0805FA62:
|
||||
bl GetLeader
|
||||
ldr r7, [r0, 0x70]
|
||||
bl sub_805317C
|
||||
adds r5, r0, 0
|
||||
bl sub_8008ED0
|
||||
movs r4, 0x88
|
||||
subs r4, r0
|
||||
lsrs r0, r4, 31
|
||||
adds r4, r0
|
||||
asrs r4, 1
|
||||
movs r0, 0x1
|
||||
bl sub_80073B8
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x2
|
||||
adds r2, r5, 0
|
||||
movs r3, 0x1
|
||||
bl xxx_call_draw_string
|
||||
movs r0, 0x1
|
||||
bl sub_80073E0
|
||||
movs r0, 0x2
|
||||
bl sub_80073B8
|
||||
ldr r0, _0805FBBC
|
||||
ldr r0, [r0]
|
||||
add r2, sp, 0x8
|
||||
add r3, sp, 0xC
|
||||
add r1, sp, 0x4
|
||||
bl DeconstructPlayTime
|
||||
movs r1, 0x9E
|
||||
lsls r1, 1
|
||||
adds r0, r7, r1
|
||||
ldr r0, [r0]
|
||||
bl RoundUpFixedPoint
|
||||
ldr r4, _0805FBC0
|
||||
str r0, [r4]
|
||||
movs r2, 0xA0
|
||||
lsls r2, 1
|
||||
adds r0, r7, r2
|
||||
ldr r0, [r0]
|
||||
bl RoundUpFixedPoint
|
||||
str r0, [r4, 0x4]
|
||||
ldr r0, _0805FBC4
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x73
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl xxx_format_and_draw
|
||||
ldr r0, _0805FBC8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
str r0, [r4]
|
||||
ldr r0, _0805FBCC
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x73
|
||||
movs r1, 0xC
|
||||
movs r3, 0x2
|
||||
bl xxx_format_and_draw
|
||||
ldr r5, _0805FBD0
|
||||
movs r0, 0
|
||||
bl GetApparentWeather
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r5, 0
|
||||
bl GetWeatherName
|
||||
ldr r0, _0805FBD4
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x73
|
||||
movs r1, 0x18
|
||||
movs r3, 0x2
|
||||
bl xxx_format_and_draw
|
||||
ldr r0, [sp, 0x4]
|
||||
str r0, [r4]
|
||||
ldr r0, [sp, 0x8]
|
||||
str r0, [r4, 0x4]
|
||||
ldr r0, [sp, 0xC]
|
||||
str r0, [r4, 0x8]
|
||||
ldr r0, _0805FBD8
|
||||
ldr r2, [r0]
|
||||
str r6, [sp]
|
||||
movs r0, 0x73
|
||||
movs r1, 0x24
|
||||
movs r3, 0x2
|
||||
bl xxx_format_and_draw
|
||||
movs r7, 0
|
||||
mov r8, r4
|
||||
_0805FB3A:
|
||||
ldr r0, _0805FBDC
|
||||
ldr r0, [r0]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _0805FBE0
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r5, [r0]
|
||||
adds r0, r5, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805FB86
|
||||
ldr r4, [r5, 0x70]
|
||||
ldr r0, _0805FBD0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
mov r2, r8
|
||||
str r0, [r2]
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
str r0, [r2, 0x4]
|
||||
ldr r0, _0805FBE4
|
||||
ldr r2, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x4
|
||||
adds r1, r7, 0
|
||||
movs r3, 0x2
|
||||
bl xxx_format_and_draw
|
||||
adds r7, 0xC
|
||||
cmp r7, 0x2F
|
||||
bgt _0805FB8C
|
||||
_0805FB86:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _0805FB3A
|
||||
_0805FB8C:
|
||||
movs r0, 0x2
|
||||
bl sub_80073E0
|
||||
_0805FB92:
|
||||
add sp, 0x10
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805FBA0: .4byte gUnknown_202749A
|
||||
_0805FBA4: .4byte gUnknown_202EE10
|
||||
_0805FBA8: .4byte gFieldMenuMovesPtr
|
||||
_0805FBAC: .4byte gFieldMenuItemsPtr
|
||||
_0805FBB0: .4byte gFieldMenuTeamPtr
|
||||
_0805FBB4: .4byte gFieldMenuOthersPtr
|
||||
_0805FBB8: .4byte gFieldMenuGroundPtr
|
||||
_0805FBBC: .4byte gPlayTimeRef
|
||||
_0805FBC0: .4byte gUnknown_202DE30
|
||||
_0805FBC4: .4byte gUnknown_80F9174
|
||||
_0805FBC8: .4byte gTeamInventoryRef
|
||||
_0805FBCC: .4byte gUnknown_80F9190
|
||||
_0805FBD0: .4byte gAvailablePokemonNames
|
||||
_0805FBD4: .4byte gUnknown_80F91A8
|
||||
_0805FBD8: .4byte gUnknown_80F91C8
|
||||
_0805FBDC: .4byte gDungeon
|
||||
_0805FBE0: .4byte 0x0001357c
|
||||
_0805FBE4: .4byte gUnknown_80F91E0
|
||||
thumb_func_end DrawFieldMenu
|
||||
|
||||
thumb_func_start sub_805FBE8
|
||||
sub_805FBE8:
|
||||
push {r4,r5,lr}
|
||||
|
||||
@@ -11,10 +11,12 @@
|
||||
#include "dungeon_util.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "trap.h"
|
||||
#include "charge_move.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "game_options.h"
|
||||
#include "weather.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "tile_types.h"
|
||||
@@ -24,6 +26,8 @@
|
||||
#include "menu_input.h"
|
||||
#include "music.h"
|
||||
#include "items.h"
|
||||
#include "play_time.h"
|
||||
#include "text2.h"
|
||||
#include "code_806CD90.h"
|
||||
#include "dungeon_capabilities.h"
|
||||
#include "constants/dungeon.h"
|
||||
@@ -85,7 +89,7 @@ void sub_803E724(s32 a0);
|
||||
void HandleTalkFieldAction(Entity *);
|
||||
bool8 sub_8044B28(void);
|
||||
bool8 IsNotAttacking(Entity *param_1, bool8 param_2);
|
||||
void ShowFieldMenu(u8 a0, u8 a1);
|
||||
void ShowFieldMenu(u8 a0, bool8 a1);
|
||||
bool8 sub_805EF60(Entity *a0, EntityInfo *a1);
|
||||
s32 GetTeamMemberEntityIndex(Entity *pokemon);
|
||||
bool8 sub_8070F80(Entity * pokemon, s32 direction);
|
||||
@@ -2854,10 +2858,9 @@ u16 GetLeaderActionId(void)
|
||||
return GetLeaderInfo()->action.action;
|
||||
}
|
||||
|
||||
void ShowFieldMenu(u8 a0_, u8 a1)
|
||||
void ShowFieldMenu(u8 a0_, bool8 a1)
|
||||
{
|
||||
Item *item;
|
||||
u16 action;
|
||||
s32 r10;
|
||||
u8 a0 = a0_; // Needed to match.
|
||||
s32 var_28;
|
||||
@@ -2918,6 +2921,8 @@ void ShowFieldMenu(u8 a0_, u8 a1)
|
||||
|
||||
r10 = var_28;
|
||||
if (var_28 == 1) {
|
||||
u16 action;
|
||||
|
||||
sub_8044C10(1);
|
||||
var_34.a0_8 = 0;
|
||||
var_34.a0_16 = 1;
|
||||
@@ -3223,4 +3228,118 @@ void ShowFieldMenu(u8 a0_, u8 a1)
|
||||
ResetUnusedInputStruct();
|
||||
}
|
||||
|
||||
//
|
||||
extern const u8 *const gFieldMenuMovesPtr;
|
||||
extern const u8 *const gFieldMenuItemsPtr;
|
||||
extern const u8 *const gFieldMenuTeamPtr;
|
||||
extern const u8 *const gFieldMenuOthersPtr;
|
||||
extern const u8 *const gFieldMenuGroundPtr;
|
||||
extern const u8 *const gUnknown_80F9174;
|
||||
extern const u8 *const gUnknown_80F9190;
|
||||
extern const u8 *const gUnknown_80F91C8;
|
||||
extern const u8 *const gUnknown_80F91E0;
|
||||
extern const u8 *const gUnknown_80F91A8;
|
||||
|
||||
const u8 *sub_805317C(void);
|
||||
void GetWeatherName(u8 *dst, u8 weatherId);
|
||||
|
||||
extern s32 gUnknown_202DE30[];
|
||||
|
||||
void DrawFieldMenu(u8 a0)
|
||||
{
|
||||
s32 i, x, y, yLoop;
|
||||
|
||||
gUnknown_202EE10.menuIndex = 0;
|
||||
gUnknown_202EE10.unk1A = 5;
|
||||
gUnknown_202EE10.unk1C = 5;
|
||||
gUnknown_202EE10.unk1E = 0;
|
||||
gUnknown_202EE10.unk4 = 0;
|
||||
gUnknown_202EE10.unk6 = 2;
|
||||
gUnknown_202EE10.unkC = 0;
|
||||
gUnknown_202EE10.unkE = 0;
|
||||
gUnknown_202EE10.unk0 = 0;
|
||||
gUnknown_202EE10.unk14 = 0;
|
||||
sub_801317C(&gUnknown_202EE10.unk28);
|
||||
sub_80137B0(&gUnknown_202EE10, 0x38);
|
||||
if (a0) {
|
||||
sub_803EAF0(7, 0);
|
||||
}
|
||||
else {
|
||||
sub_803EAF0(6, 0);
|
||||
}
|
||||
|
||||
sub_80073B8(0);
|
||||
if (ShouldMonsterRunAwayAndShowEffect(GetLeader(), TRUE)) {
|
||||
gUnknown_202749A[1] = 2;
|
||||
gUnknown_202749A[2] = 2;
|
||||
gUnknown_202749A[3] = 2;
|
||||
gUnknown_202749A[4] = 7;
|
||||
gUnknown_202749A[5] = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_202749A[1] = 7;
|
||||
gUnknown_202749A[2] = 7;
|
||||
gUnknown_202749A[3] = 7;
|
||||
gUnknown_202749A[4] = 7;
|
||||
gUnknown_202749A[5] = 7;
|
||||
}
|
||||
|
||||
y = sub_8013800(&gUnknown_202EE10, 0);
|
||||
xxx_call_draw_string(8, y, gFieldMenuMovesPtr, 0, 0);
|
||||
|
||||
y = sub_8013800(&gUnknown_202EE10, 1);
|
||||
xxx_call_draw_string(8, y, gFieldMenuItemsPtr, 0, 0);
|
||||
|
||||
y = sub_8013800(&gUnknown_202EE10, 2);
|
||||
xxx_call_draw_string(8, y, gFieldMenuTeamPtr, 0, 0);
|
||||
|
||||
y = sub_8013800(&gUnknown_202EE10, 3);
|
||||
xxx_call_draw_string(8, y, gFieldMenuOthersPtr, 0, 0);
|
||||
|
||||
y = sub_8013800(&gUnknown_202EE10, 4);
|
||||
xxx_call_draw_string(8, y, gFieldMenuGroundPtr, 0, 0);
|
||||
|
||||
sub_80073E0(0);
|
||||
if (a0) {
|
||||
u32 hours, minutes, seconds;
|
||||
EntityInfo *leaderInfo = GetLeader()->info;
|
||||
const u8 *dungeonName = sub_805317C();
|
||||
|
||||
x = (136 - sub_8008ED0(dungeonName)) / 2;
|
||||
sub_80073B8(1);
|
||||
xxx_call_draw_string(x, 2, dungeonName, 1, 0);
|
||||
sub_80073E0(1);
|
||||
sub_80073B8(2);
|
||||
DeconstructPlayTime(gPlayTimeRef, &hours, &minutes, &seconds);
|
||||
|
||||
gUnknown_202DE30[0] = RoundUpFixedPoint(leaderInfo->belly);
|
||||
gUnknown_202DE30[1] = RoundUpFixedPoint(leaderInfo->maxBelly);
|
||||
xxx_format_and_draw(0x73, 0, gUnknown_80F9174, 2, 0);
|
||||
|
||||
gUnknown_202DE30[0] = gTeamInventoryRef->teamMoney;
|
||||
xxx_format_and_draw(0x73, 12, gUnknown_80F9190, 2, 0);
|
||||
|
||||
GetWeatherName(gAvailablePokemonNames, GetApparentWeather(NULL));
|
||||
xxx_format_and_draw(0x73, 24, gUnknown_80F91A8, 2, 0);
|
||||
|
||||
gUnknown_202DE30[0] = hours;
|
||||
gUnknown_202DE30[1] = minutes;
|
||||
gUnknown_202DE30[2] = seconds;
|
||||
xxx_format_and_draw(0x73, 36, gUnknown_80F91C8, 2, 0);
|
||||
for (yLoop = 0, i = 0; i < MAX_TEAM_MEMBERS; i++) {
|
||||
Entity *teamMon = gDungeon->teamPokemon[i];
|
||||
if (EntityExists(teamMon)) {
|
||||
EntityInfo *monInfo = teamMon->info;
|
||||
SetMessageArgument(gAvailablePokemonNames, teamMon, 0);
|
||||
gUnknown_202DE30[0] = monInfo->HP;
|
||||
gUnknown_202DE30[1] = monInfo->maxHPStat;
|
||||
xxx_format_and_draw(4, yLoop, gUnknown_80F91E0, 2, 0);
|
||||
yLoop += 12;
|
||||
if (yLoop >= 12 * MAX_TEAM_MEMBERS)
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_80073E0(2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user