All saving functions decomped

- poke_sub_4 was determined to be Dungeon Index/Floor
- Clean up code that references these functions
This commit is contained in:
Seth Barberee 2022-03-06 14:41:40 -06:00
parent a5c90b0970
commit aa939e0955
11 changed files with 363 additions and 500 deletions

View File

@ -5,76 +5,6 @@
.text
thumb_func_start sub_80978C8
sub_80978C8:
push {lr}
lsls r0, 16
asrs r0, 16
bl GetBaseSpeciesNoUnown
lsls r0, 16
asrs r3, r0, 16
ldr r0, _080978FC
ldr r2, [r0]
adds r0, r3, 0
cmp r3, 0
bge _080978E2
adds r0, 0x1F
_080978E2:
asrs r0, 5
lsls r1, r0, 2
adds r2, 0x54
adds r2, r1
lsls r0, 5
subs r0, r3, r0
movs r1, 0x1
lsls r1, r0
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
pop {r0}
bx r0
.align 2, 0
_080978FC: .4byte gUnknown_203B494
thumb_func_end sub_80978C8
thumb_func_start sub_8097900
sub_8097900:
push {lr}
lsls r0, 16
asrs r0, 16
bl GetBaseSpeciesNoUnown
lsls r0, 16
asrs r3, r0, 16
ldr r0, _08097938
ldr r2, [r0]
adds r0, r3, 0
cmp r3, 0
bge _0809791A
adds r0, 0x1F
_0809791A:
asrs r0, 5
lsls r1, r0, 2
adds r2, 0x1C
adds r2, r1
lsls r0, 5
subs r0, r3, r0
movs r1, 0x1
lsls r1, r0
ldr r0, [r2]
ands r0, r1
cmp r0, 0
bne _0809793C
movs r0, 0
b _0809793E
.align 2, 0
_08097938: .4byte gUnknown_203B494
_0809793C:
movs r0, 0x1
_0809793E:
pop {r1}
bx r1
thumb_func_end sub_8097900
thumb_func_start sub_8097944
sub_8097944:
push {r4-r7,lr}
@ -453,405 +383,4 @@ _08097C10: .4byte 0x00000163
_08097C14: .4byte gUnknown_203B494
thumb_func_end sub_8097944
thumb_func_start sub_8097C18
sub_8097C18:
push {r4-r6,lr}
adds r5, r0, 0
bl sub_8097944
ldr r4, _08097CBC
ldr r1, [r4]
adds r1, 0x4
adds r0, r5, 0
movs r2, 0x11
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x11
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0xC
adds r0, r5, 0
movs r2, 0x11
bl SaveIntegerBits
ldr r1, [r4]
adds r0, r5, 0
movs r2, 0x20
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x14
adds r0, r5, 0
movs r2, 0xE
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x16
adds r0, r5, 0
movs r2, 0xE
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x18
adds r0, r5, 0
movs r2, 0x9
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0xC0
adds r0, r5, 0
movs r2, 0x11
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x1C
movs r6, 0xE0
lsls r6, 1
adds r0, r5, 0
adds r2, r6, 0
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x54
adds r0, r5, 0
adds r2, r6, 0
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x8C
movs r2, 0xD0
lsls r2, 1
adds r0, r5, 0
bl SaveIntegerBits
ldr r1, [r4]
adds r1, 0x10
adds r0, r5, 0
bl xxx_save_poke_sub_4_80902F4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08097CBC: .4byte gUnknown_203B494
thumb_func_end sub_8097C18
thumb_func_start sub_8097CC0
sub_8097CC0:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _08097D5C
ldr r1, [r4]
adds r1, 0x4
movs r2, 0x11
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x11
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0xC
adds r0, r5, 0
movs r2, 0x11
bl RestoreIntegerBits
ldr r1, [r4]
adds r0, r5, 0
movs r2, 0x20
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x14
adds r0, r5, 0
movs r2, 0xE
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x16
adds r0, r5, 0
movs r2, 0xE
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x18
adds r0, r5, 0
movs r2, 0x9
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0xC0
adds r0, r5, 0
movs r2, 0x11
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x1C
movs r6, 0xE0
lsls r6, 1
adds r0, r5, 0
adds r2, r6, 0
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x54
adds r0, r5, 0
adds r2, r6, 0
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x8C
movs r2, 0xD0
lsls r2, 1
adds r0, r5, 0
bl RestoreIntegerBits
ldr r1, [r4]
adds r1, 0x10
adds r0, r5, 0
bl xxx_restore_poke_sub_4_8090314
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08097D5C: .4byte gUnknown_203B494
thumb_func_end sub_8097CC0
thumb_func_start sub_8097D60
sub_8097D60:
push {lr}
sub sp, 0x10
adds r3, r0, 0
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
bl xxx_init_struct_8094924_save_809486C
mov r0, sp
bl WriteGameOptions
mov r0, sp
bl WritePlayTime
mov r0, sp
bl sub_8097C18
mov r0, sp
bl WriteExclusivePokemon
mov r0, sp
bl nullsub_102
ldr r0, [sp, 0x8]
add sp, 0x10
pop {r1}
bx r1
thumb_func_end sub_8097D60
thumb_func_start sub_8097D98
sub_8097D98:
push {lr}
sub sp, 0x10
adds r3, r0, 0
adds r2, r1, 0
mov r0, sp
adds r1, r3, 0
bl xxx_init_struct_8094924_restore_809485C
mov r0, sp
bl ReadGameOptions
mov r0, sp
bl ReadPlayTime
mov r0, sp
bl sub_8097CC0
mov r0, sp
bl ReadExclusivePokemon
mov r0, sp
bl nullsub_102
ldr r0, [sp, 0x8]
add sp, 0x10
pop {r1}
bx r1
thumb_func_end sub_8097D98
thumb_func_start sub_8097DD0
sub_8097DD0:
push {lr}
adds r2, r0, 0
adds r3, r1, 0
ldr r1, [r2]
ldr r0, [r3]
cmp r1, r0
bne _08097DEA
ldr r1, [r2, 0x4]
ldr r0, [r3, 0x4]
cmp r1, r0
bne _08097DEA
movs r0, 0x1
b _08097DEC
_08097DEA:
movs r0, 0
_08097DEC:
pop {r1}
bx r1
thumb_func_end sub_8097DD0
thumb_func_start sub_8097DF0
sub_8097DF0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1F8
mov r8, r0
str r1, [sp, 0x1F0]
movs r0, 0
mov r9, r0
movs r7, 0
ldr r1, _08097E3C
ldr r0, [r1]
cmp r0, 0
beq _08097E6E
_08097E0E:
movs r4, 0
lsls r5, r7, 3
lsls r1, r7, 2
mov r10, r1
adds r6, r7, 0x1
ldr r2, _08097E3C
adds r3, r5, r2
add r1, sp, 0x18C
_08097E1E:
ldr r0, [r3]
adds r0, r4
ldrb r2, [r0]
cmp r2, 0x23
bne _08097E40
ldrb r0, [r0, 0x1]
cmp r0, 0x72
bne _08097E40
strb r2, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
movs r0, 0
strb r0, [r1]
b _08097E50
.align 2, 0
_08097E3C: .4byte gStatusDescriptions
_08097E40:
ldr r0, [r3]
adds r0, r4
ldrb r0, [r0]
strb r0, [r1]
adds r1, 0x1
adds r4, 0x1
cmp r4, 0x63
ble _08097E1E
_08097E50:
add r0, sp, 0x18C
bl strlen
mov r1, sp
add r1, r10
str r0, [r1]
adds r7, r6, 0
cmp r6, 0x62
bgt _08097E6E
lsls r0, r6, 3
ldr r1, _08097EB4
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E0E
_08097E6E:
mov r2, r8
ldrb r0, [r2]
cmp r0, 0
beq _08097F2C
ldr r3, _08097EB4
_08097E78:
cmp r0, 0x23
bne _08097F08
movs r7, 0
adds r1, r3, 0
ldr r0, [r1]
cmp r0, 0
beq _08097F20
mov r2, r9
lsls r0, r2, 2
ldr r2, [sp, 0x1F0]
adds r0, r2
mov r10, r0
_08097E90:
lsls r4, r7, 3
adds r0, r4, r1
ldr r0, [r0]
lsls r1, r7, 2
add r1, sp
ldr r2, [r1]
mov r1, r8
str r3, [sp, 0x1F4]
bl sub_800B2D4
lsls r0, 24
adds r5, r4, 0
adds r6, r7, 0x1
ldr r3, [sp, 0x1F4]
cmp r0, 0
bne _08097EF0
movs r4, 0
b _08097EBA
.align 2, 0
_08097EB4: .4byte gStatusDescriptions
_08097EB8:
adds r4, 0x1
_08097EBA:
cmp r4, r9
bge _08097ED6
adds r0, r5, r3
lsls r1, r4, 2
ldr r2, [sp, 0x1F0]
adds r1, r2
ldr r1, [r1]
str r3, [sp, 0x1F4]
bl sub_8097DD0
lsls r0, 24
ldr r3, [sp, 0x1F4]
cmp r0, 0
beq _08097EB8
_08097ED6:
cmp r4, r9
bne _08097EF0
mov r0, r9
cmp r0, 0x3
bgt _08097EF0
adds r0, r5, r3
mov r1, r10
adds r1, 0x4
mov r10, r1
subs r1, 0x4
stm r1!, {r0}
movs r2, 0x1
add r9, r2
_08097EF0:
adds r7, r6, 0
cmp r6, 0x62
bgt _08097F20
ldr r1, _08097F04
lsls r0, r6, 3
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E90
b _08097F20
.align 2, 0
_08097F04: .4byte gStatusDescriptions
_08097F08:
mov r0, r8
ldrb r1, [r0]
adds r0, r1, 0
adds r0, 0x7F
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08097F1C
cmp r1, 0x87
bne _08097F20
_08097F1C:
movs r1, 0x1
add r8, r1
_08097F20:
movs r2, 0x1
add r8, r2
mov r1, r8
ldrb r0, [r1]
cmp r0, 0
bne _08097E78
_08097F2C:
mov r0, r9
add sp, 0x1F8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8097DF0
.align 2,0

