Split+data code_8023144/code_80227B8

This commit is contained in:
Kermalis
2023-09-20 22:26:35 -04:00
parent 8b7c5e5ff5
commit fdcef19d85
184 changed files with 1862 additions and 1834 deletions

View File

@@ -1,154 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8023758
sub_8023758:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r3, _080237DC
ldr r2, [r3]
ldr r1, [r2, 0x8]
lsls r0, r1, 1
adds r0, 0xA
adds r2, r0
mov r9, r2
movs r2, 0
subs r1, 0x1
cmp r2, r1
bge _080237CC
_08023778:
mov r5, r9
ldr r0, [r3]
ldr r0, [r0, 0x8]
subs r7, r0, 0x1
adds r0, r2, 0x1
mov r8, r0
cmp r7, r2
ble _080237BE
_08023788:
subs r6, r5, 0x2
movs r1, 0
ldrsh r0, [r6, r1]
movs r1, 0x1
str r2, [sp]
bl GetAlphabetParentNo
adds r4, r0, 0
movs r1, 0
ldrsh r0, [r5, r1]
movs r1, 0x1
bl GetAlphabetParentNo
lsls r4, 16
lsls r0, 16
ldr r2, [sp]
cmp r4, r0
ble _080237B6
movs r0, 0
ldrsh r1, [r5, r0]
ldrh r0, [r6]
strh r0, [r5]
strh r1, [r6]
_080237B6:
adds r5, r6, 0
subs r7, 0x1
cmp r7, r2
bgt _08023788
_080237BE:
mov r2, r8
ldr r3, _080237DC
ldr r0, [r3]
ldr r0, [r0, 0x8]
subs r0, 0x1
cmp r2, r0
blt _08023778
_080237CC:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080237DC: .4byte gUnknown_3001B5C
thumb_func_end sub_8023758
thumb_func_start sub_80237E0
sub_80237E0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r3, _08023864
ldr r2, [r3]
ldr r1, [r2, 0x8]
lsls r0, r1, 1
adds r0, 0xA
adds r2, r0
mov r9, r2
movs r2, 0
subs r1, 0x1
cmp r2, r1
bge _08023854
_08023800:
mov r5, r9
ldr r0, [r3]
ldr r0, [r0, 0x8]
subs r7, r0, 0x1
adds r0, r2, 0x1
mov r8, r0
cmp r7, r2
ble _08023846
_08023810:
subs r6, r5, 0x2
movs r1, 0
ldrsh r0, [r6, r1]
movs r1, 0
str r2, [sp]
bl GetAlphabetParentNo
adds r4, r0, 0
movs r1, 0
ldrsh r0, [r5, r1]
movs r1, 0
bl GetAlphabetParentNo
lsls r4, 16
lsls r0, 16
ldr r2, [sp]
cmp r4, r0
ble _0802383E
movs r0, 0
ldrsh r1, [r5, r0]
ldrh r0, [r6]
strh r0, [r5]
strh r1, [r6]
_0802383E:
adds r5, r6, 0
subs r7, 0x1
cmp r7, r2
bgt _08023810
_08023846:
mov r2, r8
ldr r3, _08023864
ldr r0, [r3]
ldr r0, [r0, 0x8]
subs r0, 0x1
cmp r2, r0
blt _08023800
_08023854:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08023864: .4byte gUnknown_3001B5C
thumb_func_end sub_80237E0

View File

