mirror of
https://github.com/pret/pmd-red.git
synced 2025-02-25 23:55:41 +00:00
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:
parent
a5c90b0970
commit
aa939e0955
@ -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
213
asm/code_8097DD0.s
Normal 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
|
@ -20,8 +20,8 @@ struct Offense {
|
||||
};
|
||||
|
||||
struct unkPokeSubStruct_4 {
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 dungeonIndex;
|
||||
u8 dungeonFloor;
|
||||
u16 fill6;
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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
90
src/code_8097DD0.c
Normal 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;
|
||||
}
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user