more decomp work and ram setup

This commit is contained in:
Seth Barberee 2023-06-16 17:54:03 -07:00
parent 099b4e3bc3
commit 6c5433950a
27 changed files with 349 additions and 630 deletions

View File

@ -1,266 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8031D70
sub_8031D70:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
ldr r5, _08031DC4
movs r0, 0x7C
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
stm r0!, {r6}
bl sub_801317C
ldr r0, [r5]
str r4, [r0, 0x10]
lsls r1, r4, 1
adds r1, r4
lsls r1, 3
adds r1, 0x18
adds r1, r0, r1
str r1, [r0, 0x14]
adds r0, 0x18
bl sub_8006518
ldr r1, [r5]
ldr r2, [r1, 0x10]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x18
ldr r0, _08031DC8
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
bl sub_8031E00
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08031DC4: .4byte gUnknown_203B334
_08031DC8: .4byte gUnknown_80E1FC4
thumb_func_end sub_8031D70
thumb_func_start sub_8031DCC
sub_8031DCC:
push {lr}
ldr r0, _08031DEC
ldr r1, [r0]
adds r0, r1, 0x4
ldr r1, [r1, 0x10]
bl sub_8012A64
cmp r0, 0x1
beq _08031DF0
cmp r0, 0x2
bne _08031DFA
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08031DFC
.align 2, 0
_08031DEC: .4byte gUnknown_203B334
_08031DF0:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08031DFC
_08031DFA:
movs r0, 0
_08031DFC:
pop {r1}
bx r1
thumb_func_end sub_8031DCC
thumb_func_start sub_8031E00
sub_8031E00:
push {lr}
bl sub_8031E58
bl sub_8031E74
pop {r0}
bx r0
thumb_func_end sub_8031E00
thumb_func_start sub_8031E10
sub_8031E10:
push {r4,r5,lr}
ldr r4, _08031E50
ldr r2, [r4]
cmp r2, 0
beq _08031E4A
ldr r0, [r2, 0x10]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x18
ldr r0, _08031E54
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x18
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_08031E4A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08031E50: .4byte gUnknown_203B334
_08031E54: .4byte gUnknown_80E1FA8
thumb_func_end sub_8031E10
thumb_func_start sub_8031E58
sub_8031E58:
push {lr}
bl ResetUnusedInputStruct
ldr r0, _08031E70
ldr r0, [r0]
adds r0, 0x18
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r0}
bx r0
.align 2, 0
_08031E70: .4byte gUnknown_203B334
thumb_func_end sub_8031E58
thumb_func_start sub_8031E74
sub_8031E74:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x3C
ldr r3, _08031EC0
ldr r5, _08031EC4
ldr r2, [r5]
ldr r1, [r2]
lsls r0, r1, 1
adds r0, r1
lsls r0, 4
ldr r4, [r3]
adds r4, r0
ldr r0, [r2, 0x10]
bl sub_80073B8
ldr r2, _08031EC8
ldr r0, [r5]
ldr r3, [r0, 0x10]
movs r0, 0
str r0, [sp]
movs r0, 0x14
movs r1, 0
bl xxx_call_draw_string
add r0, sp, 0x4
adds r1, r4, 0
bl sub_803D2C0
movs r7, 0
mov r8, r5
_08031EB2:
cmp r7, 0x4
ble _08031ED0
cmp r7, 0xC
bgt _08031ECC
movs r6, 0x6
movs r5, 0x16
b _08031F00
.align 2, 0
_08031EC0: .4byte gUnknown_203B480
_08031EC4: .4byte gUnknown_203B334
_08031EC8: .4byte gUnknown_80E1FDC
_08031ECC:
cmp r7, 0x11
bgt _08031ED6
_08031ED0:
movs r6, 0x7
movs r5, 0x15
b _08031F00
_08031ED6:
cmp r7, 0x16
ble _08031EE8
cmp r7, 0x1E
bgt _08031EE4
movs r6, 0x6
movs r5, 0x25
b _08031F00
_08031EE4:
cmp r7, 0x23
bgt _08031EEE
_08031EE8:
movs r6, 0x7
movs r5, 0x24
b _08031F00
_08031EEE:
cmp r7, 0x28
ble _08031EFC
cmp r7, 0x30
bgt _08031EFC
movs r6, 0x6
movs r5, 0x34
b _08031F00
_08031EFC:
movs r6, 0x7
movs r5, 0x33
_08031F00:
adds r0, r7, 0
movs r1, 0x12
bl __modsi3
movs r1, 0xB
adds r4, r0, 0
muls r4, r1
adds r4, 0x6
mov r0, sp
adds r0, r7
adds r0, 0x4
ldrb r2, [r0]
mov r1, r8
ldr r0, [r1]
ldr r0, [r0, 0x10]
str r0, [sp]
adds r0, r4, 0
adds r1, r5, 0
adds r3, r6, 0
bl sub_8012C60
mov r1, r8
ldr r0, [r1]
ldr r0, [r0, 0x10]
adds r2, r5, 0
adds r2, 0xA
movs r1, 0x5
str r1, [sp]
adds r1, r4, 0
movs r3, 0xA
bl sub_80078A4
adds r7, 0x1
cmp r7, 0x35
ble _08031EB2
ldr r0, _08031F5C
ldr r0, [r0]
ldr r0, [r0, 0x10]
bl sub_80073E0
add sp, 0x3C
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08031F5C: .4byte gUnknown_203B334
thumb_func_end sub_8031E74
.align 2,0