@@ -1,382 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8022A10
sub_8022A10:
push {r4-r7,lr}
sub sp, 0x8
ldr r1, _08022A2C
ldr r0, [r1]
ldr r0, [r0]
adds r4, r1, 0
cmp r0, 0x16
bls _08022A22
b _08022D1E
_08022A22:
lsls r0, 2
ldr r1, _08022A30
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022A2C: .4byte gUnknown_203B294
_08022A30: .4byte _08022A34
.align 2, 0
_08022A34:
.4byte _08022A90
.4byte _08022AAA
.4byte _08022AB2
.4byte _08022AE0
.4byte _08022B10
.4byte _08022B1A
.4byte _08022B24
.4byte _08022B34
.4byte _08022B44
.4byte _08022B54
.4byte _08022B64
.4byte _08022C28
.4byte _08022CA0
.4byte _08022CA8
.4byte _08022CB0
.4byte _08022CB8
.4byte _08022CC0
.4byte _08022CC8
.4byte _08022CD8
.4byte _08022CE8
.4byte _08022CF8
.4byte _08022D14
.4byte _08022D1E
_08022A90:
ldr r0, [r4]
ldr r0, [r0, 0x48]
cmp r0, 0
beq _08022A9C
movs r0, 0x5
b _08022A9E
_08022A9C:
movs r0, 0x1
_08022A9E:
movs r1, 0x3
movs r2, 0
movs r3, 0xA
bl sub_801A5D8
b _08022D22
_08022AAA:
movs r0, 0x1
bl sub_801A8D0
b _08022D22
_08022AB2:
bl sub_801A9E0
ldr r0, _08022ADC
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x54
adds r1, r2, 0
adds r1, 0xF8
movs r4, 0x9C
lsls r4, 1
adds r3, r2, r4
adds r2, 0xF4
ldr r2, [r2]
str r2, [sp]
movs r2, 0x2
str r2, [sp, 0x4]
movs r2, 0
bl sub_8012D60
b _08022D22
.align 2, 0
_08022ADC: .4byte gUnknown_203B294
_08022AE0:
bl sub_801A9E0
ldr r4, _08022B08
ldr r0, [r4]
adds r0, 0x54
movs r1, 0
bl sub_8012EA4
ldr r0, [r4]
adds r0, 0xA4
ldr r1, _08022B0C
movs r2, 0x3
str r2, [sp]
movs r2, 0x1
str r2, [sp, 0x4]
movs r2, 0
movs r3, 0
bl sub_8012D60
b _08022D22
.align 2, 0
_08022B08: .4byte gUnknown_203B294
_08022B0C: .4byte gUnknown_80DC584
_08022B10:
ldr r0, [r4]
adds r0, 0x50
bl sub_801B3C0
b _08022D22
_08022B1A:
ldr r0, _08022B20
b _08022D00
.align 2, 0
_08022B20: .4byte gUnknown_80DC5F4
_08022B24:
ldr r0, _08022B2C
ldr r3, _08022B30
b _08022D02
.align 2, 0
_08022B2C: .4byte gUnknown_80DC618
_08022B30: .4byte 0x00000101
_08022B34:
ldr r0, _08022B3C
ldr r3, _08022B40
b _08022D02
.align 2, 0
_08022B3C: .4byte gUnknown_80DC674
_08022B40: .4byte 0x00000101
_08022B44:
ldr r0, _08022B4C
ldr r3, _08022B50
b _08022D02
.align 2, 0
_08022B4C: .4byte gUnknown_80DC6CC
_08022B50: .4byte 0x00000101
_08022B54:
ldr r0, _08022B5C
ldr r3, _08022B60
b _08022D02
.align 2, 0
_08022B5C: .4byte gUnknown_80DC728
_08022B60: .4byte 0x00000101
_08022B64:
ldr r7, _08022B68
b _08022B78
.align 2, 0
_08022B68: .4byte gUnknown_203B294
_08022B6C:
ldr r1, [r4]
ldr r0, [r1, 0x40]
adds r0, 0x1
str r0, [r1, 0x40]
cmp r0, 0x17
bgt _08022C10
_08022B78:
movs r5, 0
movs r6, 0
movs r3, 0
ldr r2, [r4]
ldr r0, [r2, 0x38]
cmp r5, r0
bge _08022BA4
ldrb r1, [r2, 0x8]
b _08022B9C
_08022B8A:
adds r3, 0x1
ldr r2, [r4]
ldr r0, [r2, 0x38]
cmp r3, r0
bge _08022BA4
adds r0, r2, 0
adds r0, 0x8
adds r0, r3
ldrb r1, [r0]
_08022B9C:
ldr r0, [r2, 0x40]
cmp r1, r0
bne _08022B8A
movs r5, 0x1
_08022BA4:
movs r3, 0
ldr r2, [r4]
ldr r0, [r2, 0x3C]
cmp r3, r0
bge _08022BCE
adds r0, r2, 0
adds r0, 0x20
b _08022BC4
_08022BB4:
adds r3, 0x1
ldr r2, [r4]
ldr r0, [r2, 0x3C]
cmp r3, r0
bge _08022BCE
adds r0, r2, 0
adds r0, 0x20
adds r0, r3
_08022BC4:
ldrb r1, [r0]
ldr r0, [r2, 0x40]
cmp r1, r0
bne _08022BB4
movs r6, 0x1
_08022BCE:
cmp r5, r6
beq _08022B6C
ldr r1, [r7]
movs r0, 0xA
str r0, [r1, 0x4]
ldr r0, [r1, 0x40]
lsls r0, 24
lsrs r0, 24
bl GetIQSkillName
adds r1, r0, 0
ldr r0, _08022C18
bl strcpy
movs r0, 0xCB
bl PlaySound
ldr r0, _08022C1C
movs r1, 0
movs r2, 0
ldr r3, _08022C20
bl sub_80141B4
ldr r1, [r7]
ldr r0, [r1, 0x40]
adds r0, 0x1
str r0, [r1, 0x40]
ldr r0, _08022C24
ldr r0, [r0]
ldr r0, [r0, 0x40]
cmp r0, 0x17
bgt _08022C10
b _08022D22
_08022C10:
movs r0, 0xB
bl sub_8022924
b _08022D22
.align 2, 0
_08022C18: .4byte gUnknown_202DEA8
_08022C1C: .4byte gUnknown_80DC788
_08022C20: .4byte 0x00000101
_08022C24: .4byte gUnknown_203B294
_08022C28:
ldr r1, [r4]
movs r0, 0x16
str r0, [r1, 0x4]
bl nullsub_104
ldr r0, [r4]
adds r0, 0x46
ldrh r0, [r0]
cmp r0, 0x8
bhi _08022C98
lsls r0, 2
ldr r1, _08022C48
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022C48: .4byte _08022C4C
.align 2, 0
_08022C4C:
.4byte _08022C70
.4byte _08022C78
.4byte _08022C80
.4byte _08022C98
.4byte _08022C88
.4byte _08022C98
.4byte _08022C98
.4byte _08022C98
.4byte _08022C90
_08022C70:
movs r0, 0x16
bl sub_8022924
b _08022D22
_08022C78:
movs r0, 0xD
bl sub_8022924
b _08022D22
_08022C80:
movs r0, 0xE
bl sub_8022924
b _08022D22
_08022C88:
movs r0, 0xF
bl sub_8022924
b _08022D22
_08022C90:
movs r0, 0x10
bl sub_8022924
b _08022D22
_08022C98:
movs r0, 0xC
bl sub_8022924
b _08022D22
_08022CA0:
ldr r0, _08022CA4
b _08022D00
.align 2, 0
_08022CA4: .4byte gUnknown_80DC7B4
_08022CA8:
ldr r0, _08022CAC
b _08022D00
.align 2, 0
_08022CAC: .4byte gUnknown_80DC7FC
_08022CB0:
ldr r0, _08022CB4
b _08022D00
.align 2, 0
_08022CB4: .4byte gUnknown_80DC81C
_08022CB8:
ldr r0, _08022CBC
b _08022D00
.align 2, 0
_08022CBC: .4byte gUnknown_80DC844
_08022CC0:
ldr r0, _08022CC4
b _08022D00
.align 2, 0
_08022CC4: .4byte gUnknown_80DC864
_08022CC8:
ldr r1, [r4]
movs r0, 0x16
str r0, [r1, 0x4]
ldr r0, _08022CD4
b _08022D00
.align 2, 0
_08022CD4: .4byte gUnknown_80DC88C
_08022CD8:
ldr r1, [r4]
movs r0, 0x16
str r0, [r1, 0x4]
ldr r0, _08022CE4
b _08022D00
.align 2, 0
_08022CE4: .4byte gUnknown_80DC8AC
_08022CE8:
ldr r1, [r4]
movs r0, 0x16
str r0, [r1, 0x4]
ldr r0, _08022CF4
b _08022D00
.align 2, 0
_08022CF4: .4byte gUnknown_80DC8C8
_08022CF8:
ldr r1, [r4]
movs r0, 0x16
str r0, [r1, 0x4]
ldr r0, _08022D0C
_08022D00:
ldr r3, _08022D10
_08022D02:
movs r1, 0
movs r2, 0
bl sub_80141B4
b _08022D22
.align 2, 0
_08022D0C: .4byte gUnknown_80DC8DC
_08022D10: .4byte 0x00000301
_08022D14:
ldr r0, [r4]
ldr r0, [r0, 0x4C]
bl sub_801AFA4
b _08022D22
_08022D1E:
bl sub_801A928
_08022D22:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8022A10
.align 2,0

View File

@@ -1,188 +0,0 @@
.section .rodata
@ code_8023144
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC584
gUnknown_80DC584: @ 80DC584
.4byte Yes_80DC5A0
.byte 0x02, 0x00, 0x00, 0x00
.4byte No_80DC59C
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.global No_80DC59C
No_80DC59C:
.string "No\0"
.align 2,0
.global Yes_80DC5A0
Yes_80DC5A0:
.string "Yes\0"
.align 2,0
.global gUnknown_80DC5A4
gUnknown_80DC5A4: @ 80DC5A4
.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 gUnknown_80DC5BC
gUnknown_80DC5BC: @ 80DC5BC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC5D4
gUnknown_80DC5D4: @ 80DC5D4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x0b, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC5EC
gUnknown_80DC5EC: @ 80DC5EC
.byte 0x81, 0x48
.byte 0x81, 0x48
.byte 0x81, 0x48
.byte 0x00, 0x00
.global gUnknown_80DC5F4
gUnknown_80DC5F4: @ 80DC5F4
.string "It doesn{APOSTROPHE}t appear to be hungry.\0"
.align 2,0
.global gUnknown_80DC618
gUnknown_80DC618: @ 80DC618
.string "{ARG_POKEMON_1} took the Gummi and ate it.\n"
.string "This Gummi looks like a big favorite!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s IQ went up!\0"
.align 2,0
.global gUnknown_80DC674
gUnknown_80DC674: @ 80DC674
.string "{ARG_POKEMON_1} took the Gummi and ate it.\n"
.string "This Gummi looks like a favorite!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s IQ went up!\0"
.align 2,0
.global gUnknown_80DC6CC
gUnknown_80DC6CC: @ 80DC6CC
.string "{ARG_POKEMON_1} took the Gummi and ate it.\n"
.string "It doesn{APOSTROPHE}t seem to dislike this Gummi.\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s IQ went up!\0"
.align 2,0
.global gUnknown_80DC728
gUnknown_80DC728: @ 80DC728
.string "{ARG_POKEMON_1} took the Gummi and ate it.\n"
.string "It appears to be just a little satisfied.\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s IQ went up!\0"
.align 2,0
.global gUnknown_80DC788
gUnknown_80DC788: @ 80DC788
.string "{ARG_POKEMON_1}{APOSTROPHE}s IQ helped it learn how to\n"
.string "use {ARG_MOVE_ITEM_1}!\0"
.align 2,0
.global gUnknown_80DC7B4
gUnknown_80DC7B4: @ 80DC7B4
.string "Yes! {ARG_POKEMON_1} grew explosively!\n"
.string "Attack{COMMA} Defense{COMMA} and so on rose by 1!\0"
.align 2,0
.global gUnknown_80DC7FC
gUnknown_80DC7FC: @ 80DC7FC
.string "Yes!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s Attack rose by 1!\0"
.align 2,0
.global gUnknown_80DC81C
gUnknown_80DC81C: @ 80DC81C
.string "Yes!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s Special Attack rose by 1!\0"
.align 2,0
.global gUnknown_80DC844
gUnknown_80DC844: @ 80DC844
.string "Yes!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s Defense rose by 1!\0"
.align 2,0
.global gUnknown_80DC864
gUnknown_80DC864: @ 80DC864
.string "Yes!\n"
.string "{ARG_POKEMON_1}{APOSTROPHE}s Special Defense rose by 1!\0"
.align 2,0
.global gUnknown_80DC88C
gUnknown_80DC88C: @ 80DC88C
.string "You don{APOSTROPHE}t have any Gummis.\0"
.align 2,0
.global gUnknown_80DC8AC
gUnknown_80DC8AC: @ 80DC8AC
.string "You don{APOSTROPHE}t have an item.\0"
.align 2,0
.global gUnknown_80DC8C8
gUnknown_80DC8C8: @ 80DC8C8
.string "The Gummi is gone!\0"
.align 2,0
.global gUnknown_80DC8DC
gUnknown_80DC8DC: @ 80DC8DC
.string "The item is gone!\0"
.align 2,0
.global gUnknown_80DC8F0
gUnknown_80DC8F0: @ 80DC8F0
.string "Give\0"
.align 2,0
.global gUnknown_80DC8F8
gUnknown_80DC8F8: @ 80DC8F8
.string "Use\0"
.align 2,0
@ code_8023144 #2
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC904
gUnknown_80DC904: @ 80DC904
.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 gUnknown_80DC91C
gUnknown_80DC91C: @ 80DC91C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x02, 0x00
.byte 0x0f, 0x00, 0x0e, 0x00
.byte 0x0e, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC934
gUnknown_80DC934: @ 80DC934
.string "Pokémon\0"
.align 2,0
.global gUnknown_80DC93C
gUnknown_80DC93C: @ 80DC93C
.string "{COLOR_2}%c%s{END_COLOR_TEXT_2}\0"

