Merge pull request #100 from SethBarberee/save_work

Save work
This commit is contained in:
Seth Barberee
2022-03-25 09:39:44 -07:00
committed by GitHub
58 changed files with 2008 additions and 3630 deletions

266
asm/code_8031D70.s Normal file
View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -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
View 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

View File

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

213
asm/code_8097DD0.s Normal file
View File

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

View File

@@ -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.

View File

@@ -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:

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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
View 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

View File

@@ -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

View File

@@ -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];

View File

@@ -32,4 +32,9 @@
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
struct DungeonLocation {
u8 dungeonIndex;
u8 dungeonFloor;
};
#endif // GUARD_GLOBAL_H

View File

@@ -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);

View File

@@ -15,7 +15,7 @@ struct unkStruct_203B210
u32 unkC;
s32 itemSellPrice;
u32 unk14;
u32 unk18;
s32 unk18;
struct ItemSlot unk1C;
u8 unk20;
u8 unk21;

View File

@@ -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;

View File

@@ -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];

View File

@@ -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);

View File

@@ -54,7 +54,7 @@ extern bool8 sub_8013938(void *);
extern void sub_8013660(void *);
extern void PlayMenuSoundEffect(u32);
extern u32 GetKeyPress(void *);
extern u8 sub_8097710(u8);
extern bool8 sub_8097710(u8);
extern s16 sub_80978B8();
extern s16 sub_8097880();
@@ -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

View File

@@ -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);
}

View File

@@ -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
View 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
View 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)
{}

View File

@@ -1,10 +1,5 @@
#include "global.h"
struct unkDungeonStruct
{
u8 index;
u8 floor;
};
#include "pokemon.h"
struct unkStruct_203B494
{
@@ -13,12 +8,12 @@ struct unkStruct_203B494
s32 numAdventures;
s32 unk8;
s32 unkC;
struct unkDungeonStruct dungeonLocation;
struct 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
View File

@@ -0,0 +1,90 @@
#include "global.h"
#include "code_8092334.h"
#include "pokemon.h"
struct unkStruct_203B494
{
// size: 0xC8?
u32 unk0; // 32 bit bitfield, I think
s32 numAdventures;
s32 unk8;
s32 unkC;
struct 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;
}

View File

@@ -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
View 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;
}

View File

@@ -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;

View File

@@ -113,7 +113,7 @@ void sub_8026A94(void)
static inline bool8 sub_8026AB0_sub(void) {
if (gUnknown_203B2B8->unk18->unk4.unk4 == 0x44 || gUnknown_203B2B8->unk18->unk4.unk4 == 0x45)
if (gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x44 || gUnknown_203B2B8->unk18->unk4.dungeonIndex == 0x45)
return TRUE;
else
return FALSE;
@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)
{

View File

@@ -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++;
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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();
}
}
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;

View File

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

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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();