View File

@ -5347,200 +5347,4 @@ _0806CC08: .4byte 0x000001ff
_0806CC0C: .4byte 0x00000fff
thumb_func_end sub_806C51C
thumb_func_start sub_806CC10
sub_806CC10:
push {r4,r5,lr}
movs r5, 0
_0806CC14:
ldr r0, _0806CC68
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _0806CC6C
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806CC5C
ldr r2, [r4, 0x70]
movs r1, 0xB3
lsls r1, 1
adds r0, r2, r1
ldrb r1, [r0]
cmp r1, 0
beq _0806CC5C
subs r1, 0x1
strb r1, [r0]
movs r0, 0x1
ands r1, r0
cmp r1, 0
bne _0806CC5C
adds r0, r2, 0
adds r0, 0x46
ldrb r2, [r0]
subs r2, 0x1
movs r0, 0x7
ands r2, r0
adds r0, r4, 0
movs r1, 0
bl sub_806CDD4
_0806CC5C:
adds r5, 0x1
cmp r5, 0x13
ble _0806CC14
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0806CC68: .4byte gDungeon
_0806CC6C: .4byte 0x000135cc
thumb_func_end sub_806CC10
thumb_func_start sub_806CC70
sub_806CC70:
push {r4,r5,lr}
movs r5, 0
_0806CC74:
ldr r0, _0806CCAC
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _0806CCB0
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806CCA0
adds r0, r4, 0
bl sub_806CEBC
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_806CCB4
_0806CCA0:
adds r5, 0x1
cmp r5, 0x13
ble _0806CC74
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0806CCAC: .4byte gDungeon
_0806CCB0: .4byte 0x000135cc
thumb_func_end sub_806CC70
thumb_func_start sub_806CCB4
sub_806CCB4:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xC
adds r5, r0, 0
lsls r1, 24
lsrs r4, r1, 24
ldr r7, [r5, 0x70]
ldr r0, _0806CD40
ldr r0, [r0]
ldr r2, _0806CD44
adds r1, r0, r2
ldrb r6, [r1]
ldr r3, _0806CD48
adds r0, r3
ldr r0, [r0]
cmp r5, r0
bne _0806CCDC
movs r6, 0
_0806CCDC:
adds r0, r5, 0
adds r0, 0x6B
movs r3, 0
strb r4, [r0]
adds r2, r5, 0
adds r2, 0x6A
strb r4, [r2]
adds r4, r7, 0
adds r4, 0x46
ldrb r0, [r4]
adds r1, r5, 0
adds r1, 0x6D
strb r0, [r1]
ldrb r0, [r4]
subs r1, 0x1
strb r0, [r1]
adds r0, r5, 0
adds r0, 0x6F
strb r3, [r0]
subs r0, 0x7
movs r3, 0
ldrsh r4, [r0, r3]
mov r9, r4
adds r0, r7, 0
adds r0, 0xC8
ldrb r0, [r0]
adds r7, r2, 0
mov r8, r1
cmp r0, 0x2
beq _0806CD4C
cmp r6, 0
bne _0806CD4C
bl Rand32Bit
movs r4, 0x3
ands r4, r0
adds r0, r5, 0
adds r0, 0x28
ldr r1, [r5, 0x64]
ldrb r2, [r7]
mov r7, r8
ldrb r3, [r7]
mov r7, r9
str r7, [sp]
str r4, [sp, 0x4]
str r6, [sp, 0x8]
bl sub_80053AC
b _0806CD76
.align 2, 0
_0806CD40: .4byte gDungeon
_0806CD44: .4byte 0x00018210
_0806CD48: .4byte 0x000181f8
_0806CD4C:
ldr r0, _0806CD8C
bl sub_80687D0
adds r4, r0, 0
bl Rand32Bit
movs r1, 0x3
ands r1, r0
adds r0, r5, 0
adds r0, 0x28
ldrb r2, [r7]
mov r6, r8
ldrb r3, [r6]
mov r7, r9
str r7, [sp]
str r1, [sp, 0x4]
movs r1, 0
str r1, [sp, 0x8]
adds r1, r4, 0
bl sub_80053AC
_0806CD76:
adds r1, r5, 0
adds r1, 0x6E
movs r0, 0
strb r0, [r1]
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806CD8C: .4byte 0x000001a5
thumb_func_end sub_806CCB4
.align 2,0