View File

@@ -2,7 +2,7 @@
#define GUARD_ADVENTURE_LOG_H
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xA0
typedef struct AdventureLog

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CHARGE_MOVE_H
#define GUARD_CHARGE_MOVE_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 MoveMatchesChargingStatus(Entity *pokemon, Move *move);
// checkCharge = Check for the move named Charge.

View File

@@ -3,7 +3,7 @@
#include "file_system.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// code_80130A8.s
extern void sub_8013F84(void);

View File

@@ -3,8 +3,8 @@
#include "input.h"
#include "items.h"
#include "subStruct_203B240.h"
#include "text.h"
#include "structs/subStruct_203B240.h"
#include "structs/str_text.h"
// size: 0x94
typedef struct unkStruct_203B230

View File

@@ -3,7 +3,7 @@
#include "items.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x154
typedef struct unkStruct_203B234

View File

@@ -4,7 +4,7 @@
#include "constants/iq_skill.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x124
struct unkStruct_203B238

View File

@@ -4,7 +4,7 @@
#include "constants/iq_skill.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xC4
struct unkStruct_203B23C

View File

@@ -2,8 +2,8 @@
#define GUARD_CODE_801C620_H
#include "menu.h"
#include "subStruct_203B240.h"
#include "text.h"
#include "structs/subStruct_203B240.h"
#include "structs/str_text.h"
// size: 0x94
struct unkStruct_203B240

View File

@@ -3,7 +3,7 @@
#include "constants/item.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x554
struct unkStruct_203B244

View File

@@ -3,7 +3,7 @@
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x118
struct unk_203B250

View File

@@ -2,7 +2,7 @@
#define GUARD_CODE_801D9E4_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xA0
struct unkStruct_203B258

View File

@@ -5,7 +5,7 @@
#include "input.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size 0xBC
typedef struct unkStruct_203B270

36
include/code_80227B8.h Normal file
View File

@@ -0,0 +1,36 @@
#ifndef GUARD_CODE_80227B8_H
#define GUARD_CODE_80227B8_H
#include "constants/iq_skill.h"
#include "items.h"
#include "menu.h"
#include "pokemon.h"
#include "structs/str_text.h"
// size: 0x1A8
typedef struct unkStruct_203B294
{
/* 0x0 */ s32 state;
/* 0x4 */ s32 fallbackState;
/* 0x8 */ u8 iqSkillPreGummi[NUM_IQ_SKILLS];
/* 0x20 */ u8 iqSkillPostGummi[NUM_IQ_SKILLS];
/* 0x38 */ s32 availIQSkillPreGummi;
/* 0x3C */ s32 availIQSkillPostGummi;
s32 unk40; // Gummi eaten flag?
/* 0x44 */ Gummi gummi;
/* 0x48 */ PokemonStruct1 *pokeStruct;
/* 0x4C */ u32 itemIndex;
/* 0x50 */ Item item;
MenuStruct unk54;
MenuStruct unkA4;
/* 0xF4 */ u32 menuAction;
MenuItem unkF8[8];
u16 unk138[8];
UnkTextStruct2 unk148[4];
} unkStruct_203B294;
bool8 sub_80227B8(PokemonStruct1 *pkmn);
u32 sub_8022860(void);
void sub_8022908(void);
#endif // GUARD_CODE_80227B8_H

View File

@@ -1,59 +1,29 @@
#ifndef GUARD_CODE_8023144_H
#define GUARD_CODE_8023144_H
#include "constants/iq_skill.h"
#include "input.h"
#include "items.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
// size: 0x1A8
typedef struct unkStruct_203B294
{
/* 0x0 */ s32 state;
/* 0x4 */ s32 fallbackState;
u8 iqSkillPreGummi[NUM_IQ_SKILLS];
u8 iqSkillPostGummi[NUM_IQ_SKILLS];
u32 availIQSkillPreGummi;
u32 availIQSkillPostGummi;
u32 unk40; // Gummi eaten flag?
Gummi gummi;
/* 0x48 */ PokemonStruct1 *pokeStruct;
u32 itemIndex;
Item item;
MenuStruct unk54;
MenuStruct unkA4;
u32 menuAction;
MenuItem unkF8[0x8];
u16 unk138[0x8];
UnkTextStruct2 unk148[4];
} unkStruct_203B294;
#include "structs/str_text.h"
// size: 0x3FC
typedef struct unkStruct_3001B5C
{
u8 unk0;
u32 unk4;
u32 unk8;
s32 unk8;
s16 unkC[2];
u32 unk10;
u8 fill14[0x354 - 0x14];
u8 unk354;
u8 fill355[0x35C - 0x355];
MenuInputStruct input;
/* 0x35C */ MenuInputStruct input;
u32 unk390;
UnkTextStruct2 *unk394;
UnkTextStruct2 unk398[4];
u8 unk3F8[4];
} unkStruct_3001B5C;
bool8 sub_80227B8(PokemonStruct1 *pokeStruct);
u32 sub_8022860(void);
void sub_8022908(void);
bool8 sub_8023144(s32, s32 index, UnkTextStruct2_sub *sub, u32);
u32 sub_8023278(u8);
u32 sub_8023278(bool8);
s16 sub_802331C(void);
void sub_8023354(bool8 cursorSprite);
void sub_80233A0(void);

View File