213
asm/code_8097DD0.s Normal file
View File

@ -0,0 +1,213 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8097DD0
sub_8097DD0:
push {lr}
adds r2, r0, 0
adds r3, r1, 0
ldr r1, [r2]
ldr r0, [r3]
cmp r1, r0
bne _08097DEA
ldr r1, [r2, 0x4]
ldr r0, [r3, 0x4]
cmp r1, r0
bne _08097DEA
movs r0, 0x1
b _08097DEC
_08097DEA:
movs r0, 0
_08097DEC:
pop {r1}
bx r1
thumb_func_end sub_8097DD0
thumb_func_start sub_8097DF0
sub_8097DF0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1F8
mov r8, r0
str r1, [sp, 0x1F0]
movs r0, 0
mov r9, r0
movs r7, 0
ldr r1, _08097E3C
ldr r0, [r1]
cmp r0, 0
beq _08097E6E
_08097E0E:
movs r4, 0
lsls r5, r7, 3
lsls r1, r7, 2
mov r10, r1
adds r6, r7, 0x1
ldr r2, _08097E3C
adds r3, r5, r2
add r1, sp, 0x18C
_08097E1E:
ldr r0, [r3]
adds r0, r4
ldrb r2, [r0]
cmp r2, 0x23
bne _08097E40
ldrb r0, [r0, 0x1]
cmp r0, 0x72
bne _08097E40
strb r2, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
movs r0, 0
strb r0, [r1]
b _08097E50
.align 2, 0
_08097E3C: .4byte gStatusDescriptions
_08097E40:
ldr r0, [r3]
adds r0, r4
ldrb r0, [r0]
strb r0, [r1]
adds r1, 0x1
adds r4, 0x1
cmp r4, 0x63
ble _08097E1E
_08097E50:
add r0, sp, 0x18C
bl strlen
mov r1, sp
add r1, r10
str r0, [r1]
adds r7, r6, 0
cmp r6, 0x62
bgt _08097E6E
lsls r0, r6, 3
ldr r1, _08097EB4
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E0E
_08097E6E:
mov r2, r8
ldrb r0, [r2]
cmp r0, 0
beq _08097F2C
ldr r3, _08097EB4
_08097E78:
cmp r0, 0x23
bne _08097F08
movs r7, 0
adds r1, r3, 0
ldr r0, [r1]
cmp r0, 0
beq _08097F20
mov r2, r9
lsls r0, r2, 2
ldr r2, [sp, 0x1F0]
adds r0, r2
mov r10, r0
_08097E90:
lsls r4, r7, 3
adds r0, r4, r1
ldr r0, [r0]
lsls r1, r7, 2
add r1, sp
ldr r2, [r1]
mov r1, r8
str r3, [sp, 0x1F4]
bl sub_800B2D4
lsls r0, 24
adds r5, r4, 0
adds r6, r7, 0x1
ldr r3, [sp, 0x1F4]
cmp r0, 0
bne _08097EF0
movs r4, 0
b _08097EBA
.align 2, 0
_08097EB4: .4byte gStatusDescriptions
_08097EB8:
adds r4, 0x1
_08097EBA:
cmp r4, r9
bge _08097ED6
adds r0, r5, r3
lsls r1, r4, 2
ldr r2, [sp, 0x1F0]
adds r1, r2
ldr r1, [r1]
str r3, [sp, 0x1F4]
bl sub_8097DD0
lsls r0, 24
ldr r3, [sp, 0x1F4]
cmp r0, 0
beq _08097EB8
_08097ED6:
cmp r4, r9
bne _08097EF0
mov r0, r9
cmp r0, 0x3
bgt _08097EF0
adds r0, r5, r3
mov r1, r10
adds r1, 0x4
mov r10, r1
subs r1, 0x4
stm r1!, {r0}
movs r2, 0x1
add r9, r2
_08097EF0:
adds r7, r6, 0
cmp r6, 0x62
bgt _08097F20
ldr r1, _08097F04
lsls r0, r6, 3
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E90
b _08097F20
.align 2, 0
_08097F04: .4byte gStatusDescriptions
_08097F08:
mov r0, r8
ldrb r1, [r0]
adds r0, r1, 0
adds r0, 0x7F
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08097F1C
cmp r1, 0x87
bne _08097F20
_08097F1C:
movs r1, 0x1
add r8, r1
_08097F20:
movs r2, 0x1
add r8, r2
mov r1, r8
ldrb r0, [r1]
cmp r0, 0
bne _08097E78
_08097F2C:
mov r0, r9
add sp, 0x1F8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8097DF0
.align 2,0