View File

@ -1,31 +0,0 @@
.section .rodata
.global gUnknown_80E1FA8
gUnknown_80E1FA8: @ 80E1FA8
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnkData_80E1FC0
gUnkData_80E1FC0:
.byte 0x01, 0x00, 0x0A, 0x00
.global gUnknown_80E1FC4
gUnknown_80E1FC4: @ 80E1FC4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x02, 0x00
.byte 0x1a, 0x00, 0x0a, 0x00
.byte 0x0a, 0x00, 0x00, 0x00
.4byte gUnkData_80E1FC0
.global gUnknown_80E1FDC
gUnknown_80E1FDC: @ 80E1FDC
.string "Password\0"
.align 2,0
.string "pksdir0\0"
.align 2,0

View File

@ -294,7 +294,7 @@ struct Entity
/* 0x54 */ u16 spriteGlobalIndex;
u8 fill56[0x64 - 0x56];
u32 unk64;
u16 unk68;
s16 unk68;
/* 0x6A */ u8 unk6A;
/* 0x6A */ u8 unk6B;
/* 0x6C */ u8 direction;

View File

@ -1,7 +1,7 @@
#include "menu.h"
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6);
void sub_8012C60(u32 x, u32 y, u32 param_3, u32 param_4, u32 param_5);
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6);
void sub_8012C60(u32 x, u32 y, u32 param_3, u32 color, u32 param_5);
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2);
void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2);
void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2);

View File

