mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-24 17:54:43 -05:00
266
asm/code_8031D70.s
Normal file
266
asm/code_8031D70.s
Normal file
@@ -0,0 +1,266 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8031D70
|
||||
sub_8031D70:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r5, _08031DC4
|
||||
movs r0, 0x7C
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
stm r0!, {r6}
|
||||
bl sub_801317C
|
||||
ldr r0, [r5]
|
||||
str r4, [r0, 0x10]
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 3
|
||||
adds r1, 0x18
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x14]
|
||||
adds r0, 0x18
|
||||
bl sub_8006518
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r1, 0x10]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031DC8
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
bl sub_8031E00
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08031DC4: .4byte gUnknown_203B334
|
||||
_08031DC8: .4byte gUnknown_80E1FC4
|
||||
thumb_func_end sub_8031D70
|
||||
|
||||
thumb_func_start sub_8031DCC
|
||||
sub_8031DCC:
|
||||
push {lr}
|
||||
ldr r0, _08031DEC
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
ldr r1, [r1, 0x10]
|
||||
bl sub_8012A64
|
||||
cmp r0, 0x1
|
||||
beq _08031DF0
|
||||
cmp r0, 0x2
|
||||
bne _08031DFA
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _08031DFC
|
||||
.align 2, 0
|
||||
_08031DEC: .4byte gUnknown_203B334
|
||||
_08031DF0:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _08031DFC
|
||||
_08031DFA:
|
||||
movs r0, 0
|
||||
_08031DFC:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8031DCC
|
||||
|
||||
thumb_func_start sub_8031E00
|
||||
sub_8031E00:
|
||||
push {lr}
|
||||
bl sub_8031E58
|
||||
bl sub_8031E74
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8031E00
|
||||
|
||||
thumb_func_start sub_8031E10
|
||||
sub_8031E10:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08031E50
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _08031E4A
|
||||
ldr r0, [r2, 0x10]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031E54
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_08031E4A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E50: .4byte gUnknown_203B334
|
||||
_08031E54: .4byte gUnknown_80E1FA8
|
||||
thumb_func_end sub_8031E10
|
||||
|
||||
thumb_func_start sub_8031E58
|
||||
sub_8031E58:
|
||||
push {lr}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _08031E70
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E70: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E58
|
||||
|
||||
thumb_func_start sub_8031E74
|
||||
sub_8031E74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x3C
|
||||
ldr r3, _08031EC0
|
||||
ldr r5, _08031EC4
|
||||
ldr r2, [r5]
|
||||
ldr r1, [r2]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 4
|
||||
ldr r4, [r3]
|
||||
adds r4, r0
|
||||
ldr r0, [r2, 0x10]
|
||||
bl sub_80073B8
|
||||
ldr r2, _08031EC8
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_803D2C0
|
||||
movs r7, 0
|
||||
mov r8, r5
|
||||
_08031EB2:
|
||||
cmp r7, 0x4
|
||||
ble _08031ED0
|
||||
cmp r7, 0xC
|
||||
bgt _08031ECC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x16
|
||||
b _08031F00
|
||||
.align 2, 0
|
||||
_08031EC0: .4byte gUnknown_203B480
|
||||
_08031EC4: .4byte gUnknown_203B334
|
||||
_08031EC8: .4byte gUnknown_80E1FDC
|
||||
_08031ECC:
|
||||
cmp r7, 0x11
|
||||
bgt _08031ED6
|
||||
_08031ED0:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x15
|
||||
b _08031F00
|
||||
_08031ED6:
|
||||
cmp r7, 0x16
|
||||
ble _08031EE8
|
||||
cmp r7, 0x1E
|
||||
bgt _08031EE4
|
||||
movs r6, 0x6
|
||||
movs r5, 0x25
|
||||
b _08031F00
|
||||
_08031EE4:
|
||||
cmp r7, 0x23
|
||||
bgt _08031EEE
|
||||
_08031EE8:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x24
|
||||
b _08031F00
|
||||
_08031EEE:
|
||||
cmp r7, 0x28
|
||||
ble _08031EFC
|
||||
cmp r7, 0x30
|
||||
bgt _08031EFC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x34
|
||||
b _08031F00
|
||||
_08031EFC:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x33
|
||||
_08031F00:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0x12
|
||||
bl __modsi3
|
||||
movs r1, 0xB
|
||||
adds r4, r0, 0
|
||||
muls r4, r1
|
||||
adds r4, 0x6
|
||||
mov r0, sp
|
||||
adds r0, r7
|
||||
adds r0, 0x4
|
||||
ldrb r2, [r0]
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8012C60
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0xA
|
||||
movs r1, 0x5
|
||||
str r1, [sp]
|
||||
adds r1, r4, 0
|
||||
movs r3, 0xA
|
||||
bl sub_80078A4
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x35
|
||||
ble _08031EB2
|
||||
ldr r0, _08031F5C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073E0
|
||||
add sp, 0x3C
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031F5C: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E74
|
||||
|
||||
.align 2,0
|
||||
@@ -949,7 +949,7 @@ _0803B75C: .4byte gMedichamMission
|
||||
_0803B760:
|
||||
ldr r1, [r7, 0x8]
|
||||
add r0, sp, 0x4
|
||||
bl sub_8090208
|
||||
bl PrintYellowDungeonNametoBuffer
|
||||
b _0803B850
|
||||
_0803B76A:
|
||||
ldr r4, _0803B780
|
||||
|
||||
@@ -2225,7 +2225,7 @@ _0806E040:
|
||||
ldr r1, _0806E0C0
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl sub_809033C
|
||||
bl GetDungeonUnk1
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E066
|
||||
@@ -2969,4 +2969,4 @@ _0806E64C: .4byte 0x00000177
|
||||
_0806E650: .4byte gUnknown_8106F0C
|
||||
thumb_func_end sub_806E100
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
||||
@@ -213,7 +213,7 @@ sub_80842F0:
|
||||
_08084320:
|
||||
lsls r0, r6, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r4, r0, 0
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0x6
|
||||
@@ -300,7 +300,7 @@ sub_80843BC:
|
||||
_080843C6:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r3, r0, 0
|
||||
ldrb r0, [r3]
|
||||
cmp r0, 0x6
|
||||
@@ -353,7 +353,7 @@ sub_8084424:
|
||||
_08084428:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x8
|
||||
@@ -760,7 +760,7 @@ sub_8084778:
|
||||
_08084784:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x6
|
||||
|
||||
@@ -26,7 +26,7 @@ sub_8094558:
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x18
|
||||
adds r0, r4, 0
|
||||
bl sub_8090208
|
||||
bl PrintYellowDungeonNametoBuffer
|
||||
ldr r0, _080945D4
|
||||
ldr r2, [r0]
|
||||
str r5, [sp]
|
||||
|
||||
@@ -452,488 +452,4 @@ sub_8095494:
|
||||
_080954B0: .4byte gUnknown_203B480
|
||||
thumb_func_end sub_8095494
|
||||
|
||||
thumb_func_start sub_80954B4
|
||||
sub_80954B4:
|
||||
push {lr}
|
||||
movs r0, 0x3
|
||||
bl sub_8095324
|
||||
cmp r0, 0
|
||||
bne _080954C4
|
||||
movs r0, 0
|
||||
b _080954C6
|
||||
_080954C4:
|
||||
movs r0, 0x1
|
||||
_080954C6:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80954B4
|
||||
|
||||
thumb_func_start sub_80954CC
|
||||
sub_80954CC:
|
||||
push {r4-r6,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
|
||||
ldr r6, _08095618
|
||||
movs r5, 0
|
||||
movs r4, 0x1F
|
||||
_080954E2:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_8095774
|
||||
adds r5, 0x30
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080954E2
|
||||
ldr r4, _0809561C
|
||||
ldr r1, [r4]
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
ldr r5, [r4]
|
||||
adds r4, r5, 0x4
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x58
|
||||
bl memset
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x2
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x6
|
||||
mov r0, sp
|
||||
movs r2, 0x1
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x7
|
||||
mov r0, sp
|
||||
movs r2, 0x7
|
||||
bl RestoreIntegerBits
|
||||
adds r4, 0x4
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl xxx_restore_poke_sub_4_8090314
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xC
|
||||
mov r0, sp
|
||||
movs r2, 0x9
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x10
|
||||
mov r0, sp
|
||||
bl xxx_restore_poke_sub_c_808F410
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x14
|
||||
mov r0, sp
|
||||
bl xxx_restore_poke_sub_c_808F410
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x18
|
||||
mov r0, sp
|
||||
movs r2, 0xA
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1A
|
||||
mov r0, sp
|
||||
movs r2, 0xA
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1C
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1D
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1E
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1F
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x20
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x24
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x28
|
||||
mov r0, sp
|
||||
movs r2, 0x4
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x2C
|
||||
mov r0, sp
|
||||
bl RestoreHeldItem
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x30
|
||||
mov r0, sp
|
||||
bl RestorePokemonMoves
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x50
|
||||
mov r0, sp
|
||||
movs r2, 0x50
|
||||
bl RestoreIntegerBits
|
||||
ldr r4, _08095620
|
||||
ldr r1, [r4]
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
adds r6, r4, 0
|
||||
movs r5, 0x4
|
||||
movs r4, 0x1F
|
||||
_080955F4:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
adds r5, 0x4
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080955F4
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
ldr r0, [sp, 0x8]
|
||||
add sp, 0x10
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08095618: .4byte gUnknown_203B480
|
||||
_0809561C: .4byte gUnknown_203B484
|
||||
_08095620: .4byte gUnknown_203B48C
|
||||
thumb_func_end sub_80954CC
|
||||
|
||||
thumb_func_start sub_8095624
|
||||
sub_8095624:
|
||||
push {r4-r6,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
|
||||
ldr r6, _08095768
|
||||
movs r5, 0
|
||||
movs r4, 0x1F
|
||||
_0809563A:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_8095824
|
||||
adds r5, 0x30
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _0809563A
|
||||
ldr r4, _0809576C
|
||||
ldr r1, [r4]
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
ldr r5, [r4]
|
||||
adds r4, r5, 0x4
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x2
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0x6
|
||||
mov r0, sp
|
||||
movs r2, 0x1
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0x7
|
||||
mov r0, sp
|
||||
movs r2, 0x7
|
||||
bl SaveIntegerBits
|
||||
adds r4, 0x4
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl xxx_save_poke_sub_4_80902F4
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xC
|
||||
mov r0, sp
|
||||
movs r2, 0x9
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x10
|
||||
mov r0, sp
|
||||
bl xxx_save_poke_sub_c_808F41C
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x14
|
||||
mov r0, sp
|
||||
bl xxx_save_poke_sub_c_808F41C
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x18
|
||||
mov r0, sp
|
||||
movs r2, 0xA
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1A
|
||||
mov r0, sp
|
||||
movs r2, 0xA
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1C
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1D
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1E
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1F
|
||||
mov r0, sp
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x20
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x24
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x28
|
||||
mov r0, sp
|
||||
movs r2, 0x4
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x2C
|
||||
mov r0, sp
|
||||
bl SaveHeldItem
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x30
|
||||
mov r0, sp
|
||||
bl SavePokemonMoves
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x50
|
||||
mov r0, sp
|
||||
movs r2, 0x50
|
||||
bl SaveIntegerBits
|
||||
ldr r4, _08095770
|
||||
ldr r1, [r4]
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
adds r6, r4, 0
|
||||
movs r5, 0x4
|
||||
movs r4, 0x1F
|
||||
_08095742:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
adds r5, 0x4
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08095742
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
ldr r0, [sp, 0x8]
|
||||
add sp, 0x10
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08095768: .4byte gUnknown_203B480
|
||||
_0809576C: .4byte gUnknown_203B484
|
||||
_08095770: .4byte gUnknown_203B48C
|
||||
thumb_func_end sub_8095624
|
||||
|
||||
thumb_func_start sub_8095774
|
||||
sub_8095774:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r2, 0x4
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x4
|
||||
adds r0, r4, 0
|
||||
bl xxx_restore_poke_sub_4_8090314
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x18
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x10
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x14
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x50
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x20
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x21
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x22
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x24
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x28
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x2C
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl RestoreIntegerBits
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x2D
|
||||
strb r0, [r1]
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8095774
|
||||
|
||||
thumb_func_start sub_8095824
|
||||
sub_8095824:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r1, 0xFF
|
||||
mov r0, sp
|
||||
strb r1, [r0]
|
||||
mov r6, sp
|
||||
adds r6, 0x1
|
||||
movs r0, 0
|
||||
strb r0, [r6]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x4
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0x4
|
||||
adds r0, r5, 0
|
||||
bl xxx_save_poke_sub_4_80902F4
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x8
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x18
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0xC
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x9
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x10
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x14
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x50
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x20
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x21
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x22
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x24
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x28
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x2C
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x2D
|
||||
ldrb r0, [r0]
|
||||
mov r1, sp
|
||||
cmp r0, 0
|
||||
bne _080958D2
|
||||
adds r1, r6, 0
|
||||
_080958D2:
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x1
|
||||
bl SaveIntegerBits
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8095824
|
||||
|
||||
thumb_func_start sub_80958E4
|
||||
sub_80958E4:
|
||||
str r1, [r0]
|
||||
bx lr
|
||||
thumb_func_end sub_80958E4
|
||||
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -2019,7 +2019,7 @@ sub_80969D0:
|
||||
_080969DA:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1, 0x4]
|
||||
cmp r0, r6
|
||||
@@ -2054,7 +2054,7 @@ sub_8096A08:
|
||||
_08096A14:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r2, r0, 0
|
||||
ldrb r0, [r2, 0x4]
|
||||
cmp r0, r5
|
||||
@@ -2139,8 +2139,8 @@ _08096AAE:
|
||||
bx r1
|
||||
thumb_func_end sub_8096A78
|
||||
|
||||
thumb_func_start sub_8096AB4
|
||||
sub_8096AB4:
|
||||
thumb_func_start GetJobSlotInfo
|
||||
GetJobSlotInfo:
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _08096AC8
|
||||
@@ -2153,7 +2153,7 @@ sub_8096AB4:
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08096AC8: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096AB4
|
||||
thumb_func_end GetJobSlotInfo
|
||||
|
||||
thumb_func_start IsJobSlotEmpty
|
||||
IsJobSlotEmpty:
|
||||
@@ -2191,7 +2191,7 @@ sub_8096AF8:
|
||||
lsrs r0, 24
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r3, r0, 0
|
||||
movs r1, 0
|
||||
strb r1, [r5]
|
||||
@@ -2275,7 +2275,7 @@ sub_8096B98:
|
||||
_08096BA0:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x6
|
||||
@@ -2816,680 +2816,4 @@ _08096EFE:
|
||||
_08096F4C: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096EEC
|
||||
|
||||
thumb_func_start sub_8096F50
|
||||
sub_8096F50:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_8096EB0
|
||||
mov r12, r0
|
||||
movs r5, 0
|
||||
ldr r0, _08096F8C
|
||||
ldr r7, [r0]
|
||||
ldrb r6, [r4, 0x4]
|
||||
movs r3, 0
|
||||
_08096F64:
|
||||
movs r1, 0x8C
|
||||
lsls r1, 2
|
||||
adds r0, r3, r1
|
||||
adds r2, r7, r0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, r6
|
||||
bne _08096F90
|
||||
ldrb r0, [r2, 0x1]
|
||||
ldrb r1, [r4, 0x5]
|
||||
cmp r0, r1
|
||||
bne _08096F90
|
||||
ldr r1, [r2, 0x4]
|
||||
ldr r0, [r4, 0x8]
|
||||
cmp r1, r0
|
||||
bne _08096F90
|
||||
ldr r0, [r2, 0x8]
|
||||
cmp r0, r12
|
||||
bne _08096F90
|
||||
movs r0, 0x1
|
||||
b _08096F9A
|
||||
.align 2, 0
|
||||
_08096F8C: .4byte gUnknown_203B490
|
||||
_08096F90:
|
||||
adds r3, 0xC
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _08096F64
|
||||
movs r0, 0
|
||||
_08096F9A:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8096F50
|
||||
|
||||
thumb_func_start sub_8096FA0
|
||||
sub_8096FA0:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x14
|
||||
adds r3, r0, 0
|
||||
adds r2, r1, 0
|
||||
mov r0, sp
|
||||
adds r1, r3, 0
|
||||
bl xxx_init_struct_8094924_restore_809485C
|
||||
add r7, sp, 0x10
|
||||
ldr r6, _08097020
|
||||
movs r5, 0
|
||||
movs r4, 0x3
|
||||
_08096FB8:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_80971EC
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08096FB8
|
||||
ldr r6, _08097020
|
||||
movs r5, 0x50
|
||||
movs r4, 0x7
|
||||
_08096FD0:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_80971EC
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08096FD0
|
||||
ldr r6, _08097020
|
||||
movs r5, 0xF0
|
||||
movs r4, 0x7
|
||||
_08096FE8:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_80971EC
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08096FE8
|
||||
movs r4, 0
|
||||
movs r6, 0x1
|
||||
ldr r5, _08097020
|
||||
_08097000:
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
bl RestoreIntegerBits
|
||||
ldr r1, [sp, 0x10]
|
||||
ands r1, r6
|
||||
cmp r1, 0
|
||||
beq _08097024
|
||||
ldr r0, [r5]
|
||||
movs r1, 0xBC
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
adds r0, r4
|
||||
strb r6, [r0]
|
||||
b _08097030
|
||||
.align 2, 0
|
||||
_08097020: .4byte gUnknown_203B490
|
||||
_08097024:
|
||||
ldr r0, [r5]
|
||||
movs r2, 0xBC
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
adds r0, r4
|
||||
strb r1, [r0]
|
||||
_08097030:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x37
|
||||
ble _08097000
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
bl RestoreIntegerBits
|
||||
ldr r1, [sp, 0x10]
|
||||
movs r2, 0x1
|
||||
ands r1, r2
|
||||
cmp r1, 0
|
||||
beq _0809705C
|
||||
ldr r0, _08097058
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xCA
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
b _08097068
|
||||
.align 2, 0
|
||||
_08097058: .4byte gUnknown_203B490
|
||||
_0809705C:
|
||||
ldr r0, _080970D4
|
||||
ldr r0, [r0]
|
||||
movs r2, 0xCA
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
_08097068:
|
||||
ldr r4, _080970D4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0xC8
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
movs r2, 0xA0
|
||||
lsls r2, 1
|
||||
mov r0, sp
|
||||
bl RestoreIntegerBits
|
||||
ldr r1, [r4]
|
||||
movs r2, 0xDC
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
movs r2, 0xF0
|
||||
lsls r2, 2
|
||||
mov r0, sp
|
||||
bl RestoreIntegerBits
|
||||
adds r6, r4, 0
|
||||
movs r5, 0x8C
|
||||
lsls r5, 2
|
||||
movs r4, 0xF
|
||||
_08097096:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
adds r1, 0x8
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl RestoreIntegerBits
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
adds r1, 0x4
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl RestoreIntegerBits
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl xxx_restore_poke_sub_4_8090314
|
||||
adds r5, 0xC
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08097096
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
ldr r0, [sp, 0x8]
|
||||
add sp, 0x14
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080970D4: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096FA0
|
||||
|
||||
thumb_func_start sub_80970D8
|
||||
sub_80970D8:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x14
|
||||
adds r3, r0, 0
|
||||
adds r2, r1, 0
|
||||
mov r0, sp
|
||||
adds r1, r3, 0
|
||||
bl xxx_init_struct_8094924_save_809486C
|
||||
add r7, sp, 0x10
|
||||
ldr r6, _080971E8
|
||||
movs r5, 0
|
||||
movs r4, 0x3
|
||||
_080970F0:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_8097270
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080970F0
|
||||
ldr r6, _080971E8
|
||||
movs r5, 0x50
|
||||
movs r4, 0x7
|
||||
_08097108:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_8097270
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08097108
|
||||
ldr r6, _080971E8
|
||||
movs r5, 0xF0
|
||||
movs r4, 0x7
|
||||
_08097120:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl sub_8097270
|
||||
adds r5, 0x14
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08097120
|
||||
movs r4, 0
|
||||
_08097134:
|
||||
ldr r0, _080971E8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xBC
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
adds r0, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0809714A
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0809714A:
|
||||
str r0, [sp, 0x10]
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
bl SaveIntegerBits
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x37
|
||||
ble _08097134
|
||||
ldr r0, _080971E8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xCA
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08097170
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_08097170:
|
||||
str r0, [sp, 0x10]
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x1
|
||||
bl SaveIntegerBits
|
||||
ldr r4, _080971E8
|
||||
ldr r1, [r4]
|
||||
movs r0, 0xC8
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
movs r2, 0xA0
|
||||
lsls r2, 1
|
||||
mov r0, sp
|
||||
bl SaveIntegerBits
|
||||
ldr r1, [r4]
|
||||
movs r0, 0xDC
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
movs r2, 0xF0
|
||||
lsls r2, 2
|
||||
mov r0, sp
|
||||
bl SaveIntegerBits
|
||||
adds r6, r4, 0
|
||||
movs r5, 0x8C
|
||||
lsls r5, 2
|
||||
movs r4, 0xF
|
||||
_080971AA:
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
adds r1, 0x8
|
||||
mov r0, sp
|
||||
movs r2, 0x20
|
||||
bl SaveIntegerBits
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
adds r1, 0x4
|
||||
mov r0, sp
|
||||
movs r2, 0x18
|
||||
bl SaveIntegerBits
|
||||
ldr r1, [r6]
|
||||
adds r1, r5
|
||||
mov r0, sp
|
||||
bl xxx_save_poke_sub_4_80902F4
|
||||
adds r5, 0xC
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080971AA
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
ldr r0, [sp, 0x8]
|
||||
add sp, 0x14
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080971E8: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_80970D8
|
||||
|
||||
thumb_func_start sub_80971EC
|
||||
sub_80971EC:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r2, 0x4
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x1
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x3
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x2
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x4
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xE
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x10
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x11
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x4
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x12
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x13
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x6
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x18
|
||||
bl RestoreIntegerBits
|
||||
adds r1, r5, 0x4
|
||||
adds r0, r4, 0
|
||||
bl xxx_restore_poke_sub_4_8090314
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80971EC
|
||||
|
||||
thumb_func_start sub_8097270
|
||||
sub_8097270:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r2, 0x4
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0x1
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x3
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0x2
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x4
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xE
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x10
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x11
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x4
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x12
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x8
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x13
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x6
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x18
|
||||
bl SaveIntegerBits
|
||||
adds r1, r5, 0x4
|
||||
adds r0, r4, 0
|
||||
bl xxx_save_poke_sub_4_80902F4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8097270
|
||||
|
||||
thumb_func_start sub_80972F4
|
||||
sub_80972F4:
|
||||
push {lr}
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
bl sub_80015C0
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
bl sub_80015C0
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
bl sub_80015C0
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80972F4
|
||||
|
||||
thumb_func_start nullsub_128
|
||||
nullsub_128:
|
||||
bx lr
|
||||
thumb_func_end nullsub_128
|
||||
|
||||
thumb_func_start sub_8097318
|
||||
sub_8097318:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097326
|
||||
movs r0, 0
|
||||
b _08097338
|
||||
_08097326:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _08097338
|
||||
movs r0, 0x1
|
||||
_08097338:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097318
|
||||
|
||||
thumb_func_start sub_809733C
|
||||
sub_809733C:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r4, 0xD
|
||||
beq _0809737C
|
||||
lsls r0, r4, 16
|
||||
lsrs r5, r0, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r2, r5, 0
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
bne _0809737C
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
cmp r6, 0
|
||||
beq _0809737C
|
||||
cmp r4, 0xE
|
||||
blt _0809737C
|
||||
cmp r4, 0xF
|
||||
ble _08097378
|
||||
cmp r4, 0x1C
|
||||
bne _0809737C
|
||||
_08097378:
|
||||
bl sub_809674C
|
||||
_0809737C:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_809733C
|
||||
|
||||
thumb_func_start sub_8097384
|
||||
sub_8097384:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097392
|
||||
movs r0, 0
|
||||
b _080973A4
|
||||
_08097392:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _080973A4
|
||||
movs r0, 0x1
|
||||
_080973A4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097384
|
||||
|
||||
thumb_func_start sub_80973A8
|
||||
sub_80973A8:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r0, 0xD
|
||||
beq _080973EE
|
||||
lsls r5, r0, 16
|
||||
cmp r6, 0
|
||||
beq _080973E2
|
||||
bl sub_80A26B8
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
beq _080973E2
|
||||
movs r0, 0
|
||||
movs r1, 0x12
|
||||
adds r2, r4, 0
|
||||
bl sub_80018D8
|
||||
_080973E2:
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
_080973EE:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80973A8
|
||||
|
||||
thumb_func_start sub_80973F4
|
||||
sub_80973F4:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097402
|
||||
movs r0, 0
|
||||
b _08097414
|
||||
_08097402:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _08097414
|
||||
movs r0, 0x1
|
||||
_08097414:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80973F4
|
||||
|
||||
thumb_func_start sub_8097418
|
||||
sub_8097418:
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r7, r1, 24
|
||||
cmp r5, 0xD
|
||||
beq _08097470
|
||||
lsls r6, r5, 16
|
||||
cmp r7, 0
|
||||
beq _08097464
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
cmp r5, 0x1E
|
||||
bgt _08097464
|
||||
lsls r0, r5, 3
|
||||
ldr r1, _08097478
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4, 0x4]
|
||||
cmp r0, 0xFF
|
||||
beq _0809744C
|
||||
bl sub_8097FA8
|
||||
_0809744C:
|
||||
ldrb r0, [r4, 0x5]
|
||||
cmp r0, 0xFF
|
||||
beq _08097456
|
||||
bl sub_8097FA8
|
||||
_08097456:
|
||||
cmp r5, 0x9
|
||||
bne _08097460
|
||||
movs r0, 0x1F
|
||||
bl sub_8097FA8
|
||||
_08097460:
|
||||
bl sub_8097FF8
|
||||
_08097464:
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
adds r3, r7, 0
|
||||
bl sub_800199C
|
||||
_08097470:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097478: .4byte gStoryMissionText
|
||||
thumb_func_end sub_8097418
|
||||
|
||||
.align 2,0
|
||||
|
||||
207
asm/code_8097318.s
Normal file
207
asm/code_8097318.s
Normal file
@@ -0,0 +1,207 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8097318
|
||||
sub_8097318:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097326
|
||||
movs r0, 0
|
||||
b _08097338
|
||||
_08097326:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _08097338
|
||||
movs r0, 0x1
|
||||
_08097338:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097318
|
||||
|
||||
thumb_func_start sub_809733C
|
||||
sub_809733C:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r4, 0xD
|
||||
beq _0809737C
|
||||
lsls r0, r4, 16
|
||||
lsrs r5, r0, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r2, r5, 0
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
bne _0809737C
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
cmp r6, 0
|
||||
beq _0809737C
|
||||
cmp r4, 0xE
|
||||
blt _0809737C
|
||||
cmp r4, 0xF
|
||||
ble _08097378
|
||||
cmp r4, 0x1C
|
||||
bne _0809737C
|
||||
_08097378:
|
||||
bl sub_809674C
|
||||
_0809737C:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_809733C
|
||||
|
||||
thumb_func_start sub_8097384
|
||||
sub_8097384:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097392
|
||||
movs r0, 0
|
||||
b _080973A4
|
||||
_08097392:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _080973A4
|
||||
movs r0, 0x1
|
||||
_080973A4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097384
|
||||
|
||||
thumb_func_start sub_80973A8
|
||||
sub_80973A8:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r0, 0xD
|
||||
beq _080973EE
|
||||
lsls r5, r0, 16
|
||||
cmp r6, 0
|
||||
beq _080973E2
|
||||
bl sub_80A26B8
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
beq _080973E2
|
||||
movs r0, 0
|
||||
movs r1, 0x12
|
||||
adds r2, r4, 0
|
||||
bl sub_80018D8
|
||||
_080973E2:
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
_080973EE:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80973A8
|
||||
|
||||
thumb_func_start sub_80973F4
|
||||
sub_80973F4:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097402
|
||||
movs r0, 0
|
||||
b _08097414
|
||||
_08097402:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _08097414
|
||||
movs r0, 0x1
|
||||
_08097414:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80973F4
|
||||
|
||||
thumb_func_start sub_8097418
|
||||
sub_8097418:
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r7, r1, 24
|
||||
cmp r5, 0xD
|
||||
beq _08097470
|
||||
lsls r6, r5, 16
|
||||
cmp r7, 0
|
||||
beq _08097464
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
cmp r5, 0x1E
|
||||
bgt _08097464
|
||||
lsls r0, r5, 3
|
||||
ldr r1, _08097478
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4, 0x4]
|
||||
cmp r0, 0xFF
|
||||
beq _0809744C
|
||||
bl sub_8097FA8
|
||||
_0809744C:
|
||||
ldrb r0, [r4, 0x5]
|
||||
cmp r0, 0xFF
|
||||
beq _08097456
|
||||
bl sub_8097FA8
|
||||
_08097456:
|
||||
cmp r5, 0x9
|
||||
bne _08097460
|
||||
movs r0, 0x1F
|
||||
bl sub_8097FA8
|
||||
_08097460:
|
||||
bl sub_8097FF8
|
||||
_08097464:
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
adds r3, r7, 0
|
||||
bl sub_800199C
|
||||
_08097470:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097478: .4byte gStoryMissionText
|
||||
thumb_func_end sub_8097418
|
||||
|
||||
.align 2,0
|
||||
@@ -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
|
||||
@@ -57,33 +57,4 @@ _080901D0: .4byte 0x000003e6
|
||||
_080901D4: .4byte gUnknown_8107828
|
||||
thumb_func_end sub_809017C
|
||||
|
||||
thumb_func_start sub_80901D8
|
||||
sub_80901D8:
|
||||
push {lr}
|
||||
adds r3, r0, 0
|
||||
adds r2, r1, 0
|
||||
ldrb r0, [r2]
|
||||
subs r0, 0x4B
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x16
|
||||
bhi _080901FE
|
||||
movs r0, 0x34
|
||||
strb r0, [r3]
|
||||
ldrb r1, [r2]
|
||||
subs r1, 0x4B
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
ldrb r2, [r2, 0x1]
|
||||
adds r0, r2
|
||||
strb r0, [r3, 0x1]
|
||||
b _08090202
|
||||
_080901FE:
|
||||
ldr r0, [r2]
|
||||
str r0, [r3]
|
||||
_08090202:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80901D8
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -5,110 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8090298
|
||||
sub_8090298:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r1, r0, 0
|
||||
subs r0, 0x4B
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x16
|
||||
bhi _080902AE
|
||||
movs r0, 0x4
|
||||
b _080902C2
|
||||
_080902AE:
|
||||
cmp r1, 0x3E
|
||||
bhi _080902C0
|
||||
ldr r0, _080902BC
|
||||
adds r0, r1, r0
|
||||
ldrb r0, [r0]
|
||||
b _080902C2
|
||||
.align 2, 0
|
||||
_080902BC: .4byte gUnknown_81077A8
|
||||
_080902C0:
|
||||
movs r0, 0x1
|
||||
_080902C2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8090298
|
||||
|
||||
thumb_func_start sub_80902C8
|
||||
sub_80902C8:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r1, r0, 0
|
||||
subs r0, 0x4B
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x16
|
||||
bls _080902EC
|
||||
cmp r1, 0x3E
|
||||
bhi _080902EC
|
||||
ldr r0, _080902E8
|
||||
adds r0, r1, r0
|
||||
ldrb r0, [r0]
|
||||
b _080902EE
|
||||
.align 2, 0
|
||||
_080902E8: .4byte gUnknown_81077E8
|
||||
_080902EC:
|
||||
movs r0, 0
|
||||
_080902EE:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80902C8
|
||||
|
||||
thumb_func_start xxx_save_poke_sub_4_80902F4
|
||||
xxx_save_poke_sub_4_80902F4:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x7
|
||||
bl SaveIntegerBits
|
||||
adds r4, 0x1
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x7
|
||||
bl SaveIntegerBits
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end xxx_save_poke_sub_4_80902F4
|
||||
|
||||
thumb_func_start xxx_restore_poke_sub_4_8090314
|
||||
xxx_restore_poke_sub_4_8090314:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
strb r0, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x7
|
||||
bl RestoreIntegerBits
|
||||
adds r4, 0x1
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x7
|
||||
bl RestoreIntegerBits
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end xxx_restore_poke_sub_4_8090314
|
||||
|
||||
thumb_func_start sub_809033C
|
||||
sub_809033C:
|
||||
lsls r0, 24
|
||||
ldr r1, _08090348
|
||||
lsrs r0, 20
|
||||
adds r0, r1
|
||||
ldrb r0, [r0, 0x1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08090348: .4byte gDungeons
|
||||
thumb_func_end sub_809033C
|
||||
|
||||
thumb_func_start sub_809034C
|
||||
sub_809034C:
|
||||
@@ -472,266 +472,4 @@ _080277F4: .4byte gUnknown_80D4920
|
||||
_080277F8: .4byte gUnknown_80D4928
|
||||
thumb_func_end sub_8027794
|
||||
|
||||
thumb_func_start sub_80277FC
|
||||
sub_80277FC:
|
||||
push {r4,lr}
|
||||
movs r0, 0x1
|
||||
bl sub_8023A94
|
||||
cmp r0, 0x4
|
||||
bhi _080278AE
|
||||
lsls r0, 2
|
||||
ldr r1, _08027814
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08027814: .4byte _08027818
|
||||
.align 2, 0
|
||||
_08027818:
|
||||
.4byte _080278AE
|
||||
.4byte _080278AE
|
||||
.4byte _080278A4
|
||||
.4byte _0802782C
|
||||
.4byte _08027868
|
||||
_0802782C:
|
||||
bl sub_8023B44
|
||||
ldr r4, _08027860
|
||||
ldr r1, [r4]
|
||||
strh r0, [r1, 0x8]
|
||||
ldr r3, _08027864
|
||||
movs r0, 0x8
|
||||
ldrsh r2, [r1, r0]
|
||||
movs r0, 0x58
|
||||
muls r2, r0
|
||||
ldr r0, [r3]
|
||||
adds r0, r2
|
||||
str r0, [r1, 0x18]
|
||||
ldrb r0, [r0, 0x2]
|
||||
strb r0, [r1, 0x1C]
|
||||
ldr r1, [r4]
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r1, 0x14
|
||||
bl PeekPokemonItem
|
||||
movs r0, 0x3
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _080278AE
|
||||
.align 2, 0
|
||||
_08027860: .4byte gUnknown_203B2BC
|
||||
_08027864: .4byte gRecruitedPokemonRef
|
||||
_08027868:
|
||||
bl sub_8023B44
|
||||
ldr r4, _0802789C
|
||||
ldr r1, [r4]
|
||||
strh r0, [r1, 0x8]
|
||||
ldr r3, _080278A0
|
||||
movs r0, 0x8
|
||||
ldrsh r2, [r1, r0]
|
||||
movs r0, 0x58
|
||||
muls r2, r0
|
||||
ldr r0, [r3]
|
||||
adds r0, r2
|
||||
str r0, [r1, 0x18]
|
||||
ldrb r0, [r0, 0x2]
|
||||
strb r0, [r1, 0x1C]
|
||||
ldr r1, [r4]
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r1, 0x14
|
||||
bl PeekPokemonItem
|
||||
movs r0, 0x4
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _080278AE
|
||||
.align 2, 0
|
||||
_0802789C: .4byte gUnknown_203B2BC
|
||||
_080278A0: .4byte gRecruitedPokemonRef
|
||||
_080278A4:
|
||||
bl sub_8023C60
|
||||
movs r0, 0x11
|
||||
bl SetFriendAreaActionMenuState
|
||||
_080278AE:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80277FC
|
||||
|
||||
thumb_func_start sub_80278B4
|
||||
sub_80278B4:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_8023A94
|
||||
ldr r4, _080278F8
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x7C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080278E4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x7C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _080278E4
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x70]
|
||||
_080278E4:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0xB
|
||||
bls _080278EE
|
||||
b _08027A36
|
||||
_080278EE:
|
||||
lsls r0, 2
|
||||
ldr r1, _080278FC
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080278F8: .4byte gUnknown_203B2BC
|
||||
_080278FC: .4byte _08027900
|
||||
.align 2, 0
|
||||
_08027900:
|
||||
.4byte _08027A30
|
||||
.4byte _08027A36
|
||||
.4byte _08027A36
|
||||
.4byte _08027A20
|
||||
.4byte _08027A28
|
||||
.4byte _08027930
|
||||
.4byte _0802796C
|
||||
.4byte _0802798C
|
||||
.4byte _080279C0
|
||||
.4byte _080279D0
|
||||
.4byte _080279D8
|
||||
.4byte _080279C8
|
||||
_08027930:
|
||||
ldr r4, _08027964
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r0, r1]
|
||||
bl sub_808D750
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802795E
|
||||
ldr r0, [r4]
|
||||
movs r2, 0x8
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r0, 0x58
|
||||
muls r1, r0
|
||||
ldr r0, _08027968
|
||||
ldr r0, [r0]
|
||||
adds r1, r0
|
||||
ldrh r2, [r1]
|
||||
movs r0, 0x2
|
||||
orrs r0, r2
|
||||
strh r0, [r1]
|
||||
bl nullsub_104
|
||||
_0802795E:
|
||||
bl sub_808ED00
|
||||
b _08027A0E
|
||||
.align 2, 0
|
||||
_08027964: .4byte gUnknown_203B2BC
|
||||
_08027968: .4byte gRecruitedPokemonRef
|
||||
_0802796C:
|
||||
ldr r0, _08027984
|
||||
ldr r0, [r0]
|
||||
ldr r2, [r0, 0x18]
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _08027988
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
bl nullsub_104
|
||||
bl sub_808ED00
|
||||
b _08027A0E
|
||||
.align 2, 0
|
||||
_08027984: .4byte gUnknown_203B2BC
|
||||
_08027988: .4byte 0x0000fffd
|
||||
_0802798C:
|
||||
ldr r2, _080279B8
|
||||
ldr r0, _080279BC
|
||||
ldr r0, [r0]
|
||||
movs r3, 0x8
|
||||
ldrsh r1, [r0, r3]
|
||||
movs r0, 0x58
|
||||
muls r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r4, r0, r1
|
||||
bl GetPlayerPokemonStruct
|
||||
ldrb r1, [r4, 0x2]
|
||||
cmp r1, 0
|
||||
bne _080279B2
|
||||
strb r1, [r0, 0x2]
|
||||
movs r0, 0x1
|
||||
strb r0, [r4, 0x2]
|
||||
bl nullsub_104
|
||||
_080279B2:
|
||||
bl sub_808ED00
|
||||
b _08027A0E
|
||||
.align 2, 0
|
||||
_080279B8: .4byte gRecruitedPokemonRef
|
||||
_080279BC: .4byte gUnknown_203B2BC
|
||||
_080279C0:
|
||||
movs r0, 0x8
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
_080279C8:
|
||||
movs r0, 0xE
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
_080279D0:
|
||||
movs r0, 0xA
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
_080279D8:
|
||||
ldr r0, _08027A18
|
||||
bl PlaySound
|
||||
ldr r4, _08027A1C
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r1, 0x14]
|
||||
cmp r0, 0
|
||||
beq _080279F0
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x14
|
||||
bl sub_8091274
|
||||
_080279F0:
|
||||
bl FillInventoryGaps
|
||||
ldr r0, [r4]
|
||||
movs r1, 0
|
||||
strb r1, [r0, 0x14]
|
||||
ldr r0, [r4]
|
||||
strb r1, [r0, 0x15]
|
||||
ldr r1, [r4]
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r1, 0x14
|
||||
bl GivePokemonItem
|
||||
bl nullsub_104
|
||||
_08027A0E:
|
||||
movs r0, 0x2
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
.align 2, 0
|
||||
_08027A18: .4byte 0x0000014d
|
||||
_08027A1C: .4byte gUnknown_203B2BC
|
||||
_08027A20:
|
||||
movs r0, 0x4
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
_08027A28:
|
||||
movs r0, 0x5
|
||||
bl SetFriendAreaActionMenuState
|
||||
b _08027A36
|
||||
_08027A30:
|
||||
movs r0, 0x2
|
||||
bl SetFriendAreaActionMenuState
|
||||
_08027A36:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80278B4
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -1032,7 +1032,7 @@ _08025B28:
|
||||
beq _08025B40
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x18
|
||||
bl sub_8091274
|
||||
bl AddHeldItemToInventory
|
||||
_08025B40:
|
||||
bl FillInventoryGaps
|
||||
ldr r0, [r4]
|
||||
@@ -1259,7 +1259,7 @@ _08025CF8:
|
||||
beq _08025D24
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x18
|
||||
bl sub_8091274
|
||||
bl AddHeldItemToInventory
|
||||
movs r6, 0x9
|
||||
_08025D24:
|
||||
add r4, sp, 0x10
|
||||
@@ -2858,7 +2858,7 @@ _08026A10:
|
||||
beq _08026A28
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x14
|
||||
bl sub_8091274
|
||||
bl AddHeldItemToInventory
|
||||
_08026A28:
|
||||
bl FillInventoryGaps
|
||||
ldr r0, [r4]
|
||||
|
||||
@@ -470,7 +470,7 @@ _0801794C:
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x4]
|
||||
add r0, sp, 0x4
|
||||
bl sub_8091274
|
||||
bl AddHeldItemToInventory
|
||||
movs r0, 0x1D
|
||||
bl UpdateKangaskhanStorageState
|
||||
b _080179A2
|
||||
@@ -638,7 +638,7 @@ _08017AB0:
|
||||
ldrh r2, [r3]
|
||||
subs r2, r1
|
||||
strh r2, [r3]
|
||||
bl sub_8091274
|
||||
bl AddHeldItemToInventory
|
||||
_08017ACE:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xEF
|
||||
|
||||
@@ -1051,480 +1051,4 @@ _08019728: .4byte gUnknown_80D4920
|
||||
_0801972C: .4byte gUnknown_80D4928
|
||||
thumb_func_end sub_8019700
|
||||
|
||||
thumb_func_start sub_8019730
|
||||
sub_8019730:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
beq _08019740
|
||||
b _0801984A
|
||||
_08019740:
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0801974C
|
||||
ldr r0, _08019760
|
||||
ldr r0, [r0]
|
||||
str r1, [r0, 0x28]
|
||||
_0801974C:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x6
|
||||
bls _08019756
|
||||
b _0801984A
|
||||
_08019756:
|
||||
lsls r0, 2
|
||||
ldr r1, _08019764
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08019760: .4byte gUnknown_203B210
|
||||
_08019764: .4byte _08019768
|
||||
.align 2, 0
|
||||
_08019768:
|
||||
.4byte _08019844
|
||||
.4byte _08019784
|
||||
.4byte _080197AC
|
||||
.4byte _080197E4
|
||||
.4byte _0801984A
|
||||
.4byte _0801984A
|
||||
.4byte _0801983C
|
||||
_08019784:
|
||||
bl sub_8019D8C
|
||||
cmp r0, 0
|
||||
bne _08019794
|
||||
movs r0, 0x5
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_08019794:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0x13
|
||||
ble _080197A4
|
||||
movs r0, 0xA
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_080197A4:
|
||||
movs r0, 0xF
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_080197AC:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0
|
||||
beq _080197EC
|
||||
ldr r0, _080197D8
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x14]
|
||||
cmp r0, 0
|
||||
beq _080197FE
|
||||
ldr r0, _080197DC
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
ldr r0, _080197E0
|
||||
cmp r1, r0
|
||||
bgt _08019822
|
||||
movs r0, 0x17
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
.align 2, 0
|
||||
_080197D8: .4byte gUnknown_203B210
|
||||
_080197DC: .4byte gTeamInventory_203B460
|
||||
_080197E0: .4byte 0x0001869e
|
||||
_080197E4:
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0
|
||||
bne _080197F4
|
||||
_080197EC:
|
||||
movs r0, 0x9
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_080197F4:
|
||||
ldr r0, _08019808
|
||||
ldr r1, [r0]
|
||||
ldr r0, [r1, 0x14]
|
||||
cmp r0, 0
|
||||
bne _0801980C
|
||||
_080197FE:
|
||||
movs r0, 0x8
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
.align 2, 0
|
||||
_08019808: .4byte gUnknown_203B210
|
||||
_0801980C:
|
||||
ldr r0, _0801982C
|
||||
ldr r0, [r0]
|
||||
movs r2, 0x98
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
ldr r1, [r1, 0x18]
|
||||
ldr r0, [r0]
|
||||
adds r1, r0
|
||||
ldr r0, _08019830
|
||||
cmp r1, r0
|
||||
ble _08019834
|
||||
_08019822:
|
||||
movs r0, 0x7
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
.align 2, 0
|
||||
_0801982C: .4byte gTeamInventory_203B460
|
||||
_08019830: .4byte 0x0001869f
|
||||
_08019834:
|
||||
movs r0, 0x1F
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_0801983C:
|
||||
movs r0, 0x2
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801984A
|
||||
_08019844:
|
||||
movs r0, 0x3
|
||||
bl UpdateKecleonStoreState
|
||||
_0801984A:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8019730
|
||||
|
||||
thumb_func_start sub_8019850
|
||||
sub_8019850:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _080198DE
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x5
|
||||
beq _08019874
|
||||
cmp r0, 0x5
|
||||
bgt _0801986E
|
||||
cmp r0, 0x1
|
||||
beq _080198D8
|
||||
b _080198DE
|
||||
_0801986E:
|
||||
cmp r0, 0x6
|
||||
beq _080198D8
|
||||
b _080198DE
|
||||
_08019874:
|
||||
ldr r4, _080198A8
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
negs r0, r0
|
||||
bl AddToTeamMoney
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r1, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080198AC
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_inv_unk230_at_809185C
|
||||
bl sub_8091274
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
bl xxx_init_unk230_substruct
|
||||
bl xxx_fill_unk230_gaps
|
||||
b _080198C8
|
||||
.align 2, 0
|
||||
_080198A8: .4byte gUnknown_203B210
|
||||
_080198AC:
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x21
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_unk250_at_8091A90
|
||||
bl sub_8091274
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x21
|
||||
ldrb r0, [r0]
|
||||
bl xxx_init_inv_unk250_at_8091A74
|
||||
bl xxx_fill_inv_unk250_gaps_8091AA8
|
||||
_080198C8:
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
bl PlaySound
|
||||
movs r0, 0x11
|
||||
bl UpdateKecleonStoreState
|
||||
b _080198DE
|
||||
_080198D8:
|
||||
movs r0, 0x10
|
||||
bl UpdateKecleonStoreState
|
||||
_080198DE:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8019850
|
||||
|
||||
thumb_func_start sub_80198E8
|
||||
sub_80198E8:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0801993A
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x5
|
||||
beq _0801990C
|
||||
cmp r0, 0x5
|
||||
bgt _08019906
|
||||
cmp r0, 0x1
|
||||
beq _08019934
|
||||
b _0801993A
|
||||
_08019906:
|
||||
cmp r0, 0x6
|
||||
beq _08019934
|
||||
b _0801993A
|
||||
_0801990C:
|
||||
ldr r4, _08019930
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl AddToTeamMoney
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x24]
|
||||
bl ShiftItemsDownFrom
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
bl PlaySound
|
||||
movs r0, 0x19
|
||||
bl UpdateKecleonStoreState
|
||||
b _0801993A
|
||||
.align 2, 0
|
||||
_08019930: .4byte gUnknown_203B210
|
||||
_08019934:
|
||||
movs r0, 0x18
|
||||
bl UpdateKecleonStoreState
|
||||
_0801993A:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80198E8
|
||||
|
||||
thumb_func_start sub_8019944
|
||||
sub_8019944:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _080199C2
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x5
|
||||
beq _08019968
|
||||
cmp r0, 0x5
|
||||
bgt _08019962
|
||||
cmp r0, 0x1
|
||||
beq _080199BC
|
||||
b _080199C2
|
||||
_08019962:
|
||||
cmp r0, 0x6
|
||||
beq _080199BC
|
||||
b _080199C2
|
||||
_08019968:
|
||||
movs r4, 0
|
||||
ldr r5, _080199B4
|
||||
_0801996C:
|
||||
lsls r1, r4, 2
|
||||
ldr r0, [r5]
|
||||
adds r2, r0, r1
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0801998E
|
||||
ldrb r0, [r2, 0x2]
|
||||
bl CanSellItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801998E
|
||||
adds r0, r4, 0
|
||||
bl ClearItemSlotAt
|
||||
_0801998E:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x13
|
||||
ble _0801996C
|
||||
bl FillInventoryGaps
|
||||
ldr r0, _080199B8
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x18]
|
||||
bl AddToTeamMoney
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
bl PlaySound
|
||||
movs r0, 0x20
|
||||
bl UpdateKecleonStoreState
|
||||
b _080199C2
|
||||
.align 2, 0
|
||||
_080199B4: .4byte gTeamInventory_203B460
|
||||
_080199B8: .4byte gUnknown_203B210
|
||||
_080199BC:
|
||||
movs r0, 0x1
|
||||
bl UpdateKecleonStoreState
|
||||
_080199C2:
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8019944
|
||||
|
||||
thumb_func_start sub_80199CC
|
||||
sub_80199CC:
|
||||
push {r4,r5,lr}
|
||||
ldr r0, _080199E0
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080199E4
|
||||
movs r0, 0x1
|
||||
bl sub_8019EDC
|
||||
b _080199EA
|
||||
.align 2, 0
|
||||
_080199E0: .4byte gUnknown_203B210
|
||||
_080199E4:
|
||||
movs r0, 0x1
|
||||
bl sub_801A2A8
|
||||
_080199EA:
|
||||
cmp r0, 0x2
|
||||
beq _08019AD4
|
||||
cmp r0, 0x2
|
||||
bhi _080199FA
|
||||
cmp r0, 0x1
|
||||
bne _080199F8
|
||||
b _08019AF4
|
||||
_080199F8:
|
||||
b _08019B00
|
||||
_080199FA:
|
||||
cmp r0, 0x3
|
||||
beq _08019A04
|
||||
cmp r0, 0x4
|
||||
beq _08019A6C
|
||||
b _08019B00
|
||||
_08019A04:
|
||||
ldr r4, _08019A24
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08019A28
|
||||
bl sub_8019FB0
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x20
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_inv_unk230_at_809185C
|
||||
b _08019A3C
|
||||
.align 2, 0
|
||||
_08019A24: .4byte gUnknown_203B210
|
||||
_08019A28:
|
||||
bl sub_801A37C
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x21
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x21
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_unk250_at_8091A90
|
||||
_08019A3C:
|
||||
adds r5, r0, 0
|
||||
ldr r4, _08019A68
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1C
|
||||
ldrb r1, [r5]
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r5, 0x1]
|
||||
strb r0, [r1, 0x1D]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1C
|
||||
bl GetStackBuyPrice
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x10]
|
||||
movs r0, 0x14
|
||||
bl UpdateKecleonStoreState
|
||||
b _08019B00
|
||||
.align 2, 0
|
||||
_08019A68: .4byte gUnknown_203B210
|
||||
_08019A6C:
|
||||
ldr r4, _08019A8C
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08019A90
|
||||
bl sub_8019FB0
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x20
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_inv_unk230_at_809185C
|
||||
b _08019AA4
|
||||
.align 2, 0
|
||||
_08019A8C: .4byte gUnknown_203B210
|
||||
_08019A90:
|
||||
bl sub_801A37C
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x21
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x21
|
||||
ldrb r0, [r0]
|
||||
bl xxx_get_unk250_at_8091A90
|
||||
_08019AA4:
|
||||
adds r5, r0, 0
|
||||
ldr r4, _08019AD0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1C
|
||||
ldrb r1, [r5]
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
ldr r1, [r4]
|
||||
ldrb r0, [r5, 0x1]
|
||||
strb r0, [r1, 0x1D]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1C
|
||||
bl GetStackBuyPrice
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x10]
|
||||
movs r0, 0x15
|
||||
bl UpdateKecleonStoreState
|
||||
b _08019B00
|
||||
.align 2, 0
|
||||
_08019AD0: .4byte gUnknown_203B210
|
||||
_08019AD4:
|
||||
ldr r0, _08019AE4
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08019AE8
|
||||
bl sub_801A010
|
||||
b _08019AEC
|
||||
.align 2, 0
|
||||
_08019AE4: .4byte gUnknown_203B210
|
||||
_08019AE8:
|
||||
bl sub_801A3DC
|
||||
_08019AEC:
|
||||
movs r0, 0x1
|
||||
bl UpdateKecleonStoreState
|
||||
b _08019B00
|
||||
_08019AF4:
|
||||
movs r0, 0
|
||||
bl sub_801AD34
|
||||
movs r0, 0x1
|
||||
bl DrawTeamMoneyBox
|
||||
_08019B00:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80199CC
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -135,7 +135,7 @@ _08030074:
|
||||
str r1, [sp, 0x14]
|
||||
ldr r0, _080300BC
|
||||
add r1, sp, 0x14
|
||||
bl sub_8090208
|
||||
bl PrintYellowDungeonNametoBuffer
|
||||
ldr r2, _080300C0
|
||||
ldr r3, [r5]
|
||||
ldr r1, [r3, 0x4]
|
||||
|
||||
@@ -1252,7 +1252,7 @@ _0808FDB0:
|
||||
mov r1, r10
|
||||
adds r1, 0x1C
|
||||
adds r0, r4, 0
|
||||
bl sub_8090208
|
||||
bl PrintYellowDungeonNametoBuffer
|
||||
ldr r0, _0808FF0C
|
||||
ldr r2, [r0]
|
||||
str r5, [sp]
|
||||
|
||||
@@ -1098,7 +1098,7 @@ _0802C7B4:
|
||||
adds r0, r5
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r4, r0, 0
|
||||
ldr r0, [r6]
|
||||
ldr r1, [r0, 0x3C]
|
||||
@@ -1459,7 +1459,7 @@ _0802CA7C: .4byte gUnknown_203B2F0
|
||||
_0802CA80:
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x10
|
||||
bl sub_803B35C
|
||||
@@ -1482,7 +1482,7 @@ sub_802CAA4:
|
||||
ldr r5, _0802CAC8
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r4, r0, 0
|
||||
ldr r2, [r5]
|
||||
ldr r0, [r2]
|
||||
@@ -1759,7 +1759,7 @@ _0802CCD8:
|
||||
ldr r0, _0802CCF0
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
movs r1, 0x6
|
||||
b _0802CD06
|
||||
.align 2, 0
|
||||
@@ -1771,7 +1771,7 @@ _0802CCF4:
|
||||
ldr r0, _0802CD14
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
movs r1, 0x5
|
||||
_0802CD06:
|
||||
strb r1, [r0]
|
||||
|
||||
@@ -662,7 +662,7 @@ sub_802DAA8:
|
||||
ldr r4, _0802DAD0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x10]
|
||||
bl sub_8096AB4
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldr r4, [r4]
|
||||
ldrb r0, [r4, 0x9]
|
||||
|
||||
@@ -1,571 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_8031AE8
|
||||
sub_8031AE8:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0xDC
|
||||
ldr r7, _08031B24
|
||||
ldr r0, [r7]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073B8
|
||||
ldr r2, _08031B28
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r6, 0
|
||||
str r6, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r1, [r7]
|
||||
ldrb r0, [r1, 0xC]
|
||||
cmp r0, 0x1
|
||||
beq _08031B2C
|
||||
cmp r0, 0x1
|
||||
bgt _08031B1E
|
||||
b _08031CD4
|
||||
_08031B1E:
|
||||
cmp r0, 0x2
|
||||
beq _08031B94
|
||||
b _08031CD4
|
||||
.align 2, 0
|
||||
_08031B24: .4byte gUnknown_203B330
|
||||
_08031B28: .4byte gUnknown_80E1F30
|
||||
_08031B2C:
|
||||
add r4, sp, 0x68
|
||||
adds r0, r4, 0
|
||||
bl sub_8099394
|
||||
ldrb r0, [r4]
|
||||
bl sub_8095228
|
||||
adds r5, r0, 0
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r0, 0xA
|
||||
movs r1, 0x10
|
||||
movs r2, 0x3
|
||||
bl sub_803B6B0
|
||||
ldr r1, _08031B8C
|
||||
ldrb r2, [r5, 0x5]
|
||||
add r0, sp, 0x4
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
str r6, [sp]
|
||||
movs r0, 0x15
|
||||
movs r1, 0x10
|
||||
add r2, sp, 0x4
|
||||
bl xxx_call_draw_string
|
||||
ldr r4, _08031B90
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r5, r1]
|
||||
bl GetMonSpecies
|
||||
adds r2, r0, 0
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
str r6, [sp]
|
||||
movs r0, 0x28
|
||||
movs r1, 0x10
|
||||
add r2, sp, 0x4
|
||||
bl xxx_call_draw_string
|
||||
b _08031D4E
|
||||
.align 2, 0
|
||||
_08031B8C: .4byte gUnknown_80E1F3C
|
||||
_08031B90: .4byte gUnknown_80E1F40
|
||||
_08031B94:
|
||||
ldrb r0, [r1, 0xD]
|
||||
bl sub_80969D0
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
bne _08031BB0
|
||||
ldr r2, _08031BAC
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
str r1, [sp]
|
||||
b _08031D2C
|
||||
.align 2, 0
|
||||
_08031BAC: .4byte gUnknown_80E1F54
|
||||
_08031BB0:
|
||||
movs r6, 0x10
|
||||
movs r2, 0
|
||||
mov r10, r2
|
||||
mov r8, r2
|
||||
ldr r0, _08031C28
|
||||
mov r9, r0
|
||||
mov r1, sp
|
||||
adds r1, 0x6C
|
||||
str r1, [sp, 0xD8]
|
||||
_08031BC2:
|
||||
mov r2, r10
|
||||
lsls r0, r2, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8096AB4
|
||||
adds r4, r0, 0
|
||||
ldr r1, [r7]
|
||||
ldrb r0, [r4, 0x4]
|
||||
ldrb r2, [r1, 0xD]
|
||||
cmp r0, r2
|
||||
bne _08031CC2
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _08031CC2
|
||||
cmp r0, 0x5
|
||||
beq _08031CC2
|
||||
cmp r0, 0x7
|
||||
beq _08031CC2
|
||||
ldr r3, [r1, 0x10]
|
||||
movs r0, 0xA
|
||||
adds r1, r6, 0
|
||||
movs r2, 0x3
|
||||
bl sub_803B6B0
|
||||
ldrb r0, [r4, 0x1]
|
||||
add r5, sp, 0x6C
|
||||
cmp r0, 0x3
|
||||
beq _08031C16
|
||||
ldrb r2, [r4, 0x5]
|
||||
ldr r0, [sp, 0xD8]
|
||||
ldr r1, _08031C2C
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
mov r0, r8
|
||||
str r0, [sp]
|
||||
movs r0, 0x15
|
||||
adds r1, r6, 0
|
||||
ldr r2, [sp, 0xD8]
|
||||
bl xxx_call_draw_string
|
||||
_08031C16:
|
||||
ldrb r0, [r4, 0x1]
|
||||
cmp r0, 0x3
|
||||
beq _08031C58
|
||||
cmp r0, 0x3
|
||||
bgt _08031C30
|
||||
cmp r0, 0x2
|
||||
beq _08031C70
|
||||
b _08031C9C
|
||||
.align 2, 0
|
||||
_08031C28: .4byte gUnknown_202DE58
|
||||
_08031C2C: .4byte gUnknown_80E1F3C
|
||||
_08031C30:
|
||||
cmp r0, 0x4
|
||||
bne _08031C9C
|
||||
ldrb r1, [r4, 0x10]
|
||||
mov r0, r9
|
||||
movs r2, 0
|
||||
bl sub_8090DC4
|
||||
adds r0, r5, 0
|
||||
ldr r1, _08031C54
|
||||
mov r2, r9
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
mov r1, r8
|
||||
str r1, [sp]
|
||||
b _08031C8A
|
||||
.align 2, 0
|
||||
_08031C54: .4byte gUnknown_80E1F60
|
||||
_08031C58:
|
||||
ldrb r1, [r4, 0x10]
|
||||
mov r0, r9
|
||||
movs r2, 0
|
||||
bl sub_8090DC4
|
||||
adds r0, r5, 0
|
||||
ldr r1, _08031C6C
|
||||
mov r2, r9
|
||||
b _08031C7E
|
||||
.align 2, 0
|
||||
_08031C6C: .4byte gUnknown_80E1F70
|
||||
_08031C70:
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
bl GetMonSpecies
|
||||
adds r2, r0, 0
|
||||
adds r0, r5, 0
|
||||
ldr r1, _08031C98
|
||||
_08031C7E:
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
mov r2, r8
|
||||
str r2, [sp]
|
||||
_08031C8A:
|
||||
movs r0, 0x28
|
||||
adds r1, r6, 0
|
||||
adds r2, r5, 0
|
||||
bl xxx_call_draw_string
|
||||
b _08031CC0
|
||||
.align 2, 0
|
||||
_08031C98: .4byte gUnknown_80E1F80
|
||||
_08031C9C:
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
bl GetMonSpecies
|
||||
adds r2, r0, 0
|
||||
adds r0, r5, 0
|
||||
ldr r1, _08031CD0
|
||||
bl sprintf_2
|
||||
ldr r0, [r7]
|
||||
ldr r3, [r0, 0x10]
|
||||
mov r2, r8
|
||||
str r2, [sp]
|
||||
movs r0, 0x28
|
||||
adds r1, r6, 0
|
||||
adds r2, r5, 0
|
||||
bl xxx_call_draw_string
|
||||
_08031CC0:
|
||||
adds r6, 0xC
|
||||
_08031CC2:
|
||||
movs r0, 0x1
|
||||
add r10, r0
|
||||
mov r1, r10
|
||||
cmp r1, 0x7
|
||||
bgt _08031CCE
|
||||
b _08031BC2
|
||||
_08031CCE:
|
||||
b _08031D4E
|
||||
.align 2, 0
|
||||
_08031CD0: .4byte gUnknown_80E1F40
|
||||
_08031CD4:
|
||||
add r0, sp, 0xD0
|
||||
mov r4, sp
|
||||
adds r4, 0xD2
|
||||
adds r1, r4, 0
|
||||
bl sub_80992E0
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0
|
||||
beq _08031D04
|
||||
movs r2, 0
|
||||
ldrsh r0, [r4, r2]
|
||||
bl GetCurrentMissionText
|
||||
adds r2, r0, 0
|
||||
ldr r0, _08031D00
|
||||
ldr r0, [r0]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
b _08031D2C
|
||||
.align 2, 0
|
||||
_08031D00: .4byte gUnknown_203B330
|
||||
_08031D04:
|
||||
add r4, sp, 0xD4
|
||||
adds r0, r4, 0
|
||||
bl sub_8099360
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
beq _08031D3C
|
||||
ldrb r0, [r4]
|
||||
bl sub_80A2688
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bl sub_80975DC
|
||||
adds r2, r0, 0
|
||||
ldr r0, _08031D38
|
||||
ldr r0, [r0]
|
||||
ldr r3, [r0, 0x10]
|
||||
str r5, [sp]
|
||||
_08031D2C:
|
||||
movs r0, 0xA
|
||||
movs r1, 0x10
|
||||
bl xxx_call_draw_string
|
||||
b _08031D4E
|
||||
.align 2, 0
|
||||
_08031D38: .4byte gUnknown_203B330
|
||||
_08031D3C:
|
||||
ldr r2, _08031D68
|
||||
ldr r0, _08031D6C
|
||||
ldr r0, [r0]
|
||||
ldr r3, [r0, 0x10]
|
||||
str r1, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0x10
|
||||
bl xxx_call_draw_string
|
||||
_08031D4E:
|
||||
ldr r0, _08031D6C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073E0
|
||||
add sp, 0xDC
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031D68: .4byte gUnknown_80E1F94
|
||||
_08031D6C: .4byte gUnknown_203B330
|
||||
thumb_func_end sub_8031AE8
|
||||
|
||||
thumb_func_start sub_8031D70
|
||||
sub_8031D70:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r5, _08031DC4
|
||||
movs r0, 0x7C
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
stm r0!, {r6}
|
||||
bl sub_801317C
|
||||
ldr r0, [r5]
|
||||
str r4, [r0, 0x10]
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 3
|
||||
adds r1, 0x18
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x14]
|
||||
adds r0, 0x18
|
||||
bl sub_8006518
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r1, 0x10]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031DC8
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
bl sub_8031E00
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08031DC4: .4byte gUnknown_203B334
|
||||
_08031DC8: .4byte gUnknown_80E1FC4
|
||||
thumb_func_end sub_8031D70
|
||||
|
||||
thumb_func_start sub_8031DCC
|
||||
sub_8031DCC:
|
||||
push {lr}
|
||||
ldr r0, _08031DEC
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
ldr r1, [r1, 0x10]
|
||||
bl sub_8012A64
|
||||
cmp r0, 0x1
|
||||
beq _08031DF0
|
||||
cmp r0, 0x2
|
||||
bne _08031DFA
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _08031DFC
|
||||
.align 2, 0
|
||||
_08031DEC: .4byte gUnknown_203B334
|
||||
_08031DF0:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _08031DFC
|
||||
_08031DFA:
|
||||
movs r0, 0
|
||||
_08031DFC:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8031DCC
|
||||
|
||||
thumb_func_start sub_8031E00
|
||||
sub_8031E00:
|
||||
push {lr}
|
||||
bl sub_8031E58
|
||||
bl sub_8031E74
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8031E00
|
||||
|
||||
thumb_func_start sub_8031E10
|
||||
sub_8031E10:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08031E50
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _08031E4A
|
||||
ldr r0, [r2, 0x10]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031E54
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_08031E4A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E50: .4byte gUnknown_203B334
|
||||
_08031E54: .4byte gUnknown_80E1FA8
|
||||
thumb_func_end sub_8031E10
|
||||
|
||||
thumb_func_start sub_8031E58
|
||||
sub_8031E58:
|
||||
push {lr}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _08031E70
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E70: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E58
|
||||
|
||||
thumb_func_start sub_8031E74
|
||||
sub_8031E74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x3C
|
||||
ldr r3, _08031EC0
|
||||
ldr r5, _08031EC4
|
||||
ldr r2, [r5]
|
||||
ldr r1, [r2]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 4
|
||||
ldr r4, [r3]
|
||||
adds r4, r0
|
||||
ldr r0, [r2, 0x10]
|
||||
bl sub_80073B8
|
||||
ldr r2, _08031EC8
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_803D2C0
|
||||
movs r7, 0
|
||||
mov r8, r5
|
||||
_08031EB2:
|
||||
cmp r7, 0x4
|
||||
ble _08031ED0
|
||||
cmp r7, 0xC
|
||||
bgt _08031ECC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x16
|
||||
b _08031F00
|
||||
.align 2, 0
|
||||
_08031EC0: .4byte gUnknown_203B480
|
||||
_08031EC4: .4byte gUnknown_203B334
|
||||
_08031EC8: .4byte gUnknown_80E1FDC
|
||||
_08031ECC:
|
||||
cmp r7, 0x11
|
||||
bgt _08031ED6
|
||||
_08031ED0:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x15
|
||||
b _08031F00
|
||||
_08031ED6:
|
||||
cmp r7, 0x16
|
||||
ble _08031EE8
|
||||
cmp r7, 0x1E
|
||||
bgt _08031EE4
|
||||
movs r6, 0x6
|
||||
movs r5, 0x25
|
||||
b _08031F00
|
||||
_08031EE4:
|
||||
cmp r7, 0x23
|
||||
bgt _08031EEE
|
||||
_08031EE8:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x24
|
||||
b _08031F00
|
||||
_08031EEE:
|
||||
cmp r7, 0x28
|
||||
ble _08031EFC
|
||||
cmp r7, 0x30
|
||||
bgt _08031EFC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x34
|
||||
b _08031F00
|
||||
_08031EFC:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x33
|
||||
_08031F00:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0x12
|
||||
bl __modsi3
|
||||
movs r1, 0xB
|
||||
adds r4, r0, 0
|
||||
muls r4, r1
|
||||
adds r4, 0x6
|
||||
mov r0, sp
|
||||
adds r0, r7
|
||||
adds r0, 0x4
|
||||
ldrb r2, [r0]
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8012C60
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0xA
|
||||
movs r1, 0x5
|
||||
str r1, [sp]
|
||||
adds r1, r4, 0
|
||||
movs r3, 0xA
|
||||
bl sub_80078A4
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x35
|
||||
ble _08031EB2
|
||||
ldr r0, _08031F5C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073E0
|
||||
add sp, 0x3C
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031F5C: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E74
|
||||
|
||||
.align 2,0
|
||||
35
include/code_8094F88.h
Normal file
35
include/code_8094F88.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef GUARD_CODE_8094F88_H
|
||||
#define GUARD_CODE_8094F88_H
|
||||
|
||||
struct unkStruct_203B480
|
||||
{
|
||||
u8 unk0;
|
||||
struct DungeonLocation unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u32 unk10;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
u8 unk20;
|
||||
u8 unk21;
|
||||
u8 unk22;
|
||||
u32 unk24;
|
||||
u32 unk28;
|
||||
u8 unk2C;
|
||||
u8 unk2D;
|
||||
};
|
||||
|
||||
struct unkStruct_203B484
|
||||
{
|
||||
u32 unk0;
|
||||
struct PokemonStruct unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_203B48C
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4[0x20];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_CONSTANTS_DUNGEON_H
|
||||
#define GUARD_CONSTANTS_DUNGEON_H
|
||||
|
||||
#define NUM_DUNGEON_MAZE (NUM_DUNGEONS - DUNGEON_NORMAL_MAZE_2)
|
||||
|
||||
enum Dungeon
|
||||
{
|
||||
DUNGEON_TINY_WOODS = 0,
|
||||
@@ -101,6 +103,7 @@ enum Dungeon
|
||||
DUNGEON_TEAM_RUMBLEROCK = 95,
|
||||
DUNGEON_RESCUE_TEAM_2 = 96,
|
||||
DUNGEON_RESCUE_TEAM_MAZE = 97,
|
||||
NUM_DUNGEONS
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -12,7 +12,7 @@ struct unkStruct_203B2BC
|
||||
struct HeldItem itemToGive;
|
||||
struct HeldItem unk14;
|
||||
struct PokemonStruct *unk18;
|
||||
u32 unk1C;
|
||||
u8 unk1C;
|
||||
u32 unk20;
|
||||
u16 unk24;
|
||||
struct PokemonMove unk28[8];
|
||||
|
||||
@@ -32,4 +32,9 @@
|
||||
|
||||
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
||||
struct DungeonLocation {
|
||||
u8 dungeonIndex;
|
||||
u8 dungeonFloor;
|
||||
};
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
||||
@@ -104,15 +104,17 @@ bool8 IsGummiItem(u8);
|
||||
void xxx_init_unk230_substruct(u8);
|
||||
bool8 xxx_insert_unk230_80919FC(u8);
|
||||
struct HeldItem *xxx_get_inv_unk230_at_809185C(u8);
|
||||
void xxx_fill_unk230_gaps();
|
||||
struct HeldItem* xxx_get_unk250_at_8091A90(u8);
|
||||
s32 xxx_count_inv_unk230();
|
||||
u32 xxx_count_non_empty_inv_unk250_8091A48();
|
||||
void sub_8091BB4(u8);
|
||||
void sub_8090F58(void*, u8 *, struct ItemSlot *, struct unkStruct_8090F58*);
|
||||
void ShiftItemsDownFrom(s32 start);
|
||||
void ClearItemSlotAt(u32 index);
|
||||
void MoveToStorage(struct ItemSlot* slot);
|
||||
void FillInventoryGaps();
|
||||
bool8 sub_8091274(struct HeldItem* slot);
|
||||
bool8 AddHeldItemToInventory(struct HeldItem* slot);
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
s32 FindItemInInventory(u8 itemIndex);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ struct unkStruct_203B210
|
||||
u32 unkC;
|
||||
s32 itemSellPrice;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
s32 unk18;
|
||||
struct ItemSlot unk1C;
|
||||
u8 unk20;
|
||||
u8 unk21;
|
||||
|
||||
@@ -19,12 +19,6 @@ struct Offense {
|
||||
u8 def[2];
|
||||
};
|
||||
|
||||
struct unkPokeSubStruct_4 {
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u16 fill6;
|
||||
};
|
||||
|
||||
struct unkPokeSubStruct_C
|
||||
{
|
||||
u8 unk0;
|
||||
@@ -34,21 +28,21 @@ struct unkPokeSubStruct_C
|
||||
struct PokemonStruct
|
||||
{
|
||||
// size: 0x58
|
||||
u16 unk0; // recruited??
|
||||
u8 unk2;
|
||||
u8 unkHasNextStage; // set to a random value?
|
||||
struct unkPokeSubStruct_4 unk4;
|
||||
/* 0x0 */ u16 unk0; // recruited??
|
||||
/* 0x1 */ bool8 isLeader;
|
||||
/* 0x3 */ u8 unkHasNextStage; // set to a random value?
|
||||
/* 0x4 */ struct DungeonLocation unk4;
|
||||
/* 0x8 */ s16 speciesNum; // species #
|
||||
struct unkPokeSubStruct_C unkC[2];
|
||||
/* 0xC */ struct unkPokeSubStruct_C unkC[2];
|
||||
/* 0x14 */ s16 IQ;
|
||||
/* 0x16 */ u16 pokeHP; // HP
|
||||
/* 0x18 */ struct Offense offense;
|
||||
u32 unk1C;
|
||||
u32 IQSkills;
|
||||
u8 unk24;
|
||||
u8 fill25[3];
|
||||
struct HeldItem heldItem;
|
||||
struct PokemonMove moves[MAX_MON_MOVES];
|
||||
/* 0x1C */ u32 unk1C;
|
||||
/* 0x20 */ u32 IQSkills;
|
||||
/* 0x24 */ u8 unk24;
|
||||
/* 0x25 */ u8 fill25[3];
|
||||
/* 0x28 */ struct HeldItem heldItem;
|
||||
/* 0x2C */ struct PokemonMove moves[MAX_MON_MOVES];
|
||||
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
|
||||
};
|
||||
|
||||
@@ -76,9 +70,9 @@ struct PokemonStruct2
|
||||
{
|
||||
// size 0x68
|
||||
u16 unk0; // corresponds to unk0 inPokemonStruct
|
||||
u8 unk2; // unk2
|
||||
bool8 isLeader; // unk2
|
||||
u8 unkHasNextStage; // unk3
|
||||
struct unkPokeSubStruct_4 unk4; // unk4
|
||||
struct DungeonLocation unk4; // unk4
|
||||
u16 IQ; // IQ (other offset)
|
||||
u16 unkA;
|
||||
u16 unkC;
|
||||
|
||||
@@ -3,13 +3,16 @@
|
||||
|
||||
struct unkStruct_8095228
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 padding[0x10 - 0x5];
|
||||
u32 unk10;
|
||||
/* 0x0 */ u8 mailType; // mail type
|
||||
/* 0x1 */ u8 missionType; // mission type
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 dungeon; // dungeon
|
||||
/* 0x5 */ u8 floor; // floor
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ s16 clientSpecies; // client pokemon
|
||||
/* 0xE */ s16 targetSpecies; // target
|
||||
u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail
|
||||
u8 padding2[0x20 - 0x14];
|
||||
struct ItemSlot unk20;
|
||||
u8 padding3[0x28 - 0x24];
|
||||
|
||||
@@ -143,7 +143,7 @@ SECTIONS {
|
||||
src/wonder_mail_4.o(.text);
|
||||
asm/wonder_mail_4.o(.text);
|
||||
src/post_office_guide.o(.text);
|
||||
asm/wonder_mail_5.o(.text);
|
||||
asm/code_8031D70.o(.text);
|
||||
src/adventure_log.o(.text);
|
||||
src/friend_rescue.o(.text);
|
||||
asm/friend_rescue.o(.text);
|
||||
@@ -277,9 +277,9 @@ SECTIONS {
|
||||
src/pokemon_3.o(.text);
|
||||
asm/pokemon_3.o(.text);
|
||||
src/dungeon.o(.text);
|
||||
asm/code_809017C.o(.text);
|
||||
src/code_8090208.o(.text);
|
||||
asm/code_8090208.o(.text);
|
||||
asm/dungeon.o(.text);
|
||||
src/dungeon_2.o(.text);
|
||||
asm/dungeon_2.o(.text);
|
||||
src/items.o(.text);
|
||||
src/rescue_team_info.o(.text);
|
||||
src/text_util.o(.text);
|
||||
@@ -299,13 +299,18 @@ SECTIONS {
|
||||
src/play_time.o(.text);
|
||||
src/code_8094F88.o(.text);
|
||||
asm/code_8095014.o(.text);
|
||||
src/code_8095824.o(.text);
|
||||
src/code_80958E8.o(.text);
|
||||
asm/code_80958E8.o(.text);
|
||||
src/code_80972F4.o(.text);
|
||||
asm/code_8097318.o(.text);
|
||||
src/code_809747C.o(.text);
|
||||
asm/code_809747C.o(.text);
|
||||
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();
|
||||
@@ -202,30 +202,31 @@ void sub_8032084(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
// Uses 1 too many regs
|
||||
// Mostly matches except around the switch
|
||||
#ifdef NONMATCHING
|
||||
void DisplayAdventureLog(void)
|
||||
{
|
||||
s32 counter;
|
||||
s32 iVar5;
|
||||
u32 uVar6;
|
||||
s32 r4; // r4
|
||||
s32 r6; // r6
|
||||
u8 temp;
|
||||
|
||||
sub_8008C54(gAdventureLog->unk34);
|
||||
sub_80073B8(gAdventureLog->unk34);
|
||||
iVar5 = gAdventureLog->currPage * 8;
|
||||
iVar5 += 10;
|
||||
r4 = gAdventureLog->currPage * 8;
|
||||
r6 = r4;
|
||||
r6 += 10;
|
||||
// Draw Header
|
||||
xxx_call_draw_string(iVar5, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
|
||||
iVar5 += 4;
|
||||
iVar5 += gAdventureLog->unk9E * 8;
|
||||
xxx_call_draw_string(r6, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
|
||||
r4 += 4;
|
||||
r6 = r4 + gAdventureLog->unk9E * 8;
|
||||
// Draw Page #
|
||||
sub_8012BC4(iVar5, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
|
||||
counter = 0;
|
||||
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){
|
||||
sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
|
||||
|
||||
for(counter = 0; counter < gAdventureLog->unk1A; counter++)
|
||||
{
|
||||
temp = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
|
||||
if(sub_8097710(temp)){
|
||||
switch(temp) {
|
||||
case 0xc:
|
||||
gUnknown_202DE30 = sub_80978B8();
|
||||
@@ -248,16 +249,15 @@ void DisplayAdventureLog(void)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Draw the ?????????? across the row
|
||||
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
|
||||
}
|
||||
counter++;
|
||||
} while(counter < gAdventureLog->unk1A);
|
||||
sub_80073E0(gAdventureLog->unk34);
|
||||
}
|
||||
sub_80073E0(gAdventureLog->unk34);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "dungeon.h"
|
||||
#include "code_800D090.h"
|
||||
|
||||
extern const char gUnknown_8108F10[];
|
||||
extern const char gUnknown_8108F18[];
|
||||
extern const char gUnknown_8108F2C[];
|
||||
|
||||
struct unkDungeonStruct
|
||||
{
|
||||
u8 index;
|
||||
u8 floor;
|
||||
};
|
||||
|
||||
void sub_8090208(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
|
||||
{
|
||||
sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
|
||||
}
|
||||
|
||||
void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
|
||||
{
|
||||
if(gDungeons[dungeonLocation->index].stairDirection != 0){
|
||||
sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F
|
||||
}
|
||||
}
|
||||
|
||||
void CopyDungeonName1toBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
|
||||
{
|
||||
strncpy(buffer, gDungeonNames[dungeonLocation->index].name1, 0x50);
|
||||
}
|
||||
@@ -1,33 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkStruct_203B480
|
||||
{
|
||||
//size of 48
|
||||
u8 unk0;
|
||||
u8 fill1[0x22 - 1];
|
||||
u8 unk22;
|
||||
u8 fill23[0x2D - 0x23];
|
||||
u8 unk2D;
|
||||
};
|
||||
|
||||
struct unkStruct_203B48C
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4[0x20];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B480 gUnknown_2038C88;
|
||||
extern u8 gUnknown_2039288;
|
||||
extern u32 gUnknown_20392E8;
|
||||
extern struct unkStruct_203B48C gUnknown_20393C0;
|
||||
extern u8 *gUnknown_203B484;
|
||||
extern u32 *gUnknown_203B488;
|
||||
|
||||
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
extern struct unkStruct_203B484 gUnknown_2039288;
|
||||
extern struct unkStruct_203B484 *gUnknown_203B484;
|
||||
extern struct unkStruct_203B48C gUnknown_20393C0;
|
||||
extern struct unkStruct_203B48C *gUnknown_203B48C;
|
||||
extern u32 *gUnknown_203B488;
|
||||
extern u32 gUnknown_20392E8;
|
||||
|
||||
|
||||
extern struct unkStruct_203B48C *gUnknown_203B48C; // def a pointer
|
||||
|
||||
|
||||
void sub_80950BC(void)
|
||||
@@ -43,7 +28,7 @@ struct unkStruct_203B480 *sub_80950F8(void)
|
||||
return &gUnknown_2038C88;
|
||||
}
|
||||
|
||||
u8 *sub_8095100(void)
|
||||
struct unkStruct_203B484 *sub_8095100(void)
|
||||
{
|
||||
return &gUnknown_2039288;
|
||||
}
|
||||
|
||||
165
src/code_8095824.c
Normal file
165
src/code_8095824.c
Normal file
@@ -0,0 +1,165 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern struct unkStruct_203B484 *gUnknown_203B484;
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
extern struct unkStruct_203B48C *gUnknown_203B48C;
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
|
||||
extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
|
||||
extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet);
|
||||
extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet);
|
||||
|
||||
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
|
||||
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
|
||||
extern u32 sub_8095324(u32);
|
||||
|
||||
u32 sub_80954B4(void)
|
||||
{
|
||||
if(sub_8095324(3) != 0)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 sub_80954CC(u8 *a, u32 b)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
struct PokemonStruct *temp;
|
||||
s32 index;
|
||||
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, a, b);
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
sub_8095774(&backup, &gUnknown_203B480[index]);
|
||||
}
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
|
||||
temp = &gUnknown_203B484->unk4;
|
||||
memset(temp, 0, sizeof(struct PokemonStruct));
|
||||
RestoreIntegerBits(&backup, &temp->unk0, 2);
|
||||
RestoreIntegerBits(&backup, &temp->isLeader, 1);
|
||||
RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
|
||||
RestoreDungeonLocation(&backup, &temp->unk4);
|
||||
RestoreIntegerBits(&backup, &temp->speciesNum, 9);
|
||||
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]);
|
||||
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]);
|
||||
RestoreIntegerBits(&backup, &temp->IQ, 0xA);
|
||||
RestoreIntegerBits(&backup, &temp->pokeHP, 0xA);
|
||||
RestoreIntegerBits(&backup, &temp->offense.att[0], 8);
|
||||
RestoreIntegerBits(&backup, &temp->offense.att[1], 8);
|
||||
RestoreIntegerBits(&backup, &temp->offense.def[0], 8);
|
||||
RestoreIntegerBits(&backup, &temp->offense.def[1], 8);
|
||||
RestoreIntegerBits(&backup, &temp->unk1C, 0x18);
|
||||
RestoreIntegerBits(&backup, &temp->IQSkills, 0x18);
|
||||
RestoreIntegerBits(&backup, &temp->unk24, 4);
|
||||
RestoreHeldItem(&backup, &temp->heldItem);
|
||||
RestorePokemonMoves(&backup, temp->moves);
|
||||
RestoreIntegerBits(&backup, temp->name, 0x50);
|
||||
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
u32 sub_8095624(u8 *a, u32 b)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
struct PokemonStruct *temp;
|
||||
s32 index;
|
||||
|
||||
xxx_init_struct_8094924_save_809486C(&backup, a, b);
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
sub_8095824(&backup, &gUnknown_203B480[index]);
|
||||
}
|
||||
SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
|
||||
temp = &gUnknown_203B484->unk4;
|
||||
SaveIntegerBits(&backup, &temp->unk0, 2);
|
||||
SaveIntegerBits(&backup, &temp->isLeader, 1);
|
||||
SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
|
||||
SaveDungeonLocation(&backup, &temp->unk4);
|
||||
SaveIntegerBits(&backup, &temp->speciesNum, 9);
|
||||
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]);
|
||||
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]);
|
||||
SaveIntegerBits(&backup, &temp->IQ, 0xA);
|
||||
SaveIntegerBits(&backup, &temp->pokeHP, 0xA);
|
||||
SaveIntegerBits(&backup, &temp->offense.att[0], 8);
|
||||
SaveIntegerBits(&backup, &temp->offense.att[1], 8);
|
||||
SaveIntegerBits(&backup, &temp->offense.def[0], 8);
|
||||
SaveIntegerBits(&backup, &temp->offense.def[1], 8);
|
||||
SaveIntegerBits(&backup, &temp->unk1C, 0x18);
|
||||
SaveIntegerBits(&backup, &temp->IQSkills, 0x18);
|
||||
SaveIntegerBits(&backup, &temp->unk24, 4);
|
||||
SaveHeldItem(&backup, &temp->heldItem);
|
||||
SavePokemonMoves(&backup, temp->moves);
|
||||
SaveIntegerBits(&backup, temp->name, 0x50);
|
||||
|
||||
SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
||||
{
|
||||
u8 temp;
|
||||
|
||||
RestoreIntegerBits(a, &b->unk0, 4);
|
||||
RestoreDungeonLocation(a, &b->unk4);
|
||||
RestoreIntegerBits(a, &b->unk8, 0x18);
|
||||
RestoreIntegerBits(a, &b->unkC, 0x9);
|
||||
RestoreIntegerBits(a, &b->unk10, 0x20);
|
||||
RestoreIntegerBits(a, &b->unk14, 0x50);
|
||||
RestoreIntegerBits(a, &b->unk20, 0x8);
|
||||
RestoreIntegerBits(a, &b->unk21, 0x8);
|
||||
RestoreIntegerBits(a, &b->unk22, 0x8);
|
||||
RestoreIntegerBits(a, &b->unk24, 0x20);
|
||||
RestoreIntegerBits(a, &b->unk28, 0x20);
|
||||
RestoreIntegerBits(a, &b->unk2C, 0x8);
|
||||
|
||||
RestoreIntegerBits(a, &temp, 1);
|
||||
b->unk2D = temp & 1;
|
||||
}
|
||||
|
||||
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
||||
{
|
||||
u8 neg1;
|
||||
u8 zero;
|
||||
u8 *puVar2;
|
||||
neg1 = -1;
|
||||
zero = 0;
|
||||
|
||||
SaveIntegerBits(a, &b->unk0, 4);
|
||||
SaveDungeonLocation(a, &b->unk4);
|
||||
SaveIntegerBits(a, &b->unk8, 0x18);
|
||||
SaveIntegerBits(a, &b->unkC, 0x9);
|
||||
SaveIntegerBits(a, &b->unk10, 0x20);
|
||||
SaveIntegerBits(a, &b->unk14, 0x50);
|
||||
SaveIntegerBits(a, &b->unk20, 0x8);
|
||||
SaveIntegerBits(a, &b->unk21, 0x8);
|
||||
SaveIntegerBits(a, &b->unk22, 0x8);
|
||||
SaveIntegerBits(a, &b->unk24, 0x20);
|
||||
SaveIntegerBits(a, &b->unk28, 0x20);
|
||||
SaveIntegerBits(a, &b->unk2C, 0x8);
|
||||
|
||||
if(b->unk2D != 0)
|
||||
puVar2 = &neg1;
|
||||
else
|
||||
puVar2 = &zero;
|
||||
SaveIntegerBits(a, puVar2, 1);
|
||||
}
|
||||
|
||||
void sub_80958E4(u32 *a, u32 b)
|
||||
{
|
||||
*a = b;
|
||||
}
|
||||
200
src/code_80972F4.c
Normal file
200
src/code_80972F4.c
Normal file
@@ -0,0 +1,200 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
|
||||
struct unkStruct_8097270
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
struct DungeonLocation unk4;
|
||||
u32 unk8;
|
||||
u16 unkC;
|
||||
u16 unkE;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
};
|
||||
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
struct DungeonLocation unk0;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
|
||||
struct unkStruct_8097270 unk0[4];
|
||||
struct unkStruct_8097270 unk50[8];
|
||||
struct unkStruct_8097270 unkF0[8];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
struct subStruct_203B490 unk230[16];
|
||||
u8 unk2F0[0x38];
|
||||
u8 unk328;
|
||||
};
|
||||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
|
||||
void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
|
||||
void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
|
||||
extern s32 sub_8096EB0(void);
|
||||
|
||||
bool8 sub_8096F50(struct WonderMail *r0)
|
||||
{
|
||||
s32 index;
|
||||
s32 temp2;
|
||||
struct subStruct_203B490 *temp;
|
||||
|
||||
temp2 = sub_8096EB0();
|
||||
|
||||
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
temp = &gUnknown_203B490->unk230[index];
|
||||
if(temp->unk0.dungeonIndex == r0->dungeon)
|
||||
if(temp->unk0.dungeonFloor == r0->floor)
|
||||
if(temp->unk4 == r0->unk8)
|
||||
if(temp->unk8 == temp2)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_8096FA0(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
u32 temp;
|
||||
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unk0[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unk50[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &temp, 1);
|
||||
if(temp & 1)
|
||||
gUnknown_203B490->unk2F0[index] = 1;
|
||||
else
|
||||
gUnknown_203B490->unk2F0[index] = 0;
|
||||
}
|
||||
RestoreIntegerBits(&backup, &temp, 1);
|
||||
if(temp & 1)
|
||||
gUnknown_203B490->unk328 = 1;
|
||||
else
|
||||
gUnknown_203B490->unk328 = 0;
|
||||
|
||||
RestoreIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
|
||||
RestoreIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
|
||||
RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
u32 sub_80970D8(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
u32 temp;
|
||||
|
||||
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unk0[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unk50[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
if(gUnknown_203B490->unk2F0[index] != 0)
|
||||
temp = -1;
|
||||
else
|
||||
temp = 0;
|
||||
SaveIntegerBits(&backup, &temp, 1);
|
||||
}
|
||||
if(gUnknown_203B490->unk328 != 0)
|
||||
temp = -1;
|
||||
else
|
||||
temp = 0;
|
||||
SaveIntegerBits(&backup, &temp, 1);
|
||||
SaveIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
|
||||
SaveIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
|
||||
SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
|
||||
{
|
||||
RestoreIntegerBits(a, &b->unk0, 4);
|
||||
RestoreIntegerBits(a, &b->unk1, 3);
|
||||
RestoreIntegerBits(a, &b->unk2, 4);
|
||||
RestoreIntegerBits(a, &b->unkC, 9);
|
||||
RestoreIntegerBits(a, &b->unkE, 9);
|
||||
RestoreIntegerBits(a, &b->unk10, 8);
|
||||
RestoreIntegerBits(a, &b->unk11, 4);
|
||||
RestoreIntegerBits(a, &b->unk12, 8);
|
||||
RestoreIntegerBits(a, &b->unk13, 6);
|
||||
RestoreIntegerBits(a, &b->unk8, 0x18);
|
||||
RestoreDungeonLocation(a, &b->unk4);
|
||||
}
|
||||
|
||||
void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
|
||||
{
|
||||
SaveIntegerBits(a, &b->unk0, 4);
|
||||
SaveIntegerBits(a, &b->unk1, 3);
|
||||
SaveIntegerBits(a, &b->unk2, 4);
|
||||
SaveIntegerBits(a, &b->unkC, 9);
|
||||
SaveIntegerBits(a, &b->unkE, 9);
|
||||
SaveIntegerBits(a, &b->unk10, 8);
|
||||
SaveIntegerBits(a, &b->unk11, 4);
|
||||
SaveIntegerBits(a, &b->unk12, 8);
|
||||
SaveIntegerBits(a, &b->unk13, 6);
|
||||
SaveIntegerBits(a, &b->unk8, 0x18);
|
||||
SaveDungeonLocation(a, &b->unk4);
|
||||
}
|
||||
|
||||
void sub_80972F4(void)
|
||||
{
|
||||
sub_80015C0(0, 0x2B);
|
||||
sub_80015C0(0, 0x2C);
|
||||
sub_80015C0(0, 0x2D);
|
||||
}
|
||||
|
||||
void nullsub_128(void)
|
||||
{}
|
||||
@@ -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 DungeonLocation 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 DungeonLocation *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 DungeonLocation *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 DungeonLocation 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 SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
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);
|
||||
SaveDungeonLocation(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);
|
||||
RestoreDungeonLocation(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;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ s32 sub_80A2668(u32 r0)
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_80A2688(u8 r0, u32 r1)
|
||||
u32 sub_80A2688(u8 r0)
|
||||
{
|
||||
u32 uVar1;
|
||||
|
||||
|
||||
83
src/dungeon_2.c
Normal file
83
src/dungeon_2.c
Normal file
@@ -0,0 +1,83 @@
|
||||
#include "global.h"
|
||||
#include "dungeon.h"
|
||||
#include "code_800D090.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8092334.h"
|
||||
#include "constants/dungeon.h"
|
||||
|
||||
extern const char gUnknown_8108F10[];
|
||||
extern const char gUnknown_8108F18[];
|
||||
extern const char gUnknown_8108F2C[];
|
||||
extern u8 gUnknown_81077A8[];
|
||||
extern u8 gUnknown_81077E8[];
|
||||
|
||||
void sub_80901D8(struct DungeonLocation *param_1,struct DungeonLocation *param_2)
|
||||
{
|
||||
if ((u8)(param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE) {
|
||||
param_1->dungeonIndex = DUNGEON_NORMAL_MAZE;
|
||||
param_1->dungeonFloor = (param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) * 3 + param_2->dungeonFloor;
|
||||
}
|
||||
else {
|
||||
*param_1 = *param_2;
|
||||
}
|
||||
}
|
||||
|
||||
void PrintYellowDungeonNametoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
|
||||
{
|
||||
sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->dungeonIndex].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
|
||||
}
|
||||
|
||||
void PrintDungeonLocationtoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
|
||||
{
|
||||
if(gDungeons[dungeonLocation->dungeonIndex].stairDirection != 0){
|
||||
sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->dungeonIndex].name1, dungeonLocation->dungeonFloor); //_F
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->dungeonIndex].name1, dungeonLocation->dungeonFloor); // B _F
|
||||
}
|
||||
}
|
||||
|
||||
void CopyDungeonName1toBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
|
||||
{
|
||||
strncpy(buffer, gDungeonNames[dungeonLocation->dungeonIndex].name1, 0x50);
|
||||
}
|
||||
|
||||
u8 sub_8090298(u8 dungeon)
|
||||
{
|
||||
if ((u8)(dungeon - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE)
|
||||
return 4;
|
||||
else if(dungeon > DUNGEON_PURITY_FOREST)
|
||||
return 1;
|
||||
else
|
||||
return gUnknown_81077A8[dungeon];
|
||||
}
|
||||
|
||||
u8 sub_80902C8(u8 dungeon)
|
||||
{
|
||||
if ((u8)(dungeon - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE)
|
||||
return 0;
|
||||
else if(dungeon > DUNGEON_PURITY_FOREST)
|
||||
return 0;
|
||||
else
|
||||
return gUnknown_81077E8[dungeon];
|
||||
}
|
||||
|
||||
void SaveDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* r1)
|
||||
{
|
||||
SaveIntegerBits(r0, &r1->dungeonIndex, 0x7);
|
||||
SaveIntegerBits(r0, &r1->dungeonFloor, 0x7);
|
||||
}
|
||||
|
||||
void RestoreDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* r1)
|
||||
{
|
||||
r1->dungeonIndex = 0;
|
||||
r1->dungeonFloor = 0;
|
||||
RestoreIntegerBits(r0, &r1->dungeonIndex, 0x7);
|
||||
RestoreIntegerBits(r0, &r1->dungeonFloor, 0x7);
|
||||
}
|
||||
|
||||
u8 GetDungeonUnk1(u8 dungeon)
|
||||
{
|
||||
return gDungeons[dungeon].unk1;
|
||||
}
|
||||
@@ -43,11 +43,129 @@ extern u32 sub_801F194(void);
|
||||
|
||||
u32 sub_8027E18(struct PokemonStruct *);
|
||||
u8 sub_8027E4C(struct PokemonStruct *r0);
|
||||
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_801BF98(void);
|
||||
extern u32 sub_80244E4(void);
|
||||
extern void sub_802453C(void);
|
||||
|
||||
extern u32 sub_8023A94(u32);
|
||||
extern bool8 sub_808D750(s16 index_);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void sub_808ED00();
|
||||
extern s16 sub_8023B44(void);
|
||||
extern void sub_8023C60(void);
|
||||
|
||||
void sub_80277FC(void)
|
||||
{
|
||||
struct PokemonStruct *iVar4;
|
||||
|
||||
switch(sub_8023A94(1)) {
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2BC->targetPoke = sub_8023B44();
|
||||
iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
|
||||
gUnknown_203B2BC->unk18 = iVar4;
|
||||
gUnknown_203B2BC->unk1C = iVar4->isLeader;
|
||||
PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
|
||||
SetFriendAreaActionMenuState(3);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2BC->targetPoke = sub_8023B44();
|
||||
iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
|
||||
gUnknown_203B2BC->unk18 = iVar4;
|
||||
gUnknown_203B2BC->unk1C = iVar4->isLeader;
|
||||
PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
|
||||
SetFriendAreaActionMenuState(4);
|
||||
break;
|
||||
case 2:
|
||||
sub_8023C60();
|
||||
SetFriendAreaActionMenuState(0x11);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80278B4(void)
|
||||
{
|
||||
struct PokemonStruct *playerStruct;
|
||||
struct PokemonStruct *puVar3;
|
||||
struct PokemonStruct *iVar4;
|
||||
int local_c;
|
||||
|
||||
local_c = 0;
|
||||
sub_8023A94(0);
|
||||
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == '\0') && (sub_8013114(&gUnknown_203B2BC->unk7C,&local_c), local_c != 1)) {
|
||||
gUnknown_203B2BC->unk70 = local_c;
|
||||
}
|
||||
switch(local_c) {
|
||||
case 6:
|
||||
if (sub_808D750(gUnknown_203B2BC->targetPoke) != '\0') {
|
||||
#ifdef NONMATCHING
|
||||
puVar3 = &gRecruiedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
|
||||
#else
|
||||
register size_t offset asm("r1") = offsetof(struct unkStruct_203B45C, pokemon[gUnknown_203B2BC->targetPoke]);
|
||||
struct PokemonStruct* p = gRecruitedPokemonRef->pokemon;
|
||||
size_t addr = offset + (size_t)p;
|
||||
puVar3 = (struct PokemonStruct*)addr;
|
||||
#endif
|
||||
puVar3->unk0 |= 2;
|
||||
nullsub_104();
|
||||
}
|
||||
sub_808ED00();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2BC->unk18->unk0 &= 0xfffd;
|
||||
nullsub_104();
|
||||
sub_808ED00();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 8:
|
||||
iVar4 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
|
||||
playerStruct = GetPlayerPokemonStruct();
|
||||
if (!iVar4->isLeader) {
|
||||
playerStruct->isLeader = FALSE;
|
||||
iVar4->isLeader = TRUE;
|
||||
nullsub_104();
|
||||
}
|
||||
sub_808ED00();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 9:
|
||||
SetFriendAreaActionMenuState(8);
|
||||
break;
|
||||
case 0xc:
|
||||
SetFriendAreaActionMenuState(0xe);
|
||||
break;
|
||||
case 10:
|
||||
SetFriendAreaActionMenuState(10);
|
||||
break;
|
||||
case 0xb:
|
||||
PlaySound(0x14d);
|
||||
if (gUnknown_203B2BC->unk14.itemIndex != ITEM_ID_NOTHING) {
|
||||
AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
|
||||
}
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B2BC->unk14.itemIndex = 0;
|
||||
gUnknown_203B2BC->unk14.numItems = 0;
|
||||
GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->unk14);
|
||||
nullsub_104();
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
case 4:
|
||||
SetFriendAreaActionMenuState(4);
|
||||
break;
|
||||
case 5:
|
||||
SetFriendAreaActionMenuState(5);
|
||||
break;
|
||||
case 1:
|
||||
SetFriendAreaActionMenuState(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8027A40(void)
|
||||
{
|
||||
switch(sub_80244E4())
|
||||
@@ -79,7 +197,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;
|
||||
@@ -171,7 +289,7 @@ void sub_8027BD8(void)
|
||||
ShiftItemsDownFrom(gUnknown_203B2BC->itemIndex);
|
||||
FillInventoryGaps();
|
||||
if (gUnknown_203B2BC->unk14.itemIndex != 0) {
|
||||
sub_8091274(&gUnknown_203B2BC->unk14);
|
||||
AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
|
||||
}
|
||||
GivePokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->itemToGive);
|
||||
sub_801A928();
|
||||
@@ -267,10 +385,10 @@ void sub_8027D40(u32 r0, struct HeldItem *heldItem)
|
||||
u32 sub_8027D9C(struct PokemonStruct *r0)
|
||||
{
|
||||
u32 var1;
|
||||
if(r0->unk2 == 0)
|
||||
if(r0->isLeader == 0)
|
||||
{
|
||||
var1 = 0;
|
||||
if(r0->unk4.unk4 == 0x41)
|
||||
if(r0->unk4.dungeonIndex == 0x41)
|
||||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
@@ -288,10 +406,10 @@ u32 sub_8027DCC(struct PokemonStruct *r0)
|
||||
u32 var1;
|
||||
if(sub_808D3BC() != r0)
|
||||
if(sub_808D3F8() != r0)
|
||||
if(r0->unk2 == 0)
|
||||
if(r0->isLeader == 0)
|
||||
{
|
||||
var1 = 0;
|
||||
if(r0->unk4.unk4 == 0x41)
|
||||
if(r0->unk4.dungeonIndex == 0x41)
|
||||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
@@ -345,7 +463,7 @@ void sub_8027EB8(void)
|
||||
{
|
||||
case 1:
|
||||
PlaySound(0x14d);
|
||||
sub_8091274(&gUnknown_203B2BC->unk14);
|
||||
AddHeldItemToInventory(&gUnknown_203B2BC->unk14);
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B2BC->unk14.itemIndex = 0;
|
||||
gUnknown_203B2BC->unk14.numItems = 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;
|
||||
@@ -222,7 +222,7 @@ void sub_8026C14(void)
|
||||
ShiftItemsDownFrom(gUnknown_203B2B8->unkC);
|
||||
FillInventoryGaps();
|
||||
if (gUnknown_203B2B8->unk14.itemIndex != '\0') {
|
||||
sub_8091274(&gUnknown_203B2B8->unk14);
|
||||
AddHeldItemToInventory(&gUnknown_203B2B8->unk14);
|
||||
nextState = 0x10;
|
||||
}
|
||||
HeldItemToSlot(&slot,&gUnknown_203B2B8->unk10);
|
||||
@@ -342,9 +342,9 @@ void sub_8026E08(u32 r0)
|
||||
u32 sub_8026E88(struct PokemonStruct *r0)
|
||||
{
|
||||
u8 iVar3;
|
||||
if(r0->unk2 == 0)
|
||||
if(r0->isLeader == 0)
|
||||
{
|
||||
iVar3 = (r0->unk4.unk4 == 0x41);
|
||||
iVar3 = (r0->unk4.dungeonIndex == 0x41);
|
||||
if(iVar3 != 0)
|
||||
if(sub_80023E4(0x8) == 0)
|
||||
return 0;
|
||||
@@ -359,9 +359,9 @@ u32 sub_8026EB8(struct PokemonStruct *r0)
|
||||
u8 iVar3;
|
||||
if(sub_808D3BC() != r0)
|
||||
if(sub_808D3F8() != r0)
|
||||
if(r0->unk2 == 0)
|
||||
if(r0->isLeader == 0)
|
||||
{
|
||||
iVar3 = (r0->unk4.unk4 == 0x41);
|
||||
iVar3 = (r0->unk4.dungeonIndex == 0x41);
|
||||
if(iVar3 != 0)
|
||||
{
|
||||
if(sub_80023E4(0x8) != 0)
|
||||
@@ -414,7 +414,7 @@ void sub_8026FA4(void)
|
||||
{
|
||||
case 1:
|
||||
PlaySound(0x14d);
|
||||
sub_8091274(&gUnknown_203B2B8->unk14);
|
||||
AddHeldItemToInventory(&gUnknown_203B2B8->unk14);
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B2B8->unk14.itemIndex = 0;
|
||||
gUnknown_203B2B8->unk14.numItems = 0;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "friend_rescue.h"
|
||||
#include "sub_8095228.h"
|
||||
#include "item.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
extern u8 *gUnknown_203B484;
|
||||
@@ -81,10 +82,10 @@ extern void sub_8023DA4(void);
|
||||
extern void sub_8035D1C(void);
|
||||
extern u16 sub_8023B44(void);
|
||||
|
||||
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
|
||||
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
|
||||
extern void sub_8095274(u32);
|
||||
extern void sub_80951BC(u8 *r0);
|
||||
extern void sub_80951FC(u8 *r0);
|
||||
extern void sub_80951BC(struct unkStruct_8095228 *r0);
|
||||
extern void sub_80951FC(struct unkStruct_8095228 *r0);
|
||||
extern u8 sub_809539C(u32, u32);
|
||||
extern u8 sub_800D588(void);
|
||||
extern u32 sub_8095324(u32);
|
||||
@@ -454,7 +455,7 @@ void sub_8033DBC(void)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp.unk0))
|
||||
switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp))
|
||||
{
|
||||
case 17:
|
||||
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
|
||||
@@ -470,8 +471,8 @@ void sub_8033DBC(void)
|
||||
break;
|
||||
case 22:
|
||||
sub_8095274(temp.unk10);
|
||||
temp.unk0 = 2; // Some sort of Ack?
|
||||
sub_80951BC(&temp.unk0);
|
||||
temp.mailType = 2;
|
||||
sub_80951BC(&temp);
|
||||
sub_80141B4(gUnknown_80E4928, 0, 0, 0x101);
|
||||
SetFriendRescueMenuState(0x16);
|
||||
break;
|
||||
@@ -484,11 +485,11 @@ void sub_8033DBC(void)
|
||||
SetFriendRescueMenuState(8);
|
||||
break;
|
||||
case 23:
|
||||
temp.unk0 = 5; // Some sort of Ack?
|
||||
sub_80951FC(&temp.unk0);
|
||||
temp.mailType = 5;
|
||||
sub_80951FC(&temp);
|
||||
temp2 = sub_8095228(sub_809539C(1, temp.unk10));
|
||||
temp2->unk0 = 7;
|
||||
MemoryFill8((u8 *)gUnknown_203B484, 0, 0x5C);
|
||||
temp2->mailType = 7;
|
||||
MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
|
||||
SetFriendRescueMenuState(0x40);
|
||||
break;
|
||||
case 24:
|
||||
@@ -1339,7 +1340,7 @@ void sub_8034D74(void)
|
||||
switch(return_var)
|
||||
{
|
||||
case 3:
|
||||
switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp.unk0))
|
||||
switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp))
|
||||
{
|
||||
case 17:
|
||||
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
|
||||
@@ -1356,7 +1357,7 @@ void sub_8034D74(void)
|
||||
case 24:
|
||||
temp2 = sub_8095228(sub_809539C(4, temp.unk10));
|
||||
*temp2 = temp;
|
||||
temp2->unk0 = 6; // Some sort of Ack?
|
||||
temp2->mailType = 6;
|
||||
gUnknown_203B33C->unk420 = temp.unk10;
|
||||
SetFriendRescueMenuState(0x6D);
|
||||
break;
|
||||
|
||||
@@ -586,7 +586,7 @@ bool8 sub_809124C(u8 itemIndex, u8 param_3)
|
||||
return AddItemToInventory(&temp);
|
||||
}
|
||||
|
||||
bool8 sub_8091274(struct HeldItem* slot)
|
||||
bool8 AddHeldItemToInventory(struct HeldItem* slot)
|
||||
{
|
||||
struct ItemSlot temp;
|
||||
|
||||
@@ -1083,7 +1083,7 @@ struct HeldItem* xxx_get_unk250_at_8091A90(u8 index) {
|
||||
return &gTeamInventory_203B460->unk250[index];
|
||||
}
|
||||
|
||||
void xxx_fill_inv_unk250_gaps_8091AA8(u8 index) {
|
||||
void xxx_fill_inv_unk250_gaps_8091AA8(void) {
|
||||
s32 slot_checking = 0;
|
||||
s32 last_filled = 0;
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ void sub_80186F8(void)
|
||||
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | (0x80 << 1);
|
||||
}
|
||||
gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] -= item.temp.norm.numItems;
|
||||
sub_8091274((struct HeldItem *)&item);
|
||||
AddHeldItemToInventory((struct HeldItem *)&item);
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
@@ -218,7 +218,7 @@ void sub_8018854(void)
|
||||
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
|
||||
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
|
||||
|
||||
sub_8091274((struct HeldItem *)&item);
|
||||
AddHeldItemToInventory((struct HeldItem *)&item);
|
||||
if(sub_801CF14(1) == 0)
|
||||
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
{
|
||||
@@ -319,7 +319,7 @@ void sub_80189C8(void)
|
||||
itemsCast = (gUnknown_203B20C->unk8.numItems << 8);
|
||||
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | itemsCast;
|
||||
|
||||
sub_8091274((struct HeldItem *)&item);
|
||||
AddHeldItemToInventory((struct HeldItem *)&item);
|
||||
if(sub_801CF14(1) == 0)
|
||||
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
{
|
||||
|
||||
@@ -99,12 +99,204 @@ extern void sub_8013984(u8 *);
|
||||
extern void sub_801A064(void);
|
||||
extern void sub_801A0D8(void);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern s32 xxx_count_inv_unk230();
|
||||
extern u8 sub_801A37C(void);
|
||||
extern u16 gUnknown_203B228;
|
||||
extern u16 gUnknown_203B22A;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB95C;
|
||||
|
||||
extern void sub_801A010(void);
|
||||
extern void sub_801A3DC(void);
|
||||
extern void sub_801AD34(u32);
|
||||
extern void PlaySound(u16 songIndex);
|
||||
|
||||
extern void xxx_init_inv_unk250_at_8091A74(u8 index);
|
||||
extern void xxx_fill_inv_unk250_gaps_8091AA8(void);
|
||||
|
||||
u32 sub_8019D8C(void);
|
||||
|
||||
void sub_8019730(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
||||
if (sub_80144A4(&local_8) != 0)
|
||||
return;
|
||||
if (local_8 != 1)
|
||||
gUnknown_203B210->unk28 = local_8;
|
||||
switch(local_8) {
|
||||
case 2:
|
||||
if (sub_8019D8C() == 0)
|
||||
UpdateKecleonStoreState(5);
|
||||
else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
||||
UpdateKecleonStoreState(0xA);
|
||||
else
|
||||
UpdateKecleonStoreState(0xF);
|
||||
break;
|
||||
case 3:
|
||||
if (GetNumberOfFilledInventorySlots() == 0)
|
||||
UpdateKecleonStoreState(9);
|
||||
else if (gUnknown_203B210->unk14 == 0)
|
||||
UpdateKecleonStoreState(8);
|
||||
else if (gTeamInventory_203B460->teamMoney < 99999)
|
||||
UpdateKecleonStoreState(0x17);
|
||||
else
|
||||
UpdateKecleonStoreState(7);
|
||||
break;
|
||||
case 4:
|
||||
if (GetNumberOfFilledInventorySlots() == 0)
|
||||
UpdateKecleonStoreState(9);
|
||||
else if (gUnknown_203B210->unk14 == 0)
|
||||
UpdateKecleonStoreState(8);
|
||||
else if (gUnknown_203B210->unk18 + gTeamInventory_203B460->teamMoney > 99999)
|
||||
UpdateKecleonStoreState(7);
|
||||
else
|
||||
UpdateKecleonStoreState(0x1f);
|
||||
break;
|
||||
case 7:
|
||||
UpdateKecleonStoreState(2);
|
||||
break;
|
||||
case 1:
|
||||
UpdateKecleonStoreState(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8019850(void)
|
||||
{
|
||||
s32 local_c;
|
||||
|
||||
if (sub_80144A4(&local_c) == 0) {
|
||||
switch(local_c)
|
||||
{
|
||||
case 5:
|
||||
AddToTeamMoney(-gUnknown_203B210->itemSellPrice);
|
||||
if (gUnknown_203B210->unk4 != '\0') {
|
||||
AddHeldItemToInventory(xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20));
|
||||
xxx_init_unk230_substruct(gUnknown_203B210->unk20);
|
||||
xxx_fill_unk230_gaps();
|
||||
}
|
||||
else {
|
||||
AddHeldItemToInventory(xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21));
|
||||
xxx_init_inv_unk250_at_8091A74(gUnknown_203B210->unk21);
|
||||
xxx_fill_inv_unk250_gaps_8091AA8();
|
||||
}
|
||||
PlaySound(0x14c);
|
||||
UpdateKecleonStoreState(0x11);
|
||||
break;
|
||||
case 6:
|
||||
case 1:
|
||||
UpdateKecleonStoreState(0x10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80198E8(void)
|
||||
{
|
||||
s32 local_c;
|
||||
|
||||
if (sub_80144A4(&local_c) == 0) {
|
||||
switch(local_c)
|
||||
{
|
||||
case 5:
|
||||
AddToTeamMoney(gUnknown_203B210->itemSellPrice);
|
||||
ShiftItemsDownFrom(gUnknown_203B210->unk24);
|
||||
PlaySound(0x14c);
|
||||
UpdateKecleonStoreState(0x19);
|
||||
break;
|
||||
case 6:
|
||||
case 1:
|
||||
UpdateKecleonStoreState(0x18);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8019944(void)
|
||||
{
|
||||
s32 slotIndex;
|
||||
s32 local_10;
|
||||
struct ItemSlot *itemSlot;
|
||||
|
||||
if (sub_80144A4(&local_10) == 0) {
|
||||
switch(local_10)
|
||||
{
|
||||
case 5:
|
||||
for(slotIndex = 0; slotIndex < INVENTORY_SIZE; slotIndex++)
|
||||
{
|
||||
itemSlot = &gTeamInventory_203B460->teamItems[slotIndex];
|
||||
if ((itemSlot->itemFlags & ITEM_FLAG_EXISTS) && CanSellItem(itemSlot->itemIndex)) {
|
||||
ClearItemSlotAt(slotIndex);
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
AddToTeamMoney(gUnknown_203B210->unk18);
|
||||
PlaySound(0x14c);
|
||||
UpdateKecleonStoreState(0x20);
|
||||
break;
|
||||
case 1:
|
||||
case 6:
|
||||
UpdateKecleonStoreState(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80199CC(void)
|
||||
{
|
||||
u32 uVar2;
|
||||
struct HeldItem *puVar3;
|
||||
|
||||
if (gUnknown_203B210->unk4 != '\0') {
|
||||
uVar2 = sub_8019EDC(1);
|
||||
}
|
||||
else {
|
||||
uVar2 = sub_801A2A8(1);
|
||||
}
|
||||
|
||||
switch(uVar2)
|
||||
{
|
||||
case 3:
|
||||
if (gUnknown_203B210->unk4) {
|
||||
gUnknown_203B210->unk20 = sub_8019FB0();
|
||||
puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20);
|
||||
}
|
||||
else {
|
||||
gUnknown_203B210->unk21 = sub_801A37C();
|
||||
puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21);
|
||||
}
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0);
|
||||
gUnknown_203B210->unk1C.numItems =puVar3->numItems;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
|
||||
UpdateKecleonStoreState(0x14);
|
||||
break;
|
||||
case 4:
|
||||
if (gUnknown_203B210->unk4) {
|
||||
gUnknown_203B210->unk20 = sub_8019FB0();
|
||||
puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20);
|
||||
}
|
||||
else {
|
||||
gUnknown_203B210->unk21 = sub_801A37C();
|
||||
puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21);
|
||||
}
|
||||
xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0);
|
||||
gUnknown_203B210->unk1C.numItems = puVar3->numItems;
|
||||
gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C);
|
||||
UpdateKecleonStoreState(0x15);
|
||||
break;
|
||||
case 2:
|
||||
if (gUnknown_203B210->unk4)
|
||||
sub_801A010();
|
||||
else
|
||||
sub_801A3DC();
|
||||
UpdateKecleonStoreState(1);
|
||||
break;
|
||||
case 1:
|
||||
sub_801AD34(0);
|
||||
DrawTeamMoneyBox(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8019B08(void)
|
||||
{
|
||||
switch(sub_801A6E8(1))
|
||||
@@ -151,15 +343,12 @@ void sub_8019BBC(void)
|
||||
}
|
||||
switch(menuAction){
|
||||
case 2:
|
||||
if (gTeamInventory_203B460->teamMoney == 0) {
|
||||
if (gTeamInventory_203B460->teamMoney == 0)
|
||||
UpdateKecleonStoreState(0x6);
|
||||
}
|
||||
else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney) {
|
||||
else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney)
|
||||
UpdateKecleonStoreState(0xC);
|
||||
}
|
||||
else {
|
||||
else
|
||||
UpdateKecleonStoreState(0x16);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
UpdateKecleonStoreState(0x15);
|
||||
@@ -182,15 +371,12 @@ void sub_8019C78(void)
|
||||
switch(menuAction){
|
||||
case 3:
|
||||
sub_8099690(0);
|
||||
if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex)) {
|
||||
if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex))
|
||||
UpdateKecleonStoreState(0xd);
|
||||
}
|
||||
else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999) {
|
||||
else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999)
|
||||
UpdateKecleonStoreState(0xe);
|
||||
}
|
||||
else {
|
||||
else
|
||||
UpdateKecleonStoreState(0x1e);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
sub_8099690(0);
|
||||
@@ -253,15 +439,15 @@ u32 sub_8019D8C(void)
|
||||
void sub_8019DAC(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
struct ItemSlot *pbVar4;
|
||||
struct ItemSlot *itemSlot;
|
||||
s32 iVar5;
|
||||
|
||||
gUnknown_203B210->unk14 = 0;
|
||||
gUnknown_203B210->unk18 = 0;
|
||||
for(iVar5 = 0; iVar5 < INVENTORY_SIZE; iVar5++){
|
||||
pbVar4 = &gTeamInventory_203B460->teamItems[iVar5];
|
||||
if (((pbVar4->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(pbVar4->itemIndex))) {
|
||||
iVar3 = GetStackSellPrice(pbVar4);
|
||||
itemSlot = &gTeamInventory_203B460->teamItems[iVar5];
|
||||
if (((itemSlot->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(itemSlot->itemIndex))) {
|
||||
iVar3 = GetStackSellPrice(itemSlot);
|
||||
gUnknown_203B210->unk18 += iVar3;
|
||||
gUnknown_203B210->unk14++;
|
||||
}
|
||||
|
||||
@@ -9,17 +9,10 @@
|
||||
#include "pokemon.h"
|
||||
#include "save.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern const struct FileArchive gTitleMenuFileArchive;
|
||||
|
||||
struct unkStruct_203B484
|
||||
{
|
||||
u8 fill0[0xC];
|
||||
/* 0xC */ s16 speciesIndex;
|
||||
u8 fillE[0x50 - 0xE];
|
||||
/* 0x50 */ u8 helperName[10];
|
||||
};
|
||||
|
||||
struct LoadScreen
|
||||
{
|
||||
// size: 0x27c
|
||||
@@ -373,9 +366,9 @@ void DrawLoadScreenText(void)
|
||||
if (iVar2 == 0xf1207){
|
||||
// NOTE: very hacky match here but needed var here to match
|
||||
temp2 = gUnknown_203B484;
|
||||
if(temp2->speciesIndex != SPECIES_NONE) {
|
||||
sub_808D930(speciesHelper,temp2->speciesIndex);
|
||||
sub_80922B4(nameHelper,temp2->helperName,POKEMON_NAME_LENGTH);
|
||||
if(temp2->unk4.speciesNum != SPECIES_NONE) {
|
||||
sub_808D930(speciesHelper,temp2->unk4.speciesNum);
|
||||
sub_80922B4(nameHelper,temp2->unk4.name,POKEMON_NAME_LENGTH);
|
||||
sprintf_2(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
|
||||
}
|
||||
else
|
||||
|
||||
@@ -97,7 +97,6 @@ extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u16 *, u32, u32, struct OpenedFile **r5, u32);
|
||||
void xxx_call_fade_out_bgm(u16 speed);
|
||||
void sub_801199C(u16 songIndex);
|
||||
void ClearItemSlotAt(u32 index);
|
||||
void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed);
|
||||
void sub_80977D0(void);
|
||||
void PlaySound(u32);
|
||||
|
||||
353
src/music_pre.c
353
src/music_pre.c
@@ -407,7 +407,7 @@ void InitMusic(void)
|
||||
gBGMusicPlayerState = 0;
|
||||
gCurrentBGSong = 999;
|
||||
gUnknown_202D68C = 999;
|
||||
gUnknown_202D68E = 0x3e5;
|
||||
gUnknown_202D68E = 997;
|
||||
gUnknown_202D690 = 0;
|
||||
gUnknown_202D692 = 0;
|
||||
gUnknown_202D694 = 0;
|
||||
@@ -415,7 +415,7 @@ void InitMusic(void)
|
||||
for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++)
|
||||
{
|
||||
preload->unk0 = 0;
|
||||
preload->songIndex = 0x3e5;
|
||||
preload->songIndex = 997;
|
||||
preload->unk4 = 0;
|
||||
preload->unk6 = 0;
|
||||
}
|
||||
@@ -425,8 +425,8 @@ void InitMusic(void)
|
||||
void sub_800BDDC(void)
|
||||
{
|
||||
sub_800BF80();
|
||||
sub_800C298(0x3e6);
|
||||
sub_800C298(0x3e5);
|
||||
sub_800C298(998);
|
||||
sub_800C298(997);
|
||||
}
|
||||
|
||||
|
||||
@@ -583,52 +583,53 @@ u16 GetCurrentBGSong(void)
|
||||
return gCurrentBGSong;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
// TODO fix reg allocation.. using one too many regs
|
||||
void sub_800C074(u16 SongIndex, u16 param_2)
|
||||
{
|
||||
bool8 interrupt_flag;
|
||||
bool8 interrupt_flag2;
|
||||
u16 msVar;
|
||||
struct unkStruct_3000FD8 *preload;
|
||||
|
||||
if (SongIndex == 0x3e5)
|
||||
if (SongIndex == 997)
|
||||
return;
|
||||
if (256 < param_2)
|
||||
if (param_2 > 256)
|
||||
param_2 = 256;
|
||||
|
||||
if (sub_800CACC(SongIndex))
|
||||
{
|
||||
msVar = GetMusicPlayerIndex(SongIndex);
|
||||
if (msVar == 1) {
|
||||
if (GetMusicPlayerIndex(SongIndex) == 1) {
|
||||
interrupt_flag = DisableInterrupts();
|
||||
gUnknown_202D68E = SongIndex;
|
||||
if(gUnknown_202D690 == 0)
|
||||
{
|
||||
if (gCurrentBGSong != 999)
|
||||
{
|
||||
if ((u16)(gBGMusicPlayerState - 1U) < 2)
|
||||
if ((u16)(gBGMusicPlayerState - 1) < 2)
|
||||
{
|
||||
gUnknown_202D690 = msVar;
|
||||
gUnknown_202D690 = 1;
|
||||
gUnknown_202D692 = 16;
|
||||
gUnknown_202D694 = 0;
|
||||
m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM,1);
|
||||
m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, 1);
|
||||
}
|
||||
else
|
||||
else if (gBGMusicPlayerState == 3)
|
||||
gUnknown_202D690 = 2;
|
||||
else
|
||||
{
|
||||
if (gBGMusicPlayerState == 3)
|
||||
gUnknown_202D690 = 2;
|
||||
else
|
||||
{
|
||||
gUnknown_202D690 = 3;
|
||||
m4aMPlayStop(&gMPlayInfo_BGM);
|
||||
m4aSongNumStart(gUnknown_202D68E);
|
||||
}
|
||||
gUnknown_202D690 = 3;
|
||||
m4aMPlayStop(&gMPlayInfo_BGM);
|
||||
m4aSongNumStart(gUnknown_202D68E);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_202D690 = 3;
|
||||
m4aMPlayStop(&gMPlayInfo_BGM);
|
||||
m4aSongNumStart(gUnknown_202D68E);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (1 < (u16)(gUnknown_202D690 - 1U))
|
||||
if (1 < (u16)(gUnknown_202D690 - 1))
|
||||
{
|
||||
m4aMPlayStop(&gMPlayInfo_BGM);
|
||||
m4aSongNumStart(gUnknown_202D68E);
|
||||
@@ -675,230 +676,24 @@ void sub_800C074(u16 SongIndex, u16 param_2)
|
||||
nullsub_20(SongIndex);
|
||||
else
|
||||
{
|
||||
interrupt_flag = DisableInterrupts();
|
||||
interrupt_flag2 = DisableInterrupts();
|
||||
m4aSongNumStart(SongIndex);
|
||||
preload->unk0 = 1;
|
||||
preload->songIndex = SongIndex;
|
||||
if(msVar == param_2)
|
||||
{
|
||||
preload->unk6 = 1;
|
||||
}
|
||||
else
|
||||
if(param_2 == 256)
|
||||
{
|
||||
preload->unk6 = 0;
|
||||
}
|
||||
preload->unk4 = msVar;
|
||||
if (interrupt_flag)
|
||||
else
|
||||
{
|
||||
preload->unk6 = 1;
|
||||
}
|
||||
preload->unk4 = param_2;
|
||||
if (interrupt_flag2)
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_800C074(u16 SongIndex, u16 param_2)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tpush {r7}\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r5, r0, 16\n"
|
||||
"\tmov r8, r5\n"
|
||||
"\tlsls r1, 16\n"
|
||||
"\tlsrs r6, r1, 16\n"
|
||||
"\tldr r0, _0800C0FC\n"
|
||||
"\tcmp r5, r0\n"
|
||||
"\tbne _0800C08C\n"
|
||||
"\tb _0800C208\n"
|
||||
"_0800C08C:\n"
|
||||
"\tmovs r7, 0x80\n"
|
||||
"\tlsls r7, 1\n"
|
||||
"\tcmp r6, r7\n"
|
||||
"\tbls _0800C096\n"
|
||||
"\tadds r6, r7, 0\n"
|
||||
"_0800C096:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl sub_800CACC\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0800C0A4\n"
|
||||
"\tb _0800C1B0\n"
|
||||
"_0800C0A4:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetMusicPlayerIndex\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r7, r0, 16\n"
|
||||
"\tcmp r7, 0x1\n"
|
||||
"\tbeq _0800C0B4\n"
|
||||
"\tb _0800C1D0\n"
|
||||
"_0800C0B4:\n"
|
||||
"\tbl DisableInterrupts\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tldr r6, _0800C100\n"
|
||||
"\tstrh r5, [r6]\n"
|
||||
"\tldr r4, _0800C104\n"
|
||||
"\tldrh r0, [r4]\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbne _0800C144\n"
|
||||
"\tldr r0, _0800C108\n"
|
||||
"\tldrh r1, [r0]\n"
|
||||
"\tldr r0, _0800C10C\n"
|
||||
"\tcmp r1, r0\n"
|
||||
"\tbeq _0800C12C\n"
|
||||
"\tldr r0, _0800C110\n"
|
||||
"\tldrh r1, [r0]\n"
|
||||
"\tsubs r0, r1, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbhi _0800C120\n"
|
||||
"\tstrh r7, [r4]\n"
|
||||
"\tldr r1, _0800C114\n"
|
||||
"\tmovs r0, 0x10\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r0, _0800C118\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, _0800C11C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tbl m4aMPlayFadeOutTemporarily\n"
|
||||
"\tb _0800C15E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800C0FC: .4byte 0x000003e5\n"
|
||||
"_0800C100: .4byte gUnknown_202D68E\n"
|
||||
"_0800C104: .4byte gUnknown_202D690\n"
|
||||
"_0800C108: .4byte gCurrentBGSong\n"
|
||||
"_0800C10C: .4byte 0x000003e7\n"
|
||||
"_0800C110: .4byte gBGMusicPlayerState\n"
|
||||
"_0800C114: .4byte gUnknown_202D692\n"
|
||||
"_0800C118: .4byte gUnknown_202D694\n"
|
||||
"_0800C11C: .4byte gMPlayInfo_BGM\n"
|
||||
"_0800C120:\n"
|
||||
"\tlsls r0, r1, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tcmp r0, 0x3\n"
|
||||
"\tbne _0800C12C\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tb _0800C15C\n"
|
||||
"_0800C12C:\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"\tstrh r0, [r4]\n"
|
||||
"\tldr r0, _0800C140\n"
|
||||
"\tbl m4aMPlayStop\n"
|
||||
"\tldrh r0, [r6]\n"
|
||||
"\tbl m4aSongNumStart\n"
|
||||
"\tb _0800C15E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800C140: .4byte gMPlayInfo_BGM\n"
|
||||
"_0800C144:\n"
|
||||
"\tsubs r0, 0x1\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbls _0800C15E\n"
|
||||
"\tldr r0, _0800C17C\n"
|
||||
"\tbl m4aMPlayStop\n"
|
||||
"\tldrh r0, [r6]\n"
|
||||
"\tbl m4aSongNumStart\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"_0800C15C:\n"
|
||||
"\tstrh r0, [r4]\n"
|
||||
"_0800C15E:\n"
|
||||
"\tldr r0, _0800C180\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tcmp r0, 0x26\n"
|
||||
"\tbgt _0800C184\n"
|
||||
"\tcmp r0, 0x25\n"
|
||||
"\tbge _0800C19A\n"
|
||||
"\tcmp r0, 0x1A\n"
|
||||
"\tblt _0800C1A0\n"
|
||||
"\tcmp r0, 0x1F\n"
|
||||
"\tble _0800C19A\n"
|
||||
"\tcmp r0, 0x23\n"
|
||||
"\tbgt _0800C1A0\n"
|
||||
"\tcmp r0, 0x22\n"
|
||||
"\tblt _0800C1A0\n"
|
||||
"\tb _0800C19A\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800C17C: .4byte gMPlayInfo_BGM\n"
|
||||
"_0800C180: .4byte gCurrentBGSong\n"
|
||||
"_0800C184:\n"
|
||||
"\tcmp r0, 0x7A\n"
|
||||
"\tbeq _0800C19A\n"
|
||||
"\tcmp r0, 0x7A\n"
|
||||
"\tbgt _0800C196\n"
|
||||
"\tcmp r0, 0x77\n"
|
||||
"\tbgt _0800C1A0\n"
|
||||
"\tcmp r0, 0x75\n"
|
||||
"\tblt _0800C1A0\n"
|
||||
"\tb _0800C19A\n"
|
||||
"_0800C196:\n"
|
||||
"\tcmp r0, 0x7F\n"
|
||||
"\tbne _0800C1A0\n"
|
||||
"_0800C19A:\n"
|
||||
"\tldr r1, _0800C1AC\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"_0800C1A0:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0800C208\n"
|
||||
"\tbl EnableInterrupts\n"
|
||||
"\tb _0800C208\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800C1AC: .4byte gUnknown_202D694\n"
|
||||
"_0800C1B0:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl sub_800CAAC\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0800C208\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetMusicPlayerIndex\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tlsls r2, r0, 3\n"
|
||||
"\tldr r1, _0800C1D8\n"
|
||||
"\tadds r4, r2, r1\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbhi _0800C1DC\n"
|
||||
"_0800C1D0:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl nullsub_20\n"
|
||||
"\tb _0800C208\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800C1D8: .4byte gUnknown_3000FD8\n"
|
||||
"_0800C1DC:\n"
|
||||
"\tbl DisableInterrupts\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r5, r0, 24\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tbl m4aSongNumStart\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrh r0, [r4]\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tstrh r0, [r4, 0x2]\n"
|
||||
"\tcmp r6, r7\n"
|
||||
"\tbne _0800C1FA\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tb _0800C1FC\n"
|
||||
"_0800C1FA:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"_0800C1FC:\n"
|
||||
"\tstrb r0, [r4, 0x6]\n"
|
||||
"\tstrh r6, [r4, 0x4]\n"
|
||||
"\tcmp r5, 0\n"
|
||||
"\tbeq _0800C208\n"
|
||||
"\tbl EnableInterrupts\n"
|
||||
"_0800C208:\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_800C214(u16 songIndex, u16 volume)
|
||||
{
|
||||
@@ -940,14 +735,14 @@ void sub_800C298(u16 songIndex)
|
||||
struct unkStruct_3000FD8 *preload;
|
||||
struct unkStruct_3000FD8 *puVar3;
|
||||
|
||||
if (songIndex == 0x3e5) {
|
||||
if (songIndex == 997) {
|
||||
cVar1 = DisableInterrupts();
|
||||
|
||||
for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++)
|
||||
{
|
||||
m4aMPlayStop(gMPlayTable[iVar4].info);
|
||||
puVar3->unk0 = 0;
|
||||
puVar3->songIndex = 0x3e5;
|
||||
puVar3->songIndex = 997;
|
||||
puVar3->unk4 = 0;
|
||||
puVar3->unk6 = 0;
|
||||
}
|
||||
@@ -955,7 +750,7 @@ void sub_800C298(u16 songIndex)
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
else if (sub_800CAAC(songIndex) != '\0')
|
||||
else if (sub_800CAAC(songIndex))
|
||||
{
|
||||
uVar2 = GetMusicPlayerIndex(songIndex);
|
||||
puVar6 = gMPlayTable[uVar2].info;
|
||||
@@ -968,7 +763,7 @@ void sub_800C298(u16 songIndex)
|
||||
if (preload->songIndex == songIndex) {
|
||||
m4aMPlayStop(puVar6);
|
||||
preload->unk0 = 0;
|
||||
preload->songIndex = 0x3e5;
|
||||
preload->songIndex = 997;
|
||||
preload->unk4 = 0;
|
||||
preload->unk6 = 0;
|
||||
}
|
||||
@@ -977,12 +772,12 @@ void sub_800C298(u16 songIndex)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (songIndex == 0x3e6)
|
||||
else if (songIndex == 998)
|
||||
{
|
||||
cVar3 = DisableInterrupts();
|
||||
if (gUnknown_202D690 != 0) {
|
||||
if (gUnknown_202D68E != 0x3e5) {
|
||||
gUnknown_202D68E = 0x3e5;
|
||||
if (gUnknown_202D68E != 997) {
|
||||
gUnknown_202D68E = 997;
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
}
|
||||
}
|
||||
@@ -990,12 +785,12 @@ void sub_800C298(u16 songIndex)
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
else if (sub_800CACC(songIndex) != '\0')
|
||||
else if (sub_800CACC(songIndex))
|
||||
{
|
||||
cVar4 = DisableInterrupts();
|
||||
if (gUnknown_202D690 != 0) {
|
||||
if (gUnknown_202D68E == songIndex) {
|
||||
gUnknown_202D68E = 0x3e5;
|
||||
gUnknown_202D68E = 997;
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
}
|
||||
}
|
||||
@@ -1031,19 +826,18 @@ void sub_800C3F8(u16 songIndex, u16 speed)
|
||||
}
|
||||
}
|
||||
|
||||
if (songIndex == 0x3e5) {
|
||||
if (songIndex == 997) {
|
||||
cVar1 = DisableInterrupts();
|
||||
|
||||
for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++)
|
||||
{
|
||||
if (puVar3->songIndex != 0x3e5) {
|
||||
if (puVar3->songIndex != 997) {
|
||||
if (sub_800CAF0(uVar6) != '\0') {
|
||||
m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed);
|
||||
}
|
||||
else {
|
||||
m4aMPlayStop(gMPlayTable[uVar6].info);
|
||||
puVar3->unk0 = 0;
|
||||
puVar3->songIndex = 0x3e5;
|
||||
puVar3->songIndex = 997;
|
||||
puVar3->unk4 = 0;
|
||||
puVar3->unk6 = 0;
|
||||
}
|
||||
@@ -1054,19 +848,19 @@ void sub_800C3F8(u16 songIndex, u16 speed)
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (sub_800CAAC(songIndex) != '\0') {
|
||||
if (sub_800CAAC(songIndex)) {
|
||||
uVar8 = GetMusicPlayerIndex(songIndex);
|
||||
preload = &gUnknown_3000FD8[uVar8];
|
||||
puVar5 = gMPlayTable[uVar8].info;
|
||||
cVar2 = DisableInterrupts();
|
||||
if (preload->songIndex != 0x3e5) {
|
||||
if (preload->songIndex != 997) {
|
||||
if (sub_800CAF0(uVar8) != '\0') {
|
||||
m4aMPlayFadeOut(puVar5,speed);
|
||||
}
|
||||
else {
|
||||
m4aMPlayStop(puVar5);
|
||||
preload->unk0 = 0;
|
||||
preload->songIndex = 0x3e5;
|
||||
preload->songIndex = 997;
|
||||
preload->unk4 = 0;
|
||||
preload->unk6 = 0;
|
||||
}
|
||||
@@ -1075,39 +869,34 @@ void sub_800C3F8(u16 songIndex, u16 speed)
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (songIndex == 0x3e6) {
|
||||
cVar3 = DisableInterrupts();
|
||||
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 0x3e5)) {
|
||||
if (sub_800CAF0(1) != '\0') {
|
||||
m4aMPlayFadeOut(&gUnknown_2000970,speed);
|
||||
}
|
||||
else {
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
gUnknown_202D68E = 0x3e5;
|
||||
}
|
||||
else if (songIndex == 998) {
|
||||
cVar3 = DisableInterrupts();
|
||||
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 997)) {
|
||||
if (sub_800CAF0(1) != '\0') {
|
||||
m4aMPlayFadeOut(&gUnknown_2000970,speed);
|
||||
}
|
||||
if (cVar3 != '\0') {
|
||||
EnableInterrupts();
|
||||
else {
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
gUnknown_202D68E = 997;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (sub_800CACC(songIndex) != '\0') {
|
||||
cVar4 = DisableInterrupts();
|
||||
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
|
||||
if (sub_800CAF0(1) != '\0') {
|
||||
m4aMPlayFadeOut(&gUnknown_2000970,speed);
|
||||
}
|
||||
else {
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
gUnknown_202D68E = 0x3e5;
|
||||
}
|
||||
}
|
||||
if (cVar4 != '\0') {
|
||||
EnableInterrupts();
|
||||
}
|
||||
if (cVar3 != '\0') {
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
else if (sub_800CACC(songIndex)) {
|
||||
cVar4 = DisableInterrupts();
|
||||
if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
|
||||
if (sub_800CAF0(1) != '\0') {
|
||||
m4aMPlayFadeOut(&gUnknown_2000970,speed);
|
||||
}
|
||||
else {
|
||||
m4aMPlayStop(&gUnknown_2000970);
|
||||
gUnknown_202D68E = 997;
|
||||
}
|
||||
}
|
||||
if (cVar4 != '\0') {
|
||||
EnableInterrupts();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,10 +49,10 @@ extern s32 gUnknown_810AC90[10];
|
||||
|
||||
extern void AddSprite(u16 *, u32, u32, u32);
|
||||
|
||||
extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
|
||||
extern void SavePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
|
||||
void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
|
||||
void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
|
||||
void RestorePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
|
||||
|
||||
@@ -685,7 +685,7 @@ s32 SaveRecruitedPokemon(u8 *a1, s32 a2)
|
||||
if (pokemon->unk0 & 2) {
|
||||
buffer[count++] = i;
|
||||
}
|
||||
if (pokemon->unk2) {
|
||||
if (pokemon->isLeader) {
|
||||
data_s16 = i;
|
||||
}
|
||||
}
|
||||
@@ -745,7 +745,7 @@ s32 RestoreRecruitedPokemon(u8 *a1, s32 a2)
|
||||
}
|
||||
RestoreIntegerBits(&backup, &data_s16, 16);
|
||||
if ((u16)data_s16 < NUM_SPECIES) {
|
||||
gRecruitedPokemonRef->pokemon[data_s16].unk2 = 1;
|
||||
gRecruitedPokemonRef->pokemon[data_s16].isLeader = 1;
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
@@ -755,7 +755,7 @@ void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokem
|
||||
{
|
||||
SaveIntegerBits(a1, &pokemon->unkHasNextStage, 7);
|
||||
SaveIntegerBits(a1, &pokemon->speciesNum, 9);
|
||||
xxx_save_poke_sub_4_80902F4(a1, &pokemon->unk4);
|
||||
SaveDungeonLocation(a1, &pokemon->unk4);
|
||||
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[0]);
|
||||
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[1]);
|
||||
SaveIntegerBits(a1, &pokemon->IQ, 10);
|
||||
@@ -776,13 +776,13 @@ void RestorePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* po
|
||||
{
|
||||
memset(pokemon, 0, sizeof(struct PokemonStruct));
|
||||
pokemon->unk0 = 0;
|
||||
pokemon->unk2 = 0;
|
||||
pokemon->isLeader = 0;
|
||||
RestoreIntegerBits(a1, &pokemon->unkHasNextStage, 7);
|
||||
if (pokemon->unkHasNextStage) {
|
||||
pokemon->unk0 |= 1;
|
||||
}
|
||||
RestoreIntegerBits(a1, &pokemon->speciesNum, 9);
|
||||
xxx_restore_poke_sub_4_8090314(a1, &pokemon->unk4);
|
||||
RestoreDungeonLocation(a1, &pokemon->unk4);
|
||||
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[0]);
|
||||
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[1]);
|
||||
RestoreIntegerBits(a1, &pokemon->IQ, 10);
|
||||
@@ -814,10 +814,10 @@ s32 SavePokemonStruct2(u8* a1, s32 size)
|
||||
struct PokemonStruct2* pokemon2 = &gRecruitedPokemonRef->pokemon2[i];
|
||||
SaveIntegerBits(&backup, &pokemon2->unk0, 2);
|
||||
|
||||
SaveIntegerBits(&backup, pokemon2->unk2 ? &data_u8_neg1 : &data_u8_zero, 1);
|
||||
SaveIntegerBits(&backup, pokemon2->isLeader ? &data_u8_neg1 : &data_u8_zero, 1);
|
||||
SaveIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
|
||||
|
||||
xxx_save_poke_sub_4_80902F4(&backup, &pokemon2->unk4);
|
||||
SaveDungeonLocation(&backup, &pokemon2->unk4);
|
||||
SaveIntegerBits(&backup, &pokemon2->IQ, 10);
|
||||
SaveIntegerBits(&backup, &pokemon2->unkA, 16);
|
||||
SaveIntegerBits(&backup, &pokemon2->unkC, 16);
|
||||
@@ -858,14 +858,14 @@ s32 RestorePokemonStruct2(u8* a1, s32 size)
|
||||
|
||||
RestoreIntegerBits(&backup, &unk2, 1);
|
||||
if (unk2 & 1) {
|
||||
pokemon2->unk2 = TRUE;
|
||||
pokemon2->isLeader = TRUE;
|
||||
}
|
||||
else {
|
||||
pokemon2->unk2 = FALSE;
|
||||
pokemon2->isLeader = FALSE;
|
||||
}
|
||||
RestoreIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
|
||||
|
||||
xxx_restore_poke_sub_4_8090314(&backup, &pokemon2->unk4);
|
||||
RestoreDungeonLocation(&backup, &pokemon2->unk4);
|
||||
RestoreIntegerBits(&backup, &pokemon2->IQ, 10);
|
||||
RestoreIntegerBits(&backup, &pokemon2->unkA, 16);
|
||||
RestoreIntegerBits(&backup, &pokemon2->unkC, 16);
|
||||
|
||||
@@ -529,7 +529,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po
|
||||
a1->IQSkills = pokemon->IQSkills;
|
||||
sub_808E6F4(&a1->unk54);
|
||||
a1->unk4 = pokemon->unk4;
|
||||
a1->unk2 = pokemon->unk2;
|
||||
a1->isLeader = pokemon->isLeader;
|
||||
a1->unkA = a3;
|
||||
a1->speciesNum = pokemon->speciesNum;
|
||||
a1->unk50 = pokemon->unk24;
|
||||
@@ -582,7 +582,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct
|
||||
pokemon->IQ = a2->IQ;
|
||||
pokemon->IQSkills = a2->IQSkills;
|
||||
pokemon->unk4 = a2->unk4;
|
||||
pokemon->unk2 = a2->unk2;
|
||||
pokemon->isLeader = a2->isLeader;
|
||||
pokemon->speciesNum = a2->speciesNum;
|
||||
pokemon->unk24 = a2->unk50;
|
||||
pokemon->pokeHP = a2->unk12;
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "sub_8095228.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
struct PostOfficeHelper
|
||||
{
|
||||
@@ -29,7 +31,7 @@ struct unkStruct_203B330
|
||||
struct UnkInputStruct *unk0;
|
||||
u8 fill4[0x8];
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 dungeonIndex;
|
||||
u8 fillE[2];
|
||||
u32 unk10;
|
||||
struct UnkTextStruct2 *unk14;
|
||||
@@ -41,11 +43,19 @@ EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330;
|
||||
extern const char GetHelp_Text[];
|
||||
extern const char GoRescue_Text[];
|
||||
extern const char FriendRescueInfo_Text[];
|
||||
|
||||
extern const char FriendRescue_80E0A80[];
|
||||
extern const char Delivery_Text[];
|
||||
extern const char BulletinBoard_Text[];
|
||||
extern const char PostOffice_Text[];
|
||||
extern u8 gUnknown_80E1F30[];
|
||||
extern u8 gUnknown_80E1F3C[];
|
||||
extern u8 gUnknown_80E1F60[];
|
||||
extern u8 gUnknown_80E1F70[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gUnknown_80E1F80[];
|
||||
extern u8 gUnknown_80E1F40[];
|
||||
extern u8 gUnknown_80E1F54[];
|
||||
extern u8 gUnknown_80E1F94[];
|
||||
|
||||
enum PostOfficeStates
|
||||
{
|
||||
@@ -166,7 +176,19 @@ extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32
|
||||
extern u32 sub_8012A64(struct UnkInputStruct**, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8031A84();
|
||||
extern void sub_8031AE8();
|
||||
extern void DisplayMissionObjectives();
|
||||
extern u8 *GetCurrentMissionText(s16 r0);
|
||||
extern u8 *sub_80975DC(u32 r0);
|
||||
extern u8 sub_8099360(u8 *);
|
||||
extern u8 sub_8099394(u8 *);
|
||||
extern struct WonderMail *GetJobSlotInfo(u8);
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sprintf_2(char *buffer, const char *text, ...);
|
||||
extern void sub_803B6B0(u32, u32, u32, u32);
|
||||
extern s16 sub_80A2688(u8 r0);
|
||||
extern u8 sub_80992E0(s16 *, s16 *);
|
||||
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
@@ -504,12 +526,12 @@ void ReturnToGetHelpMenu(void)
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_80319A4(u8 param_1,u8 param_2,int param_3)
|
||||
u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3)
|
||||
{
|
||||
|
||||
gUnknown_203B330 = MemoryAlloc(sizeof(struct unkStruct_203B330),8);
|
||||
gUnknown_203B330->unkC = param_1;
|
||||
gUnknown_203B330->unkD = param_2;
|
||||
gUnknown_203B330->dungeonIndex = dungeon;
|
||||
sub_801317C(&gUnknown_203B330->unk0);
|
||||
gUnknown_203B330->unk10 = param_3;
|
||||
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
|
||||
@@ -535,7 +557,7 @@ u32 sub_80319F8(void)
|
||||
void sub_8031A2C(void)
|
||||
{
|
||||
sub_8031A84();
|
||||
sub_8031AE8();
|
||||
DisplayMissionObjectives();
|
||||
}
|
||||
|
||||
void sub_8031A3C(void)
|
||||
@@ -557,7 +579,7 @@ void sub_8031A84(void)
|
||||
sub_8006518(gUnknown_203B330->unk18);
|
||||
gUnknown_203B330->unk18[gUnknown_203B330->unk10] = gUnknown_80E1F18;
|
||||
if (gUnknown_203B330->unkC == 2) {
|
||||
iVar1 = sub_80969D0(gUnknown_203B330->unkD);
|
||||
iVar1 = sub_80969D0(gUnknown_203B330->dungeonIndex);
|
||||
if (iVar1 == 0) {
|
||||
iVar1 = 1;
|
||||
}
|
||||
@@ -566,3 +588,96 @@ void sub_8031A84(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B330->unk18,1,1);
|
||||
}
|
||||
|
||||
void DisplayMissionObjectives(void)
|
||||
{
|
||||
s32 yCoord;
|
||||
s32 jobSlotIdx;
|
||||
struct unkStruct_8095228 *iVar8;
|
||||
struct WonderMail *jobInfo;
|
||||
u8 auStack248 [100];
|
||||
u8 local_94 [4];
|
||||
u8 auStack144 [100];
|
||||
short auStack44;
|
||||
short local_2a;
|
||||
u8 local_test;
|
||||
|
||||
sub_80073B8(gUnknown_203B330->unk10);
|
||||
// Objectives
|
||||
xxx_call_draw_string(10,0,gUnknown_80E1F30,gUnknown_203B330->unk10,0);
|
||||
switch(gUnknown_203B330->unkC)
|
||||
{
|
||||
case 1:
|
||||
sub_8099394(local_94);
|
||||
iVar8 = sub_8095228(local_94[0]);
|
||||
sub_803B6B0(10,16,3,gUnknown_203B330->unk10);
|
||||
// %dF
|
||||
sprintf_2(auStack248,gUnknown_80E1F3C,iVar8->floor);
|
||||
xxx_call_draw_string(0x15,16,auStack248,gUnknown_203B330->unk10,0);
|
||||
// Rescue #C6%s#R
|
||||
sprintf_2(auStack248,gUnknown_80E1F40,GetMonSpecies(iVar8->clientSpecies));
|
||||
xxx_call_draw_string(0x28,16,auStack248,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
case 2:
|
||||
if (sub_80969D0(gUnknown_203B330->dungeonIndex) == 0) {
|
||||
// Just go!
|
||||
xxx_call_draw_string(10,16,gUnknown_80E1F54,gUnknown_203B330->unk10,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
yCoord = 16;
|
||||
|
||||
// 8 Job Slots... check each of them
|
||||
for(jobSlotIdx = 0; jobSlotIdx < 8; jobSlotIdx++)
|
||||
{
|
||||
jobInfo = GetJobSlotInfo(jobSlotIdx);
|
||||
if ((((jobInfo->dungeon == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
|
||||
) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) {
|
||||
sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10);
|
||||
if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) {
|
||||
sprintf_2(auStack144,gUnknown_80E1F3C,jobInfo->floor);
|
||||
xxx_call_draw_string(21,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
}
|
||||
switch(jobInfo->missionType)
|
||||
{
|
||||
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
|
||||
// Bring #C4%s#R
|
||||
sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
|
||||
sprintf_2(auStack144,gUnknown_80E1F60,gUnknown_202DE58);
|
||||
xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
|
||||
// Find #C4%s#R
|
||||
sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
|
||||
sprintf_2(auStack144,gUnknown_80E1F70,gUnknown_202DE58);
|
||||
xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
|
||||
// Escort to #C6$s#R
|
||||
sprintf_2(auStack144,gUnknown_80E1F80,GetMonSpecies(jobInfo->targetSpecies));
|
||||
xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
default:
|
||||
// Rescue #C6%s#R
|
||||
sprintf_2(auStack144,gUnknown_80E1F40,GetMonSpecies(jobInfo->targetSpecies));
|
||||
xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
}
|
||||
yCoord = yCoord + 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 0:
|
||||
default:
|
||||
if (sub_80992E0(&auStack44,&local_2a) != 0)
|
||||
xxx_call_draw_string(10,16,GetCurrentMissionText(local_2a),gUnknown_203B330->unk10,0);
|
||||
else if (sub_8099360(&local_test) != 0)
|
||||
xxx_call_draw_string(10,16,sub_80975DC(sub_80A2688(local_test)),gUnknown_203B330->unk10,0);
|
||||
else
|
||||
xxx_call_draw_string(10,16,gUnknown_80E1F94,gUnknown_203B330->unk10,0);
|
||||
break;
|
||||
}
|
||||
sub_80073E0(gUnknown_203B330->unk10);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
|
||||
case MENU_DISPLAY_RESCUE_PASSWORD:
|
||||
temp = sub_8095228(0x1F);
|
||||
MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_8095228));
|
||||
temp->unk0 = 2;
|
||||
temp->mailType = 2;
|
||||
temp->unk20.itemIndex = ITEM_ID_NOTHING;
|
||||
sub_8031D70(0x1F, 0);
|
||||
break;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -251,7 +251,7 @@ extern void sub_801CB5C(u32);
|
||||
extern void sub_801CCD8(void);
|
||||
extern void sub_8011C28(u32);
|
||||
extern u32 sub_80154F0(void);
|
||||
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
|
||||
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
|
||||
extern u8 sub_809539C(u32, u32);
|
||||
|
||||
|
||||
@@ -829,7 +829,7 @@ void HandleThankYouMailPasswordMenu(void)
|
||||
switch(return_var)
|
||||
{
|
||||
case 3:
|
||||
switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
|
||||
switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp))
|
||||
{
|
||||
case 0x11:
|
||||
// Wrong password
|
||||
@@ -851,7 +851,7 @@ void HandleThankYouMailPasswordMenu(void)
|
||||
uVar1 = sub_809539C(4,temp.unk10);
|
||||
puVar5 = sub_8095228(uVar1);
|
||||
*puVar5 = temp;
|
||||
puVar5->unk0 = 6;
|
||||
puVar5->mailType = 6;
|
||||
gUnknown_203B2C4->unk430 = temp.unk10;
|
||||
SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
|
||||
break;
|
||||
@@ -1423,7 +1423,7 @@ void UpdateThankYouMailText(void)
|
||||
else
|
||||
gUnknown_203B2C4->unk53C.itemRewards[0] = 0; // unk558
|
||||
gUnknown_203B2C4->unk53C.numItems = 1; // unk55B
|
||||
gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->unk4, 0); // unk560
|
||||
gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->dungeon, 0); // unk560
|
||||
gUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559
|
||||
gUnknown_203B2C4->unk53C.itemRewards[2] = 0; // unk55A
|
||||
gUnknown_203B2C4->unk53C.friendAreaReward = 0; // unk55C
|
||||
|
||||
@@ -46,11 +46,11 @@ extern void sub_8030DE4(void);
|
||||
extern void sub_803092C(void);
|
||||
|
||||
extern u32 sub_80154F0();
|
||||
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
|
||||
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
|
||||
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32);
|
||||
extern void sub_8095274(u32);
|
||||
extern void sub_80155F0();
|
||||
extern void sub_80951BC(u8 *r0);
|
||||
extern void sub_80951BC(struct unkStruct_8095228 *r0);
|
||||
extern void sub_8013114(u32 *r0, s32 *r1);
|
||||
extern void sub_8023C60();
|
||||
extern u32 sub_8023A94(u32);
|
||||
@@ -1171,7 +1171,7 @@ void sub_8028FDC(void)
|
||||
{
|
||||
case 8:
|
||||
return_var = sub_8095228(gUnknown_203B2C0->unk218);
|
||||
if(sub_80A2824(return_var->unk4) == 0)
|
||||
if(sub_80A2824(return_var->dungeon) == 0)
|
||||
{
|
||||
sub_8028B04(0x1C);
|
||||
}
|
||||
@@ -1459,7 +1459,7 @@ void sub_80293F4(void)
|
||||
switch(return_var)
|
||||
{
|
||||
case 3:
|
||||
switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0))
|
||||
switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp))
|
||||
{
|
||||
case 17:
|
||||
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, gUnknown_80DDA48, 0, 4, 0, &gUnknown_203B2C0->faceFile, 0xC);
|
||||
@@ -1475,8 +1475,8 @@ void sub_80293F4(void)
|
||||
break;
|
||||
case 22:
|
||||
sub_8095274(temp.unk10);
|
||||
temp.unk0 = 2; // Some sort of Ack?
|
||||
sub_80951BC(&temp.unk0);
|
||||
temp.mailType = 2;
|
||||
sub_80951BC(&temp);
|
||||
sub_80141B4(gWonderMailAOKMailReceivedText, 0, &gUnknown_203B2C0->faceFile, 0x101);
|
||||
sub_8028B04(35);
|
||||
break;
|
||||
|
||||
@@ -386,8 +386,8 @@ void sub_802B3E0(void)
|
||||
gUnknown_203B2C8->unk114.moneyReward = 0;
|
||||
sub_8097790();
|
||||
iVar3 = sub_8095228(gUnknown_203B2C8->unk1);
|
||||
sub_803C37C(&iVar3->unk4, 0, gUnknown_203B2C8->unk114.itemRewards);
|
||||
gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->unk4, 0);
|
||||
sub_803C37C(&iVar3->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards);
|
||||
gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->dungeon, 0);
|
||||
gUnknown_203B2C8->unk114.itemRewards[1] = 0;
|
||||
gUnknown_203B2C8->unk114.itemRewards[2] = 0;
|
||||
gUnknown_203B2C8->unk114.numItems = 10;
|
||||
@@ -447,7 +447,7 @@ void sub_802B5B8(void)
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
uVar2 = sub_8011C34();
|
||||
puVar3 = sub_8095228(gUnknown_203B2C8->unk1);
|
||||
puVar3->unk0 = 4;
|
||||
puVar3->mailType = 4;
|
||||
puVar3->unk28 = uVar2;
|
||||
sub_802B548(3);
|
||||
sub_8011C28(1);
|
||||
|
||||
@@ -85,7 +85,7 @@ extern u8 sub_8096C08(u8 *);
|
||||
extern void sub_802C750(void);
|
||||
extern void sub_802D1A0(u32);
|
||||
extern void sub_8012EA4(u8 *, u32);
|
||||
extern void* sub_8096AB4(u8);
|
||||
extern struct WonderMail* GetJobSlotInfo(u8);
|
||||
extern void sub_803B35C(void *, u32*);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_802D73C(void);
|
||||
@@ -321,7 +321,7 @@ void sub_802D2A8(void)
|
||||
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
|
||||
break;
|
||||
case 0xf:
|
||||
sub_803B35C(sub_8096AB4(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
|
||||
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
|
||||
@@ -16,9 +16,8 @@ struct unkStruct_203B2FC
|
||||
s16 unkE;
|
||||
u8 unk10;
|
||||
u8 fill11[0x30 - 0x11];
|
||||
u8 unk30;
|
||||
u8 fill31[3];
|
||||
struct WonderMail *unk34;
|
||||
u8 jobSlot;
|
||||
struct WonderMail *jobInfo;
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *faceData;
|
||||
u16 unk40;
|
||||
@@ -76,16 +75,16 @@ extern void sub_802DC40(void);
|
||||
extern void sub_802DC9C(void);
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
struct WonderMail *sub_8096AB4(u8);
|
||||
struct WonderMail *GetJobSlotInfo(u8);
|
||||
extern void sub_8096AF8(u8 *, u32, u32);
|
||||
extern void sub_8096EEC(void);
|
||||
extern void sub_803C21C(struct WonderMail *, u32 *);
|
||||
|
||||
u32 sub_802DB28(u8 param_1, u8 param_2)
|
||||
u32 sub_802DB28(u8 jobSlot, u8 param_2)
|
||||
{
|
||||
char local_18 [8];
|
||||
|
||||
sub_8096AF8(local_18,param_1,param_2);
|
||||
sub_8096AF8(local_18,jobSlot,param_2);
|
||||
if (local_18[0] == '\0') {
|
||||
return 0;
|
||||
}
|
||||
@@ -93,11 +92,11 @@ u32 sub_802DB28(u8 param_1, u8 param_2)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC),8);
|
||||
gUnknown_203B2FC->unk30 = param_1;
|
||||
gUnknown_203B2FC->unk34 = sub_8096AB4(param_1);
|
||||
gUnknown_203B2FC->jobSlot = jobSlot;
|
||||
gUnknown_203B2FC->jobInfo = GetJobSlotInfo(jobSlot);
|
||||
sub_8096EEC();
|
||||
sub_803C21C(gUnknown_203B2FC->unk34,&gUnknown_203B2FC->unk8);
|
||||
gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
sub_803C21C(gUnknown_203B2FC->jobInfo,&gUnknown_203B2FC->unk8);
|
||||
gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->jobInfo->clientSpecies);
|
||||
gUnknown_203B2FC->faceData = NULL;
|
||||
gUnknown_203B2FC->unk44 = 0;
|
||||
gUnknown_203B2FC->unk45 = 0;
|
||||
@@ -117,7 +116,7 @@ u32 sub_802DBD4(void)
|
||||
switch(gUnknown_203B2FC->state)
|
||||
{
|
||||
case 7:
|
||||
gUnknown_203B2FC->unk34->mailType = 7;
|
||||
gUnknown_203B2FC->jobInfo->mailType = 7;
|
||||
return 3;
|
||||
case 6:
|
||||
sub_802DE44();
|
||||
@@ -173,16 +172,16 @@ void sub_802DC9C(void)
|
||||
|
||||
switch(gUnknown_203B2FC->state) {
|
||||
case 0:
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->unk34->clientSpecies);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->unk34->clientSpecies);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->jobInfo->clientSpecies);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->jobInfo->clientSpecies);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->clientSpecies);
|
||||
strcpy(gUnknown_202E1C8 + 0xfffffdd0,speciesText);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->targetSpecies);
|
||||
strcpy(gUnknown_202E1C8 + 0xfffffe20,speciesText);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->unk34->targetItem,0);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->clientSpecies);
|
||||
sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->jobInfo->targetItem,0);
|
||||
gUnknown_203B2FC->fallbackState = 6;
|
||||
switch(gUnknown_203B2FC->unk34->missionType) {
|
||||
switch(gUnknown_203B2FC->jobInfo->missionType) {
|
||||
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
|
||||
sub_802DC28(5);
|
||||
break;
|
||||
@@ -191,11 +190,11 @@ void sub_802DC9C(void)
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
|
||||
sub_802DC28(2);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
|
||||
sub_802DC28(3);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
|
||||
break;
|
||||
default:
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
|
||||
@@ -216,7 +215,7 @@ void sub_802DC9C(void)
|
||||
sub_80141B4(gWonderMailClientItemDelivered1,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 4:
|
||||
index = FindItemInInventory(gUnknown_203B2FC->unk34->targetItem);
|
||||
index = FindItemInInventory(gUnknown_203B2FC->jobInfo->targetItem);
|
||||
if (index != -1) {
|
||||
ShiftItemsDownFrom(index);
|
||||
FillInventoryGaps();
|
||||
|
||||
Reference in New Issue
Block a user