View File

@ -20,8 +20,8 @@ struct Offense {
};
struct unkPokeSubStruct_4 {
u8 unk4;
u8 unk5;
u8 dungeonIndex;
u8 dungeonFloor;
u16 fill6;
};

View File

@ -309,6 +309,8 @@ SECTIONS {
src/code_809747C_1.o(.text);
src/code_8097670.o(.text);
asm/code_8097670.o(.text);
src/code_8097DD0.o(.text);
asm/code_8097DD0.o(.text);
src/code_8097F40.o(.text);
src/exclusive_pokemon.o(.text);
asm/exclusive_pokemon.o(.text);

View File

@ -54,7 +54,7 @@ extern bool8 sub_8013938(void *);
extern void sub_8013660(void *);
extern void PlayMenuSoundEffect(u32);
extern u32 GetKeyPress(void *);
extern u8 sub_8097710(u8);
extern bool8 sub_8097710(u8);
extern s16 sub_80978B8();
extern s16 sub_8097880();
@ -225,7 +225,7 @@ void DisplayAdventureLog(void)
do {
uVar6 = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
temp = uVar6; // Having another var in middle gets close (does a u8 cast)
if(sub_8097710(temp) != 0){
if(sub_8097710(temp)){
switch(temp) {
case 0xc:
gUnknown_202DE30 = sub_80978B8();

View File

@ -61,8 +61,8 @@ bool8 sub_8096F50(struct WonderMail *r0)
for(index = 0; index < 0x10; index++)
{
temp = &gUnknown_203B490->unk230[index];
if(temp->unk0.unk4 == r0->dungeon)
if(temp->unk0.unk5 == r0->floor)
if(temp->unk0.dungeonIndex == r0->dungeon)
if(temp->unk0.dungeonFloor == r0->floor)
if(temp->unk4 == r0->unk8)
if(temp->unk8 == temp2)
return TRUE;

View File

@ -1,10 +1,5 @@
#include "global.h"
struct unkDungeonStruct
{
u8 index;
u8 floor;
};
#include "pokemon.h"
struct unkStruct_203B494
{
@ -13,12 +8,12 @@ struct unkStruct_203B494
s32 numAdventures;
s32 unk8;
s32 unkC;
struct unkDungeonStruct dungeonLocation;
struct unkPokeSubStruct_4 dungeonLocation;
s16 unk14;
s16 unk16;
s16 unk18;
u32 unk1C[0xE];
u8 fill54[0x8C - 0x54];
u32 unk54[0xE];
u32 unk8C[0xD];
s32 unkC0;
};
@ -26,6 +21,7 @@ struct unkStruct_203B494
extern struct unkStruct_203B494 *gUnknown_203B494;
extern struct unkStruct_203B494 gUnknown_2039778;
extern const u8 *gAdventureLogText[];
s16 GetBaseSpeciesNoUnown(s16 index);
void sub_8097670(void)
{
@ -37,13 +33,13 @@ struct unkStruct_203B494 *sub_8097680(void)
return &gUnknown_2039778;
}
void SetDungeonLocationInfo(struct unkDungeonStruct *r0)
void SetDungeonLocationInfo(struct unkPokeSubStruct_4 *r0)
{
gUnknown_203B494->dungeonLocation.index = r0->index;
gUnknown_203B494->dungeonLocation.floor = r0->floor;
gUnknown_203B494->dungeonLocation.dungeonIndex = r0->dungeonIndex;
gUnknown_203B494->dungeonLocation.dungeonFloor = r0->dungeonFloor;
}
struct unkDungeonStruct *GetDungeonLocationInfo(void)
struct unkPokeSubStruct_4 *GetDungeonLocationInfo(void)
{
return &gUnknown_203B494->dungeonLocation;
}
@ -76,12 +72,12 @@ void sub_80976F8(u8 r0)
gUnknown_203B494->unk0 |= (1 << r0);
}
u8 sub_8097710(u8 r0)
bool8 sub_8097710(u8 r0)
{
if(gUnknown_203B494->unk0 & (1 << r0))
return 1;
return TRUE;
else
return 0;
return FALSE;
}
const u8 *GetAdventureLogLine(u8 index)
@ -187,3 +183,36 @@ s16 sub_80978B8(void)
{
return gUnknown_203B494->unkC0;
}
void sub_80978C8(s16 pokeIndex)
{
s32 iVar2;
struct unkStruct_203B494 *preload;
s32 baseSpecies;
baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
preload = gUnknown_203B494;
iVar2 = baseSpecies;
if (baseSpecies < 0) {
iVar2 = baseSpecies + 0x1f;
}
preload->unk54[iVar2 >> 5] |= 1 << (baseSpecies + (iVar2 >> 5) * -0x20);
}
bool8 sub_8097900(s16 pokeIndex)
{
s32 iVar2;
struct unkStruct_203B494 *preload;
s32 baseSpecies;
baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
preload = gUnknown_203B494;
iVar2 = baseSpecies;
if (baseSpecies < 0) {
iVar2 = baseSpecies + 0x1f;
}
if(preload->unk1C[iVar2 >> 5] & (1 << (baseSpecies + (iVar2 >> 5) * -0x20)))
return TRUE;
else
return FALSE;
}

90
src/code_8097DD0.c Normal file
View File

@ -0,0 +1,90 @@
#include "global.h"
#include "code_8092334.h"
#include "pokemon.h"
struct unkStruct_203B494
{
// size: 0xC8?
u32 unk0; // 32 bit bitfield, I think
s32 numAdventures;
s32 unk8;
s32 unkC;
struct unkPokeSubStruct_4 dungeonLocation;
s16 unk14;
s16 unk16;
s16 unk18;
u32 unk1C[0xE];
u32 unk54[0xE];
u32 unk8C[0xD];
s32 unkC0;
};
extern struct unkStruct_203B494 *gUnknown_203B494;
extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
extern void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
void ReadExclusivePokemon(struct unkStruct_8094924 *r0);
void ReadGameOptions(struct unkStruct_8094924 *param_1);
void ReadPlayTime(struct unkStruct_8094924 *r0);
void WriteExclusivePokemon(struct unkStruct_8094924 *r0);
void WriteGameOptions(struct unkStruct_8094924 *param_1);
void WritePlayTime(struct unkStruct_8094924 *r0);
extern void sub_8097944(void);
void sub_8097C18(struct unkStruct_8094924 *r0)
{
sub_8097944();
SaveIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
SaveIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
SaveIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
SaveIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
SaveIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
SaveIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
SaveIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
SaveIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
xxx_save_poke_sub_4_80902F4(r0, &gUnknown_203B494->dungeonLocation);
}
void sub_8097CC0(struct unkStruct_8094924 *r0)
{
RestoreIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
RestoreIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
RestoreIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
RestoreIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
RestoreIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
RestoreIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
RestoreIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
RestoreIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
xxx_restore_poke_sub_4_8090314(r0, &gUnknown_203B494->dungeonLocation);
}
u32 sub_8097D60(u8 *r0, u32 size)
{
struct unkStruct_8094924 backup;
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
WriteGameOptions(&backup);
WritePlayTime(&backup);
sub_8097C18(&backup);
WriteExclusivePokemon(&backup);
nullsub_102(&backup);
return backup.unk8;
}
u32 sub_8097D98(u8 *r0, u32 size)
{
struct unkStruct_8094924 backup;
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
ReadGameOptions(&backup);
ReadPlayTime(&backup);
sub_8097CC0(&backup);
ReadExclusivePokemon(&backup);
nullsub_102(&backup);
return backup.unk8;
}

View File

@ -79,7 +79,7 @@ void sub_8027A5C(void)
}
static inline bool8 sub_8027A78_sub(void) {
if (gUnknown_203B2BC->unk18->unk4.unk4 == 0x44 || gUnknown_203B2BC->unk18->unk4.unk4 == 0x45)
if (gUnknown_203B2BC->unk18->unk4.dungeonIndex == 0x44 || gUnknown_203B2BC->unk18->unk4.dungeonIndex == 0x45)
return TRUE;
else
return FALSE;
@ -270,7 +270,7 @@ u32 sub_8027D9C(struct PokemonStruct *r0)
if(r0->unk2 == 0)
{
var1 = 0;
if(r0->unk4.unk4 == 0x41)
if(r0->unk4.dungeonIndex == 0x41)
var1 = 1;
if(var1 != 0)
{
@ -291,7 +291,7 @@ u32 sub_8027DCC(struct PokemonStruct *r0)
if(r0->unk2 == 0)
{
var1 = 0;
if(r0->unk4.unk4 == 0x41)
if(r0->unk4.dungeonIndex == 0x41)
var1 = 1;
if(var1 != 0)
{

View File

@ -113,7 +113,7 @@ void sub_8026A94(void)
static inline bool8 sub_8026AB0_sub(void) {
if (gUnknown_203B2B8->unk18->unk4.unk4 == 0x44 || gUnknown_203B2B8->unk18->unk4.unk4 == 0x45)
if (gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x44 || gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x45)
return TRUE;
else
return FALSE;
@ -344,7 +344,7 @@ u32 sub_8026E88(struct PokemonStruct *r0)
u8 iVar3;
if(r0->unk2 == 0)
{
iVar3 = (r0->unk4.unk4 == 0x41);
iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
if(sub_80023E4(0x8) == 0)
return 0;
@ -361,7 +361,7 @@ u32 sub_8026EB8(struct PokemonStruct *r0)
if(sub_808D3F8() != r0)
if(r0->unk2 == 0)
{
iVar3 = (r0->unk4.unk4 == 0x41);
iVar3 = (r0->unk4.dungeonIndex == 0x41);
if(iVar3 != 0)
{
if(sub_80023E4(0x8) != 0)

View File

@ -171,7 +171,7 @@ extern void sub_800135C(void);
extern u32 GetGameOptions(void);
extern void InitializeGameOptions(u8 r0);
extern u8 *sub_80950F8(void);
extern void sub_80958E4(u8 *a, u32 b);
extern void sub_80958E4(u32 *a, u32 b);
extern u32 sub_80958F8(void);
extern void sub_8095900(void);
extern void sub_80972F4(void);
@ -529,7 +529,7 @@ u32 sub_80121E0(u32 r0)
string = sub_8011C4C();
strncpy(r4->unk4, string, ARRAY_COUNT(r4->unk4));
sub_80958E4((u8 *)r4 + 32, 0);
sub_80958E4(&r4->unk20, 0);
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
MemoryFree(r4);
return temp3;