@ -149,7 +149,7 @@ SECTIONS {
src/wonder_mail_5.o(.text);
src/wonder_mail_6.o(.text);
src/post_office_guide.o(.text);
asm/code_8031D70.o(.text);
src/code_8031D70.o(.text);
src/adventure_log.o(.text);
src/friend_rescue.o(.text);
asm/friend_rescue.o(.text);
@ -431,7 +431,7 @@ SECTIONS {
src/wonder_mail_5.o(.rodata);
src/wonder_mail_6.o(.rodata);
src/post_office_guide.o(.rodata);
data/data_80E1F30.o(.rodata);
src/code_8031D70.o(.rodata);
src/adventure_log.o(.rodata);
data/data_80E2068.o(.rodata);
src/main_menu.o(.rodata);

View File

@ -1,4 +1,3 @@
#include "gba/defines.h"
#include "global.h"
IWRAM_DATA u32 gUnknown_3004000 = {0};

184
src/code_8031D70.c Normal file
View File

@ -0,0 +1,184 @@
#include "global.h"
#include "constants/wonder_mail.h"
#include "constants/colors.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "dungeon_global_data.h"
#include "pokemon.h"
#include "code_8094F88.h"
#include "menu_input.h"
struct unkStruct_203B334
{
// size: 0x7C
u32 mailIndex;
u32 unk4;
u8 fill8[0x10 - 0x8];
u32 unk10;
struct UnkTextStruct2 *unk14;
struct UnkTextStruct2 unk18[4];
u8 unk78[4];
};
EWRAM_DATA_2 struct unkStruct_203B334 *gUnknown_203B334 = {0};
extern struct unkStruct_203B480 *gUnknown_203B480;
const struct UnkTextStruct2 gUnknown_80E1FA8 = {
0, 0, 0, 0,
3,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0,
0x0, 0,
NULL
};
const u8 gUnkData_80E1FC0[4] = {0x01, 0x00, 0x0A, 0x00};
const struct UnkTextStruct2 gUnknown_80E1FC4 = {
0, 0, 0, 0,
6,
0x2, 0x0, 0x2, 0x0,
0x1A, 0xA,
0xA, 0,
gUnkData_80E1FC0
};
ALIGNED(4) const u8 gUnknown_80E1FDC[] = "Password";
ALIGNED(4) static const u8 fill0[] = "pksdir0";
extern void xxx_call_draw_string(s32, s32, const u8 *, s32, s32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void sub_80078A4(u32, u32, u32, u32, u32);
extern void sub_803D2C0(u8 *, struct unkStruct_203B480 *);
extern void sub_801317C(u32 *);
extern u32 sub_8012A64(u32 *, u32);
extern void PlayMenuSoundEffect(u32);
void sub_8031E00(void);
void sub_8031E58(void);
void DrawSOSPasswordScreen(void);
bool8 sub_8031D70(u32 mailIndex, s32 param_2)
{
gUnknown_203B334 = MemoryAlloc(sizeof(struct unkStruct_203B334),8);
gUnknown_203B334->mailIndex = mailIndex;
sub_801317C(&gUnknown_203B334->unk4);
gUnknown_203B334->unk10 = param_2;
gUnknown_203B334->unk14 = &gUnknown_203B334->unk18[param_2];
sub_8006518(gUnknown_203B334->unk18);
gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FC4;
sub_8031E00();
return TRUE;
}
u32 sub_8031DCC(void)
{
switch(sub_8012A64(&gUnknown_203B334->unk4, gUnknown_203B334->unk10))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
default:
return 0;
}
}
void sub_8031E00(void)
{
sub_8031E58();
DrawSOSPasswordScreen();
}
void sub_8031E10(void)
{
if(gUnknown_203B334)
{
gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FA8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B334->unk18, 1, 1);
MemoryFree(gUnknown_203B334);
gUnknown_203B334 = NULL;
}
}
void sub_8031E58(void)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B334->unk18, 1, 1);
}
void DrawSOSPasswordScreen(void)
{
int rowIndex;
u32 x;
u32 y;
u32 color;
s32 index;
u8 buffer [PASSWORD_BUFFER_SIZE + 2];
struct unkStruct_203B480 *mail;
mail = &gUnknown_203B480[gUnknown_203B334->mailIndex];
sub_80073B8(gUnknown_203B334->unk10);
xxx_call_draw_string(0x14,0,gUnknown_80E1FDC,gUnknown_203B334->unk10,0); // Password
sub_803D2C0(buffer, mail);
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
{
if (index < 5) {
color = COLOR_WHITE_2;
y = 0x15;
}
else if (index < 0xd) {
color = COLOR_YELLOW;
y = 0x16;
}
else if (index < 0x12)
{
color = COLOR_WHITE_2;
y = 0x15;
}
else if (index < 0x17) {
color = COLOR_WHITE_2;
y = 0x24;
}
else if (index < 0x1f) {
color = COLOR_YELLOW;
y = 0x25;
}
else if (index < 0x24)
{
color = COLOR_WHITE_2;
y = 0x24;
}
else
{
if(index > 0x28)
{
if(index < 0x31)
{
color = COLOR_YELLOW;
y = 0x34;
}
else
{
color = COLOR_WHITE_2;
y = 0x33;
}
}
else
{
color = COLOR_WHITE_2;
y = 0x33;
}
}
rowIndex = index % 0x12;
x = rowIndex * 0xb + 6;
sub_8012C60(x,y,buffer[index],color,gUnknown_203B334->unk10); // Draw character
sub_80078A4(gUnknown_203B334->unk10,x,y + 0xA,10,COLOR_CYAN); // Draw underscore beneath character
}
sub_80073E0(gUnknown_203B334->unk10);
}

View File