@@ -2,7 +2,7 @@
#define GUARD_CODE_8024458_H
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
struct unkStruct_203B2AC
{

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CODE_80521D0_H
#define GUARD_CODE_80521D0_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
void SendMessage(Entity *pokemon, const char message[]);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CODE_806CD90_H
#define GUARD_CODE_806CD90_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
void sub_806CC10(void);
void sub_806CC70(void);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CODE_80869E4_H
#define GUARD_CODE_80869E4_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
// size: 0x8
typedef struct unkStruct_202F3D0

View File

@@ -2,7 +2,7 @@
#define GUARD_CODE_8094F88_H
#include "code_8092334.h"
#include "dungeon_global_data.h"
#include "structs/str_dungeon.h"
#include "items.h"
#include "pokemon.h"

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CODE_8097670_H
#define GUARD_CODE_8097670_H
#include "dungeon_global_data.h"
#include "structs/str_dungeon.h"
// size: 0xC4
struct unkStruct_203B494

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CODE_8097DD0_H
#define GUARD_CODE_8097DD0_H
#include "subStruct_203B240.h"
#include "structs/subStruct_203B240.h"
extern u32 sub_8097DF0(u8 *, struct subStruct_203B240 **);

View File

@@ -12,14 +12,11 @@
#define INPUT_DPAD_DOWN 8
#define INPUT_DPAD_LEFT 9
#define INPUT_DPAD_RIGHT 10
// When R button is pressed in combination with other keys
// When R button is pressed in combination with other keys:
#define INPUT_R_A_BUTTONS 11
#define INPUT_R_DPAD_UP_BUTTONS 12
#define INPUT_R_DPAD_DOWN_BUTTONS 13
#define INPUT_R_DPAD_LEFT_BUTTONS 14
#define INPUT_R_DPAD_RIGHT_BUTTONS 15
#endif // GUARD_CONSTANTS_INPUT_H
#endif // GUARD_CONSTANTS_INPUT_H

View File

@@ -1,6 +1,8 @@
#ifndef GUARD_CONSTANTS_ITEM_H
#define GUARD_CONSTANTS_ITEM_H
// Cannot include enums in this file since it's used by the data_item and data_monster assemblers
#define MAX_KECLEON_ITEM_SHOP_ITEMS 8
#define MAX_KECLEON_WARE_SHOP_ITEMS 4

View File

@@ -6,12 +6,12 @@
enum JOB_LIST_MAIL_TYPES
{
MAIL_TYPE_NONE = 0,
MAIL_TYPE_NONE,
MAIL_TYPE_UNK1,
MAIL_TYPE_UNK2,
MAIL_TYPE_UNK3,
MAIL_TYPE_UNK4,
MAIL_TYPE_SUSPENDED_JOB = 5,
MAIL_TYPE_SUSPENDED_JOB,
MAIL_TYPE_TAKEN_JOB,
MAIL_TYPE_UNK7,
MAIL_TYPE_UNK8,

View File

@@ -428,6 +428,6 @@
#define MONSTER_RAYQUAZA_CUTSCENE 423
#define NUM_MONSTERS MONSTER_JIRACHI
#define MONSTER_MAX MONSTER_RAYQUAZA_CUTSCENE
#define MONSTER_MAX (MONSTER_RAYQUAZA_CUTSCENE + 1)
#endif // GUARD_CONSTANTS_MONSTER_H

View File

@@ -34,42 +34,6 @@ enum AccuracyType
NUM_ACCURACY_TYPES
};
// size: 0x24
typedef struct MoveDataEntry
{
/* 0x0 */ u8 *name;
/* 0x4 */ s16 basePower;
/* 0x6 */ u8 type;
// Determines the range of moves.
/* 0x8 */ u16 targetingFlags[2]; // 0 for player and 1 for AI
// The AI consider certain moves to have different range than they actually do.
/* 0xC */ u8 basePP;
/* 0xD */ u8 aiWeight;
// There are multiple accuracy values. These are define with the AccuracyType enum.
/* 0xE */ u8 accuracy[NUM_ACCURACY_TYPES];
/* 0x11 */ u8 numberOfChainedHits; // Maximum number of times the move will hit. Used for multi-hit moves like Fury Attack.
/* 0x12 */ u8 maxUpgradeLevel;
/* 0x13 */ u8 critChance;
/* 0x14 */ bool8 affectedByMagicCoat; // If true, this move is reflected by Magic Coat.
/* 0x15 */ bool8 isSnatchable;
/* 0x16 */ bool8 usesMouth; // If true, this move can't be used with the Muzzled status.
/* 0x17 */ bool8 cannotHitFrozen; // Used by Status Checker to determine if a move can be used on a frozen target.
/* 0x18 */ bool8 ignoresTaunted;
/* 0x19 */ u8 rangeID;
/* 0x1C */ u8 *description;
/* 0x20 */ u8 *useText; // The text displayed when this move is used.
} MoveDataEntry;
// size: 0x8
typedef struct Move
{
u8 moveFlags;
u8 moveFlags2;
u16 id;
u8 PP;
u8 ginseng; // How much the move is boosted by Ginsengs.
} Move;
enum TargetingFlag
{
TARGETING_FLAG_TARGET_OTHER = 0x0,

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_CREDITS1_H
#define GUARD_CREDITS1_H
#include "text.h"
#include "structs/str_text.h"
// size: 0x6C
typedef struct Credits1Work

View File

@@ -2,7 +2,7 @@
#define GUARD_DEBUG_MENU1_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x1A4
struct DebugMenu

View File

@@ -2,7 +2,7 @@
#define GUARD_DEBUG_MENU2_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x138
typedef struct unkStruct_203B3F0

View File

@@ -2,7 +2,7 @@
#define GUARD_DEBUG_MENU3_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xFC
typedef struct unkStruct_203B3F4

View File

@@ -3,7 +3,7 @@
#include "pokemon.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x140
typedef struct unkStruct_203B3F8

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_H
#define GUARD_DUNGEON_H
#include "dungeon_global_data.h"
#include "structs/str_dungeon.h"
// size: 0x8
typedef struct DungeonName

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_ACTION_H
#define GUARD_DUNGEON_ACTION_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
void ClearMonsterActionFields(ActionContainer *actionPointer);
void SetMonsterActionFields(ActionContainer *actionPointer, u16 action);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_H
#define GUARD_DUNGEON_AI_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
u32 sub_8075818(Entity *entity);
void sub_8075900(Entity *pokemon, u8 r1);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_ATTACK_H
#define GUARD_DUNGEON_AI_ATTACK_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
#define RANGED_ATTACK_RANGE 10

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_ITEM_WEIGHT_H
#define GUARD_DUNGEON_AI_ITEM_WEIGHT_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
u32 EvaluateItem(Entity *targetPokemon, Item *item, u32 itemTargetFlags);
bool8 CanTargetAdjacentPokemon(Entity *pokemon);

View File

@@ -1,8 +1,8 @@
#ifndef GUARD_DUNGEON_AI_ITEMS_H
#define GUARD_DUNGEON_AI_ITEMS_H
#include "dungeon_entity.h"
#include "position.h"
#include "structs/dungeon_entity.h"
#include "structs/str_position.h"
void DecideUseItem(Entity *pokemon);
void FindStraightThrowableTargets(Entity *pokemon, s32 thrownAIFlag, Item *item, bool8 ignoreRollChance);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_LEADER_H
#define GUARD_DUNGEON_AI_LEADER_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 TargetLeader(Entity *pokemon);
Entity* GetLeaderIfVisible(Entity *pokemon);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_MOVEMENT_H
#define GUARD_DUNGEON_AI_MOVEMENT_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
void MoveIfPossible(Entity *pokemon, bool8 showRunAwayEffect);
bool8 CanTakeItem(Entity *pokemon);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_AI_TARGETING_H
#define GUARD_DUNGEON_AI_TARGETING_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 CanAttackInDirection(Entity *pokemon, s32 direction);
bool8 CanAIMonsterMoveInDirection(Entity *pokemon, s32 direction, bool8 *pokemonInFront);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_CAPABILITIES_H
#define GUARD_DUNGEON_CAPABILITIES_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 CannotMove(Entity *pokemon, bool8 checkBlinker);
bool8 sub_8070BC0(Entity* entity);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_ITEMS_H
#define GUARD_DUNGEON_ITEMS_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 HasHeldItem(Entity *pokemon, u8 id);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_LEADER_H
#define GUARD_DUNGEON_LEADER_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
Entity* GetLeader(void);
EntityInfo* GetLeaderInfo(void);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_MAP_ACCESS_H
#define GUARD_DUNGEON_MAP_ACCESS_H
#include "map.h"
#include "structs/map.h"
typedef struct unkStruct_202F190
{

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_MOVEMENT
#define GUARD_DUNGEON_MOVEMENT
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
u8 GetCrossableTerrain(s16 species);
u8 sub_807034C(s16 id, struct Tile *tile);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_POKEMON_ATTRIBUTES_H
#define GUARD_DUNGEON_POKEMON_ATTRIBUTES_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 HasSafeguardStatus(Entity * param_1, Entity * param_2, bool8 displayMessage);
bool8 sub_80717A4(Entity *pokemon, u16 moveID);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_POKEMON_SPRITES_H
#define GUARD_DUNGEON_POKEMON_SPRITES_H
#include "position.h"
#include "structs/str_position.h"
// size: 0x8
typedef struct DungeonPokemonStatusSprite

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_RANGE_H
#define GUARD_DUNGEON_RANGE_H
#include "position.h"
#include "structs/str_position.h"
bool8 IsPositionActuallyInSight(Position *pos1, Position *pos2);
bool8 IsPositionInSight(Position *pos1, Position *pos2);

View File

@@ -2,8 +2,8 @@
#define GUARD_DUNGEON_UTIL_H
#include "constants/direction.h"
#include "dungeon_entity.h"
#include "position.h"
#include "structs/dungeon_entity.h"
#include "structs/str_position.h"
extern const Position gAdjacentTileOffsets[NUM_DIRECTIONS];

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_UTIL_1_H
#define GUARD_DUNGEON_UTIL_1_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
Entity *xxx_call_GetLeader(void);
Entity *GetPartnerEntity(void);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_DUNGEON_VISIBILITY_H
#define GUARD_DUNGEON_VISIBILITY_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 CanSeeTarget(Entity *entity, Entity *targetEntity);
bool8 CanTargetEntity(Entity *entity, Entity *targetEntity);

View File

@@ -3,7 +3,7 @@
#include "file_system.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
#define FELICITY_BANK_ACTION_WITHDRAW 0
#define FELICITY_BANK_ACTION_DEPOSIT 1

View File

@@ -5,7 +5,7 @@
#include "items.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
enum FriendAreaActionMenuStates
{

View File

@@ -4,7 +4,7 @@
#include "constants/move.h"
#include "file_system.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x18C
typedef struct GulpinShopWork

View File

@@ -5,7 +5,7 @@
#include "file_system.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x1E0
typedef struct unkStruct_203B27C

View File

@@ -1,89 +1,10 @@
#ifndef GUARD_ITEMS_H
#define GUARD_ITEMS_H
#include "constants/item.h"
#include "code_8092334.h"
#include "subStruct_203B240.h"
// size: 0x20
typedef struct ItemDataEntry
{
/* 0x0 */ u8 *name;
/* 0x4 */ u32 buyPrice;
/* 0x8 */ u32 sellPrice;
/* 0xC */ u8 category;
/* 0xD */ u8 icon;
/* 0x10 */ u8 *description;
// Determines how the AI can use the item.
// Index 0: Item can be used on self.
// Index 1: Item can be thrown at allies.
// Index 2: Item can be thrown at enemies.
/* 0x14 */ bool8 aiFlags[3];
/* 0x18 */ s16 moveID;
/* 0x1A */ u8 order; // Numbered order they are in storage
/* 0x1B */ u8 spawnAmountRange[2];
/* 0x1D */ u8 palette;
/* 0x1E */ u8 actionType;
} ItemDataEntry;
// size: 0x4
typedef struct Item
{
/* 0x0 */ u8 flags;
/* 0x1 */ u8 quantity;
/* 0x2 */ u8 id;
} Item;
// size: 0x4
typedef struct BulkItem
{
/* 0x0 */ u8 id;
/* 0x1 */ u8 quantity;
} BulkItem;
// size: 0x4
typedef struct Gummi
{
/* 0x0 */ s16 boostAmount;
/* 0x2 */ u16 flags;
} Gummi;
// size: 0xC
typedef struct unkStruct_8090F58
{
u32 unk0;
u8 unk4;
u8 unk5;
s16 unk6;
u8 unk8;
} unkStruct_8090F58;
// size: 0x268
typedef struct TeamInventory
{
/* 0x0 */ Item teamItems[INVENTORY_SIZE];
/* 0x50 */ u16 teamStorage[STORAGE_SIZE];
/* 0x230 */ BulkItem kecleonShopItems[MAX_KECLEON_ITEM_SHOP_ITEMS];
/* 0x250 */ BulkItem kecleonWareItems[MAX_KECLEON_WARE_SHOP_ITEMS];
/* 0x260 */ s32 teamMoney;
/* 0x264 */ s32 teamSavings;
} TeamInventory;
enum ItemFlag
{
ITEM_FLAG_EXISTS = 1 << 0,
ITEM_FLAG_IN_SHOP = 1 << 1, // in a Kecleon shop
ITEM_FLAG_UNPAID = 1 << 2, // Picked up in Kecleon shop but not paid for yet
ITEM_FLAG_STICKY = 1 << 3,
ITEM_FLAG_SET = 1 << 4 // This item can be thrown by pressing L+R instead of having to go to the bag menu.
};
enum ItemAIFlag
{
ITEM_AI_FLAG_TARGET_SELF,
ITEM_AI_FLAG_TARGET_ALLY,
ITEM_AI_FLAG_TARGET_ENEMY
};
#include "structs/str_items.h"
#include "structs/str_pokemon.h"
#include "structs/subStruct_203B240.h"
extern TeamInventory *gTeamInventoryRef;
@@ -143,6 +64,8 @@ bool8 IsHMItem(u8 id);
bool8 IsEdibleItem(u8 id);
u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1);
bool8 IsInvalidItemReward(u8 itemID);
bool8 HasGummiItem(void);
void GetGummiItemStatBoost(PokemonStruct1* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi);
void RestoreHeldItem(unkStruct_8094924 *, BulkItem *);
void SaveHeldItem(unkStruct_8094924 *, BulkItem *);

View File

@@ -4,7 +4,7 @@
#include "file_system.h"
#include "items.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
enum KangaskhanStorageStates
{

View File

@@ -3,7 +3,7 @@
#include "items.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x150
typedef struct unkStruct_203B20C

View File

@@ -4,7 +4,7 @@
#include "file_system.h"
#include "items.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
enum KecleonStoreStates
{

View File

@@ -2,7 +2,7 @@
#define GUARD_KECLEON_BROS2_H
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xA0
typedef struct unkStruct_203B214

View File

@@ -2,7 +2,7 @@
#define GUARD_KECLEON_BROS3_H
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xA0
typedef struct unkStruct_203B21C

View File

@@ -3,7 +3,7 @@
#include "constants/item.h"
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xF4
typedef struct unkStruct_203B224

View File

@@ -5,7 +5,7 @@
#include "items.h"
#include "menu.h"
#include "pokemon_3.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x174
typedef struct LuminousCaveWork

View File

@@ -2,7 +2,7 @@
#define GUARD_MAILBOX_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
#include "constants/mailbox.h"
#include "code_802C39C.h"

View File

@@ -2,7 +2,7 @@
#define GUARD_MAIN_MENU1_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x8
typedef struct unkStruct_8035D94

View File

@@ -2,7 +2,7 @@
#define GUARD_MAIN_MENU2_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x1A8
typedef struct MainMenu2Work

View File

@@ -3,7 +3,7 @@
#include "file_system.h"
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
enum MakuhitaDojoInitMode
{

View File

@@ -3,7 +3,7 @@
#include "constants/dungeon.h"
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0xD0
typedef struct MakuhitaDojoWork2

View File

@@ -3,7 +3,7 @@
#include "input.h"
#include "sprite_oam.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x8
typedef struct MenuItem

View File

@@ -2,7 +2,7 @@
#define GUARD_MENU_INPUT_H
#include "menu.h"
#include "text.h"
#include "structs/str_text.h"
u32 sub_8012A64(MenuInputStructSub *r0, s32 r1);
s32 GetKeyPress(MenuInputStruct *r0);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_MOVE_UTIL_H
#define GUARD_MOVE_UTIL_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
u32 sub_8057144(Entity * pokemon);
bool8 sub_80571F0(Entity * pokemon, Move *move);

View File

@@ -5,7 +5,7 @@
#include "constants/move.h"
#include "constants/move_id.h"
#include "pokemon.h"
#include "subStruct_203B240.h"
#include "structs/subStruct_203B240.h"
// size: 0x8
typedef struct MoveLearnset

View File

@@ -6,7 +6,7 @@
#include "menu.h"
#include "pokemon.h"
#include "sprite_oam.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x504
typedef struct unkStruct_203B35C

View File

@@ -5,7 +5,7 @@
#include "items.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x280
typedef struct unkStruct_203B2B8

View File

@@ -3,7 +3,7 @@
#include "constants/personality_test.h"
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// Definitely wrong but need to figure out better structure later
struct FaceData

View File

@@ -1,177 +1,18 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
#include "dungeon_global_data.h"
#include "constants/move.h"
#include "file_system.h"
#include "items.h"
#include "constants/move.h"
#include "structs/str_pokemon.h"
#define OFFENSE_NRM 0
#define OFFENSE_SP 1
// size: 0x4
typedef struct Offense
{
/* 0x0 */ u8 att[2]; // Atk, SpAtk
/* 0x2 */ u8 def[2]; // Def, SpDef
} Offense;
// size: 0x4
typedef struct unkPokeSubStruct_C
{
u8 level;
u8 fill1[3];
} unkPokeSubStruct_C;
enum PokemonUnk0Flags {
FLAG_ON_TEAM = 2,
};
// size: 0x58
typedef struct PokemonStruct1
{
u16 unk0; // Probably a union: Sometimes ldrh and sometimes ldrb. Recruited??
/* 0x2 */ bool8 isTeamLeader;
/* 0x3 */ u8 level;
/* 0x4 */ DungeonLocation dungeonLocation;
/* 0x8 */ s16 speciesNum;
unkPokeSubStruct_C unkC[2];
/* 0x14 */ s16 IQ;
/* 0x16 */ u16 pokeHP;
/* 0x18 */ Offense offense;
/* 0x1C */ u32 currExp;
/* 0x20 */ u32 IQSkills;
/* 0x24 */ u8 tacticIndex;
/* 0x28 */ BulkItem heldItem;
/* 0x2C */ Move moves[MAX_MON_MOVES];
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
} PokemonStruct1;
// size: 0x4
typedef struct unkStruct_808E6F4
{
s16 unk0;
u8 unk2;
} unkStruct_808E6F4;
// size: 0x4
typedef struct EvolveStage
{
/* 0x0 */ s16 speciesNum;
/* 0x2 */ u8 level;
} EvolveStage;
// size: 0x24
typedef struct unkStruct_8094184
{
/* 0x0 */ Move moves[MAX_MON_MOVES];
u8 unk20;
} unkStruct_8094184;
// size: 0x64
typedef struct PokemonStruct2
{
u16 unk0; // corresponds to unk0 in PokemonStruct
/* 0x2 */ bool8 isTeamLeader;
/* 0x3 */ u8 level;
/* 0x4 */ DungeonLocation dungeonLocation;
/* 0x8 */ u16 IQ;
s16 unkA;
u16 unkC;
/* 0xE */ s16 speciesNum;
u16 unk10; // pokeHP
u16 unk12; // pokeHP
/* 0x14 */ Offense offense; // offense (other offset)
/* 0x18 */ u32 currExp;
/* 0x1C */ unkStruct_8094184 moves;
/* 0x40 */ Item itemSlot; // heldItem
u32 unk44; // some struct
u32 unk48; // some struct (same type as 44)
/* 0x4C */ u32 IQSkills; // unk20
/* 0x50 */ u8 tacticIndex;
unkStruct_808E6F4 unk54;
/* 0x58 */ u8 name[POKEMON_NAME_LENGTH]; // name (other offset)
} PokemonStruct2;
// size: 0x90E8
typedef struct unkStruct_203B45C
{
/* 0x0 */ PokemonStruct1 pokemon[NUM_MONSTERS];
/* 0x8DF8 */ PokemonStruct2 pokemon2[4];
/* 0x8F88 */ PokemonStruct1 team[MAX_TEAM_MEMBERS];
} unkStruct_203B45C;
// size: 0x4
typedef struct PreEvolution
{
/* 0x0 */ s16 evolveFrom;
/* 0x2 */ u16 evolveType;
} PreEvolution;
// size: 0x4
typedef struct EvolutionRequirements
{
/* 0x0 */ s16 mainRequirement;
/* 0x2 */ u16 additionalRequirement;
} EvolutionRequirements;
// size: 0x8
typedef struct unkEvolve
{
/* 0x0 */ PreEvolution preEvolution;
/* 0x4 */ EvolutionRequirements evolutionRequirements;
} unkEvolve;
// size: 0x48
typedef struct MonsterDataEntry
{
/* 0x0 */ u8* species;
/* 0x4 */ u8* category;
/* 0x8 */ u8 overworldPalette;
/* 0x9 */ u8 bodySize;
/* 0xC */ s32 movementSpeed;
/* 0x10 */ u16 dialogueSprites; // Bitwise flags for whether a dialogue sprite/portrait is available for each emotion.
bool8 unk12;
/* 0x13 */ u8 types[2];
/* 0x15 */ u8 movementType;
/* 0x16 */ u8 friendArea;
/* 0x17 */ u8 abilities[2];
/* 0x19 */ u8 shadowSize;
u8 fill1A; // 0 for all Pokémon.
/* 0x1B */ u8 regenSpeed; // 100 for all Pokémon.
/* 0x1C */ bool8 canMove; // Set to false for Pokémon who don't move unless they're the leader, like Kakuna.
/* 0x1D */ u8 chanceAsleep;
/* 0x1E */ u16 baseHP;
/* 0x20 */ s32 expYield;
/* 0x24 */ u16 baseAtkSpAtk[2];
/* 0x28 */ u16 baseDefSpDef[2];
/* 0x2C */ u16 weight;
/* 0x2E */ u16 size;
u8 unk30; // 10 for all Pokémon.
u8 unk31; // 10 for all Pokémon.
u8 unk32; // 24 for all Pokémon.
/* 0x33 */ bool8 toolboxEnabled; // If false, the AI can't use items. Doesn't seem to be used, as it's true for all Pokémon.
/* 0x34 */ PreEvolution preEvolution;
/* 0x38 */ EvolutionRequirements evolutionRequirements;
/* 0x3C */ s16 dexInternal[2]; // dexNo and internalNo
/* 0x40 */ s16 recruitRate;
/* 0x42 */ s16 alphabetParent[2]; // alphabetNo and parentNo
} MonsterDataEntry;
// size: 0xC | https://www.pokecommunity.com/showthread.php?t=407371
typedef struct LevelData
{
/* 0x0 */ s32 expRequired;
/* 0x4 */ u8 gainHP;
/* 0x5 */ u8 gainUnused;
/* 0x6 */ u8 gainAtt;
/* 0x7 */ u8 gainSPAtt;
/* 0x8 */ u8 gainDef;
/* 0x9 */ u8 gainSPDef;
u16 fillA;
} LevelData;
// size: 0x1A4
typedef struct unkStruct_808E218_arg
{

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_POSITION_UTIL_H
#define GUARD_POSITION_UTIL_H
#include "position.h"
#include "structs/str_position.h"
s32 GetDirectionTowardsPosition(Position *originPos, Position *targetPos);
s32 GetDistance(Position *pos1, Position *pos2);

View File

@@ -2,7 +2,7 @@
#define GUARD_POST_OFFICE_GUIDE2_H
#include "input.h"
#include "text.h"
#include "structs/str_text.h"
// size: 0x78
typedef struct unkStruct_203B330

View File

@@ -3,7 +3,7 @@
#include "menu.h"
#include "sprite.h"
#include "text.h"
#include "structs/str_text.h"
// Similar to unkStruct_203B360
struct RescuePasswordMenu

View File

@@ -23,9 +23,9 @@ enum
READ_SAVE_CHECKSUM_ERROR
};
struct UnkStruct_sub_8011DAC {
// size: 0x57D4
// size: 0x57D4
struct UnkStruct_sub_8011DAC
{
u8 fill000[0x4];
u8 unk004[0x400];
u8 gameInternalName[0x10]; // has "POKE_DUNGEON__05"
@@ -45,8 +45,9 @@ struct UnkStruct_sub_8011DAC {
u8 unk448[0x538C];
};
struct UnkStruct_203B184 {
// size: 0x5C
struct UnkStruct_203B184
{
/* 0x0 */ TeamInventory *MoneyItems;
/* 0x4 */ unkStruct_203B45C *recruitedPokemon;
/* 0x8 */ unkStruct_203B480 *unk8;

View File

@@ -3,7 +3,7 @@
#include "axdata.h"
#include "ground_sprite.h"
#include "position.h"
#include "structs/str_position.h"
#include "sprite_oam.h"
// size: 0x8

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_STATUS_H
#define GUARD_STATUS_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
#define FLASH_FIRE_STATUS_NONE 0
#define FLASH_FIRE_STATUS_MAXED 1

View File

@@ -2,7 +2,7 @@
#define GUARD_STATUS_ACTIONS_H
#include "constants/move.h"
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 sub_805B668(Entity *pokemon, Entity *target, Move *move, s32 param_4);
bool8 sub_805B734(Entity *pokemon, Entity *target);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_STATUS_CHECKS_H
#define GUARD_STATUS_CHECKS_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
extern const s16 gConfusedAttackChance;

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_STATUS_CHECKS_1_H
#define GUARD_STATUS_CHECKS_1_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
bool8 HasNegativeStatus(Entity *pokemon);
bool8 IsSleeping(Entity *pokemon);

View File

@@ -2,10 +2,10 @@
#define GUARD_DUNGEON_ENTITY_H
#include "constants/global.h"
#include "constants/move.h"
#include "items.h"
#include "position.h"
#include "structs/str_position.h"
#include "sprite.h"
#include "structs/str_items.h"
#include "structs/str_moves.h"
#define MAX_STAT_STAGE 20
#define STAT_MULTIPLIER_THRESHOLD 63

View File

@@ -1,8 +1,8 @@
#ifndef GUARD_MAP_H
#define GUARD_MAP_H
#include "dungeon_entity.h"
#include "position.h"
#include "structs/dungeon_entity.h"
#include "structs/str_position.h"
#define MAX_ROOM_COUNT 24 // Empirical max, not sure if the code supports any more.
#define CORRIDOR_ROOM 0xFF

View File

@@ -1,12 +1,12 @@
#ifndef GUARD_DUNGEON_DATA_H
#define GUARD_DUNGEON_DATA_H
#ifndef GUARD_STR_DUNGEON_H
#define GUARD_STR_DUNGEON_H
#include "global.h"
#include "constants/monster.h"
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
#include "file_system.h"
#include "map.h"
#include "position.h"
#include "structs/map.h"
#include "structs/str_position.h"
#include "sprite.h"
#define DUNGEON_MAX_SIZE_X 56
@@ -202,7 +202,7 @@ typedef struct Dungeon
/* 0x17B38 */ u32 unk17B38;
/* 0x17B3C */ u32 unk17B3C;
u8 fill17B40[0x17B44 - 0x17B40];
/* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX + 1];
/* 0x17B44 */ OpenedFile *sprites[MONSTER_MAX];
/* 0x181E4 */ OpenedFile *paletFile;
/* 0x181E8 */ Position cameraPos;
/* 0x181EC */ Position cameraPosMirror;
@@ -236,4 +236,4 @@ typedef struct Dungeon
extern Dungeon *gDungeon;
#endif
#endif // GUARD_STR_DUNGEON_H

View File

@@ -0,0 +1,88 @@
#ifndef GUARD_STR_ITEMS_H
#define GUARD_STR_ITEMS_H
#include "constants/item.h"
// size: 0x20
typedef struct ItemDataEntry
{
/* 0x0 */ u8 *name;
/* 0x4 */ u32 buyPrice;
/* 0x8 */ u32 sellPrice;
/* 0xC */ u8 category;
/* 0xD */ u8 icon;
/* 0x10 */ u8 *description;
// Determines how the AI can use the item.
// Index 0: Item can be used on self.
// Index 1: Item can be thrown at allies.
// Index 2: Item can be thrown at enemies.
/* 0x14 */ bool8 aiFlags[3];
/* 0x18 */ s16 moveID;
/* 0x1A */ u8 order; // Numbered order they are in storage
/* 0x1B */ u8 spawnAmountRange[2];
/* 0x1D */ u8 palette;
/* 0x1E */ u8 actionType;
} ItemDataEntry;
// size: 0x4
typedef struct Item
{
/* 0x0 */ u8 flags;
/* 0x1 */ u8 quantity;
/* 0x2 */ u8 id;
} Item;
// size: 0x4
typedef struct BulkItem
{
/* 0x0 */ u8 id;
/* 0x1 */ u8 quantity;
} BulkItem;
// size: 0x4
typedef struct Gummi
{
/* 0x0 */ s16 boostAmount;
/* 0x2 */ u16 flags;
} Gummi;
// size: 0xC
typedef struct unkStruct_8090F58
{
u32 unk0;
u8 unk4;
u8 unk5;
s16 unk6;
u8 unk8;
} unkStruct_8090F58;
// size: 0x268
typedef struct TeamInventory
{
/* 0x0 */ Item teamItems[INVENTORY_SIZE];
/* 0x50 */ u16 teamStorage[STORAGE_SIZE];
/* 0x230 */ BulkItem kecleonShopItems[MAX_KECLEON_ITEM_SHOP_ITEMS];
/* 0x250 */ BulkItem kecleonWareItems[MAX_KECLEON_WARE_SHOP_ITEMS];
/* 0x260 */ s32 teamMoney;
/* 0x264 */ s32 teamSavings;
} TeamInventory;
// TODO: These should be in constants/
enum ItemFlag
{
ITEM_FLAG_EXISTS = 1 << 0,
ITEM_FLAG_IN_SHOP = 1 << 1, // in a Kecleon shop
ITEM_FLAG_UNPAID = 1 << 2, // Picked up in Kecleon shop but not paid for yet
ITEM_FLAG_STICKY = 1 << 3,
ITEM_FLAG_SET = 1 << 4 // This item can be thrown by pressing L+R instead of having to go to the bag menu.
};
enum ItemAIFlag
{
ITEM_AI_FLAG_TARGET_SELF,
ITEM_AI_FLAG_TARGET_ALLY,
ITEM_AI_FLAG_TARGET_ENEMY
};
#endif // GUARD_STR_ITEMS_H

View File

@@ -0,0 +1,42 @@
#ifndef GUARD_STR_MOVES_H
#define GUARD_STR_MOVES_H
#include "constants/move.h"
// size: 0x24
typedef struct MoveDataEntry
{
/* 0x0 */ u8 *name;
/* 0x4 */ s16 basePower;
/* 0x6 */ u8 type;
// Determines the range of moves.
/* 0x8 */ u16 targetingFlags[2]; // 0 for player and 1 for AI
// The AI consider certain moves to have different range than they actually do.
/* 0xC */ u8 basePP;
/* 0xD */ u8 aiWeight;
// There are multiple accuracy values. These are define with the AccuracyType enum.
/* 0xE */ u8 accuracy[NUM_ACCURACY_TYPES];
/* 0x11 */ u8 numberOfChainedHits; // Maximum number of times the move will hit. Used for multi-hit moves like Fury Attack.
/* 0x12 */ u8 maxUpgradeLevel;
/* 0x13 */ u8 critChance;
/* 0x14 */ bool8 affectedByMagicCoat; // If true, this move is reflected by Magic Coat.
/* 0x15 */ bool8 isSnatchable;
/* 0x16 */ bool8 usesMouth; // If true, this move can't be used with the Muzzled status.
/* 0x17 */ bool8 cannotHitFrozen; // Used by Status Checker to determine if a move can be used on a frozen target.
/* 0x18 */ bool8 ignoresTaunted;
/* 0x19 */ u8 rangeID;
/* 0x1C */ u8 *description;
/* 0x20 */ u8 *useText; // The text displayed when this move is used.
} MoveDataEntry;
// size: 0x8
typedef struct Move
{
u8 moveFlags;
u8 moveFlags2;
u16 id;
u8 PP;
u8 ginseng; // How much the move is boosted by Ginsengs.
} Move;
#endif // GUARD_STR_MOVES_H

View File

@@ -0,0 +1,167 @@
#ifndef GUARD_STR_POKEMON_H
#define GUARD_STR_POKEMON_H
#include "constants/monster.h"
#include "structs/str_dungeon.h"
#include "structs/str_items.h"
#include "structs/str_moves.h"
// size: 0x4
typedef struct Offense
{
/* 0x0 */ u8 att[2]; // Atk, SpAtk
/* 0x2 */ u8 def[2]; // Def, SpDef
} Offense;
// size: 0x4
typedef struct unkPokeSubStruct_C
{
u8 level;
u8 fill1[3];
} unkPokeSubStruct_C;
// size: 0x58
typedef struct PokemonStruct1
{
u16 unk0; // Probably a union: Sometimes ldrh and sometimes ldrb. Recruited??
/* 0x2 */ bool8 isTeamLeader;
/* 0x3 */ u8 level;
/* 0x4 */ DungeonLocation dungeonLocation;
/* 0x8 */ s16 speciesNum;
unkPokeSubStruct_C unkC[2];
/* 0x14 */ s16 IQ;
/* 0x16 */ u16 pokeHP;
/* 0x18 */ Offense offense;
/* 0x1C */ u32 currExp;
/* 0x20 */ u32 IQSkills;
/* 0x24 */ u8 tacticIndex;
/* 0x28 */ BulkItem heldItem;
/* 0x2C */ Move moves[MAX_MON_MOVES];
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
} PokemonStruct1;
// size: 0x4
typedef struct unkStruct_808E6F4
{
s16 unk0;
u8 unk2;
} unkStruct_808E6F4;
// size: 0x4
typedef struct EvolveStage
{
/* 0x0 */ s16 speciesNum;
/* 0x2 */ u8 level;
} EvolveStage;
// size: 0x24
typedef struct unkStruct_8094184
{
/* 0x0 */ Move moves[MAX_MON_MOVES];
u8 unk20;
} unkStruct_8094184;
// size: 0x64
typedef struct PokemonStruct2
{
u16 unk0; // corresponds to unk0 in PokemonStruct
/* 0x2 */ bool8 isTeamLeader;
/* 0x3 */ u8 level;
/* 0x4 */ DungeonLocation dungeonLocation;
/* 0x8 */ u16 IQ;
s16 unkA;
u16 unkC;
/* 0xE */ s16 speciesNum;
u16 unk10; // pokeHP
u16 unk12; // pokeHP
/* 0x14 */ Offense offense; // offense (other offset)
/* 0x18 */ u32 currExp;
/* 0x1C */ unkStruct_8094184 moves;
/* 0x40 */ Item itemSlot; // heldItem
u32 unk44; // some struct
u32 unk48; // some struct (same type as 44)
/* 0x4C */ u32 IQSkills; // unk20
/* 0x50 */ u8 tacticIndex;
unkStruct_808E6F4 unk54;
/* 0x58 */ u8 name[POKEMON_NAME_LENGTH]; // name (other offset)
} PokemonStruct2;
// size: 0x90E8
typedef struct unkStruct_203B45C
{
/* 0x0 */ PokemonStruct1 pokemon[NUM_MONSTERS];
/* 0x8DF8 */ PokemonStruct2 pokemon2[4];
/* 0x8F88 */ PokemonStruct1 team[MAX_TEAM_MEMBERS];
} unkStruct_203B45C;
// size: 0x4
typedef struct PreEvolution
{
/* 0x0 */ s16 evolveFrom;
/* 0x2 */ u16 evolveType;
} PreEvolution;
// size: 0x4
typedef struct EvolutionRequirements
{
/* 0x0 */ s16 mainRequirement;
/* 0x2 */ u16 additionalRequirement;
} EvolutionRequirements;
// size: 0x8
typedef struct unkEvolve
{
/* 0x0 */ PreEvolution preEvolution;
/* 0x4 */ EvolutionRequirements evolutionRequirements;
} unkEvolve;
// size: 0x48
typedef struct MonsterDataEntry
{
/* 0x0 */ u8* species;
/* 0x4 */ u8* category;
/* 0x8 */ u8 overworldPalette;
/* 0x9 */ u8 bodySize;
/* 0xC */ s32 movementSpeed;
/* 0x10 */ u16 dialogueSprites; // Bitwise flags for whether a dialogue sprite/portrait is available for each emotion.
bool8 unk12;
/* 0x13 */ u8 types[2];
/* 0x15 */ u8 movementType;
/* 0x16 */ u8 friendArea;
/* 0x17 */ u8 abilities[2];
/* 0x19 */ u8 shadowSize;
u8 fill1A; // 0 for all Pokémon.
/* 0x1B */ u8 regenSpeed; // 100 for all Pokémon.
/* 0x1C */ bool8 canMove; // Set to false for Pokémon who don't move unless they're the leader, like Kakuna.
/* 0x1D */ u8 chanceAsleep;
/* 0x1E */ u16 baseHP;
/* 0x20 */ s32 expYield;
/* 0x24 */ u16 baseAtkSpAtk[2];
/* 0x28 */ u16 baseDefSpDef[2];
/* 0x2C */ u16 weight;
/* 0x2E */ u16 size;
u8 unk30; // 10 for all Pokémon.
u8 unk31; // 10 for all Pokémon.
u8 unk32; // 24 for all Pokémon.
/* 0x33 */ bool8 toolboxEnabled; // If false, the AI can't use items. Doesn't seem to be used, as it's true for all Pokémon.
/* 0x34 */ PreEvolution preEvolution;
/* 0x38 */ EvolutionRequirements evolutionRequirements;
/* 0x3C */ s16 dexInternal[2]; // dexNo and internalNo
/* 0x40 */ s16 recruitRate;
/* 0x42 */ s16 alphabetParent[2]; // alphabetNo and parentNo
} MonsterDataEntry;
// size: 0xC | https://www.pokecommunity.com/showthread.php?t=407371
typedef struct LevelData
{
/* 0x0 */ s32 expRequired;
/* 0x4 */ u8 gainHP;
/* 0x5 */ u8 gainUnused;
/* 0x6 */ u8 gainAtt;
/* 0x7 */ u8 gainSPAtt;
/* 0x8 */ u8 gainDef;
/* 0x9 */ u8 gainSPDef;
u16 fillA;
} LevelData;
#endif // GUARD_STR_POKEMON_H

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_POSITION_H
#define GUARD_POSITION_H
#ifndef GUARD_STR_POSITION_H
#define GUARD_STR_POSITION_H
// size: 0x4
typedef struct Position
@@ -15,4 +15,4 @@ typedef struct Position32
/* 0x4 */ s32 y;
} Position32;
#endif // GUARD_POSITION_H
#endif // GUARD_STR_POSITION_H

View File

@@ -1,5 +1,5 @@
#ifndef GUARD_TEXT_H
#define GUARD_TEXT_H
#ifndef GUARD_STR_TEXT_H
#define GUARD_STR_TEXT_H
// size: 0x48
typedef struct UnkTextStruct1
@@ -58,4 +58,4 @@ typedef struct UnkTextStruct2
const u8 *unk14;
} UnkTextStruct2;
#endif // GUARD_TEXT_H
#endif // GUARD_STR_TEXT_H

View File

@@ -1,11 +1,11 @@
#ifndef GUARD_SUBSTRUCT_203B240_H
#define GUARD_SUBSTRUCT_203B240_H
// size: 0x8
struct subStruct_203B240
{
char * pokeName;
char * unk4;
u8 *pokeName;
u8 *unk4;
};
#endif
#endif // GUARD_SUBSTRUCT_203B240_H

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_TARGETING_H
#define GUARD_TARGETING_H
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
void TargetTileInFront(Entity *pokemon);

View File

@@ -2,7 +2,7 @@
#define GUARD_TARGETING_FLAGS_H
#include "constants/move.h"
#include "dungeon_entity.h"
#include "structs/dungeon_entity.h"
s16 GetMoveTargetAndRangeForPokemon(Entity *pokemon, Move *move, bool32 isAI);

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_TEXT1_H
#define GUARD_TEXT1_H
#include "text.h"
#include "structs/str_text.h"
extern UnkTextStruct1 gUnknown_2027370[4];
extern UnkTextStruct2 gUnknown_202AFC0[4];

Some files were not shown because too many files have changed in this diff Show More