@ -6,16 +6,77 @@
#include "dungeon_util.h"
#include "pokemon.h"
#include "tile_types.h"
#include "random.h"
extern u8 sub_806CEBC(struct Entity *);
extern void sub_806CCB4(struct Entity *, u8);
extern void sub_803E46C(u32);
extern bool8 sub_808DA44(s32 a1_, u32 a2_);
extern u32 sub_806CF98(struct Entity *);
extern u32 sub_80687D0(s16);
void sub_80053AC(u8 *, s32, u32, u32, u32, u32, u8);
void sub_806CDD4(struct Entity *, u8, u32);
extern const u8 gUnknown_8106EEF[];
extern const u8 gDungeonWaterType[];
void sub_806CC10(void)
{
struct EntityInfo *entityInfo;
struct Entity *entity;
s32 index;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if (EntityExists(entity)) {
entityInfo = entity->info;
if ((entityInfo->unk166 != 0) && (entityInfo->unk166--, (entityInfo->unk166 & 1) == 0)) {
sub_806CDD4(entity,0, (entityInfo->action.direction - 1) & 7);
}
}
}
}
void sub_806CC70(void)
{
s32 index;
struct Entity *entity;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if(EntityExists(entity))
sub_806CCB4(entity, sub_806CEBC(entity));
}
}
void sub_806CCB4(struct Entity *entity, u8 param_2)
{
s32 sVar1;
bool8 flag;
struct EntityInfo *info;
info = entity->info;
flag = gDungeon->hallucinating;
if (entity == gDungeon->cameraTarget) {
flag = FALSE;
}
entity->unk6B = param_2;
entity->unk6A = param_2;
entity->direction2 = info->action.direction;
entity->direction = info->action.direction;
entity->unk6F = 0;
sVar1 = entity->unk68;
if ((info->waitingStatus != STATUS_DECOY) && (!flag)) {
sub_80053AC(entity->fill28,entity->unk64,entity->unk6A,entity->direction,sVar1,Rand32Bit() & 3,0);
}
else {
sub_80053AC(entity->fill28,sub_80687D0(0x1a5),entity->unk6A,entity->direction,sVar1,Rand32Bit() & 3,0);
}
entity->unk6E = 0;
}
void sub_806CD90(void)
{
s32 index;
@ -28,22 +89,22 @@ void sub_806CD90(void)
}
}
void sub_806CDD4(struct Entity *r0, u8 r1, u32 r2)
void sub_806CDD4(struct Entity *entity, u8 r1, u32 r2)
{
if(GetEntityType(r0) == ENTITY_MONSTER)
if(GetEntityType(entity) == ENTITY_MONSTER)
{
r0->unk6A = r1;
if(r2 < NUM_DIRECTIONS) r0->direction = r2;
entity->unk6A = r1;
if(r2 < NUM_DIRECTIONS) entity->direction = r2;
}
}
void sub_806CDFC(struct Entity *r0, u8 r1, u32 r2)
void sub_806CDFC(struct Entity *entity, u8 r1, u32 r2)
{
if(GetEntityType(r0) == ENTITY_MONSTER)
if(GetEntityType(entity) == ENTITY_MONSTER)
{
if(r0->unk6B == r1)
if(entity->unk6B == r1)
{
if(r0->direction2 == r2)
if(entity->direction2 == r2)
return;
else
goto change_dir;
@ -51,57 +112,57 @@ void sub_806CDFC(struct Entity *r0, u8 r1, u32 r2)
else
{
change_dir:
sub_806CDD4(r0, r1, r2);
sub_806CDD4(entity, r1, r2);
}
}
}
void sub_806CE34(struct Entity *r0, u32 newDir)
void sub_806CE34(struct Entity *entity, u32 newDir)
{
if(GetEntityType(r0) == ENTITY_MONSTER)
if(GetEntityType(entity) == ENTITY_MONSTER)
{
r0->unk6A = sub_806CEBC(r0);
entity->unk6A = sub_806CEBC(entity);
if(newDir < NUM_DIRECTIONS)
{
r0->info->action.direction = newDir & DIRECTION_MASK;
r0->direction = newDir & DIRECTION_MASK;
entity->info->action.direction = newDir & DIRECTION_MASK;
entity->direction = newDir & DIRECTION_MASK;
}
}
}
void sub_806CE68(struct Entity *r0, u32 newDir)
void sub_806CE68(struct Entity *entity, u32 newDir)
{
if(GetEntityType(r0) == ENTITY_MONSTER)
if(GetEntityType(entity) == ENTITY_MONSTER)
{
r0->unk6A = sub_806CEBC(r0);
entity->unk6A = sub_806CEBC(entity);
if(newDir < NUM_DIRECTIONS)
{
r0->direction = newDir;
entity->direction = newDir;
}
}
}
void sub_806CE94(struct Entity *r0, u32 newDir)
void sub_806CE94(struct Entity *entity, u32 newDir)
{
if(GetEntityType(r0) == ENTITY_MONSTER)
if(GetEntityType(entity) == ENTITY_MONSTER)
{
r0->unk6A = 6;
entity->unk6A = 6;
if(newDir < NUM_DIRECTIONS)
{
r0->direction = newDir;
entity->direction = newDir;
}
}
}
u8 sub_806CEBC(struct Entity *param_1)
u8 sub_806CEBC(struct Entity *entity)
{
u8 sleep;
struct EntityInfo * entityInfo1;
struct EntityInfo * entityInfo2;
// NOTE: copy needed to match
entityInfo1 = param_1->info;
entityInfo2 = param_1->info;
entityInfo1 = entity->info;
entityInfo2 = entity->info;
sleep = entityInfo1->sleep;
if ((sleep == STATUS_SLEEP) || (sleep == STATUS_NAPPING) || (sleep == STATUS_NIGHTMARE)) {
@ -117,57 +178,57 @@ u8 sub_806CEBC(struct Entity *param_1)
return 0x7;
}
void sub_806CEFC(struct Entity *param_1, u32 newDir)
void sub_806CEFC(struct Entity *entity, u32 newDir)
{
param_1->info->action.direction = newDir & DIRECTION_MASK;
sub_806CE68(param_1, (newDir & DIRECTION_MASK));
entity->info->action.direction = newDir & DIRECTION_MASK;
sub_806CE68(entity, (newDir & DIRECTION_MASK));
}
void sub_806CF18(struct Entity *param_1)
void sub_806CF18(struct Entity *entity)
{
s32 index;
struct EntityInfo *entityInfo;
if (EntityExists(param_1)) {
entityInfo = param_1->info;
if (EntityExists(entity)) {
entityInfo = entity->info;
for (index = 0; index < 100; index++) {
sub_803E46C(0x21);
if (!sub_808DA44(entityInfo->apparentID, param_1->unk6B)) {
if (!sub_808DA44(entityInfo->apparentID, entity->unk6B)) {
break;
}
}
}
}
u8 sub_806CF54(struct Entity *param_1)
u8 sub_806CF54(struct Entity *entity)
{
return param_1->info->unk204;
return entity->info->unk204;
}
void sub_806CF60(void)
{
struct Entity *uVar2;
struct Entity *entity;
s32 index;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
uVar2 = gDungeon->allPokemon[index];
if (EntityExists(uVar2)) {
sub_806CF98(uVar2);
entity = gDungeon->allPokemon[index];
if (EntityExists(entity)) {
sub_806CF98(entity);
}
}
}
u32 sub_806CF98(struct Entity *param_1)
u32 sub_806CF98(struct Entity *entity)
{
struct Tile *mapTile;
u32 uVar3;
u16 terrainType;
struct EntityInfo *entityInfo;
mapTile = GetTileAtEntitySafe(param_1);
mapTile = GetTileAtEntitySafe(entity);
terrainType = mapTile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
entityInfo = param_1->info;
entityInfo = entity->info;
uVar3 = GetShadowSize(entityInfo->apparentID);
if (terrainType == (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) {
return 6;

View File

@ -8,15 +8,15 @@
#include "save.h"
#include "text_util.h"
extern struct unkStruct_203B480 gUnknown_2038C88;
extern struct unkStruct_203B480 *gUnknown_203B480;
extern struct unkStruct_203B484 gUnknown_2039288;
extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct unkStruct_203B48C gUnknown_20393C0;
extern struct unkStruct_203B48C *gUnknown_203B48C;
extern u32 *gUnknown_203B488;
extern u32 gUnknown_20392E8;
EWRAM_DATA_2 struct unkStruct_203B480 *gUnknown_203B480 = {0};
EWRAM_DATA_2 struct unkStruct_203B484 *gUnknown_203B484 = {0};
EWRAM_DATA_2 u32 *gUnknown_203B488 = {0};
EWRAM_DATA_2 struct unkStruct_203B48C *gUnknown_203B48C = {0};
extern struct unkStruct_203B480 gUnknown_2038C88;
extern struct unkStruct_203B484 gUnknown_2039288;
extern u32 gUnknown_20392E8;
extern struct unkStruct_203B48C gUnknown_20393C0;
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);

View File

@ -21,7 +21,7 @@ extern void ResetPelipperBoardSlot(u8);
extern void ResetJobSlot(u8);
extern bool8 ValidateWonderMail(struct WonderMail *);
extern struct unkStruct_203B490 *gUnknown_203B490;
EWRAM_DATA_2 struct unkStruct_203B490 *gUnknown_203B490 = {0};
extern struct unkStruct_203B490 gUnknown_2039448;
void LoadMailInfo(void)

View File

@ -3,7 +3,7 @@
struct unkStruct_203B494
{
// size: 0xC8?
// size: 0xC4
u32 unk0; // 32 bit bitfield, I think
s32 numAdventures;
s32 unk8;
@ -18,8 +18,8 @@ struct unkStruct_203B494
s32 unkC0;
};
extern struct unkStruct_203B494 *gUnknown_203B494;
extern struct unkStruct_203B494 gUnknown_2039778;
EWRAM_DATA_2 struct unkStruct_203B494 *gUnknown_203B494 = {0};
EWRAM_DATA struct unkStruct_203B494 gUnknown_2039778 = {0};
extern const u8 *gAdventureLogText[];
s16 GetBaseSpeciesNoUnown(s16 index);

View File

@ -11,7 +11,7 @@
#include "text_util.h"
#include "menu_input.h"
extern struct DebugMenu *gUnknown_203B3EC;
EWRAM_DATA_2 struct DebugMenu *gUnknown_203B3EC = {0};
const struct UnkTextStruct2 gUnknown_80E7D40 =
{

View File

@ -1,4 +1,3 @@
#include "gba/defines.h"
#include "global.h"
#include "game_options.h"
#include "code_8092334.h"

View File

@ -13,7 +13,7 @@ struct unkStruct_203B4B8
u32 unk0;
};
extern struct unkStruct_203B4B8 gUnknown_203B4B8;
EWRAM_DATA_2 struct unkStruct_203B4B8 gUnknown_203B4B8 = {0};
extern struct DebugLocation gUnknown_8118798;
extern struct unkStruct_80A77D0 *sub_80A77D0(s16 r0, struct DebugLocation *r1);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/colors.h"
#include "file_system.h"
#include "item.h"
#include "moves.h"
@ -703,7 +704,7 @@ u32 sub_80913E0(struct Item* slot, u32 a2, struct subStruct_203B240 ** a3)
u32 result;
InitPokemonMove(buffer8, move);
sub_80078A4(a2, 4, 82, 200, 7);
sub_80078A4(a2, 4, 82, 200, COLOR_WHITE_2);
xxx_format_and_draw(4, 84, gPtrTypeText, a2, 0);
moves_data = GetMoveType(buffer8);
typestring = GetUnformattedTypeString(moves_data);

View File

@ -1,4 +1,3 @@
#include "gba/defines.h"
#include "global.h"
#include "constants/bg_music.h"
#include "constants/colors.h"

View File

@ -7,22 +7,7 @@
#include "wonder_mail.h"
#include "menu_input.h"
extern u8 *gUnknown_80D4990[];
extern u8 *gUnknown_80D4970[];
extern bool8 IsMailinJobSlot(struct WonderMail *mail);
void sub_802E578(void);
void HandleMailActionMenu(void);
void HandleMailboxMenu(void);
void nullsub_133(void);
void sub_802E0A0(void);
void sub_802E1AC(void);
void sub_802E73C(void);
void sub_802E758(void);
void sub_802E774(void);
void sub_802E7D0(void);
EWRAM_DATA_2 struct unkStruct_203B304 *gUnknown_203B304 = {0};
const struct UnkTextStruct2 gUnknown_80E0284 =
{
@ -73,11 +58,24 @@ const u8 gMailAccepted[] = "Accepted";
const u8 gUnknown_80E0324[] = "/";
static const u8 mailbox_fill[] = "pksdir0";
extern struct unkStruct_203B304 *gUnknown_203B304;
extern u8 *gUnknown_80D4990[];
extern u8 *gUnknown_80D4970[];
extern bool8 IsMailinJobSlot(struct WonderMail *mail);
void sub_802E578(void);
void HandleMailActionMenu(void);
void HandleMailboxMenu(void);
void nullsub_133(void);
void sub_802E0A0(void);
void sub_802E1AC(void);
void sub_802E73C(void);
void sub_802E758(void);
void sub_802E774(void);
void sub_802E7D0(void);
extern void sub_802E088(u32);
extern void CreateMailboxMenu(void);
extern void CreateMailActionMenu(void);
extern void sub_802BD14(u32, u32, u32);
extern void sub_802BE94(u32);
extern void CreateMailMenu(void);

View File

@ -38,7 +38,7 @@ extern void xxx_call_draw_char(u32, u32, u32, u32, u32);
const u32 gDefaultMenuTextColors[] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED };
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6)
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6)
{
s32 iVar1;
u32 uVar2;
@ -74,7 +74,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6)
uVar2 = ReturnIntFromChar2(iVar1 + 0x30);
iVar3 = GetCharacter(uVar2);
total_x += iVar3->unk6;
xxx_call_draw_char(x - total_x,y,uVar2,param_5,param_6);
xxx_call_draw_char(x - total_x,y,uVar2,color,param_6);
counter++;
if (counter >= len) {
break;
@ -83,7 +83,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6)
}
}
void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5)
void sub_8012C60(u32 x,u32 y,u32 param_3,u32 color,u32 param_5)
{
u32 add_x;
struct unkChar *iVar3;
@ -97,7 +97,7 @@ void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5)
else {
add_x = 0;
}
xxx_call_draw_char(x + add_x,y,uVar2,param_4,param_5);
xxx_call_draw_char(x + add_x,y,uVar2,color,param_5);
}
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2)

View File

@ -7,6 +7,7 @@
#include "code_809447C.h"
#include "text_util.h"
#include "constants/colors.h"
#include "constants/monster.h"
#include "file_system.h"
#include "code_800D090.h"
@ -1451,7 +1452,7 @@ void unk_MovePrintData(struct Move* move, int y) {
s32 power;
const char* text;
sub_80078A4(y, 4, 72, 200, 7);
sub_80078A4(y, 4, 72, 200, COLOR_WHITE_2);
sub_8092D54(gAvailablePokemonNames, move);
xxx_format_and_draw(4, 74, gUnknown_810CF00, y, 0);
xxx_format_and_draw(4, 86, gPtrTypeText, y, 0);

View File

@ -1,5 +1,6 @@
#include "global.h"
#include "constants/input.h"
#include "constants/colors.h"
#include "input.h"
#include "memory.h"
#include "text.h"
@ -662,17 +663,17 @@ void CreateOptionsMenu(void)
case WINDOW_COLOR_BLUE:
length = sub_8008ED0(gWindowBGBlueString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
y + 0xA,length,COLOR_WHITE_2);
break;
case WINDOW_COLOR_RED:
length = sub_8008ED0(gWindowBGRedString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
y + 0xA,length,COLOR_WHITE_2);
break;
case WINDOW_COLOR_GREEN:
length = sub_8008ED0(gWindowBGGreenString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
y + 0xA,length,COLOR_WHITE_2);
break;
}
sub_80073E0(gUnknown_203B260->unk44);

View File

@ -1,4 +1,3 @@
#include "gba/defines.h"
#include "global.h"
#include "constants/dungeon.h"
#include "item.h"

View File

@ -620,7 +620,7 @@ void sub_808DFDC(s32 a1, struct PokemonStruct2* a2)
}
}
void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 a3)
void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 level)
{
u8 buffer[12];
s32 id = _id;
@ -636,11 +636,11 @@ void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 a3)
DecompressATFile((char*)gLevelCurrentData, 0, file);
CloseFile(file);
}
a3 -= 1;
if ( a3 < 0 )
a3 = 0;
level -= 1;
if ( level < 0 )
level = 0;
*a1 = gLevelCurrentData[a3];
*a1 = gLevelCurrentData[level];
}
u8* DecompressMoveID(u8* a1, u16* moveID)

View File

@ -1,4 +1,3 @@
#include "gba/defines.h"
#include "global.h"
#include "input.h"
#include "menu.h"

View File

@ -118,7 +118,7 @@ struct unkStruct_203B3E8
bool8 wonderMailAccepted;
};
EWRAM_DATA struct unkStruct_203B3E8 *gUnknown_203B3E8;
EWRAM_DATA_2 struct unkStruct_203B3E8 *gUnknown_203B3E8 = {0};
extern u32 sub_80144A4(s32 *);
extern u32 sub_8011C1C(void);

View File

@ -829,9 +829,8 @@ gUnknown_20393C0: /* 20393C0 */
gUnknown_2039448: /* 2039448 */
.space 0x330
gUnknown_2039778: /* 2039778 */
.space 0xC8
.include "src/code_8097670.o"
.space 0x4
.include "src/exclusive_pokemon.o"
.space 0x4

View File

@ -341,9 +341,7 @@ gUnknown_203B2FC: /* 203B2FC */
gUnknown_203B300: /* 203B300 */
.space 0x4
gUnknown_203B304: /* 203B304 */
.space 0x4
.include "src/mailbox.o"
.include "src/pelipper_board.o"
gUnknown_203B30C: /* 203B30C */
@ -371,10 +369,7 @@ gUnknown_203B328: /* 203B328 */
.space 0x4
.include "src/post_office_guide.o"
gUnknown_203B334: /* 203B334 */
.space 0x4
.include "src/code_8031D70.o"
.include "src/adventure_log.o"
.include "src/friend_rescue.o"
@ -398,14 +393,9 @@ gUnknown_203B364: /* 203B364 */
.space 0x4
.include "src/rescue_password_menu.o"
.include "src/load_screen.o"
gUnknown_203B3E8: /* 203B3E8 */
.space 0x4
gUnknown_203B3EC: /* 203B3EC */
.space 0x4
.include "src/wonder_mail_main_menu.o"
.include "src/debug_menu.o"
gUnknown_203B3F0: /* 203B3F0 */
.space 0x4
@ -484,27 +474,10 @@ gUnknown_203B474: /* 203B474 */
.space 0x8
.include "src/play_time.o"
gUnknown_203B480: /* 203B480 */
.space 0x4
gUnknown_203B484: /* 203B484 */
.space 0x4
gUnknown_203B488: /* 203B488 */
.space 0x4
gUnknown_203B48C: /* 203B48C */
.space 0x4
gUnknown_203B490: /* 203B490 */
.space 0x4
gUnknown_203B494: /* 203B494 */
.space 0x4
.include "src/code_8094F88.o"
.include "src/code_80958E8.o"
.include "src/code_8097670.o"
.include "src/exclusive_pokemon.o"
.include "src/ground_main.o"
.space 0x2
@ -520,5 +493,4 @@ gUnknown_203B4B0: /* 203B4B0 */
gUnknown_203B4B4: /* 203B4B4 */
.space 0x4
gUnknown_203B4B8: /* 203B4B8 */
.space 0x4
.include "src/ground_link.o"