mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-11 18:45:55 -05:00
Keep on keepin on (#38)
* end of may dump of work * move save text to src * decomp a little more
This commit is contained in:
@@ -6766,421 +6766,4 @@ _08015FE4:
|
||||
bx r0
|
||||
thumb_func_end sub_8015F84
|
||||
|
||||
thumb_func_start sub_8015FEC
|
||||
sub_8015FEC:
|
||||
push {r4-r7,lr}
|
||||
adds r2, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r7, 0
|
||||
movs r6, 0
|
||||
cmp r7, r5
|
||||
bge _08016020
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0
|
||||
beq _08016020
|
||||
adds r4, r2, 0
|
||||
_08016002:
|
||||
ldrb r0, [r4]
|
||||
bl ReturnIntFromChar2
|
||||
bl GetCharacter
|
||||
movs r1, 0x6
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r7, r0
|
||||
adds r4, 0x1
|
||||
adds r6, 0x1
|
||||
cmp r6, r5
|
||||
bge _08016020
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _08016002
|
||||
_08016020:
|
||||
adds r0, r7, 0
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8015FEC
|
||||
|
||||
thumb_func_start sub_8016028
|
||||
sub_8016028:
|
||||
movs r0, 0x3C
|
||||
bx lr
|
||||
thumb_func_end sub_8016028
|
||||
|
||||
thumb_func_start sub_801602C
|
||||
sub_801602C:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r5, r1, 0
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r4, _08016064
|
||||
movs r0, 0x50
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
adds r1, r0, 0
|
||||
str r1, [r4]
|
||||
str r6, [r1]
|
||||
str r5, [r1, 0x8]
|
||||
cmp r6, 0x1
|
||||
beq _0801606E
|
||||
cmp r6, 0x1
|
||||
bcc _08016068
|
||||
cmp r6, 0x2
|
||||
beq _0801606E
|
||||
cmp r6, 0x3
|
||||
beq _0801606E
|
||||
b _08016070
|
||||
.align 2, 0
|
||||
_08016064: .4byte gUnknown_203B200
|
||||
_08016068:
|
||||
movs r0, 0
|
||||
str r0, [r1, 0x4]
|
||||
b _08016070
|
||||
_0801606E:
|
||||
str r6, [r1, 0x4]
|
||||
_08016070:
|
||||
movs r0, 0
|
||||
bl sub_80160F4
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801602C
|
||||
|
||||
thumb_func_start sub_8016080
|
||||
sub_8016080:
|
||||
push {lr}
|
||||
ldr r0, _08016098
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0xC]
|
||||
cmp r0, 0x4
|
||||
bhi _080160D0
|
||||
lsls r0, 2
|
||||
ldr r1, _0801609C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08016098: .4byte gUnknown_203B200
|
||||
_0801609C: .4byte _080160A0
|
||||
.align 2, 0
|
||||
_080160A0:
|
||||
.4byte _080160B4
|
||||
.4byte _080160BA
|
||||
.4byte _080160C0
|
||||
.4byte _080160C6
|
||||
.4byte _080160CC
|
||||
_080160B4:
|
||||
bl sub_80161F8
|
||||
b _080160D0
|
||||
_080160BA:
|
||||
bl sub_8016248
|
||||
b _080160D0
|
||||
_080160C0:
|
||||
bl sub_8016280
|
||||
b _080160D0
|
||||
_080160C6:
|
||||
bl sub_801629C
|
||||
b _080160D0
|
||||
_080160CC:
|
||||
movs r0, 0x3
|
||||
b _080160D2
|
||||
_080160D0:
|
||||
movs r0, 0
|
||||
_080160D2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8016080
|
||||
|
||||
thumb_func_start sub_80160D8
|
||||
sub_80160D8:
|
||||
push {r4,lr}
|
||||
ldr r4, _080160F0
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _080160EA
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_080160EA:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080160F0: .4byte gUnknown_203B200
|
||||
thumb_func_end sub_80160D8
|
||||
|
||||
thumb_func_start sub_80160F4
|
||||
sub_80160F4:
|
||||
push {lr}
|
||||
ldr r1, _08016108
|
||||
ldr r1, [r1]
|
||||
str r0, [r1, 0xC]
|
||||
bl nullsub_36
|
||||
bl sub_8016110
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08016108: .4byte gUnknown_203B200
|
||||
thumb_func_end sub_80160F4
|
||||
|
||||
thumb_func_start nullsub_36
|
||||
nullsub_36:
|
||||
bx lr
|
||||
thumb_func_end nullsub_36
|
||||
|
||||
thumb_func_start sub_8016110
|
||||
sub_8016110:
|
||||
push {r4,lr}
|
||||
sub sp, 0x14
|
||||
ldr r4, _08016128
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r1, 0xC]
|
||||
cmp r0, 0x1
|
||||
beq _08016140
|
||||
cmp r0, 0x1
|
||||
bgt _0801612C
|
||||
cmp r0, 0
|
||||
beq _08016136
|
||||
b _080161B8
|
||||
.align 2, 0
|
||||
_08016128: .4byte gUnknown_203B200
|
||||
_0801612C:
|
||||
cmp r0, 0x2
|
||||
beq _08016194
|
||||
cmp r0, 0x3
|
||||
beq _080161AC
|
||||
b _080161B8
|
||||
_08016136:
|
||||
ldr r0, [r1, 0x4]
|
||||
ldr r1, [r1, 0x8]
|
||||
bl sub_80151C0
|
||||
b _080161B8
|
||||
_08016140:
|
||||
bl sub_80161C8
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r1, 0x4]
|
||||
cmp r0, 0x1
|
||||
bne _0801615C
|
||||
ldr r0, _08016158
|
||||
ldr r1, [r1, 0x8]
|
||||
movs r2, 0xA
|
||||
bl sub_80922B4
|
||||
b _08016166
|
||||
.align 2, 0
|
||||
_08016158: .4byte gAvailablePokemonNames
|
||||
_0801615C:
|
||||
ldr r0, _08016188
|
||||
ldr r1, [r1, 0x8]
|
||||
movs r2, 0xA
|
||||
bl sub_80922B4
|
||||
_08016166:
|
||||
ldr r0, _0801618C
|
||||
ldr r1, _08016190
|
||||
ldr r3, [r1]
|
||||
adds r3, 0x10
|
||||
movs r2, 0
|
||||
str r2, [sp]
|
||||
movs r1, 0x4
|
||||
str r1, [sp, 0x4]
|
||||
str r2, [sp, 0x8]
|
||||
str r2, [sp, 0xC]
|
||||
movs r1, 0x20
|
||||
str r1, [sp, 0x10]
|
||||
movs r1, 0
|
||||
movs r2, 0x3
|
||||
bl sub_8014248
|
||||
b _080161B8
|
||||
.align 2, 0
|
||||
_08016188: .4byte gAvailablePokemonNames
|
||||
_0801618C: .4byte gUnknown_80DB688
|
||||
_08016190: .4byte gUnknown_203B200
|
||||
_08016194:
|
||||
ldr r0, _080161A4
|
||||
ldr r3, _080161A8
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
b _080161B8
|
||||
.align 2, 0
|
||||
_080161A4: .4byte gUnknown_80DB6A4
|
||||
_080161A8: .4byte 0x00000121
|
||||
_080161AC:
|
||||
ldr r0, _080161C0
|
||||
ldr r3, _080161C4
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
_080161B8:
|
||||
add sp, 0x14
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080161C0: .4byte gUnknown_80DB6BC
|
||||
_080161C4: .4byte 0x00000121
|
||||
thumb_func_end sub_8016110
|
||||
|
||||
thumb_func_start sub_80161C8
|
||||
sub_80161C8:
|
||||
ldr r0, _080161EC
|
||||
ldr r1, [r0]
|
||||
ldr r0, _080161F0
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x10]
|
||||
movs r0, 0x2
|
||||
str r0, [r1, 0x14]
|
||||
ldr r0, _080161F4
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x18]
|
||||
movs r0, 0x3
|
||||
str r0, [r1, 0x1C]
|
||||
movs r0, 0
|
||||
str r0, [r1, 0x20]
|
||||
movs r0, 0x1
|
||||
str r0, [r1, 0x24]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080161EC: .4byte gUnknown_203B200
|
||||
_080161F0: .4byte gUnknown_80D4920
|
||||
_080161F4: .4byte gUnknown_80D4928
|
||||
thumb_func_end sub_80161C8
|
||||
|
||||
thumb_func_start sub_80161F8
|
||||
sub_80161F8:
|
||||
push {r4,lr}
|
||||
bl sub_80154F0
|
||||
cmp r0, 0x3
|
||||
bne _08016242
|
||||
bl sub_80155F0
|
||||
bl sub_80162B8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08016218
|
||||
movs r0, 0x3
|
||||
bl sub_80160F4
|
||||
b _08016242
|
||||
_08016218:
|
||||
ldr r0, _08016238
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x8]
|
||||
movs r1, 0xA
|
||||
bl sub_8015FEC
|
||||
adds r4, r0, 0
|
||||
bl sub_8016028
|
||||
cmp r4, r0
|
||||
ble _0801623C
|
||||
movs r0, 0x2
|
||||
bl sub_80160F4
|
||||
b _08016242
|
||||
.align 2, 0
|
||||
_08016238: .4byte gUnknown_203B200
|
||||
_0801623C:
|
||||
movs r0, 0x1
|
||||
bl sub_80160F4
|
||||
_08016242:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80161F8
|
||||
|
||||
thumb_func_start sub_8016248
|
||||
sub_8016248:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0801627A
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _0801626C
|
||||
cmp r0, 0x2
|
||||
bgt _08016266
|
||||
cmp r0, 0x1
|
||||
beq _08016274
|
||||
b _0801627A
|
||||
_08016266:
|
||||
cmp r0, 0x3
|
||||
beq _08016274
|
||||
b _0801627A
|
||||
_0801626C:
|
||||
movs r0, 0x4
|
||||
bl sub_80160F4
|
||||
b _0801627A
|
||||
_08016274:
|
||||
movs r0, 0
|
||||
bl sub_80160F4
|
||||
_0801627A:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8016248
|
||||
|
||||
thumb_func_start sub_8016280
|
||||
sub_8016280:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _08016294
|
||||
movs r0, 0
|
||||
bl sub_80160F4
|
||||
_08016294:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8016280
|
||||
|
||||
thumb_func_start sub_801629C
|
||||
sub_801629C:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _080162B0
|
||||
movs r0, 0
|
||||
bl sub_80160F4
|
||||
_080162B0:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_801629C
|
||||
|
||||
thumb_func_start sub_80162B8
|
||||
sub_80162B8:
|
||||
push {lr}
|
||||
movs r3, 0xA
|
||||
movs r1, 0
|
||||
ldr r0, _080162D4
|
||||
ldr r0, [r0]
|
||||
ldr r2, [r0, 0x8]
|
||||
_080162C4:
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080162DE
|
||||
cmp r0, 0x20
|
||||
beq _080162D8
|
||||
movs r0, 0
|
||||
b _080162E0
|
||||
.align 2, 0
|
||||
_080162D4: .4byte gUnknown_203B200
|
||||
_080162D8:
|
||||
adds r1, 0x1
|
||||
cmp r1, r3
|
||||
blt _080162C4
|
||||
_080162DE:
|
||||
movs r0, 0x1
|
||||
_080162E0:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80162B8
|
||||
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
||||
1754
asm/code_801C620.s
Normal file
1754
asm/code_801C620.s
Normal file
File diff suppressed because it is too large
Load Diff
20193
asm/code_801D760.s
20193
asm/code_801D760.s
File diff suppressed because it is too large
Load Diff
833
asm/code_801DCC4.s
Normal file
833
asm/code_801DCC4.s
Normal file
@@ -0,0 +1,833 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801E198
|
||||
sub_801E198:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r4, _0801E210
|
||||
movs r0, 0xAC
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
stm r0!, {r5}
|
||||
bl sub_801317C
|
||||
ldr r1, [r4]
|
||||
movs r0, 0
|
||||
str r0, [r1, 0x44]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x4C
|
||||
str r0, [r1, 0x48]
|
||||
bl sub_8006518
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x44]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x4C
|
||||
ldr r0, _0801E214
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x48]
|
||||
movs r1, 0x1
|
||||
bl sub_8012D08
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r1, [r4]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x10
|
||||
ldr r3, [r1, 0x44]
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_8013818
|
||||
bl nullsub_38
|
||||
bl CreateOptionsMenu
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801E210: .4byte gUnknown_203B260
|
||||
_0801E214: .4byte gUnknown_80DC03C
|
||||
thumb_func_end sub_801E198
|
||||
|
||||
thumb_func_start sub_801E218
|
||||
sub_801E218:
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
bl sub_8012AE8
|
||||
cmp r0, 0x2
|
||||
beq _0801E238
|
||||
cmp r0, 0x2
|
||||
bgt _0801E22E
|
||||
cmp r0, 0x1
|
||||
beq _0801E242
|
||||
b _0801E294
|
||||
_0801E22E:
|
||||
cmp r0, 0x9
|
||||
beq _0801E24C
|
||||
cmp r0, 0xA
|
||||
beq _0801E26C
|
||||
b _0801E294
|
||||
_0801E238:
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0801E2BE
|
||||
_0801E242:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _0801E2BE
|
||||
_0801E24C:
|
||||
ldr r0, _0801E264
|
||||
ldr r1, [r0]
|
||||
movs r2, 0x28
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0
|
||||
bne _0801E294
|
||||
ldr r1, [r1]
|
||||
ldrb r0, [r1, 0x8]
|
||||
cmp r0, 0
|
||||
bne _0801E268
|
||||
movs r0, 0x2
|
||||
b _0801E28A
|
||||
.align 2, 0
|
||||
_0801E264: .4byte gUnknown_203B260
|
||||
_0801E268:
|
||||
subs r0, 0x1
|
||||
b _0801E28A
|
||||
_0801E26C:
|
||||
ldr r0, _0801E284
|
||||
ldr r1, [r0]
|
||||
movs r2, 0x28
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0
|
||||
bne _0801E294
|
||||
ldr r1, [r1]
|
||||
ldrb r0, [r1, 0x8]
|
||||
cmp r0, 0x1
|
||||
bls _0801E288
|
||||
strb r4, [r1, 0x8]
|
||||
b _0801E28C
|
||||
.align 2, 0
|
||||
_0801E284: .4byte gUnknown_203B260
|
||||
_0801E288:
|
||||
adds r0, 0x1
|
||||
_0801E28A:
|
||||
strb r0, [r1, 0x8]
|
||||
_0801E28C:
|
||||
movs r0, 0x3
|
||||
bl PlayMenuSoundEffect
|
||||
movs r4, 0x1
|
||||
_0801E294:
|
||||
ldr r0, _0801E2B8
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x10
|
||||
movs r1, 0x1
|
||||
bl sub_80138B8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0801E2AA
|
||||
cmp r4, 0x1
|
||||
bne _0801E2BC
|
||||
_0801E2AA:
|
||||
bl nullsub_38
|
||||
bl CreateOptionsMenu
|
||||
movs r0, 0x1
|
||||
b _0801E2BE
|
||||
.align 2, 0
|
||||
_0801E2B8: .4byte gUnknown_203B260
|
||||
_0801E2BC:
|
||||
movs r0, 0
|
||||
_0801E2BE:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801E218
|
||||
|
||||
thumb_func_start sub_801E2C4
|
||||
sub_801E2C4:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0801E304
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0801E2FE
|
||||
ldr r0, [r2, 0x44]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x4C
|
||||
ldr r0, _0801E308
|
||||
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, 0x4C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0801E2FE:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E304: .4byte gUnknown_203B260
|
||||
_0801E308: .4byte gUnknown_80DC020
|
||||
thumb_func_end sub_801E2C4
|
||||
|
||||
thumb_func_start nullsub_38
|
||||
nullsub_38:
|
||||
bx lr
|
||||
thumb_func_end nullsub_38
|
||||
|
||||
thumb_func_start CreateOptionsMenu
|
||||
CreateOptionsMenu:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
ldr r5, _0801E368
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x44]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x44]
|
||||
bl sub_80073B8
|
||||
ldr r2, _0801E36C
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x44]
|
||||
movs r4, 0
|
||||
str r4, [sp]
|
||||
movs r0, 0x10
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x10
|
||||
movs r1, 0
|
||||
bl sub_8013800
|
||||
adds r6, r0, 0
|
||||
ldr r2, _0801E370
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x44]
|
||||
str r4, [sp]
|
||||
movs r0, 0x8
|
||||
adds r1, r6, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x8]
|
||||
cmp r0, 0x1
|
||||
beq _0801E384
|
||||
cmp r0, 0x1
|
||||
bgt _0801E374
|
||||
cmp r0, 0
|
||||
beq _0801E37A
|
||||
b _0801E3D6
|
||||
.align 2, 0
|
||||
_0801E368: .4byte gUnknown_203B260
|
||||
_0801E36C: .4byte gWindowBGTitle
|
||||
_0801E370: .4byte gUnknown_80DC064
|
||||
_0801E374:
|
||||
cmp r0, 0x2
|
||||
beq _0801E3B0
|
||||
b _0801E3D6
|
||||
_0801E37A:
|
||||
ldr r0, _0801E380
|
||||
b _0801E386
|
||||
.align 2, 0
|
||||
_0801E380: .4byte gWindowBGBlueString
|
||||
_0801E384:
|
||||
ldr r0, _0801E3AC
|
||||
_0801E386:
|
||||
bl sub_8008ED0
|
||||
adds r4, r0, 0
|
||||
ldr r1, [r5]
|
||||
ldr r0, [r1, 0x44]
|
||||
ldr r1, [r1]
|
||||
ldrb r2, [r1, 0x8]
|
||||
lsls r1, r2, 2
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, 0x50
|
||||
adds r2, r6, 0
|
||||
adds r2, 0xA
|
||||
movs r3, 0x7
|
||||
str r3, [sp]
|
||||
adds r3, r4, 0
|
||||
bl sub_80078A4
|
||||
b _0801E3D6
|
||||
.align 2, 0
|
||||
_0801E3AC: .4byte gWindowBGRedString
|
||||
_0801E3B0:
|
||||
ldr r0, _0801E3E8
|
||||
bl sub_8008ED0
|
||||
adds r4, r0, 0
|
||||
ldr r1, [r5]
|
||||
ldr r0, [r1, 0x44]
|
||||
ldr r1, [r1]
|
||||
ldrb r2, [r1, 0x8]
|
||||
lsls r1, r2, 2
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, 0x50
|
||||
adds r2, r6, 0
|
||||
adds r2, 0xA
|
||||
movs r3, 0x7
|
||||
str r3, [sp]
|
||||
adds r3, r4, 0
|
||||
bl sub_80078A4
|
||||
_0801E3D6:
|
||||
ldr r0, _0801E3EC
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x44]
|
||||
bl sub_80073E0
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E3E8: .4byte gWindowBGGreenString
|
||||
_0801E3EC: .4byte gUnknown_203B260
|
||||
thumb_func_end CreateOptionsMenu
|
||||
|
||||
thumb_func_start sub_801E3F0
|
||||
sub_801E3F0:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r4, _0801E46C
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0801E406
|
||||
movs r0, 0x9C
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
_0801E406:
|
||||
ldr r0, [r4]
|
||||
str r5, [r0, 0x34]
|
||||
lsls r1, r5, 1
|
||||
adds r1, r5
|
||||
lsls r1, 3
|
||||
adds r1, 0x3C
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x38]
|
||||
adds r0, 0x3C
|
||||
bl sub_8006518
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x34]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0801E470
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x38]
|
||||
movs r1, 0xA
|
||||
bl sub_8012D08
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x5
|
||||
movs r2, 0xA
|
||||
adds r3, r5, 0
|
||||
bl sub_8013818
|
||||
bl sub_801E594
|
||||
bl sub_801E5E8
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801E46C: .4byte gUnknown_203B264
|
||||
_0801E470: .4byte gUnknown_80DC0BC
|
||||
thumb_func_end sub_801E3F0
|
||||
|
||||
thumb_func_start sub_801E474
|
||||
sub_801E474:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0801E48C
|
||||
ldr r0, _0801E488
|
||||
ldr r0, [r0]
|
||||
bl sub_8013660
|
||||
movs r0, 0
|
||||
b _0801E4EE
|
||||
.align 2, 0
|
||||
_0801E488: .4byte gUnknown_203B264
|
||||
_0801E48C:
|
||||
ldr r0, _0801E4A4
|
||||
ldr r0, [r0]
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x2
|
||||
beq _0801E4AE
|
||||
cmp r0, 0x2
|
||||
bgt _0801E4A8
|
||||
cmp r0, 0x1
|
||||
beq _0801E4B8
|
||||
b _0801E4CC
|
||||
.align 2, 0
|
||||
_0801E4A4: .4byte gUnknown_203B264
|
||||
_0801E4A8:
|
||||
cmp r0, 0x4
|
||||
beq _0801E4C2
|
||||
b _0801E4CC
|
||||
_0801E4AE:
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0801E4EE
|
||||
_0801E4B8:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _0801E4EE
|
||||
_0801E4C2:
|
||||
movs r0, 0x4
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x4
|
||||
b _0801E4EE
|
||||
_0801E4CC:
|
||||
ldr r0, _0801E4E0
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x1
|
||||
bl sub_80138B8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0801E4E4
|
||||
movs r0, 0
|
||||
b _0801E4EE
|
||||
.align 2, 0
|
||||
_0801E4E0: .4byte gUnknown_203B264
|
||||
_0801E4E4:
|
||||
bl sub_801E594
|
||||
bl sub_801E5E8
|
||||
movs r0, 0x1
|
||||
_0801E4EE:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801E474
|
||||
|
||||
thumb_func_start sub_801E4F4
|
||||
sub_801E4F4:
|
||||
ldr r0, _0801E50C
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1E
|
||||
ldrsh r2, [r1, r0]
|
||||
movs r3, 0x1C
|
||||
ldrsh r0, [r1, r3]
|
||||
muls r0, r2
|
||||
movs r2, 0x18
|
||||
ldrsh r1, [r1, r2]
|
||||
adds r0, r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0801E50C: .4byte gUnknown_203B264
|
||||
thumb_func_end sub_801E4F4
|
||||
|
||||
thumb_func_start sub_801E510
|
||||
sub_801E510:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r5, _0801E548
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_800641C
|
||||
ldr r0, [r5]
|
||||
bl sub_8013984
|
||||
bl sub_801E594
|
||||
bl sub_801E5E8
|
||||
cmp r4, 0
|
||||
beq _0801E542
|
||||
ldr r0, [r5]
|
||||
bl AddMenuCursorSprite
|
||||
_0801E542:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E548: .4byte gUnknown_203B264
|
||||
thumb_func_end sub_801E510
|
||||
|
||||
thumb_func_start sub_801E54C
|
||||
sub_801E54C:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0801E58C
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0801E586
|
||||
ldr r0, [r2, 0x34]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0801E590
|
||||
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, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0801E586:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E58C: .4byte gUnknown_203B264
|
||||
_0801E590: .4byte gUnknown_80DC0A0
|
||||
thumb_func_end sub_801E54C
|
||||
|
||||
thumb_func_start sub_801E594
|
||||
sub_801E594:
|
||||
push {r4,lr}
|
||||
ldr r4, _0801E5E4
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0xC
|
||||
bl sub_80095E4
|
||||
adds r0, 0x2
|
||||
lsls r0, 16
|
||||
ldr r2, [r4]
|
||||
ldr r3, [r2, 0x34]
|
||||
lsls r1, r3, 1
|
||||
adds r1, r3
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x4A
|
||||
asrs r3, r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r1]
|
||||
ldr r1, [r2, 0x34]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r2, r0
|
||||
adds r3, 0x2
|
||||
adds r2, 0x4C
|
||||
strh r3, [r2]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E5E4: .4byte gUnknown_203B264
|
||||
thumb_func_end sub_801E594
|
||||
|
||||
thumb_func_start sub_801E5E8
|
||||
sub_801E5E8:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
ldr r4, _0801E64C
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073B8
|
||||
ldr r2, _0801E650
|
||||
ldr r0, [r4]
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x10
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
movs r5, 0
|
||||
adds r6, r4, 0
|
||||
ldr r4, _0801E654
|
||||
_0801E616:
|
||||
ldr r0, [r6]
|
||||
adds r1, r5, 0
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
ldr r2, [r4]
|
||||
ldr r0, [r6]
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xA
|
||||
bl xxx_call_draw_string
|
||||
adds r4, 0x8
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x4
|
||||
ble _0801E616
|
||||
ldr r0, _0801E64C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073E0
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E64C: .4byte gUnknown_203B264
|
||||
_0801E650: .4byte gUnknown_80DC0D4
|
||||
_0801E654: .4byte gUnknown_80DAA98
|
||||
thumb_func_end sub_801E5E8
|
||||
|
||||
thumb_func_start sub_801E658
|
||||
sub_801E658:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r4, _0801E6C4
|
||||
movs r0, 0xA0
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
movs r1, 0
|
||||
str r1, [r0, 0x34]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x3C
|
||||
str r1, [r0, 0x38]
|
||||
adds r0, r1, 0
|
||||
bl sub_8006518
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x34]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0801E6C8
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r0, 0x38]
|
||||
adds r0, 0x9C
|
||||
str r0, [r1, 0x14]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r1, 0x5
|
||||
movs r2, 0x1
|
||||
bl sub_8013818
|
||||
ldr r0, [r4]
|
||||
strh r5, [r0, 0x1E]
|
||||
bl sub_801E714
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801E6C4: .4byte gUnknown_203B268
|
||||
_0801E6C8: .4byte gUnknown_80DC0FC
|
||||
thumb_func_end sub_801E658
|
||||
|
||||
thumb_func_start sub_801E6CC
|
||||
sub_801E6CC:
|
||||
push {r4,lr}
|
||||
ldr r4, _0801E6E8
|
||||
ldr r0, [r4]
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x1
|
||||
beq _0801E6EC
|
||||
cmp r0, 0x2
|
||||
bne _0801E6F6
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0801E70C
|
||||
.align 2, 0
|
||||
_0801E6E8: .4byte gUnknown_203B268
|
||||
_0801E6EC:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _0801E70C
|
||||
_0801E6F6:
|
||||
ldr r0, [r4]
|
||||
bl sub_8013938
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0801E706
|
||||
movs r0, 0
|
||||
b _0801E70C
|
||||
_0801E706:
|
||||
bl sub_801E714
|
||||
movs r0, 0x1
|
||||
_0801E70C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801E6CC
|
||||
|
||||
thumb_func_start sub_801E714
|
||||
sub_801E714:
|
||||
push {lr}
|
||||
bl sub_801E76C
|
||||
bl sub_801E7AC
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_801E714
|
||||
|
||||
thumb_func_start sub_801E724
|
||||
sub_801E724:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0801E764
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0801E75E
|
||||
ldr r0, [r2, 0x34]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0801E768
|
||||
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, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0801E75E:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E764: .4byte gUnknown_203B268
|
||||
_0801E768: .4byte gUnknown_80DC0E4
|
||||
thumb_func_end sub_801E724
|
||||
|
||||
thumb_func_start sub_801E76C
|
||||
sub_801E76C:
|
||||
push {r4,lr}
|
||||
ldr r4, _0801E7A8
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x20]
|
||||
adds r0, 0x9C
|
||||
movs r2, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x1E]
|
||||
adds r0, 0x9D
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9E
|
||||
movs r1, 0xF
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9F
|
||||
strb r2, [r0]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E7A8: .4byte gUnknown_203B268
|
||||
thumb_func_end sub_801E76C
|
||||
|
||||
thumb_func_start sub_801E7AC
|
||||
sub_801E7AC:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
ldr r5, _0801E804
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073B8
|
||||
ldr r3, [r5]
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r1, 3
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x10
|
||||
ldr r4, _0801E808
|
||||
adds r1, r4
|
||||
ldr r2, [r1]
|
||||
ldr r3, [r3, 0x34]
|
||||
movs r6, 0
|
||||
str r6, [sp]
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r1, [r5]
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r1, r2]
|
||||
lsls r0, 3
|
||||
adds r4, 0x4
|
||||
adds r0, r4
|
||||
ldr r2, [r0]
|
||||
ldr r3, [r1, 0x34]
|
||||
str r6, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0x14
|
||||
bl xxx_call_draw_string
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073E0
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801E804: .4byte gUnknown_203B268
|
||||
_0801E808: .4byte gUnknown_80DAA98
|
||||
thumb_func_end sub_801E7AC
|
||||
|
||||
.align 2,0
|
||||
@@ -10148,7 +10148,7 @@ sub_8057748:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
|
||||
@@ -1789,7 +1789,7 @@ _08058756:
|
||||
adds r0, r7, 0
|
||||
adds r1, r7, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
_08058762:
|
||||
adds r0, r5, 0
|
||||
add sp, 0x4
|
||||
@@ -2142,7 +2142,7 @@ sub_80589D4:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
@@ -2821,7 +2821,7 @@ sub_8058EE0:
|
||||
movs r3, 0x1
|
||||
str r3, [sp]
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r1}
|
||||
@@ -3293,7 +3293,7 @@ _0805926E:
|
||||
adds r1, r7, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
_0805927E:
|
||||
mov r0, r8
|
||||
add sp, 0x4
|
||||
@@ -4287,7 +4287,7 @@ _080599FE:
|
||||
str r0, [sp]
|
||||
adds r0, r3, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
@@ -4408,7 +4408,7 @@ sub_8059AC4:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
@@ -5789,7 +5789,7 @@ sub_805A508:
|
||||
adds r0, r5, 0
|
||||
adds r1, r3, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
b _0805A54C
|
||||
@@ -7110,7 +7110,7 @@ _0805AF64:
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
movs r0, 0x1
|
||||
b _0805AF9C
|
||||
_0805AF78:
|
||||
@@ -8143,7 +8143,7 @@ _0805B700:
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
b _0805B71E
|
||||
_0805B712:
|
||||
ldr r0, _0805B730
|
||||
@@ -19945,7 +19945,7 @@ _080619B4: .4byte gUnknown_80FE954
|
||||
_080619B8:
|
||||
ldr r0, _080619DC
|
||||
adds r1, r4, 0
|
||||
bl sub_808EAC0
|
||||
bl CopyTacticsNameToBuffer
|
||||
ldr r0, [sp, 0x10]
|
||||
adds r0, 0x94
|
||||
ldrb r0, [r0]
|
||||
@@ -21558,7 +21558,7 @@ _08062650:
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
mov r0, r10
|
||||
bl sub_808EAB0
|
||||
bl GetIQSkillName
|
||||
adds r1, r0, 0
|
||||
ldr r0, _080626CC
|
||||
bl strcpy
|
||||
@@ -21571,7 +21571,7 @@ _08062650:
|
||||
movs r3, 0
|
||||
bl sub_8014FF0
|
||||
mov r0, r10
|
||||
bl sub_808EADC
|
||||
bl GetIQSkillDescription
|
||||
adds r2, r0, 0
|
||||
mov r0, r9
|
||||
str r0, [sp]
|
||||
@@ -21582,7 +21582,7 @@ _08062650:
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
mov r0, r10
|
||||
bl sub_808EADC
|
||||
bl GetIQSkillDescription
|
||||
ldr r1, [sp, 0x84]
|
||||
bl sub_8097DF0
|
||||
adds r5, r0, 0
|
||||
@@ -21691,7 +21691,7 @@ _0806276C:
|
||||
bl sub_80073B8
|
||||
ldr r0, _080627E0
|
||||
mov r1, r10
|
||||
bl sub_808EAC0
|
||||
bl CopyTacticsNameToBuffer
|
||||
ldr r0, _080627E4
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
@@ -21701,7 +21701,7 @@ _0806276C:
|
||||
movs r3, 0
|
||||
bl sub_8014FF0
|
||||
mov r0, r10
|
||||
bl sub_808EAEC
|
||||
bl GetTacticsDescription
|
||||
adds r2, r0, 0
|
||||
mov r0, r9
|
||||
str r0, [sp]
|
||||
@@ -21712,7 +21712,7 @@ _0806276C:
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
mov r0, r10
|
||||
bl sub_808EAEC
|
||||
bl GetTacticsDescription
|
||||
ldr r1, [sp, 0x84]
|
||||
bl sub_8097DF0
|
||||
adds r5, r0, 0
|
||||
@@ -26801,7 +26801,7 @@ sub_8065040:
|
||||
cmp r0, 0
|
||||
beq _0806505C
|
||||
ldr r0, _08065058
|
||||
bl sub_80949DC
|
||||
bl GameOptionsNotChange
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806505E
|
||||
@@ -26851,7 +26851,7 @@ sub_806509C:
|
||||
cmp r0, 0x1
|
||||
bne _080650B8
|
||||
movs r0, 0
|
||||
bl sub_8094998
|
||||
bl InitializeGameOptions
|
||||
bl sub_803E13C
|
||||
_080650B8:
|
||||
pop {r0}
|
||||
@@ -37892,7 +37892,7 @@ _0806A85C:
|
||||
beq _0806A87A
|
||||
lsls r0, r2, 24
|
||||
lsrs r0, 24
|
||||
bl sub_808EAB0
|
||||
bl GetIQSkillName
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0806A890
|
||||
bl strcpy
|
||||
@@ -43883,7 +43883,7 @@ _0806D64E:
|
||||
mov r0, r9
|
||||
adds r1, r7, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
b _0806D754
|
||||
_0806D660:
|
||||
adds r0, r7, 0
|
||||
@@ -53434,7 +53434,7 @@ _08071F94:
|
||||
lsls r1, r4, 24
|
||||
lsrs r1, 24
|
||||
ldr r0, _08071FFC
|
||||
bl sub_808EAC0
|
||||
bl CopyTacticsNameToBuffer
|
||||
ldr r0, _08072000
|
||||
ldr r2, [r0]
|
||||
ldr r0, [sp, 0xB4]
|
||||
@@ -53615,7 +53615,7 @@ _080720FA:
|
||||
lsls r1, r6, 24
|
||||
lsrs r1, 24
|
||||
ldr r0, _0807217C
|
||||
bl sub_808EAC0
|
||||
bl CopyTacticsNameToBuffer
|
||||
ldr r0, _08072180
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
@@ -53865,8 +53865,8 @@ _08072324: .4byte gUnknown_80F9B34
|
||||
_08072328: .4byte gUnknown_80F9B58
|
||||
thumb_func_end sub_807218C
|
||||
|
||||
thumb_func_start sub_807232C
|
||||
sub_807232C:
|
||||
thumb_func_start LevelDownTarget
|
||||
LevelDownTarget:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
@@ -53947,7 +53947,7 @@ _080723B6:
|
||||
_080723C4: .4byte 0x00000149
|
||||
_080723C8: .4byte gAvailablePokemonNames
|
||||
_080723CC: .4byte gUnknown_80F9B94
|
||||
thumb_func_end sub_807232C
|
||||
thumb_func_end LevelDownTarget
|
||||
|
||||
thumb_func_start sub_80723D0
|
||||
sub_80723D0:
|
||||
@@ -58511,7 +58511,7 @@ _080747E8:
|
||||
adds r0, r5, 0
|
||||
adds r1, r5, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
_08074802:
|
||||
mov r0, r8
|
||||
adds r0, 0xC8
|
||||
@@ -58704,7 +58704,7 @@ _08074984:
|
||||
adds r1, r4, 0
|
||||
adds r2, r6, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
_08074994:
|
||||
adds r0, r5, 0
|
||||
bl sub_80450E0
|
||||
@@ -64993,8 +64993,8 @@ _08077C3A:
|
||||
_08077C40: .4byte gUnknown_80FB960
|
||||
thumb_func_end sub_8077BB4
|
||||
|
||||
thumb_func_start sub_8077C44
|
||||
sub_8077C44:
|
||||
thumb_func_start HealTargetHP
|
||||
HealTargetHP:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@@ -65201,7 +65201,7 @@ _08077DC8:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08077DD8: .4byte gUnknown_80FB1C4
|
||||
thumb_func_end sub_8077C44
|
||||
thumb_func_end HealTargetHP
|
||||
|
||||
thumb_func_start sub_8077DDC
|
||||
sub_8077DDC:
|
||||
@@ -67558,8 +67558,8 @@ _08079134:
|
||||
_0807913C: .4byte gUnknown_80FC054
|
||||
thumb_func_end sub_80790C8
|
||||
|
||||
thumb_func_start sub_8079140
|
||||
sub_8079140:
|
||||
thumb_func_start BlindTarget
|
||||
BlindTarget:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
@@ -67626,7 +67626,7 @@ _080791CE:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080791D4: .4byte gUnknown_80FB810
|
||||
thumb_func_end sub_8079140
|
||||
thumb_func_end BlindTarget
|
||||
|
||||
thumb_func_start sub_80791D8
|
||||
sub_80791D8:
|
||||
@@ -67698,8 +67698,8 @@ _08079266:
|
||||
_0807926C: .4byte gUnknown_80FB85C
|
||||
thumb_func_end sub_80791D8
|
||||
|
||||
thumb_func_start sub_8079270
|
||||
sub_8079270:
|
||||
thumb_func_start RestoreVisionTarget
|
||||
RestoreVisionTarget:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
@@ -67759,7 +67759,7 @@ _080792EE:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080792F4: .4byte gUnknown_80FB89C
|
||||
thumb_func_end sub_8079270
|
||||
thumb_func_end RestoreVisionTarget
|
||||
|
||||
thumb_func_start sub_80792F8
|
||||
sub_80792F8:
|
||||
@@ -69655,7 +69655,7 @@ _0807A1E8:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r3, 0
|
||||
bl sub_8077C44
|
||||
bl HealTargetHP
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xA8
|
||||
strb r4, [r0]
|
||||
|
||||
@@ -1767,7 +1767,7 @@ _0808FB10:
|
||||
adds r0, 0x1C
|
||||
ldrb r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_808EAC0
|
||||
bl CopyTacticsNameToBuffer
|
||||
ldr r0, _0808FB40
|
||||
ldr r2, [r0]
|
||||
str r4, [sp]
|
||||
@@ -1997,7 +1997,7 @@ _0808FCFC:
|
||||
cmp r0, 0
|
||||
beq _0808FD74
|
||||
movs r4, 0x1
|
||||
bl sub_808EAB0
|
||||
bl GetIQSkillName
|
||||
adds r1, r0, 0
|
||||
ldr r6, _0808FD3C
|
||||
adds r0, r6, 0
|
||||
|
||||
@@ -4707,853 +4707,4 @@ _08094978:
|
||||
bx r0
|
||||
thumb_func_end sub_8094924
|
||||
|
||||
thumb_func_start sub_8094980
|
||||
sub_8094980:
|
||||
ldr r1, _08094988
|
||||
ldr r0, _0809498C
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094988: .4byte gUnknown_203B46C
|
||||
_0809498C: .4byte gUnknown_2038C70
|
||||
thumb_func_end sub_8094980
|
||||
|
||||
thumb_func_start sub_8094990
|
||||
sub_8094990:
|
||||
ldr r0, _08094994
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094994: .4byte gUnknown_2038C70
|
||||
thumb_func_end sub_8094990
|
||||
|
||||
thumb_func_start sub_8094998
|
||||
sub_8094998:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
ldr r2, _080949D8
|
||||
ldr r1, [r2]
|
||||
movs r3, 0
|
||||
strb r3, [r1, 0x8]
|
||||
cmp r0, 0
|
||||
beq _080949AC
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0, 0xB]
|
||||
_080949AC:
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0, 0x9]
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0, 0xA]
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0]
|
||||
ldr r0, [r2]
|
||||
movs r1, 0x1
|
||||
strb r1, [r0, 0x1]
|
||||
ldr r0, [r2]
|
||||
strb r1, [r0, 0x2]
|
||||
ldr r0, [r2]
|
||||
strb r1, [r0, 0x3]
|
||||
ldr r0, [r2]
|
||||
strb r1, [r0, 0x4]
|
||||
ldr r0, [r2]
|
||||
strb r3, [r0, 0xC]
|
||||
bl sub_8094C14
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080949D8: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094998
|
||||
|
||||
thumb_func_start sub_80949DC
|
||||
sub_80949DC:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldr r0, _08094A38
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, 0x8]
|
||||
ldrb r3, [r2, 0x8]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x9]
|
||||
ldrb r3, [r2, 0x9]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xA]
|
||||
ldrb r3, [r2, 0xA]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xB]
|
||||
ldrb r3, [r2, 0xB]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1]
|
||||
ldrb r3, [r2]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x1]
|
||||
ldrb r3, [r2, 0x1]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x2]
|
||||
ldrb r3, [r2, 0x2]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x3]
|
||||
ldrb r3, [r2, 0x3]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x4]
|
||||
ldrb r3, [r2, 0x4]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xC]
|
||||
ldrb r2, [r2, 0xC]
|
||||
cmp r0, r2
|
||||
bne _08094A3C
|
||||
movs r0, 0x1
|
||||
b _08094A3E
|
||||
.align 2, 0
|
||||
_08094A38: .4byte gUnknown_203B46C
|
||||
_08094A3C:
|
||||
movs r0, 0
|
||||
_08094A3E:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80949DC
|
||||
|
||||
thumb_func_start sub_8094A44
|
||||
sub_8094A44:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
movs r1, 0xFF
|
||||
mov r0, sp
|
||||
strb r1, [r0]
|
||||
mov r7, sp
|
||||
adds r7, 0x1
|
||||
movs r0, 0
|
||||
strb r0, [r7]
|
||||
ldr r5, _08094B14
|
||||
ldr r1, [r5]
|
||||
adds r1, 0x8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x2
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x9]
|
||||
mov r1, sp
|
||||
adds r6, r7, 0
|
||||
cmp r0, 0
|
||||
bne _08094A74
|
||||
adds r1, r6, 0
|
||||
_08094A74:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xA]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094A88
|
||||
mov r1, sp
|
||||
_08094A88:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xB]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094A9C
|
||||
mov r1, sp
|
||||
_08094A9C:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AB0
|
||||
mov r1, sp
|
||||
_08094AB0:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x1]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AC4
|
||||
mov r1, sp
|
||||
_08094AC4:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x2]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AD8
|
||||
mov r1, sp
|
||||
_08094AD8:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x3]
|
||||
adds r1, r7, 0
|
||||
cmp r0, 0
|
||||
beq _08094AEC
|
||||
mov r1, sp
|
||||
_08094AEC:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r1, [r5]
|
||||
adds r1, 0x4
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x3
|
||||
bl sub_809488C
|
||||
ldr r1, [r5]
|
||||
adds r1, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x2
|
||||
bl sub_809488C
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094B14: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094A44
|
||||
|
||||
thumb_func_start sub_8094B18
|
||||
sub_8094B18:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x4
|
||||
adds r6, r0, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x2
|
||||
bl sub_8094924
|
||||
ldr r5, _08094C10
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x3
|
||||
mov r8, r0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x8]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r4, 0x1
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x9]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0xA]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0xB]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x1]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x2]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r1, [r5]
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
ands r4, r0
|
||||
strb r4, [r1, 0x3]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x3
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x7
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x4]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x2
|
||||
bl sub_8094924
|
||||
ldr r1, [r5]
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
mov r2, r8
|
||||
ands r2, r0
|
||||
strb r2, [r1, 0xC]
|
||||
bl sub_8094C14
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094C10: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094B18
|
||||
|
||||
thumb_func_start sub_8094C14
|
||||
sub_8094C14:
|
||||
push {r4,lr}
|
||||
sub sp, 0x10
|
||||
mov r1, sp
|
||||
ldr r0, _08094C40
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
ldr r0, _08094C44
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x8]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
lsls r0, 2
|
||||
add r0, sp
|
||||
ldr r0, [r0]
|
||||
bl sub_80099F0
|
||||
add sp, 0x10
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094C40: .4byte gUnknown_8109954
|
||||
_08094C44: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094C14
|
||||
|
||||
thumb_func_start sub_8094C48
|
||||
sub_8094C48:
|
||||
push {lr}
|
||||
ldr r0, _08094C5C
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08094C60
|
||||
cmp r0, 0x3
|
||||
beq _08094C60
|
||||
movs r0, 0x1
|
||||
b _08094C62
|
||||
.align 2, 0
|
||||
_08094C5C: .4byte gUnknown_203B46C
|
||||
_08094C60:
|
||||
movs r0, 0
|
||||
_08094C62:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8094C48
|
||||
|
||||
thumb_func_start sub_8094C68
|
||||
sub_8094C68:
|
||||
push {lr}
|
||||
ldr r0, _08094C7C
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0x2
|
||||
beq _08094C80
|
||||
cmp r0, 0x5
|
||||
beq _08094C80
|
||||
movs r0, 0x1
|
||||
b _08094C82
|
||||
.align 2, 0
|
||||
_08094C7C: .4byte gUnknown_203B46C
|
||||
_08094C80:
|
||||
movs r0, 0
|
||||
_08094C82:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8094C68
|
||||
|
||||
thumb_func_start sub_8094C88
|
||||
sub_8094C88:
|
||||
push {lr}
|
||||
ldr r0, _08094C98
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, 0x4]
|
||||
cmp r0, 0x2
|
||||
bhi _08094C9C
|
||||
movs r0, 0x1
|
||||
b _08094CA8
|
||||
.align 2, 0
|
||||
_08094C98: .4byte gUnknown_203B46C
|
||||
_08094C9C:
|
||||
subs r0, 0x3
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
bhi _08094CAA
|
||||
movs r0, 0x4
|
||||
_08094CA8:
|
||||
strb r0, [r1, 0x4]
|
||||
_08094CAA:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8094C88
|
||||
|
||||
thumb_func_start sub_8094CB0
|
||||
sub_8094CB0:
|
||||
ldr r1, _08094CBC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CBC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CB0
|
||||
|
||||
thumb_func_start sub_8094CC0
|
||||
sub_8094CC0:
|
||||
ldr r1, _08094CCC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CCC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CC0
|
||||
|
||||
thumb_func_start sub_8094CD0
|
||||
sub_8094CD0:
|
||||
ldr r1, _08094CDC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CDC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CD0
|
||||
|
||||
thumb_func_start sub_8094CE0
|
||||
sub_8094CE0:
|
||||
ldr r1, _08094CEC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CEC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CE0
|
||||
|
||||
thumb_func_start sub_8094CF0
|
||||
sub_8094CF0:
|
||||
ldr r1, _08094CFC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CFC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CF0
|
||||
|
||||
thumb_func_start sub_8094D00
|
||||
sub_8094D00:
|
||||
ldr r1, _08094D0C
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094D0C: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094D00
|
||||
|
||||
thumb_func_start sub_8094D10
|
||||
sub_8094D10:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D10
|
||||
|
||||
thumb_func_start sub_8094D14
|
||||
sub_8094D14:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D14
|
||||
|
||||
thumb_func_start sub_8094D18
|
||||
sub_8094D18:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D18
|
||||
|
||||
thumb_func_start sub_8094D1C
|
||||
sub_8094D1C:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D1C
|
||||
|
||||
thumb_func_start sub_8094D20
|
||||
sub_8094D20:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D20
|
||||
|
||||
thumb_func_start sub_8094D24
|
||||
sub_8094D24:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D24
|
||||
|
||||
thumb_func_start sub_8094D28
|
||||
sub_8094D28:
|
||||
push {r4-r7,lr}
|
||||
ldr r2, _08094D64
|
||||
str r0, [r2]
|
||||
ldr r1, _08094D68
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
ldr r7, _08094D6C
|
||||
adds r5, r2, 0
|
||||
adds r4, r1, 0
|
||||
ldr r6, _08094D70
|
||||
_08094D3C:
|
||||
ldr r2, [r4]
|
||||
lsls r3, r2, 2
|
||||
adds r3, r5
|
||||
subs r0, r2, 0x1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldr r0, [r0]
|
||||
lsrs r1, r0, 30
|
||||
eors r0, r1
|
||||
muls r0, r6
|
||||
adds r0, r2
|
||||
str r0, [r3]
|
||||
adds r2, 0x1
|
||||
str r2, [r4]
|
||||
cmp r2, r7
|
||||
ble _08094D3C
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094D64: .4byte gUnknown_3001198
|
||||
_08094D68: .4byte gUnknown_203B470
|
||||
_08094D6C: .4byte 0x0000026f
|
||||
_08094D70: .4byte 0x6c078965
|
||||
thumb_func_end sub_8094D28
|
||||
|
||||
thumb_func_start sub_8094D74
|
||||
sub_8094D74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
mov r8, r0
|
||||
adds r7, r1, 0
|
||||
ldr r0, _08094E34
|
||||
bl sub_8094D28
|
||||
movs r4, 0x1
|
||||
movs r5, 0
|
||||
adds r3, r7, 0
|
||||
movs r0, 0x9C
|
||||
lsls r0, 2
|
||||
cmp r3, r0
|
||||
bge _08094D96
|
||||
adds r3, r0, 0
|
||||
_08094D96:
|
||||
ldr r6, _08094E38
|
||||
cmp r3, 0
|
||||
beq _08094DE2
|
||||
mov r9, r6
|
||||
ldr r0, _08094E3C
|
||||
adds r0, r6
|
||||
mov r12, r0
|
||||
adds r2, r6, 0
|
||||
_08094DA6:
|
||||
ldr r1, [r2]
|
||||
lsrs r0, r1, 30
|
||||
eors r1, r0
|
||||
ldr r0, _08094E40
|
||||
muls r0, r1
|
||||
ldr r1, [r2, 0x4]
|
||||
eors r1, r0
|
||||
lsls r0, r5, 2
|
||||
add r0, r8
|
||||
ldr r0, [r0]
|
||||
adds r1, r0
|
||||
adds r1, r5
|
||||
str r1, [r2, 0x4]
|
||||
adds r2, 0x4
|
||||
adds r4, 0x1
|
||||
adds r5, 0x1
|
||||
ldr r0, _08094E44
|
||||
cmp r4, r0
|
||||
ble _08094DD6
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
str r0, [r6]
|
||||
mov r2, r9
|
||||
movs r4, 0x1
|
||||
_08094DD6:
|
||||
cmp r5, r7
|
||||
blt _08094DDC
|
||||
movs r5, 0
|
||||
_08094DDC:
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _08094DA6
|
||||
_08094DE2:
|
||||
ldr r3, _08094E44
|
||||
ldr r5, _08094E38
|
||||
ldr r0, _08094E3C
|
||||
adds r0, r5
|
||||
mov r8, r0
|
||||
lsls r0, r4, 2
|
||||
subs r0, 0x4
|
||||
adds r2, r0, r5
|
||||
ldr r1, _08094E48
|
||||
mov r12, r1
|
||||
adds r7, r3, 0
|
||||
_08094DF8:
|
||||
ldr r0, [r2]
|
||||
lsrs r1, r0, 30
|
||||
eors r0, r1
|
||||
mov r1, r12
|
||||
muls r1, r0
|
||||
ldr r0, [r2, 0x4]
|
||||
eors r0, r1
|
||||
subs r0, r4
|
||||
str r0, [r2, 0x4]
|
||||
adds r2, 0x4
|
||||
adds r4, 0x1
|
||||
cmp r4, r7
|
||||
ble _08094E1C
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
str r0, [r6]
|
||||
adds r2, r5, 0
|
||||
movs r4, 0x1
|
||||
_08094E1C:
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _08094DF8
|
||||
movs r0, 0x80
|
||||
lsls r0, 24
|
||||
str r0, [r6]
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094E34: .4byte 0x012bd6aa
|
||||
_08094E38: .4byte gUnknown_3001198
|
||||
_08094E3C: .4byte 0x000009bc
|
||||
_08094E40: .4byte 0x0019660d
|
||||
_08094E44: .4byte 0x0000026f
|
||||
_08094E48: .4byte 0x5d588b65
|
||||
thumb_func_end sub_8094D74
|
||||
|
||||
thumb_func_start sub_8094E4C
|
||||
sub_8094E4C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
ldr r0, _08094F54
|
||||
ldr r2, [r0]
|
||||
ldr r1, _08094F58
|
||||
mov r8, r0
|
||||
cmp r2, r1
|
||||
ble _08094F1C
|
||||
ldr r0, _08094F5C
|
||||
cmp r2, r0
|
||||
bne _08094E6C
|
||||
ldr r0, _08094F60
|
||||
bl sub_8094D28
|
||||
_08094E6C:
|
||||
movs r3, 0
|
||||
ldr r0, _08094F64
|
||||
mov r9, r0
|
||||
ldr r7, _08094F68
|
||||
mov r12, r9
|
||||
adds r5, r7, 0
|
||||
_08094E78:
|
||||
ldr r4, [r5]
|
||||
movs r6, 0x80
|
||||
lsls r6, 24
|
||||
ands r4, r6
|
||||
ldr r0, [r5, 0x4]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
ldr r1, _08094F70
|
||||
adds r0, r3, r1
|
||||
lsls r0, 2
|
||||
adds r0, r7
|
||||
lsrs r2, r4, 1
|
||||
ldr r1, [r0]
|
||||
eors r1, r2
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r12
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
stm r5!, {r1}
|
||||
adds r3, 0x1
|
||||
cmp r3, 0xE2
|
||||
ble _08094E78
|
||||
ldr r5, _08094F74
|
||||
cmp r3, r5
|
||||
bgt _08094EE6
|
||||
ldr r1, _08094F68
|
||||
ldr r4, _08094F64
|
||||
mov r12, r4
|
||||
lsls r0, r3, 2
|
||||
adds r2, r0, r1
|
||||
ldr r4, _08094F78
|
||||
adds r0, r4
|
||||
adds r7, r0, r1
|
||||
_08094EC0:
|
||||
ldr r4, [r2]
|
||||
ands r4, r6
|
||||
ldr r0, [r2, 0x4]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
lsrs r0, r4, 1
|
||||
ldm r7!, {r1}
|
||||
eors r1, r0
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r12
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
stm r2!, {r1}
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
ble _08094EC0
|
||||
_08094EE6:
|
||||
ldr r2, _08094F68
|
||||
ldr r0, _08094F7C
|
||||
adds r3, r2, r0
|
||||
ldr r4, [r3]
|
||||
movs r0, 0x80
|
||||
lsls r0, 24
|
||||
ands r4, r0
|
||||
ldr r0, [r2]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
movs r1, 0xC6
|
||||
lsls r1, 3
|
||||
adds r2, r1
|
||||
lsrs r0, r4, 1
|
||||
ldr r1, [r2]
|
||||
eors r1, r0
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
str r1, [r3]
|
||||
movs r0, 0
|
||||
mov r4, r8
|
||||
str r0, [r4]
|
||||
_08094F1C:
|
||||
ldr r2, _08094F68
|
||||
mov r0, r8
|
||||
ldr r1, [r0]
|
||||
lsls r0, r1, 2
|
||||
adds r0, r2
|
||||
ldr r4, [r0]
|
||||
adds r1, 0x1
|
||||
mov r0, r8
|
||||
str r1, [r0]
|
||||
lsrs r0, r4, 11
|
||||
eors r4, r0
|
||||
lsls r0, r4, 7
|
||||
ldr r1, _08094F80
|
||||
ands r0, r1
|
||||
eors r4, r0
|
||||
lsls r0, r4, 15
|
||||
ldr r1, _08094F84
|
||||
ands r0, r1
|
||||
eors r4, r0
|
||||
lsrs r0, r4, 18
|
||||
eors r4, r0
|
||||
adds r0, r4, 0
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08094F54: .4byte gUnknown_203B470
|
||||
_08094F58: .4byte 0x0000026f
|
||||
_08094F5C: .4byte 0x00000271
|
||||
_08094F60: .4byte 0x00001571
|
||||
_08094F64: .4byte gUnknown_203B474
|
||||
_08094F68: .4byte gUnknown_3001198
|
||||
_08094F6C: .4byte 0x7fffffff
|
||||
_08094F70: .4byte 0x0000018d
|
||||
_08094F74: .4byte 0x0000026e
|
||||
_08094F78: .4byte 0xfffffc74
|
||||
_08094F7C: .4byte 0x000009bc
|
||||
_08094F80: .4byte 0x9d2c5680
|
||||
_08094F84: .4byte 0xefc60000
|
||||
thumb_func_end sub_8094E4C
|
||||
|
||||
.align 2,0 @ Don't pad with nop
|
||||
|
||||
@@ -6199,7 +6199,7 @@ _0809C046:
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
str r0, [r1]
|
||||
bl sub_802FEE0
|
||||
bl CleanMakuhitaShop
|
||||
b _0809C392
|
||||
_0809C05E:
|
||||
ldr r0, [r6]
|
||||
@@ -6209,7 +6209,7 @@ _0809C05E:
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
bl sub_802FEE0
|
||||
bl CleanMakuhitaShop
|
||||
b _0809C392
|
||||
_0809C072:
|
||||
movs r4, 0x1
|
||||
|
||||
801
asm/game_options.s
Normal file
801
asm/game_options.s
Normal file
@@ -0,0 +1,801 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start GameOptionsNotChange
|
||||
GameOptionsNotChange:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldr r0, _08094A38
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, 0x8]
|
||||
ldrb r3, [r2, 0x8]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x9]
|
||||
ldrb r3, [r2, 0x9]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xA]
|
||||
ldrb r3, [r2, 0xA]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xB]
|
||||
ldrb r3, [r2, 0xB]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1]
|
||||
ldrb r3, [r2]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x1]
|
||||
ldrb r3, [r2, 0x1]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x2]
|
||||
ldrb r3, [r2, 0x2]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x3]
|
||||
ldrb r3, [r2, 0x3]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0x4]
|
||||
ldrb r3, [r2, 0x4]
|
||||
cmp r0, r3
|
||||
bne _08094A3C
|
||||
ldrb r0, [r1, 0xC]
|
||||
ldrb r2, [r2, 0xC]
|
||||
cmp r0, r2
|
||||
bne _08094A3C
|
||||
movs r0, 0x1
|
||||
b _08094A3E
|
||||
.align 2, 0
|
||||
_08094A38: .4byte gUnknown_203B46C
|
||||
_08094A3C:
|
||||
movs r0, 0
|
||||
_08094A3E:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end GameOptionsNotChange
|
||||
|
||||
thumb_func_start sub_8094A44
|
||||
sub_8094A44:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
movs r1, 0xFF
|
||||
mov r0, sp
|
||||
strb r1, [r0]
|
||||
mov r7, sp
|
||||
adds r7, 0x1
|
||||
movs r0, 0
|
||||
strb r0, [r7]
|
||||
ldr r5, _08094B14
|
||||
ldr r1, [r5]
|
||||
adds r1, 0x8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x2
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x9]
|
||||
mov r1, sp
|
||||
adds r6, r7, 0
|
||||
cmp r0, 0
|
||||
bne _08094A74
|
||||
adds r1, r6, 0
|
||||
_08094A74:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xA]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094A88
|
||||
mov r1, sp
|
||||
_08094A88:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xB]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094A9C
|
||||
mov r1, sp
|
||||
_08094A9C:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AB0
|
||||
mov r1, sp
|
||||
_08094AB0:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x1]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AC4
|
||||
mov r1, sp
|
||||
_08094AC4:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x2]
|
||||
adds r1, r6, 0
|
||||
cmp r0, 0
|
||||
beq _08094AD8
|
||||
mov r1, sp
|
||||
_08094AD8:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0x3]
|
||||
adds r1, r7, 0
|
||||
cmp r0, 0
|
||||
beq _08094AEC
|
||||
mov r1, sp
|
||||
_08094AEC:
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_809488C
|
||||
ldr r1, [r5]
|
||||
adds r1, 0x4
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x3
|
||||
bl sub_809488C
|
||||
ldr r1, [r5]
|
||||
adds r1, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x2
|
||||
bl sub_809488C
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094B14: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094A44
|
||||
|
||||
thumb_func_start sub_8094B18
|
||||
sub_8094B18:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x4
|
||||
adds r6, r0, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x2
|
||||
bl sub_8094924
|
||||
ldr r5, _08094C10
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x3
|
||||
mov r8, r0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x8]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r4, 0x1
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x9]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0xA]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0xB]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x1]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x2]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x1
|
||||
bl sub_8094924
|
||||
ldr r1, [r5]
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
ands r4, r0
|
||||
strb r4, [r1, 0x3]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x3
|
||||
bl sub_8094924
|
||||
ldr r2, [r5]
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x7
|
||||
ands r0, r1
|
||||
strb r0, [r2, 0x4]
|
||||
adds r0, r6, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x2
|
||||
bl sub_8094924
|
||||
ldr r1, [r5]
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
mov r2, r8
|
||||
ands r2, r0
|
||||
strb r2, [r1, 0xC]
|
||||
bl sub_8094C14
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094C10: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094B18
|
||||
|
||||
thumb_func_start sub_8094C14
|
||||
sub_8094C14:
|
||||
push {r4,lr}
|
||||
sub sp, 0x10
|
||||
mov r1, sp
|
||||
ldr r0, _08094C40
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
ldr r0, _08094C44
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x8]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
lsls r0, 2
|
||||
add r0, sp
|
||||
ldr r0, [r0]
|
||||
bl sub_80099F0
|
||||
add sp, 0x10
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094C40: .4byte gUnknown_8109954
|
||||
_08094C44: .4byte gUnknown_203B46C
|
||||
thumb_func_end sub_8094C14
|
||||
|
||||
thumb_func_start sub_8094C48
|
||||
sub_8094C48:
|
||||
push {lr}
|
||||
ldr r0, _08094C5C
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08094C60
|
||||
cmp r0, 0x3
|
||||
beq _08094C60
|
||||
movs r0, 0x1
|
||||
b _08094C62
|
||||
.align 2, 0
|
||||
_08094C5C: .4byte gUnknown_203B46C
|
||||
_08094C60:
|
||||
movs r0, 0
|
||||
_08094C62:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8094C48
|
||||
|
||||
thumb_func_start sub_8094C68
|
||||
sub_8094C68:
|
||||
push {lr}
|
||||
ldr r0, _08094C7C
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0x2
|
||||
beq _08094C80
|
||||
cmp r0, 0x5
|
||||
beq _08094C80
|
||||
movs r0, 0x1
|
||||
b _08094C82
|
||||
.align 2, 0
|
||||
_08094C7C: .4byte gUnknown_203B46C
|
||||
_08094C80:
|
||||
movs r0, 0
|
||||
_08094C82:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8094C68
|
||||
|
||||
thumb_func_start sub_8094C88
|
||||
sub_8094C88:
|
||||
push {lr}
|
||||
ldr r0, _08094C98
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, 0x4]
|
||||
cmp r0, 0x2
|
||||
bhi _08094C9C
|
||||
movs r0, 0x1
|
||||
b _08094CA8
|
||||
.align 2, 0
|
||||
_08094C98: .4byte gUnknown_203B46C
|
||||
_08094C9C:
|
||||
subs r0, 0x3
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
bhi _08094CAA
|
||||
movs r0, 0x4
|
||||
_08094CA8:
|
||||
strb r0, [r1, 0x4]
|
||||
_08094CAA:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8094C88
|
||||
|
||||
thumb_func_start sub_8094CB0
|
||||
sub_8094CB0:
|
||||
ldr r1, _08094CBC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CBC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CB0
|
||||
|
||||
thumb_func_start sub_8094CC0
|
||||
sub_8094CC0:
|
||||
ldr r1, _08094CCC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CCC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CC0
|
||||
|
||||
thumb_func_start sub_8094CD0
|
||||
sub_8094CD0:
|
||||
ldr r1, _08094CDC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CDC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CD0
|
||||
|
||||
thumb_func_start sub_8094CE0
|
||||
sub_8094CE0:
|
||||
ldr r1, _08094CEC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CEC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CE0
|
||||
|
||||
thumb_func_start sub_8094CF0
|
||||
sub_8094CF0:
|
||||
ldr r1, _08094CFC
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094CFC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094CF0
|
||||
|
||||
thumb_func_start sub_8094D00
|
||||
sub_8094D00:
|
||||
ldr r1, _08094D0C
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
strh r1, [r0, 0x2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08094D0C: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8094D00
|
||||
|
||||
thumb_func_start sub_8094D10
|
||||
sub_8094D10:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D10
|
||||
|
||||
thumb_func_start sub_8094D14
|
||||
sub_8094D14:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D14
|
||||
|
||||
thumb_func_start sub_8094D18
|
||||
sub_8094D18:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D18
|
||||
|
||||
thumb_func_start sub_8094D1C
|
||||
sub_8094D1C:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D1C
|
||||
|
||||
thumb_func_start sub_8094D20
|
||||
sub_8094D20:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D20
|
||||
|
||||
thumb_func_start sub_8094D24
|
||||
sub_8094D24:
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_8094D24
|
||||
|
||||
thumb_func_start sub_8094D28
|
||||
sub_8094D28:
|
||||
push {r4-r7,lr}
|
||||
ldr r2, _08094D64
|
||||
str r0, [r2]
|
||||
ldr r1, _08094D68
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
ldr r7, _08094D6C
|
||||
adds r5, r2, 0
|
||||
adds r4, r1, 0
|
||||
ldr r6, _08094D70
|
||||
_08094D3C:
|
||||
ldr r2, [r4]
|
||||
lsls r3, r2, 2
|
||||
adds r3, r5
|
||||
subs r0, r2, 0x1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldr r0, [r0]
|
||||
lsrs r1, r0, 30
|
||||
eors r0, r1
|
||||
muls r0, r6
|
||||
adds r0, r2
|
||||
str r0, [r3]
|
||||
adds r2, 0x1
|
||||
str r2, [r4]
|
||||
cmp r2, r7
|
||||
ble _08094D3C
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094D64: .4byte gUnknown_3001198
|
||||
_08094D68: .4byte gUnknown_203B470
|
||||
_08094D6C: .4byte 0x0000026f
|
||||
_08094D70: .4byte 0x6c078965
|
||||
thumb_func_end sub_8094D28
|
||||
|
||||
thumb_func_start sub_8094D74
|
||||
sub_8094D74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
mov r8, r0
|
||||
adds r7, r1, 0
|
||||
ldr r0, _08094E34
|
||||
bl sub_8094D28
|
||||
movs r4, 0x1
|
||||
movs r5, 0
|
||||
adds r3, r7, 0
|
||||
movs r0, 0x9C
|
||||
lsls r0, 2
|
||||
cmp r3, r0
|
||||
bge _08094D96
|
||||
adds r3, r0, 0
|
||||
_08094D96:
|
||||
ldr r6, _08094E38
|
||||
cmp r3, 0
|
||||
beq _08094DE2
|
||||
mov r9, r6
|
||||
ldr r0, _08094E3C
|
||||
adds r0, r6
|
||||
mov r12, r0
|
||||
adds r2, r6, 0
|
||||
_08094DA6:
|
||||
ldr r1, [r2]
|
||||
lsrs r0, r1, 30
|
||||
eors r1, r0
|
||||
ldr r0, _08094E40
|
||||
muls r0, r1
|
||||
ldr r1, [r2, 0x4]
|
||||
eors r1, r0
|
||||
lsls r0, r5, 2
|
||||
add r0, r8
|
||||
ldr r0, [r0]
|
||||
adds r1, r0
|
||||
adds r1, r5
|
||||
str r1, [r2, 0x4]
|
||||
adds r2, 0x4
|
||||
adds r4, 0x1
|
||||
adds r5, 0x1
|
||||
ldr r0, _08094E44
|
||||
cmp r4, r0
|
||||
ble _08094DD6
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
str r0, [r6]
|
||||
mov r2, r9
|
||||
movs r4, 0x1
|
||||
_08094DD6:
|
||||
cmp r5, r7
|
||||
blt _08094DDC
|
||||
movs r5, 0
|
||||
_08094DDC:
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _08094DA6
|
||||
_08094DE2:
|
||||
ldr r3, _08094E44
|
||||
ldr r5, _08094E38
|
||||
ldr r0, _08094E3C
|
||||
adds r0, r5
|
||||
mov r8, r0
|
||||
lsls r0, r4, 2
|
||||
subs r0, 0x4
|
||||
adds r2, r0, r5
|
||||
ldr r1, _08094E48
|
||||
mov r12, r1
|
||||
adds r7, r3, 0
|
||||
_08094DF8:
|
||||
ldr r0, [r2]
|
||||
lsrs r1, r0, 30
|
||||
eors r0, r1
|
||||
mov r1, r12
|
||||
muls r1, r0
|
||||
ldr r0, [r2, 0x4]
|
||||
eors r0, r1
|
||||
subs r0, r4
|
||||
str r0, [r2, 0x4]
|
||||
adds r2, 0x4
|
||||
adds r4, 0x1
|
||||
cmp r4, r7
|
||||
ble _08094E1C
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
str r0, [r6]
|
||||
adds r2, r5, 0
|
||||
movs r4, 0x1
|
||||
_08094E1C:
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _08094DF8
|
||||
movs r0, 0x80
|
||||
lsls r0, 24
|
||||
str r0, [r6]
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094E34: .4byte 0x012bd6aa
|
||||
_08094E38: .4byte gUnknown_3001198
|
||||
_08094E3C: .4byte 0x000009bc
|
||||
_08094E40: .4byte 0x0019660d
|
||||
_08094E44: .4byte 0x0000026f
|
||||
_08094E48: .4byte 0x5d588b65
|
||||
thumb_func_end sub_8094D74
|
||||
|
||||
thumb_func_start sub_8094E4C
|
||||
sub_8094E4C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
ldr r0, _08094F54
|
||||
ldr r2, [r0]
|
||||
ldr r1, _08094F58
|
||||
mov r8, r0
|
||||
cmp r2, r1
|
||||
ble _08094F1C
|
||||
ldr r0, _08094F5C
|
||||
cmp r2, r0
|
||||
bne _08094E6C
|
||||
ldr r0, _08094F60
|
||||
bl sub_8094D28
|
||||
_08094E6C:
|
||||
movs r3, 0
|
||||
ldr r0, _08094F64
|
||||
mov r9, r0
|
||||
ldr r7, _08094F68
|
||||
mov r12, r9
|
||||
adds r5, r7, 0
|
||||
_08094E78:
|
||||
ldr r4, [r5]
|
||||
movs r6, 0x80
|
||||
lsls r6, 24
|
||||
ands r4, r6
|
||||
ldr r0, [r5, 0x4]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
ldr r1, _08094F70
|
||||
adds r0, r3, r1
|
||||
lsls r0, 2
|
||||
adds r0, r7
|
||||
lsrs r2, r4, 1
|
||||
ldr r1, [r0]
|
||||
eors r1, r2
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r12
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
stm r5!, {r1}
|
||||
adds r3, 0x1
|
||||
cmp r3, 0xE2
|
||||
ble _08094E78
|
||||
ldr r5, _08094F74
|
||||
cmp r3, r5
|
||||
bgt _08094EE6
|
||||
ldr r1, _08094F68
|
||||
ldr r4, _08094F64
|
||||
mov r12, r4
|
||||
lsls r0, r3, 2
|
||||
adds r2, r0, r1
|
||||
ldr r4, _08094F78
|
||||
adds r0, r4
|
||||
adds r7, r0, r1
|
||||
_08094EC0:
|
||||
ldr r4, [r2]
|
||||
ands r4, r6
|
||||
ldr r0, [r2, 0x4]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
lsrs r0, r4, 1
|
||||
ldm r7!, {r1}
|
||||
eors r1, r0
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r12
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
stm r2!, {r1}
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
ble _08094EC0
|
||||
_08094EE6:
|
||||
ldr r2, _08094F68
|
||||
ldr r0, _08094F7C
|
||||
adds r3, r2, r0
|
||||
ldr r4, [r3]
|
||||
movs r0, 0x80
|
||||
lsls r0, 24
|
||||
ands r4, r0
|
||||
ldr r0, [r2]
|
||||
ldr r1, _08094F6C
|
||||
ands r0, r1
|
||||
orrs r4, r0
|
||||
movs r1, 0xC6
|
||||
lsls r1, 3
|
||||
adds r2, r1
|
||||
lsrs r0, r4, 1
|
||||
ldr r1, [r2]
|
||||
eors r1, r0
|
||||
movs r0, 0x1
|
||||
ands r4, r0
|
||||
lsls r0, r4, 2
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
eors r1, r0
|
||||
str r1, [r3]
|
||||
movs r0, 0
|
||||
mov r4, r8
|
||||
str r0, [r4]
|
||||
_08094F1C:
|
||||
ldr r2, _08094F68
|
||||
mov r0, r8
|
||||
ldr r1, [r0]
|
||||
lsls r0, r1, 2
|
||||
adds r0, r2
|
||||
ldr r4, [r0]
|
||||
adds r1, 0x1
|
||||
mov r0, r8
|
||||
str r1, [r0]
|
||||
lsrs r0, r4, 11
|
||||
eors r4, r0
|
||||
lsls r0, r4, 7
|
||||
ldr r1, _08094F80
|
||||
ands r0, r1
|
||||
eors r4, r0
|
||||
lsls r0, r4, 15
|
||||
ldr r1, _08094F84
|
||||
ands r0, r1
|
||||
eors r4, r0
|
||||
lsrs r0, r4, 18
|
||||
eors r4, r0
|
||||
adds r0, r4, 0
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08094F54: .4byte gUnknown_203B470
|
||||
_08094F58: .4byte 0x0000026f
|
||||
_08094F5C: .4byte 0x00000271
|
||||
_08094F60: .4byte 0x00001571
|
||||
_08094F64: .4byte gUnknown_203B474
|
||||
_08094F68: .4byte gUnknown_3001198
|
||||
_08094F6C: .4byte 0x7fffffff
|
||||
_08094F70: .4byte 0x0000018d
|
||||
_08094F74: .4byte 0x0000026e
|
||||
_08094F78: .4byte 0xfffffc74
|
||||
_08094F7C: .4byte 0x000009bc
|
||||
_08094F80: .4byte 0x9d2c5680
|
||||
_08094F84: .4byte 0xefc60000
|
||||
thumb_func_end sub_8094E4C
|
||||
|
||||
.align 2,0
|
||||
18648
asm/gulpin_shop.s
Normal file
18648
asm/gulpin_shop.s
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1456
asm/kangaskhan_storage_2.s
Normal file
1456
asm/kangaskhan_storage_2.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -338,15 +338,15 @@ _08030234:
|
||||
b _08030250
|
||||
_0803023A:
|
||||
movs r0, 0x3
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
b _08030250
|
||||
_08030242:
|
||||
movs r0, 0xC
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
b _08030250
|
||||
_0803024A:
|
||||
movs r0, 0x2
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
_08030250:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
@@ -370,7 +370,7 @@ sub_8030258:
|
||||
strh r0, [r1, 0x10]
|
||||
bl sub_8030480
|
||||
movs r0, 0x5
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
b _0803029A
|
||||
.align 2, 0
|
||||
_08030284: .4byte gUnknown_203B318
|
||||
@@ -381,7 +381,7 @@ _08030288:
|
||||
ldr r0, _080302A4
|
||||
strh r0, [r1, 0x10]
|
||||
movs r0, 0x1
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
_0803029A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
@@ -400,7 +400,7 @@ sub_80302A8:
|
||||
bhi _080302C0
|
||||
bl sub_801B72C
|
||||
movs r0, 0xA
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
_080302C0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
@@ -417,7 +417,7 @@ sub_80302C4:
|
||||
ldr r0, _080302E4
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0xC]
|
||||
bl sub_802FF04
|
||||
bl UpdateMakuhitaState
|
||||
_080302DC:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
|
||||
359
asm/memory.s
359
asm/memory.s
@@ -412,364 +412,5 @@ _08003328:
|
||||
bx r1
|
||||
thumb_func_end _LocateSetBack
|
||||
|
||||
thumb_func_start _LocateSet
|
||||
_LocateSet:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
adds r5, r0, 0
|
||||
adds r7, r1, 0
|
||||
adds r6, r2, 0
|
||||
cmp r5, 0
|
||||
bne _0800335C
|
||||
ldr r5, =gMainHeapDescriptor
|
||||
_0800335C:
|
||||
asrs r4, r6, 8
|
||||
movs r0, 0x1
|
||||
orrs r4, r0
|
||||
movs r0, 0xFF
|
||||
ands r6, r0
|
||||
movs r0, 0x2
|
||||
ands r0, r4
|
||||
cmp r0, 0
|
||||
beq _08003394
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r7, 0
|
||||
bl MemorySearchFromFront
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
blt _080033B4
|
||||
str r6, [sp]
|
||||
adds r0, r5, 0
|
||||
adds r2, r4, 0
|
||||
adds r3, r7, 0
|
||||
bl _LocateSetFront
|
||||
ldr r0, [r0, 0xC]
|
||||
b _080033CC
|
||||
.align 2, 0
|
||||
.pool
|
||||
_08003394:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r7, 0
|
||||
bl MemorySearchFromBack
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
blt _080033B4
|
||||
str r6, [sp]
|
||||
adds r0, r5, 0
|
||||
adds r2, r4, 0
|
||||
adds r3, r7, 0
|
||||
bl _LocateSetBack
|
||||
ldr r0, [r0, 0xC]
|
||||
b _080033CC
|
||||
_080033B4:
|
||||
ldr r0, =gUnknown_80B7F14
|
||||
ldr r1, =gUnknown_80B7F20
|
||||
str r4, [sp]
|
||||
str r6, [sp, 0x4]
|
||||
adds r2, r5, 0
|
||||
adds r3, r7, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080033CC:
|
||||
add sp, 0x8
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end _LocateSet
|
||||
|
||||
thumb_func_start MemoryAlloc
|
||||
MemoryAlloc:
|
||||
push {lr}
|
||||
adds r3, r0, 0
|
||||
adds r2, r1, 0
|
||||
ldr r0, =gMainHeapDescriptor
|
||||
adds r1, r3, 0
|
||||
bl DoAlloc
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
.pool
|
||||
thumb_func_end MemoryAlloc
|
||||
|
||||
thumb_func_start MemoryFree
|
||||
MemoryFree:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
ldr r0, =gMainHeapDescriptor
|
||||
bl DoFree
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
.pool
|
||||
thumb_func_end MemoryFree
|
||||
|
||||
thumb_func_start MemoryLocate_LocalCreate
|
||||
MemoryLocate_LocalCreate:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r7, r2, 0
|
||||
adds r6, r3, 0
|
||||
cmp r4, 0
|
||||
bne _08003412
|
||||
ldr r4, =gMainHeapDescriptor
|
||||
_08003412:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x9
|
||||
adds r2, r5, 0
|
||||
bl MemorySearchFromBack
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
bge _08003438
|
||||
ldr r0, =gUnknown_80B7F88
|
||||
ldr r1, =gUnknown_80B7F94
|
||||
adds r2, r5, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
.pool
|
||||
_08003438:
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
adds r3, r5, 0
|
||||
bl _LocateSetBack
|
||||
ldr r1, [r0, 0xC]
|
||||
str r1, [sp, 0x4]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp, 0x8]
|
||||
add r0, sp, 0x4
|
||||
adds r1, r7, 0
|
||||
bl DoCreateSubHeap
|
||||
str r4, [r0, 0x4]
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end MemoryLocate_LocalCreate
|
||||
|
||||
thumb_func_start DoCreateSubHeap
|
||||
DoCreateSubHeap:
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
adds r2, r1, 0
|
||||
ldr r4, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x1C
|
||||
str r1, [sp]
|
||||
ldr r0, [r0, 0x4]
|
||||
subs r0, 0x1C
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
bl InitSubHeap
|
||||
adds r0, r4, 0
|
||||
add sp, 0x8
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end DoCreateSubHeap
|
||||
|
||||
thumb_func_start xxx_unused_memory_free
|
||||
xxx_unused_memory_free:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _08003504
|
||||
movs r1, 0
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _080034A2
|
||||
ldr r0, [r4, 0x8]
|
||||
ldr r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
bne _080034A2
|
||||
movs r1, 0x1
|
||||
_080034A2:
|
||||
cmp r1, 0
|
||||
beq _08003504
|
||||
movs r0, 0
|
||||
mov r12, r0
|
||||
movs r3, 0
|
||||
ldr r6, =gHeapCount
|
||||
ldr r0, [r6]
|
||||
cmp r12, r0
|
||||
bge _080034F2
|
||||
ldr r5, =gHeapDescriptorList
|
||||
adds r1, r6, 0
|
||||
adds r7, r5, 0
|
||||
movs r2, 0
|
||||
_080034BC:
|
||||
adds r0, r2, r5
|
||||
ldr r0, [r0]
|
||||
cmp r0, r4
|
||||
bne _080034E8
|
||||
ldr r0, [r1]
|
||||
subs r0, 0x1
|
||||
str r0, [r1]
|
||||
cmp r3, r0
|
||||
bge _080034F8
|
||||
ldr r1, =gHeapCount
|
||||
adds r2, r7
|
||||
_080034D2:
|
||||
ldr r0, [r2, 0x4]
|
||||
stm r2!, {r0}
|
||||
adds r3, 0x1
|
||||
ldr r0, [r1]
|
||||
cmp r3, r0
|
||||
blt _080034D2
|
||||
b _080034F8
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080034E8:
|
||||
adds r2, 0x4
|
||||
adds r3, 0x1
|
||||
ldr r0, [r6]
|
||||
cmp r3, r0
|
||||
blt _080034BC
|
||||
_080034F2:
|
||||
mov r0, r12
|
||||
cmp r0, 0
|
||||
beq _08003504
|
||||
_080034F8:
|
||||
ldr r0, [r4, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08003504
|
||||
adds r1, r4, 0
|
||||
bl DoFree
|
||||
_08003504:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end xxx_unused_memory_free
|
||||
|
||||
thumb_func_start DoAlloc
|
||||
DoAlloc:
|
||||
push {lr}
|
||||
movs r3, 0x80
|
||||
lsls r3, 1
|
||||
orrs r3, r2
|
||||
adds r2, r3, 0
|
||||
bl _LocateSet
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end DoAlloc
|
||||
|
||||
thumb_func_start DoFree
|
||||
DoFree:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
bne _0800352E
|
||||
ldr r4, =gMainHeapDescriptor
|
||||
_0800352E:
|
||||
cmp r1, 0
|
||||
beq _080035E4
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r3, [r4, 0x8]
|
||||
mov r12, r3
|
||||
ldr r3, [r4, 0xC]
|
||||
cmp r8, r3
|
||||
bge _080035E4
|
||||
movs r2, 0
|
||||
_08003542:
|
||||
mov r5, r12
|
||||
ldr r0, [r5, 0xC]
|
||||
cmp r0, r1
|
||||
bne _080035D8
|
||||
str r2, [r5]
|
||||
str r2, [r5, 0x4]
|
||||
str r2, [r5, 0x14]
|
||||
str r2, [r5, 0x8]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
cmp r8, r0
|
||||
bge _08003592
|
||||
mov r2, r12
|
||||
adds r2, 0x18
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
bne _08003592
|
||||
ldr r0, [r5, 0x10]
|
||||
ldr r1, [r2, 0x10]
|
||||
adds r0, r1
|
||||
str r0, [r5, 0x10]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0xC]
|
||||
mov r3, r8
|
||||
adds r3, 0x1
|
||||
cmp r3, r0
|
||||
bge _08003592
|
||||
_0800357A:
|
||||
adds r0, r2, 0
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x18
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
adds r3, 0x1
|
||||
adds r2, 0x18
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r3, r0
|
||||
blt _0800357A
|
||||
_08003592:
|
||||
mov r6, r8
|
||||
cmp r6, 0
|
||||
ble _080035E4
|
||||
mov r2, r12
|
||||
subs r2, 0x18
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
bne _080035E4
|
||||
ldr r0, [r2, 0x10]
|
||||
mov r7, r12
|
||||
ldr r1, [r7, 0x10]
|
||||
adds r0, r1
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0xC]
|
||||
mov r2, r12
|
||||
mov r3, r8
|
||||
cmp r3, r0
|
||||
bge _080035E4
|
||||
_080035BA:
|
||||
adds r0, r2, 0
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x18
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
adds r3, 0x1
|
||||
adds r2, 0x18
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r3, r0
|
||||
blt _080035BA
|
||||
b _080035E4
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080035D8:
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
movs r5, 0x18
|
||||
add r12, r5
|
||||
cmp r8, r3
|
||||
blt _08003542
|
||||
_080035E4:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end DoFree
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
||||
274
asm/memory_1.s
Normal file
274
asm/memory_1.s
Normal file
@@ -0,0 +1,274 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start MemoryLocate_LocalCreate
|
||||
MemoryLocate_LocalCreate:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r7, r2, 0
|
||||
adds r6, r3, 0
|
||||
cmp r4, 0
|
||||
bne _08003412
|
||||
ldr r4, =gMainHeapDescriptor
|
||||
_08003412:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x9
|
||||
adds r2, r5, 0
|
||||
bl MemorySearchFromBack
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
bge _08003438
|
||||
ldr r0, =gUnknown_80B7F88
|
||||
ldr r1, =gUnknown_80B7F94
|
||||
adds r2, r5, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
.pool
|
||||
_08003438:
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
adds r3, r5, 0
|
||||
bl _LocateSetBack
|
||||
ldr r1, [r0, 0xC]
|
||||
str r1, [sp, 0x4]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp, 0x8]
|
||||
add r0, sp, 0x4
|
||||
adds r1, r7, 0
|
||||
bl DoCreateSubHeap
|
||||
str r4, [r0, 0x4]
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end MemoryLocate_LocalCreate
|
||||
|
||||
thumb_func_start DoCreateSubHeap
|
||||
DoCreateSubHeap:
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
adds r2, r1, 0
|
||||
ldr r4, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x1C
|
||||
str r1, [sp]
|
||||
ldr r0, [r0, 0x4]
|
||||
subs r0, 0x1C
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
bl InitSubHeap
|
||||
adds r0, r4, 0
|
||||
add sp, 0x8
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end DoCreateSubHeap
|
||||
|
||||
thumb_func_start xxx_unused_memory_free
|
||||
xxx_unused_memory_free:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _08003504
|
||||
movs r1, 0
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _080034A2
|
||||
ldr r0, [r4, 0x8]
|
||||
ldr r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
bne _080034A2
|
||||
movs r1, 0x1
|
||||
_080034A2:
|
||||
cmp r1, 0
|
||||
beq _08003504
|
||||
movs r0, 0
|
||||
mov r12, r0
|
||||
movs r3, 0
|
||||
ldr r6, =gHeapCount
|
||||
ldr r0, [r6]
|
||||
cmp r12, r0
|
||||
bge _080034F2
|
||||
ldr r5, =gHeapDescriptorList
|
||||
adds r1, r6, 0
|
||||
adds r7, r5, 0
|
||||
movs r2, 0
|
||||
_080034BC:
|
||||
adds r0, r2, r5
|
||||
ldr r0, [r0]
|
||||
cmp r0, r4
|
||||
bne _080034E8
|
||||
ldr r0, [r1]
|
||||
subs r0, 0x1
|
||||
str r0, [r1]
|
||||
cmp r3, r0
|
||||
bge _080034F8
|
||||
ldr r1, =gHeapCount
|
||||
adds r2, r7
|
||||
_080034D2:
|
||||
ldr r0, [r2, 0x4]
|
||||
stm r2!, {r0}
|
||||
adds r3, 0x1
|
||||
ldr r0, [r1]
|
||||
cmp r3, r0
|
||||
blt _080034D2
|
||||
b _080034F8
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080034E8:
|
||||
adds r2, 0x4
|
||||
adds r3, 0x1
|
||||
ldr r0, [r6]
|
||||
cmp r3, r0
|
||||
blt _080034BC
|
||||
_080034F2:
|
||||
mov r0, r12
|
||||
cmp r0, 0
|
||||
beq _08003504
|
||||
_080034F8:
|
||||
ldr r0, [r4, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08003504
|
||||
adds r1, r4, 0
|
||||
bl DoFree
|
||||
_08003504:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end xxx_unused_memory_free
|
||||
|
||||
thumb_func_start DoAlloc
|
||||
DoAlloc:
|
||||
push {lr}
|
||||
movs r3, 0x80
|
||||
lsls r3, 1
|
||||
orrs r3, r2
|
||||
adds r2, r3, 0
|
||||
bl _LocateSet
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end DoAlloc
|
||||
|
||||
thumb_func_start DoFree
|
||||
DoFree:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
bne _0800352E
|
||||
ldr r4, =gMainHeapDescriptor
|
||||
_0800352E:
|
||||
cmp r1, 0
|
||||
beq _080035E4
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r3, [r4, 0x8]
|
||||
mov r12, r3
|
||||
ldr r3, [r4, 0xC]
|
||||
cmp r8, r3
|
||||
bge _080035E4
|
||||
movs r2, 0
|
||||
_08003542:
|
||||
mov r5, r12
|
||||
ldr r0, [r5, 0xC]
|
||||
cmp r0, r1
|
||||
bne _080035D8
|
||||
str r2, [r5]
|
||||
str r2, [r5, 0x4]
|
||||
str r2, [r5, 0x14]
|
||||
str r2, [r5, 0x8]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
cmp r8, r0
|
||||
bge _08003592
|
||||
mov r2, r12
|
||||
adds r2, 0x18
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
bne _08003592
|
||||
ldr r0, [r5, 0x10]
|
||||
ldr r1, [r2, 0x10]
|
||||
adds r0, r1
|
||||
str r0, [r5, 0x10]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0xC]
|
||||
mov r3, r8
|
||||
adds r3, 0x1
|
||||
cmp r3, r0
|
||||
bge _08003592
|
||||
_0800357A:
|
||||
adds r0, r2, 0
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x18
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
adds r3, 0x1
|
||||
adds r2, 0x18
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r3, r0
|
||||
blt _0800357A
|
||||
_08003592:
|
||||
mov r6, r8
|
||||
cmp r6, 0
|
||||
ble _080035E4
|
||||
mov r2, r12
|
||||
subs r2, 0x18
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
bne _080035E4
|
||||
ldr r0, [r2, 0x10]
|
||||
mov r7, r12
|
||||
ldr r1, [r7, 0x10]
|
||||
adds r0, r1
|
||||
str r0, [r2, 0x10]
|
||||
ldr r0, [r4, 0xC]
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0xC]
|
||||
mov r2, r12
|
||||
mov r3, r8
|
||||
cmp r3, r0
|
||||
bge _080035E4
|
||||
_080035BA:
|
||||
adds r0, r2, 0
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x18
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
ldm r1!, {r5-r7}
|
||||
stm r0!, {r5-r7}
|
||||
adds r3, 0x1
|
||||
adds r2, 0x18
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r3, r0
|
||||
blt _080035BA
|
||||
b _080035E4
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080035D8:
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
movs r5, 0x18
|
||||
add r12, r5
|
||||
cmp r8, r3
|
||||
blt _08003542
|
||||
_080035E4:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end DoFree
|
||||
|
||||
.align 2,0
|
||||
@@ -5,63 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_808CE08
|
||||
sub_808CE08:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0808CE60
|
||||
movs r3, 0
|
||||
movs r1, 0
|
||||
ldr r2, _0808CE64
|
||||
_0808CE12:
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
strh r3, [r0]
|
||||
adds r1, 0x58
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bne _0808CE12
|
||||
ldr r5, _0808CE60
|
||||
ldr r4, _0808CE68
|
||||
movs r3, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x3
|
||||
_0808CE2A:
|
||||
ldr r0, [r5]
|
||||
adds r0, r1
|
||||
adds r0, r4
|
||||
strh r3, [r0]
|
||||
adds r1, 0x64
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _0808CE2A
|
||||
ldr r7, _0808CE60
|
||||
ldr r6, _0808CE6C
|
||||
movs r4, 0
|
||||
movs r3, 0
|
||||
ldr r5, _0808CE70
|
||||
movs r2, 0x3
|
||||
_0808CE46:
|
||||
ldr r0, [r7]
|
||||
adds r0, r3
|
||||
adds r1, r0, r6
|
||||
strh r4, [r1]
|
||||
adds r0, r5
|
||||
strh r4, [r0]
|
||||
adds r3, 0x58
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _0808CE46
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808CE60: .4byte gRecruitedPokemonRef
|
||||
_0808CE64: .4byte 0x0000019d
|
||||
_0808CE68: .4byte 0x00008df8
|
||||
_0808CE6C: .4byte 0x00008f90
|
||||
_0808CE70: .4byte 0x00008f88
|
||||
thumb_func_end sub_808CE08
|
||||
|
||||
thumb_func_start sub_808CE74
|
||||
sub_808CE74:
|
||||
push {r4-r7,lr}
|
||||
|
||||
2086
asm/pokemon_square.s
2086
asm/pokemon_square.s
File diff suppressed because it is too large
Load Diff
2390
data/data_80B9BB8.s
2390
data/data_80B9BB8.s
File diff suppressed because it is too large
Load Diff
2306
data/data_80D47B8.s
Normal file
2306
data/data_80D47B8.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -919,7 +919,7 @@ gUnknown_8116298: @ 8116298
|
||||
@ replacing .incbin "baserom.gba", 0x00116298, 0x10
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.4byte sub_802FEE0
|
||||
.4byte CleanMakuhitaShop
|
||||
.4byte sub_802FE58
|
||||
|
||||
.global gUnknown_81162A8
|
||||
@@ -927,7 +927,7 @@ gUnknown_81162A8: @ 81162A8
|
||||
@ replacing .incbin "baserom.gba", 0x001162a8, 0x10
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.4byte sub_802FEE0
|
||||
.4byte CleanMakuhitaShop
|
||||
.4byte sub_802FE58
|
||||
|
||||
.global gUnknown_81162B8
|
||||
@@ -935,7 +935,7 @@ gUnknown_81162B8: @ 81162B8
|
||||
@ replacing .incbin "baserom.gba", 0x001162b8, 0x10
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.4byte sub_802FEE0
|
||||
.4byte CleanMakuhitaShop
|
||||
.4byte sub_802FE58
|
||||
|
||||
.global gUnknown_81162C8
|
||||
|
||||
@@ -7,14 +7,14 @@ struct subStruct_8048524
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 fill8[0xE - 0x8];
|
||||
s16 unkE; // HP??
|
||||
/* 0xE */ s16 HP; // HP??
|
||||
s16 unk10;
|
||||
u8 fill12[0x46 - 0x12];
|
||||
u8 unk46;
|
||||
u8 fill47[0xA4 - 0x47];
|
||||
u8 unkA4;
|
||||
u8 fillA5[0xAC - 0xA5];
|
||||
u8 unkAC;
|
||||
/* 0xAC */ u8 statusCondition;
|
||||
u8 fillAD[0xFB - 0xAD];
|
||||
u8 unkFB;
|
||||
u8 fillFC[0x112 - 0xFC];
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_CONSTANTS_SPECIES_H
|
||||
#define GUARD_CONSTANTS_SPECIES_H
|
||||
|
||||
#define NUM_SPECIES 413
|
||||
|
||||
#define SPECIES_NONE 0
|
||||
#define SPECIES_BULBASAUR 1
|
||||
#define SPECIES_IVYSAUR 2
|
||||
|
||||
21
include/gUnknown_203B46C.h
Normal file
21
include/gUnknown_203B46C.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef GUARD_GUNKNOWN_203B46C_H
|
||||
#define GUARD_GUNKNOWN_203B46C_H
|
||||
|
||||
struct UnkSaveStruct1
|
||||
{
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x5 */ u8 unk5;
|
||||
/* 0x6 */ u8 unk6;
|
||||
/* 0x7 */ u8 unk7;
|
||||
/* 0x8 */ u8 unk8;
|
||||
/* 0x9 */ u8 unk9;
|
||||
/* 0xA */ u8 unkA;
|
||||
/* 0xB */ u8 playerGender;
|
||||
/* 0xC */ u8 unkC;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -28,7 +28,7 @@ struct unkStruct_203B210
|
||||
u8 fill34[0x84 - 0x34];
|
||||
u32 unk84;
|
||||
u8 fill88[0xD4 - 0x88];
|
||||
struct OpenedFile *unkD4;
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *unkD8;
|
||||
u16 unkDC;
|
||||
u16 unkDE;
|
||||
|
||||
@@ -52,5 +52,8 @@ void MemoryCopy32(u32 *dest, u32 *src, s32 size);
|
||||
void InitHeapInternal(void);
|
||||
void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
|
||||
void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock *, u32);
|
||||
s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3);
|
||||
void *MemoryAlloc(s32 size, s32 b);
|
||||
void MemoryFree(void *a);
|
||||
|
||||
#endif // GUARD_MEMORY_H
|
||||
|
||||
@@ -3,6 +3,57 @@
|
||||
|
||||
#include "file_system.h"
|
||||
|
||||
struct PokemonStruct
|
||||
{
|
||||
// size: 0x58
|
||||
u16 unk0; // recruited??
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 fill4[0x8 - 0x4];
|
||||
s16 unk8; // species #
|
||||
u8 fillA[0x14 - 0xA];
|
||||
u16 unk14;
|
||||
u16 unk16; // HP
|
||||
u8 unk18; // attack
|
||||
u8 unk19; // sp attack
|
||||
u8 unk1A; // def
|
||||
u8 unk1B; // spdef
|
||||
u32 unk1C;
|
||||
u32 unk20;
|
||||
u8 unk24;
|
||||
u8 fill25[3];
|
||||
u8 unk28;
|
||||
u8 fill29[3];
|
||||
u32 unk2C;
|
||||
u8 fill30[0x4C - 0x30];
|
||||
/* 0x4C */ u8 name[0xA];
|
||||
};
|
||||
|
||||
struct PokemonStruct2
|
||||
{
|
||||
// size 0x64
|
||||
u16 unk0;
|
||||
u8 fill[0x62];
|
||||
};
|
||||
|
||||
struct PokemonStruct3
|
||||
{
|
||||
// size: 0x58
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u16 unk8;
|
||||
u8 fill[0x4E];
|
||||
};
|
||||
|
||||
struct unkStruct_203B45C
|
||||
{
|
||||
struct PokemonStruct pokemon[0x19D];
|
||||
struct PokemonStruct2 pokemon2[4];
|
||||
struct PokemonStruct3 pokemon3[4];
|
||||
};
|
||||
|
||||
struct EvolveStruct1
|
||||
{
|
||||
/* 0x34 */ u16 evolve_from;
|
||||
|
||||
@@ -36,7 +36,7 @@ struct UnkStruct_sub_8011DAC {
|
||||
|
||||
struct UnkStruct_203B184 {
|
||||
/* 0x0 */ u32 *unk0;
|
||||
/* 0x4 */ u32 *unk4;
|
||||
/* 0x4 */ u32 *recruitedPokemon;
|
||||
/* 0x8 */ u8 *unk8;
|
||||
/* 0xC */ u8 *unkC;
|
||||
/* 0x10 */ u32 *unk10;
|
||||
@@ -46,7 +46,7 @@ struct UnkStruct_203B184 {
|
||||
/* 0x20 */ u32 unk20;
|
||||
/* 0x24 */ struct ExclusivePokemonData *ExclusivePokemon;
|
||||
/* 0x28 */ u8 *BoughtFriendAreas;
|
||||
/* 0x2C */ u32 unk2C;
|
||||
/* 0x2C */ u32 gameOptions;
|
||||
/* 0x30 */ struct PlayTimeStruct *playTime;
|
||||
u32 unk34;
|
||||
u32 unk38;
|
||||
@@ -89,7 +89,7 @@ void sub_80129FC(void);
|
||||
void sub_8012298();
|
||||
void sub_80122D0();
|
||||
void sub_80122F4();
|
||||
void sub_8012300();
|
||||
void InitializePlayerData();
|
||||
void sub_80122A8();
|
||||
|
||||
u32 ReadSaveSector(s32 *a, u8 *dest, s32 size);
|
||||
|
||||
@@ -50,6 +50,8 @@ SECTIONS {
|
||||
asm/code_8002774.o(.text);
|
||||
src/memory.o(.text);
|
||||
asm/memory.o(.text);
|
||||
src/memory_mid.o(.text);
|
||||
asm/memory_1.o(.text);
|
||||
src/memory1.o(.text);
|
||||
asm/code_80035F0.o(.text);
|
||||
src/other_random.o(.text);
|
||||
@@ -84,6 +86,7 @@ SECTIONS {
|
||||
src/code_8012A18.o(.text);
|
||||
src/more_input.o(.text);
|
||||
asm/code_8012A18.o(.text);
|
||||
src/code_8012A18_1.o(.text);
|
||||
src/felicity_bank.o(.text);
|
||||
asm/felicity_bank.o(.text);
|
||||
src/felicity_bank_1.o(.text);
|
||||
@@ -91,12 +94,20 @@ SECTIONS {
|
||||
asm/kangaskhan_storage.o(.text);
|
||||
src/kangaskhan_storage_1.o(.text);
|
||||
asm/kangaskhan_storage_1.o(.text);
|
||||
src/kangaskhan_storage_2.o(.text);
|
||||
asm/kangaskhan_storage_2.o(.text);
|
||||
src/kangaskhan_storage_3.o(.text);
|
||||
src/kecleon_items.o(.text);
|
||||
asm/kecleon_items.o(.text);
|
||||
src/kecleon_items_1.o(.text);
|
||||
asm/pokemon_square.o(.text);
|
||||
src/code_801C620.o(.text);
|
||||
asm/code_801C620.o(.text);
|
||||
src/code_801D760.o(.text);
|
||||
asm/code_801D760.o(.text);
|
||||
src/code_801DCC4.o(.text);
|
||||
asm/code_801DCC4.o(.text);
|
||||
asm/gulpin_shop.o(.text);
|
||||
src/code_8027C84_pre.o(.text);
|
||||
asm/code_8027C84.o(.text);
|
||||
src/wonder_mail_pre.o(.text);
|
||||
@@ -181,6 +192,8 @@ SECTIONS {
|
||||
asm/friend_area_1.o(.text);
|
||||
src/friend_area_1.o(.text);
|
||||
asm/code_8092334.o(.text);
|
||||
src/game_options.o(.text);
|
||||
asm/game_options.o(.text);
|
||||
src/play_time.o(.text);
|
||||
src/code_8094F88.o(.text);
|
||||
asm/code_8095014.o(.text);
|
||||
@@ -269,6 +282,8 @@ SECTIONS {
|
||||
data/data.o(.rodata);
|
||||
src/file_system.o(.rodata);
|
||||
data/data_80B9BB8.o(.rodata);
|
||||
src/save.o(.rodata);
|
||||
data/data_80D47B8.o(.rodata);
|
||||
src/wonder_mail.o(.rodata);
|
||||
data/data_80DED44.o(.rodata);
|
||||
src/post_office_guide.o(.rodata);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "gba/io_reg.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -54,8 +55,6 @@ const u8 gAdventureLogHeaderText[] = "Adventure Log";
|
||||
const u8 gUnknown_80E2030[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
|
||||
const u8 fill_adven[] = "pksdir0";
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
void sub_8032084();
|
||||
@@ -78,7 +77,7 @@ extern u32 gUnknown_202DE30;
|
||||
|
||||
u32 CreateAdventureLogScreen(u32 param_1)
|
||||
{
|
||||
gAdventureLog = MemoryAlloc(0xa0,8);
|
||||
gAdventureLog = MemoryAlloc(sizeof(struct AdventureLog),8);
|
||||
gAdventureLog->unk34 = param_1;
|
||||
gAdventureLog->unk38 = &gAdventureLog->unk3C[param_1];
|
||||
sub_8006518(gAdventureLog->unk3C);
|
||||
|
||||
13
src/code_2.c
13
src/code_2.c
@@ -8,6 +8,7 @@
|
||||
#include "music.h"
|
||||
#include "play_time.h"
|
||||
#include "save.h"
|
||||
#include "gUnknown_203B46C.h"
|
||||
|
||||
extern void NDS_DebugInit(void);
|
||||
extern void sub_801180C(void);
|
||||
@@ -15,7 +16,7 @@ extern void NDS_LoadOverlay_GroundMain(void);
|
||||
extern void sub_8014144(void);
|
||||
extern void LoadMonsterParameters(void);
|
||||
extern void sub_8097670(void);
|
||||
extern void sub_8094980(void);
|
||||
extern void LoadGameOptions(void);
|
||||
extern void sub_8094C14(void);
|
||||
extern void LoadExclusivePokemon(void);
|
||||
extern void LoadItemParameters(void);
|
||||
@@ -24,7 +25,7 @@ extern void LoadWazaParameters(void);
|
||||
extern void sub_80950BC(void);
|
||||
extern void sub_80958E8(void);
|
||||
extern void sub_800CD64(u32, u32);
|
||||
extern void sub_8094998(u32);
|
||||
extern void InitializeGameOptions(u32);
|
||||
extern void SetWindowTitle(char *);
|
||||
extern void sub_800DAAC(void);
|
||||
extern void SetSavingIconCoords(u32);
|
||||
@@ -71,7 +72,7 @@ extern u16 gUnknown_2026E4E;
|
||||
extern s32 gUnknown_2000A80;
|
||||
extern struct OpenedFile *gTitlePaletteFile;
|
||||
extern struct Inputs gRealInputs;
|
||||
extern u8 *gUnknown_203B46C;
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
|
||||
extern char gPMDBuildVersion[];
|
||||
|
||||
@@ -92,7 +93,7 @@ void GameLoop(void)
|
||||
LoadMonsterParameters();
|
||||
sub_8097670();
|
||||
InitializePlayTime();
|
||||
sub_8094980();
|
||||
LoadGameOptions();
|
||||
sub_8094C14();
|
||||
LoadExclusivePokemon();
|
||||
LoadFriendAreas();
|
||||
@@ -103,7 +104,7 @@ void GameLoop(void)
|
||||
sub_80958E8();
|
||||
sub_800CD64(0x8000, 0);
|
||||
sub_8012284();
|
||||
sub_8094998(1);
|
||||
InitializeGameOptions(1);
|
||||
SetWindowTitle(gPMDBuildVersion);
|
||||
sub_800DAAC();
|
||||
SetSavingIconCoords(0);
|
||||
@@ -207,7 +208,7 @@ void xxx_update_stuff(u32 r0)
|
||||
{
|
||||
xxx_draw_string_80144C4();
|
||||
sub_8005838(0, 0);
|
||||
nullsub_8(gUnknown_203B46C[10]);
|
||||
nullsub_8(gUnknown_203B46C->unkA);
|
||||
sub_8005180();
|
||||
sub_80060EC();
|
||||
sub_8011860();
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "code_800558C.h"
|
||||
#include "input.h"
|
||||
|
||||
struct UnkStruct_203B46C
|
||||
{
|
||||
/* 0x0 */ u32 unk0;
|
||||
/* 0x4 */ u32 unk4;
|
||||
/* 0x8 */ u16 unk8;
|
||||
/* 0xA */ u8 unkA;
|
||||
};
|
||||
|
||||
#include "gUnknown_203B46C.h"
|
||||
|
||||
extern void sub_8011860();
|
||||
extern void xxx_draw_string_80144C4();
|
||||
@@ -24,7 +16,7 @@ extern void sub_8009908();
|
||||
extern void xxx_call_update_bg_sound_input();
|
||||
extern void ResetSprites(u8 r0);
|
||||
|
||||
extern struct UnkStruct_203B46C *gUnknown_203B46C;
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
|
||||
|
||||
void sub_8012A18()
|
||||
|
||||
284
src/code_8012A18_1.c
Normal file
284
src/code_8012A18_1.c
Normal file
@@ -0,0 +1,284 @@
|
||||
#include "global.h"
|
||||
#include "menu.h"
|
||||
#include "file_system.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
|
||||
extern void sub_800641C(u32, u32, u32);
|
||||
|
||||
struct unkStruct_203B200
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
u8 *pokeName;
|
||||
s32 state;
|
||||
/* 0x10 */ struct MenuItem menus[3];
|
||||
};
|
||||
extern struct unkStruct_203B200 *gUnknown_203B200;
|
||||
extern const char *gUnknown_80D4920;
|
||||
extern const char *gUnknown_80D4928;
|
||||
|
||||
extern const char gUnknown_80DB6A4;
|
||||
extern const char gUnknown_80DB6BC;
|
||||
extern const char gUnknown_80DB688;
|
||||
extern u8 gAvailablePokemonNames[0x58];
|
||||
|
||||
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
|
||||
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_80151C0(u32, u8 *);
|
||||
extern void CreateConfirmNameMenu(void);
|
||||
extern void sub_80160F4(u32);
|
||||
bool8 sub_80162B8(void);
|
||||
extern u32 sub_80154F0(void);
|
||||
extern void sub_80155F0(void);
|
||||
extern void sub_80922B4(u8 *, u8 *, s32);
|
||||
|
||||
void nullsub_36(void);
|
||||
void sub_8016110(void);
|
||||
extern void sub_80161F8(void);
|
||||
extern void HandleConfirmNameMenu(void);
|
||||
extern void sub_8016280(void);
|
||||
extern void sub_801629C(void);
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
MENU_ACTION_DEFAULT = 1,
|
||||
MENU_ACTION_YES,
|
||||
MENU_ACTION_NO,
|
||||
};
|
||||
|
||||
extern u32 ReturnIntFromChar2(u8);
|
||||
|
||||
struct unkChar
|
||||
{
|
||||
u32 unk0;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
};
|
||||
|
||||
struct unkChar *GetCharacter(u32);
|
||||
|
||||
|
||||
s32 sub_8015FEC(u8 *buffer, s32 size)
|
||||
{
|
||||
struct unkChar *iVar2;
|
||||
s32 currLength;
|
||||
s32 iVar4;
|
||||
u8 *bufferPtr;
|
||||
|
||||
iVar4 = 0;
|
||||
currLength = 0;
|
||||
|
||||
if(currLength < size && *buffer != '\0')
|
||||
{
|
||||
bufferPtr = buffer; // Had to have another variable to match..
|
||||
do {
|
||||
iVar2 = GetCharacter(ReturnIntFromChar2(*bufferPtr));
|
||||
iVar4 += iVar2->unk6;
|
||||
bufferPtr++;
|
||||
currLength++;
|
||||
} while (currLength < size && *bufferPtr != '\0');
|
||||
}
|
||||
return iVar4;
|
||||
}
|
||||
|
||||
s32 sub_8016028(void)
|
||||
{
|
||||
return 60;
|
||||
}
|
||||
|
||||
u32 sub_801602C(u32 r0, u8 *name)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0, 1, 1);
|
||||
gUnknown_203B200 = MemoryAlloc(0x50, 8);
|
||||
gUnknown_203B200->unk0 = r0;
|
||||
gUnknown_203B200->pokeName = name;
|
||||
switch(r0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B200->unk4 = 0;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203B200->unk4 = 1;
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_203B200->unk4 = 2;
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B200->unk4 = 3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
sub_80160F4(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8016080(void)
|
||||
{
|
||||
switch(gUnknown_203B200->state) {
|
||||
case 0:
|
||||
sub_80161F8();
|
||||
break;
|
||||
case 1:
|
||||
HandleConfirmNameMenu();
|
||||
break;
|
||||
case 2:
|
||||
sub_8016280();
|
||||
break;
|
||||
case 3:
|
||||
sub_801629C();
|
||||
break;
|
||||
case 4:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
void sub_80160D8(void)
|
||||
{
|
||||
if(gUnknown_203B200 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B200);
|
||||
gUnknown_203B200 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_80160F4(u32 newState)
|
||||
{
|
||||
gUnknown_203B200->state = newState;
|
||||
nullsub_36();
|
||||
sub_8016110();
|
||||
}
|
||||
|
||||
void nullsub_36(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8016110(void)
|
||||
{
|
||||
switch(gUnknown_203B200->state)
|
||||
{
|
||||
case 0:
|
||||
sub_80151C0(gUnknown_203B200->unk4,gUnknown_203B200->pokeName);
|
||||
break;
|
||||
case 1:
|
||||
CreateConfirmNameMenu();
|
||||
if (gUnknown_203B200->unk4 == 1) {
|
||||
sub_80922B4(gAvailablePokemonNames,gUnknown_203B200->pokeName,10);
|
||||
}
|
||||
else {
|
||||
sub_80922B4(gAvailablePokemonNames,gUnknown_203B200->pokeName,10);
|
||||
}
|
||||
// Is the name #C5$m0#R OK?
|
||||
sub_8014248(&gUnknown_80DB688,0,3,gUnknown_203B200->menus,0,4,0,0,0x20);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
// This name is too long
|
||||
sub_80141B4(&gUnknown_80DB6A4,0,0,0x121);
|
||||
break;
|
||||
case 3:
|
||||
// Please enter a name
|
||||
sub_80141B4(&gUnknown_80DB6BC,0,0,0x121);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CreateConfirmNameMenu(void)
|
||||
{
|
||||
gUnknown_203B200->menus[0].text = gUnknown_80D4920; // Yes
|
||||
gUnknown_203B200->menus[0].menuAction = MENU_ACTION_YES;
|
||||
gUnknown_203B200->menus[1].text = gUnknown_80D4928; // No
|
||||
gUnknown_203B200->menus[1].menuAction = MENU_ACTION_NO;
|
||||
gUnknown_203B200->menus[2].text = NULL;
|
||||
gUnknown_203B200->menus[2].menuAction = MENU_ACTION_DEFAULT;
|
||||
}
|
||||
|
||||
void sub_80161F8(void)
|
||||
{
|
||||
s32 iVar2;
|
||||
s32 maxLength;
|
||||
|
||||
if (sub_80154F0() == 3) {
|
||||
sub_80155F0();
|
||||
if (sub_80162B8()) {
|
||||
sub_80160F4(3);
|
||||
}
|
||||
else{
|
||||
iVar2 = sub_8015FEC(gUnknown_203B200->pokeName,10);
|
||||
maxLength = sub_8016028(); // returns 60
|
||||
if (iVar2 > maxLength) {
|
||||
sub_80160F4(2);
|
||||
}
|
||||
else {
|
||||
sub_80160F4(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HandleConfirmNameMenu(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
switch(temp)
|
||||
{
|
||||
case MENU_ACTION_YES:
|
||||
sub_80160F4(4);
|
||||
break;
|
||||
case MENU_ACTION_NO:
|
||||
case MENU_ACTION_DEFAULT:
|
||||
sub_80160F4(0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8016280(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_80160F4(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_801629C(void)
|
||||
{
|
||||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0) {
|
||||
sub_80160F4(0);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80162B8(void)
|
||||
{
|
||||
u8 character;
|
||||
s32 index;
|
||||
s32 max;
|
||||
|
||||
max = 10; // constant needed at top of loop to match
|
||||
index = 0;
|
||||
do {
|
||||
character = gUnknown_203B200->pokeName[index];
|
||||
if (character == '\0') break;
|
||||
if (character != ' ') return 0;
|
||||
index++;
|
||||
} while (index < max);
|
||||
return 1;
|
||||
}
|
||||
197
src/code_801C620.c
Normal file
197
src/code_801C620.c
Normal file
@@ -0,0 +1,197 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
u8 unk0[24];
|
||||
};
|
||||
|
||||
|
||||
struct subStruct_203B240
|
||||
{
|
||||
char * unk0;
|
||||
char * unk4;
|
||||
};
|
||||
|
||||
struct unkStruct_203B240
|
||||
{
|
||||
s32 unk0;
|
||||
u8 unk4;
|
||||
u8 fill5[3];
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
struct subStruct_203B240 *unk10[2];
|
||||
u8 fill14[0x20 - 0x18];
|
||||
u32 unk20;
|
||||
u32 unk24;
|
||||
struct unkData unk28[4];
|
||||
u32 unk88;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B240 *gUnknown_203B240;
|
||||
extern char gUnknown_80DBE2C[]; // $i0
|
||||
extern char gUnknown_80DBE30[]; // $m0
|
||||
extern u8 gUnknown_202DE58[0x58];
|
||||
extern u8 gAvailablePokemonNames[0x58];
|
||||
|
||||
|
||||
extern void ResetSprites(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
extern void sub_80140B4(struct unkData *);
|
||||
extern void sub_800641C(struct unkData *,u32, u32);
|
||||
|
||||
|
||||
extern void sub_8014FF0(u32, u32, char *, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void xxx_call_draw_string(u32, u32, char *, u32, u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
|
||||
extern u32 sub_8012A64(u32 *, u32);
|
||||
extern void sub_8013F84();
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern char * GetIQSkillName(u8 r0);
|
||||
extern char * GetIQSkillDescription(u8 r0);
|
||||
|
||||
void sub_801C6D0(s32);
|
||||
void sub_801C7D4();
|
||||
void sub_801C6E4();
|
||||
void sub_801C848();
|
||||
|
||||
u32 sub_801C620(u8 param_1)
|
||||
{
|
||||
ResetSprites(1);
|
||||
gUnknown_203B240 = MemoryAlloc(0x94,8);
|
||||
gUnknown_203B240->unk4 = param_1;
|
||||
sub_801317C(&gUnknown_203B240->unk88);
|
||||
gUnknown_203B240->unk24 = 0;
|
||||
sub_80140B4(gUnknown_203B240->unk28);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B240->unk28,1,1);
|
||||
sub_801C6D0(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_801C674(void)
|
||||
{
|
||||
switch(gUnknown_203B240->unk0)
|
||||
{
|
||||
case 0:
|
||||
sub_801C7D4();
|
||||
break;
|
||||
case 1:
|
||||
sub_801C848();
|
||||
break;
|
||||
case 3:
|
||||
return 3;
|
||||
case 2:
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_801C6B4(void)
|
||||
{
|
||||
if(gUnknown_203B240 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B240);
|
||||
gUnknown_203B240 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801C6D0(s32 unk0)
|
||||
{
|
||||
gUnknown_203B240->unk0 = unk0;
|
||||
sub_801C6E4();
|
||||
}
|
||||
|
||||
void sub_801C6E4(void)
|
||||
{
|
||||
char *skillName;
|
||||
struct subStruct_203B240 *preload;
|
||||
|
||||
switch(gUnknown_203B240->unk0)
|
||||
{
|
||||
case 0:
|
||||
sub_8008C54(gUnknown_203B240->unk24);
|
||||
sub_80073B8(gUnknown_203B240->unk24);
|
||||
skillName = GetIQSkillName(gUnknown_203B240->unk4);
|
||||
strcpy(gUnknown_202DE58,skillName);
|
||||
sub_8014FF0(16,0,gUnknown_80DBE2C,0,0); // $i0
|
||||
xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk24,0);
|
||||
sub_80073E0(gUnknown_203B240->unk24);
|
||||
gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk10);
|
||||
gUnknown_203B240->unk20 = 0;
|
||||
break;
|
||||
case 1:
|
||||
sub_8008C54(gUnknown_203B240->unk24);
|
||||
sub_80073B8(gUnknown_203B240->unk24);
|
||||
preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8];
|
||||
strcpy(gAvailablePokemonNames,preload->unk0);
|
||||
sub_8014FF0(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // $m0
|
||||
sub_8014FF0(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
|
||||
sub_80073E0(gUnknown_203B240->unk24);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801C7D4(void)
|
||||
{
|
||||
|
||||
if (gUnknown_203B240->unkC != 0) {
|
||||
if ((gUnknown_203B240->unk20 & 8) != 0) {
|
||||
sub_8013F84();
|
||||
}
|
||||
gUnknown_203B240->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B240->unk88,gUnknown_203B240->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
if (gUnknown_203B240->unkC != 0) {
|
||||
gUnknown_203B240->unk8 = 0;
|
||||
sub_801C6D0(1);
|
||||
}
|
||||
else {
|
||||
sub_801C6D0(3);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801C6D0(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801C848(void)
|
||||
{
|
||||
|
||||
if (gUnknown_203B240->unk8 < (gUnknown_203B240->unkC - 1)) {
|
||||
if ((gUnknown_203B240->unk20 & 8) != 0) {
|
||||
sub_8013F84();
|
||||
}
|
||||
gUnknown_203B240->unk20++;
|
||||
}
|
||||
switch(sub_8012A64(&gUnknown_203B240->unk88,gUnknown_203B240->unk24))
|
||||
{
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
gUnknown_203B240->unk8++;
|
||||
if (gUnknown_203B240->unk8 < gUnknown_203B240->unkC) {
|
||||
sub_801C6D0(1);
|
||||
}
|
||||
else {
|
||||
sub_801C6D0(0);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801C6D0(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,39 @@
|
||||
#include "constants/friend_area.h"
|
||||
#include "file_system.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
u8 unk0[0x14];
|
||||
u32 *unk14;
|
||||
};
|
||||
|
||||
struct unkStruct_203B258
|
||||
{
|
||||
// size: 0xA0
|
||||
u8 fill0[0x14];
|
||||
u32 unk14;
|
||||
u8 fill18[0x34 - 0x18];
|
||||
u32 unk34;
|
||||
struct unkData *unk38;
|
||||
struct unkData unk3C[4];
|
||||
u32 unk9C;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B258 *gUnknown_203B258;
|
||||
extern struct unkData gUnknown_80DBF88;
|
||||
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013878(void *, s32);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern u32 GetKeyPress(void *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_801DB54();
|
||||
extern void sub_801DBD4();
|
||||
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_801BF98(void);
|
||||
@@ -121,130 +154,156 @@ void sub_801D680(void)
|
||||
|
||||
void sub_801D760()
|
||||
{
|
||||
u32 temp;
|
||||
temp = sub_8022860();
|
||||
if (temp <= 1)
|
||||
return;
|
||||
if (temp > 3)
|
||||
return;
|
||||
sub_8022908();
|
||||
sub_801D208(1);
|
||||
|
||||
switch(sub_8022860())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8022908();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D77C()
|
||||
{
|
||||
u32 temp;
|
||||
temp = sub_80270A4();
|
||||
if (temp <= 1)
|
||||
return;
|
||||
if (temp > 3)
|
||||
return;
|
||||
sub_8027168();
|
||||
sub_801D208(1);
|
||||
|
||||
switch(sub_80270A4())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8027168();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D798(void)
|
||||
{
|
||||
u32 temp;
|
||||
temp = sub_8025F68();
|
||||
if (temp <= 1)
|
||||
return;
|
||||
if (temp > 3)
|
||||
return;
|
||||
if(sub_802604C() != 0)
|
||||
gUnknown_203B250->unk7 = gUnknown_203B250->currFriendAreaLocation;
|
||||
sub_8026058();
|
||||
sub_801D208(2);
|
||||
switch(sub_8025F68())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
if(sub_802604C() != 0)
|
||||
gUnknown_203B250->unk7 = gUnknown_203B250->currFriendAreaLocation;
|
||||
sub_8026058();
|
||||
sub_801D208(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D7CC()
|
||||
{
|
||||
u32 check;
|
||||
u32 temp2;
|
||||
|
||||
check = sub_8025354();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
|
||||
temp2 = sub_802540C();
|
||||
gUnknown_203B250->unk7 = temp2;
|
||||
|
||||
sub_8025418();
|
||||
|
||||
if(gUnknown_203B250->unk7 != 0)
|
||||
switch(sub_8025354())
|
||||
{
|
||||
sub_801D208(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_801D208(1);
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
gUnknown_203B250->unk7 = sub_802540C();
|
||||
sub_8025418();
|
||||
if(gUnknown_203B250->unk7 != 0)
|
||||
{
|
||||
sub_801D208(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_801D208(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D808(void)
|
||||
{
|
||||
u32 check;
|
||||
|
||||
check = sub_80244E4();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
|
||||
sub_802453C();
|
||||
sub_801D208(1);
|
||||
switch(sub_80244E4())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802453C();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D824(void)
|
||||
{
|
||||
u32 check;
|
||||
check = sub_801BF48();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
sub_801BF98();
|
||||
sub_801D208(1);
|
||||
switch(sub_801BF48())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801BF98();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D840(void)
|
||||
{
|
||||
u32 check;
|
||||
check = sub_80217EC();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
sub_8021830();
|
||||
sub_801D208(1);
|
||||
switch(sub_80217EC())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8021830();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D85C(void)
|
||||
{
|
||||
u32 check;
|
||||
check = sub_802C898();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
sub_802C8F4();
|
||||
sub_801D208(1);
|
||||
switch(sub_802C898())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802C8F4();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D878(void)
|
||||
{
|
||||
u32 check;
|
||||
check = sub_801DCE8();
|
||||
if(check <= 1)
|
||||
return;
|
||||
if(check > 3)
|
||||
return;
|
||||
sub_801DD50();
|
||||
sub_801D208(1);
|
||||
switch(sub_801DCE8())
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801DD50();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D894(void)
|
||||
@@ -307,3 +366,50 @@ void LoadTeamRankBadge(u32 param_1, u32 param_2, u32 param_3)
|
||||
sub_8007E20(param_1, param_2, param_3, 16, 16, teamBadgePic, 14);
|
||||
CloseFile(teamBadgeFile);
|
||||
}
|
||||
|
||||
u32 sub_801D9E4(void)
|
||||
{
|
||||
gUnknown_203B258 = MemoryAlloc(sizeof(struct unkStruct_203B258),8);
|
||||
gUnknown_203B258->unk34 = 3;
|
||||
gUnknown_203B258->unk38 = &gUnknown_203B258->unk3C[3];
|
||||
sub_8006518(gUnknown_203B258->unk3C);
|
||||
gUnknown_203B258->unk3C[gUnknown_203B258->unk34] = gUnknown_80DBF88;
|
||||
gUnknown_203B258->unk38->unk14 = &gUnknown_203B258->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B258->unk3C,1,1);
|
||||
sub_8013818(gUnknown_203B258,0xe5,10,gUnknown_203B258->unk34);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_801DA58(s16 param_0)
|
||||
{
|
||||
s32 cast;
|
||||
cast = param_0;
|
||||
sub_8013878(gUnknown_203B258, cast);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
}
|
||||
|
||||
u32 sub_801DA78(void)
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B258))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B258, 1) != 0)
|
||||
{
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
474
src/code_801DCC4.c
Normal file
474
src/code_801DCC4.c
Normal file
@@ -0,0 +1,474 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "menu.h"
|
||||
#include "gUnknown_203B46C.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
u8 unk0[0xB];
|
||||
u16 unkB;
|
||||
u16 unkD;
|
||||
u16 unk10;
|
||||
u16 unk12;
|
||||
u32 *unk14;
|
||||
};
|
||||
|
||||
struct unkStruct_203B25C
|
||||
{
|
||||
// size: 0x11C
|
||||
u32 state;
|
||||
u32 unk4;
|
||||
struct UnkSaveStruct1 unk8;
|
||||
u32 unk18;
|
||||
const char *unk1C;
|
||||
u8 fill20[0x6C - 0x20];
|
||||
struct MenuItem unk6C[3];
|
||||
u8 fill84[0xAC - 0x84];
|
||||
u16 unkAC[8];
|
||||
struct unkData unkBC[4];
|
||||
};
|
||||
|
||||
|
||||
extern void sub_801DD6C(u32);
|
||||
|
||||
extern void HandleOthersMenu();
|
||||
extern void sub_801E088();
|
||||
extern void sub_801E0E0();
|
||||
extern void sub_801E0FC();
|
||||
extern void HandleChangeSettingsMenu();
|
||||
extern void sub_801DD84();
|
||||
extern void sub_801DED0();
|
||||
extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern u32 sub_801E198(struct UnkSaveStruct1 *);
|
||||
extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
|
||||
extern void sub_801E658(u32);
|
||||
extern void sub_801E3F0(u32);
|
||||
extern void sub_801E510(u32);
|
||||
extern void CreateChangeSettingsConfirmMenu(void);
|
||||
extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, u32 *);
|
||||
extern u32 sub_801E474(u32);
|
||||
extern u32 sub_801E4F4(void);
|
||||
extern void sub_801E54C(void);
|
||||
extern u32 sub_801E6CC(void);
|
||||
extern void sub_801E724(void);
|
||||
extern u32 sub_801E218(void);
|
||||
extern bool8 GameOptionsNotChange(struct UnkSaveStruct1 *);
|
||||
extern void sub_801E2C4(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_8094C14(void);
|
||||
extern void sub_8099690(u32);
|
||||
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
extern struct unkStruct_203B25C *gUnknown_203B25C;
|
||||
|
||||
extern const char gOthers_MenuOption[];
|
||||
extern const char gUnknown_80DBFEC[];
|
||||
extern const char gOthers_GameOptions[];
|
||||
extern const char gOthers_Hints[];
|
||||
extern const char *gUnknown_80D4920[];
|
||||
extern const char *gUnknown_80D4928[];
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
MENU_OPTION_DEFAULT = 1,
|
||||
MENU_OPTION_HINTS,
|
||||
MENU_OPTION_GAMEOPTIONS,
|
||||
MENU_OPTION_YES,
|
||||
MENU_OPTION_NO
|
||||
};
|
||||
|
||||
u32 sub_801DCC4(void)
|
||||
{
|
||||
gUnknown_203B25C = MemoryAlloc(sizeof(struct unkStruct_203B25C), 8);
|
||||
sub_801DD6C(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_801DCE8(void)
|
||||
{
|
||||
switch(gUnknown_203B25C->state)
|
||||
{
|
||||
case 2:
|
||||
return 3;
|
||||
case 0:
|
||||
case 1:
|
||||
HandleOthersMenu();
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
sub_801E088();
|
||||
break;
|
||||
case 5:
|
||||
sub_801E0E0();
|
||||
break;
|
||||
case 6:
|
||||
sub_801E0FC();
|
||||
break;
|
||||
case 7:
|
||||
HandleChangeSettingsMenu();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_801DD50(void)
|
||||
{
|
||||
if(gUnknown_203B25C != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B25C);
|
||||
gUnknown_203B25C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801DD6C(u32 newState)
|
||||
{
|
||||
gUnknown_203B25C->state = newState;
|
||||
sub_801DD84();
|
||||
sub_801DED0();
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_801DD84(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tmov r6, r8\n"
|
||||
"\tpush {r6,r7}\n"
|
||||
"\tldr r4, _0801DDAC\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xBC\n"
|
||||
"\tbl sub_8006518\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0801DDB4\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbeq _0801DE38\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tadds r7, r4, 0\n"
|
||||
"\tldr r2, _0801DDB0\n"
|
||||
"\tb _0801DE90\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801DDAC: .4byte gUnknown_203B25C\n"
|
||||
"_0801DDB0: .4byte gUnknown_80DBFB0\n"
|
||||
"_0801DDB4:\n"
|
||||
"\tbl CreateOthersMenu\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0xAC\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0801DDCE\n"
|
||||
"\tldr r0, [r1, 0x70]\n"
|
||||
"\tstr r0, [r1, 0x18]\n"
|
||||
"\tadds r7, r4, 0\n"
|
||||
"\tb _0801DDF2\n"
|
||||
"_0801DDCE:\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tldr r7, _0801DE2C\n"
|
||||
"\tcmp r3, 0x7\n"
|
||||
"\tbgt _0801DDF2\n"
|
||||
"\tldr r2, [r7]\n"
|
||||
"\tlsls r0, r3, 1\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tadds r1, 0xAC\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tldrh r0, [r1]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0801DDCE\n"
|
||||
"\tlsls r0, r3, 3\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tadds r1, 0x70\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tstr r0, [r2, 0x18]\n"
|
||||
"_0801DDF2:\n"
|
||||
"\tldr r0, _0801DE30\n"
|
||||
"\tmov r9, r0\n"
|
||||
"\tldr r2, _0801DE2C\n"
|
||||
"\tmov r12, r2\n"
|
||||
"\tldr r3, _0801DE34\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0x3\n"
|
||||
"_0801DE02:\n"
|
||||
"\tmov r4, r12\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tadds r1, 0xBC\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tldm r0!, {r4-r6}\n"
|
||||
"\tstm r1!, {r4-r6}\n"
|
||||
"\tldm r0!, {r4-r6}\n"
|
||||
"\tstm r1!, {r4-r6}\n"
|
||||
"\tadds r2, 0x18\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbge _0801DE02\n"
|
||||
"\tldr r1, [r7]\n"
|
||||
"\tadds r1, 0xBC\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tldm r0!, {r2,r5,r6}\n"
|
||||
"\tstm r1!, {r2,r5,r6}\n"
|
||||
"\tldm r0!, {r3-r5}\n"
|
||||
"\tstm r1!, {r3-r5}\n"
|
||||
"\tb _0801DE70\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801DE2C: .4byte gUnknown_203B25C\n"
|
||||
"_0801DE30: .4byte gUnknown_80DBFCC\n"
|
||||
"_0801DE34: .4byte gUnknown_80DBFB0\n"
|
||||
"_0801DE38:\n"
|
||||
"\tbl CreateOthersMenu\n"
|
||||
"\tmov r8, r4\n"
|
||||
"\tldr r6, _0801DE88\n"
|
||||
"\tmov r12, r6\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0x3\n"
|
||||
"_0801DE48:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tadds r1, 0xBC\n"
|
||||
"\tmov r0, r12\n"
|
||||
"\tldm r0!, {r4-r6}\n"
|
||||
"\tstm r1!, {r4-r6}\n"
|
||||
"\tldm r0!, {r4-r6}\n"
|
||||
"\tstm r1!, {r4-r6}\n"
|
||||
"\tadds r2, 0x18\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbge _0801DE48\n"
|
||||
"\tldr r1, [r7]\n"
|
||||
"\tadds r1, 0xBC\n"
|
||||
"\tldr r0, _0801DE8C\n"
|
||||
"\tldm r0!, {r2-r4}\n"
|
||||
"\tstm r1!, {r2-r4}\n"
|
||||
"\tldm r0!, {r2,r5,r6}\n"
|
||||
"\tstm r1!, {r2,r5,r6}\n"
|
||||
"_0801DE70:\n"
|
||||
"\tldr r1, [r7]\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0xBC\n"
|
||||
"\tadds r1, 0x6C\n"
|
||||
"\tbl sub_8012CAC\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tadds r0, 0xC8\n"
|
||||
"\tmovs r1, 0xA\n"
|
||||
"\tstrh r1, [r0]\n"
|
||||
"\tb _0801DEAC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801DE88: .4byte gUnknown_80DBFB0\n"
|
||||
"_0801DE8C: .4byte gUnknown_80DBFCC\n"
|
||||
"_0801DE90:\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0xBC\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tldm r1!, {r4-r6}\n"
|
||||
"\tstm r0!, {r4-r6}\n"
|
||||
"\tldm r1!, {r4-r6}\n"
|
||||
"\tstm r0!, {r4-r6}\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, 0x3\n"
|
||||
"\tble _0801DE90\n"
|
||||
"_0801DEAC:\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, _0801DECC\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tadds r0, 0xBC\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r3,r4}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801DECC: .4byte gUnknown_203B25C");
|
||||
}
|
||||
|
||||
void sub_801DED0(void)
|
||||
{
|
||||
switch(gUnknown_203B25C->state) {
|
||||
case 0:
|
||||
case 1:
|
||||
gUnknown_203B25C->unk1C = gOthers_MenuOption;
|
||||
sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->unk6C,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0);
|
||||
break;
|
||||
case 3:
|
||||
sub_801E3F0(0);
|
||||
break;
|
||||
case 4:
|
||||
sub_801E510(1);
|
||||
break;
|
||||
case 5:
|
||||
sub_801E658(gUnknown_203B25C->unk4);
|
||||
break;
|
||||
case 6:
|
||||
// Load our current options?
|
||||
gUnknown_203B25C->unk8 = *gUnknown_203B46C;
|
||||
sub_801E198(&gUnknown_203B25C->unk8);
|
||||
break;
|
||||
case 7:
|
||||
CreateChangeSettingsConfirmMenu();
|
||||
// Change settings?
|
||||
sub_8014248(gUnknown_80DBFEC,0,4,gUnknown_203B25C->unk6C,0,4,0,0,0x20);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CreateOthersMenu(void)
|
||||
{
|
||||
const char *blankText;
|
||||
s32 defaultAction;
|
||||
struct unkStruct_203B25C *preload;
|
||||
|
||||
MemoryFill16(gUnknown_203B25C->unkAC,0,sizeof(gUnknown_203B25C->unkAC));
|
||||
|
||||
// This is dumb that I have to squeeze this in like this
|
||||
preload = gUnknown_203B25C;
|
||||
blankText = NULL;
|
||||
preload->unk6C[0].text = gOthers_GameOptions;
|
||||
preload->unk6C[0].menuAction = MENU_OPTION_GAMEOPTIONS;
|
||||
defaultAction = MENU_OPTION_DEFAULT;
|
||||
preload->unk6C[1].text = gOthers_Hints;
|
||||
preload->unk6C[1].menuAction = MENU_OPTION_HINTS;
|
||||
preload->unk6C[2].text = blankText;
|
||||
preload->unk6C[2].menuAction = defaultAction;
|
||||
}
|
||||
|
||||
void CreateChangeSettingsConfirmMenu(void)
|
||||
{
|
||||
const char *blankText;
|
||||
s32 defaultAction;
|
||||
struct unkStruct_203B25C *preload;
|
||||
|
||||
MemoryFill16(gUnknown_203B25C->unkAC,0,sizeof(gUnknown_203B25C->unkAC));
|
||||
|
||||
// This is dumb that I have to squeeze this in like this
|
||||
preload = gUnknown_203B25C;
|
||||
blankText = NULL;
|
||||
preload->unk6C[0].text = *gUnknown_80D4920; // Yes
|
||||
preload->unk6C[0].menuAction = MENU_OPTION_YES;
|
||||
defaultAction = MENU_OPTION_DEFAULT;
|
||||
preload->unk6C[1].text = *gUnknown_80D4928; // No
|
||||
preload->unk6C[1].menuAction = MENU_OPTION_NO;
|
||||
preload->unk6C[2].text = blankText;
|
||||
preload->unk6C[2].menuAction = defaultAction;
|
||||
}
|
||||
|
||||
void HandleOthersMenu(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
if (sub_8012FD8((u32 *)&gUnknown_203B25C->unk1C) == '\0') {
|
||||
sub_8013114((u32 *)&gUnknown_203B25C->unk1C,&menuAction);
|
||||
gUnknown_203B25C->unk18 = menuAction;
|
||||
}
|
||||
switch(menuAction)
|
||||
{
|
||||
case MENU_OPTION_HINTS:
|
||||
sub_801DD6C(3);
|
||||
break;
|
||||
case MENU_OPTION_GAMEOPTIONS:
|
||||
sub_801DD6C(6);
|
||||
break;
|
||||
case MENU_OPTION_DEFAULT:
|
||||
sub_801DD6C(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801E088(void)
|
||||
{
|
||||
|
||||
switch(sub_801E474(1))
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
gUnknown_203B25C->unk4 = sub_801E4F4();
|
||||
sub_801DD6C(5);
|
||||
break;
|
||||
case 2:
|
||||
sub_801E54C();
|
||||
sub_801DD6C(1);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_801E0E0(void)
|
||||
{
|
||||
switch(sub_801E6CC())
|
||||
{
|
||||
case 3:
|
||||
case 2:
|
||||
sub_801E724();
|
||||
sub_801DD6C(4);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801E0FC(void)
|
||||
{
|
||||
switch(sub_801E218())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801E2C4();
|
||||
// Check to see if the options changed?
|
||||
if (GameOptionsNotChange(&gUnknown_203B25C->unk8)) {
|
||||
sub_801DD6C(1);
|
||||
}
|
||||
else {
|
||||
sub_801DD6C(7);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HandleChangeSettingsMenu(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&menuAction) == 0)
|
||||
{
|
||||
switch(menuAction)
|
||||
{
|
||||
case MENU_OPTION_YES:
|
||||
// Save our option changes??
|
||||
*gUnknown_203B46C = gUnknown_203B25C->unk8;
|
||||
sub_8094C14();
|
||||
sub_8099690(0);
|
||||
sub_801DD6C(1);
|
||||
break;
|
||||
case MENU_OPTION_DEFAULT:
|
||||
case MENU_OPTION_NO:
|
||||
sub_801DD6C(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,16 +15,16 @@ extern void sub_8075FCC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C
|
||||
extern void sub_8077AE4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
extern void sub_8072008(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2, u8 r3, u32);
|
||||
extern void sub_8076D10(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_807232C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
extern void LevelDownTarget(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32 r2);
|
||||
|
||||
extern void sub_8045B94(u8 *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_807A290(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_80522F4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079270(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void RestoreVisionTarget(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077910(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
extern void sub_80791D8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8079140(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8077C44(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, s16, s16, u32);
|
||||
extern void BlindTarget(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void HealTargetHP(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, s16, s16, u32);
|
||||
extern void sub_80792F8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32);
|
||||
extern void sub_8079F20(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u8);
|
||||
extern void sub_806F370(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u32, u32, u32, u32, u32, u32);
|
||||
@@ -41,13 +41,12 @@ void sub_8048364(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u
|
||||
|
||||
void sub_8048374(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, gUnknown_80F4FB6, gUnknown_80F4FB8, 1);
|
||||
HealTargetHP(r0, r1, gUnknown_80F4FB6, gUnknown_80F4FB8, 1);
|
||||
}
|
||||
|
||||
|
||||
void sub_804839C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, gUnknown_80F4FBA, gUnknown_80F4FBC, 1);
|
||||
HealTargetHP(r0, r1, gUnknown_80F4FBA, gUnknown_80F4FBC, 1);
|
||||
}
|
||||
|
||||
void sub_80483C4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
@@ -57,12 +56,12 @@ void sub_80483C4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
|
||||
void sub_80483D4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8077C44(r0, r1, 0, gUnknown_80F4FBE, 1);
|
||||
HealTargetHP(r0, r1, 0, gUnknown_80F4FBE, 1);
|
||||
}
|
||||
|
||||
void sub_80483F4(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079140(r0, r1);
|
||||
BlindTarget(r0, r1);
|
||||
}
|
||||
|
||||
void sub_8048400(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
@@ -77,12 +76,12 @@ void sub_804840C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
|
||||
void sub_804841C(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079270(r0, r1);
|
||||
RestoreVisionTarget(r0, r1);
|
||||
}
|
||||
|
||||
void sub_8048428(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if(r1->unk70->unkAC == 4)
|
||||
if(r1->unk70->statusCondition == 4) // 4 - Paralyzed??
|
||||
sub_807A290(r0, r1);
|
||||
else
|
||||
// Pointer to "But nothing happened!"
|
||||
@@ -91,7 +90,7 @@ void sub_8048428(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
|
||||
void sub_8048450(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if((u8)(r1->unk70->unkAC - 2) <= 1)
|
||||
if((u8)(r1->unk70->statusCondition - 2) <= 1)
|
||||
sub_807A290(r0, r1);
|
||||
else
|
||||
// Pointer to "But nothing happened!"
|
||||
@@ -131,12 +130,12 @@ void sub_80484C8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
|
||||
void sub_80484DC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_807232C(r0, r1, 1);
|
||||
LevelDownTarget(r0, r1, 1);
|
||||
}
|
||||
|
||||
void sub_80484E8(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
if(r1->unk70->unkAC == 1)
|
||||
if(r1->unk70->statusCondition == 1) // 1 - Burn??
|
||||
sub_807A290(r0, r1);
|
||||
else
|
||||
{
|
||||
|
||||
@@ -19,10 +19,10 @@ extern u8 sub_807EAA0(u32, u32);
|
||||
extern void sub_80522F4(struct unkDungeon_8041D5C *r1, struct unkDungeon_8041D5C *r2, u32);
|
||||
extern void sub_8079F20(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32);
|
||||
|
||||
extern u8 sub_805727C(u32, u32, s16);
|
||||
extern u32 sub_8055640(u32, u32, u32, u32, u32);
|
||||
extern void sub_80779F0(u32, u32, u32, u32);
|
||||
extern void sub_8078968();
|
||||
extern u8 sub_805727C(struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *, s16);
|
||||
extern u32 sub_8055640(struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *, u32, u32, u32);
|
||||
extern void sub_80779F0(struct unkDungeon_8041D5C *, struct unkDungeon_8041D5C *, u32, u32);
|
||||
extern void sub_8078968(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1);
|
||||
extern void sub_8079618(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u32);
|
||||
|
||||
extern void sub_806F370(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
@@ -33,51 +33,53 @@ extern u32 gUnknown_80FD018;
|
||||
extern s16 sub_8057600(u32, u32);
|
||||
extern u32 sub_8092B00(u32);
|
||||
|
||||
u32 sub_8057824(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
bool32 sub_8057824(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
// Lower evasion?
|
||||
sub_80775DC(param_1,param_2,gUnknown_8106A50,1);
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_805783C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
bool32 sub_805783C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
// Lower attack?
|
||||
sub_80772C0(param_1,param_2,gUnknown_8106A4C,0x80,1);
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_805785C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
bool32 sub_805785C(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
gUnknown_203B418->unkE26B = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF74);
|
||||
}
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_80578A4(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
bool32 sub_80578A4(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
gUnknown_203B418->unkE26C = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF80);
|
||||
}
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_80578EC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
bool32 sub_80578EC(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
|
||||
{
|
||||
sub_8079F20(r0, r1, 1, 0);
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_80578FC(u32 param_1, u32 param_2, u32 param_3, u32 param_4)
|
||||
bool32 sub_80578FC(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3, u32 param_4)
|
||||
{
|
||||
u32 uVar3;
|
||||
bool32 uVar3;
|
||||
|
||||
uVar3 = 0;
|
||||
if (sub_8055640(param_1, param_2, param_3, 0x80 << 1, param_4) != 0) {
|
||||
uVar3 = 1;
|
||||
uVar3 = TRUE;
|
||||
if (sub_805727C(param_1,param_2, gUnknown_80F4DB6) != '\0') {
|
||||
sub_80779F0(param_1, param_2, 1, 0);
|
||||
}
|
||||
@@ -85,25 +87,25 @@ u32 sub_80578FC(u32 param_1, u32 param_2, u32 param_3, u32 param_4)
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
u32 sub_8057948(void)
|
||||
bool32 sub_8057948(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
|
||||
{
|
||||
sub_8078968();
|
||||
return 1;
|
||||
sub_8078968(param_1, param_2);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_8057954(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3)
|
||||
bool32 sub_8057954(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3)
|
||||
{
|
||||
// $m0 is enraged
|
||||
sub_8079618(param_1,param_2,0xc,param_3,gUnknown_80FAC88);
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_8057974(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3, u32 param_4)
|
||||
bool32 sub_8057974(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3, u32 param_4)
|
||||
{
|
||||
s32 newHP;
|
||||
u8 local_24;
|
||||
|
||||
newHP = param_2->unk70->unkE / 2;
|
||||
newHP = param_2->unk70->HP / 2;
|
||||
local_24 = 0;
|
||||
if (newHP != 0) {
|
||||
sub_806F370(param_1,param_2,newHP,1,&local_24,sub_8092B00(param_3),sub_8057600(param_3,param_4),0,1,0);
|
||||
|
||||
@@ -13,22 +13,22 @@ extern u32 gUnknown_81076E4[];
|
||||
extern bool8 sub_808ECD0(u8 *, u32);
|
||||
extern void sub_808EC30(u8 *, u32);
|
||||
|
||||
u32 sub_808EAB0(u8 r0)
|
||||
u32 GetIQSkillName(u8 r0)
|
||||
{
|
||||
return gIQSkillNames[r0];
|
||||
}
|
||||
|
||||
void sub_808EAC0(char *r0, u8 r1)
|
||||
void CopyTacticsNameToBuffer(char *r0, u8 r1)
|
||||
{
|
||||
strncpy(r0, gTactics[r1], 0x14);
|
||||
}
|
||||
|
||||
u32 sub_808EADC(u8 r0)
|
||||
u32 GetIQSkillDescription(u8 r0)
|
||||
{
|
||||
return gIQSkillDescriptions[r0];
|
||||
}
|
||||
|
||||
u32 sub_808EAEC(u8 r0)
|
||||
u32 GetTacticsDescription(u8 r0)
|
||||
{
|
||||
return gTacticsDescriptions[r0];
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct Inputs gRealInputs;
|
||||
|
||||
struct unkStruct_203B344
|
||||
{
|
||||
u32 unk0; // state variable
|
||||
u32 state; // state variable
|
||||
u32 unk4; // timer??
|
||||
};
|
||||
|
||||
@@ -15,8 +16,6 @@ struct unkStruct_203B340
|
||||
u32 unk0;
|
||||
};
|
||||
|
||||
extern void MemoryFree(void *);
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
|
||||
extern u16 gUnknown_80E5990[];
|
||||
@@ -37,7 +36,7 @@ void sub_803565C(void)
|
||||
u32 sub_8035678(void)
|
||||
{
|
||||
gUnknown_203B344 = MemoryAlloc(sizeof(struct unkStruct_203B344), 8);
|
||||
gUnknown_203B344->unk0 = 0;
|
||||
gUnknown_203B344->state = 0;
|
||||
gUnknown_203B344->unk4 = 0;
|
||||
sub_80015C0(0, 0x39);
|
||||
return 1;
|
||||
@@ -51,46 +50,46 @@ u32 sub_80356A0(void)
|
||||
held_input = gRealInputs.held;
|
||||
uVar1 = gUnknown_80E5990[gUnknown_203B344->unk4];
|
||||
|
||||
switch(gUnknown_203B344->unk0) {
|
||||
case 0:
|
||||
gUnknown_203B344->unk0 = 3;
|
||||
break;
|
||||
case 1:
|
||||
if (uVar1 == 0)
|
||||
gUnknown_203B344->unk0 = 4;
|
||||
else {
|
||||
if (held_input == uVar1)
|
||||
gUnknown_203B344->unk0 = 2;
|
||||
else {
|
||||
// NOTE: couldn't match with OR'd condition so split up to match
|
||||
if ((uVar1 & held_input) != held_input)
|
||||
gUnknown_203B344->unk0 = 3;
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B344->unk4 == 0)
|
||||
gUnknown_203B344->unk0 = 3;
|
||||
switch(gUnknown_203B344->state) {
|
||||
case 0:
|
||||
gUnknown_203B344->state = 3;
|
||||
break;
|
||||
case 1:
|
||||
if (uVar1 == 0)
|
||||
gUnknown_203B344->state = 4;
|
||||
else {
|
||||
if (held_input == uVar1)
|
||||
gUnknown_203B344->state = 2;
|
||||
else {
|
||||
// NOTE: couldn't match with OR'd condition so split up to match
|
||||
if ((uVar1 & held_input) != held_input)
|
||||
gUnknown_203B344->state = 3;
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B344->unk4 == 0)
|
||||
gUnknown_203B344->state = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (held_input == 0) {
|
||||
gUnknown_203B344->unk0 = 1;
|
||||
gUnknown_203B344->unk4++;
|
||||
}
|
||||
else {
|
||||
if ((uVar1 & held_input) != held_input)
|
||||
gUnknown_203B344->unk0 = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
return 2;
|
||||
case 4:
|
||||
return 3; // sub_809C478 clears the flash data when this is returned
|
||||
break;
|
||||
case 2:
|
||||
if (held_input == 0) {
|
||||
gUnknown_203B344->state = 1;
|
||||
gUnknown_203B344->unk4++;
|
||||
}
|
||||
else {
|
||||
if ((uVar1 & held_input) != held_input)
|
||||
gUnknown_203B344->state = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
return 2;
|
||||
case 4:
|
||||
return 3; // sub_809C478 clears the flash data when this is returned
|
||||
}
|
||||
|
||||
if (sub_8001658(0,0x39) != 0) {
|
||||
gUnknown_203B344->unk0 = 3;
|
||||
gUnknown_203B344->state = 3;
|
||||
return 2;
|
||||
}
|
||||
else {
|
||||
|
||||
16
src/debug.c
16
src/debug.c
@@ -15,6 +15,8 @@ extern const char gNotEntryText[];
|
||||
extern const char gFuncFileLineString[];
|
||||
extern const char gFuncFileLineStringWPrefix[];
|
||||
extern const char gFuncFileLineString2[];
|
||||
extern const char gFatalText[];
|
||||
extern const char gUnknown_80D42D4[];
|
||||
|
||||
void NDS_DebugInit(void)
|
||||
{
|
||||
@@ -198,3 +200,17 @@ void FatalErrorHang()
|
||||
{
|
||||
Hang();
|
||||
}
|
||||
|
||||
/*void
|
||||
FatalError(struct DebugLocation *debug, const char *text, ...)
|
||||
{
|
||||
char buf[0x100];
|
||||
va_list vArgv;
|
||||
|
||||
FatalErrorPrintFuncFileLine(gFatalText, debug);
|
||||
va_start(vArgv, text);
|
||||
vsprintf(buf, text, vArgv);
|
||||
va_end(vArgv);
|
||||
FatalErrorFormatMessage(gUnknown_80D42D4, buf);
|
||||
FatalErrorHang();
|
||||
}*/
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "debug_menu.h"
|
||||
#include "main_menu.h"
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct DebugMenu *gUnknown_203B3EC;
|
||||
|
||||
@@ -63,9 +64,6 @@ ALIGNED(4) const char debug_fill5[] = _("pksdir0");
|
||||
ALIGNED(4) const char debug_fill6[] = _("pksdir0");
|
||||
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void MemoryFill8(u8 *, u8, u32);
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
|
||||
extern void ResetUnusedInputStruct(void);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -76,8 +77,6 @@ extern u32 gDebug_NumberText;
|
||||
extern u32 gUnknown_80D4970;
|
||||
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern void sub_8006518(void *);
|
||||
extern void sub_801C8C4(u32, u32, u32, u32);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "felicity_bank.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gUnknown_202E1C8[];
|
||||
@@ -13,8 +14,6 @@ extern struct unkData gUnknown_80DB6DC;
|
||||
extern struct unkData gUnknown_80DB6F4;
|
||||
extern struct unkData gUnknown_80DB70C;
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void sub_8016B24();
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "friend_area.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
|
||||
extern bool8 *gFriendAreas;
|
||||
|
||||
|
||||
struct unkStruct_203B45C
|
||||
{
|
||||
// size: 0x58?
|
||||
u16 unk0;
|
||||
s16 unk2;
|
||||
u8 unk4[0x24];
|
||||
u8 unk28;
|
||||
u8 unk29[0x2f];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B45C gRecruitedPokemonRef[];
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
|
||||
extern bool8 *gFriendAreas;
|
||||
|
||||
@@ -362,14 +353,17 @@ void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3)
|
||||
s32 counter;
|
||||
bool32 flag;
|
||||
s32 r6;
|
||||
struct PokemonStruct *pokemon;
|
||||
|
||||
r6 = 0;
|
||||
for(counter = 0; counter <= 412; counter++)
|
||||
{
|
||||
if((u8)(gRecruitedPokemonRef[counter].unk0) & 1)
|
||||
pokemon = &gRecruitedPokemonRef->pokemon[counter];
|
||||
if((u8)(pokemon->unk0) & 1)
|
||||
{
|
||||
if(((u8)gRecruitedPokemonRef[counter].unk2 == 0) || r2)
|
||||
if((pokemon->unk2 == 0) || r2)
|
||||
{
|
||||
flag = (u8)gRecruitedPokemonRef[counter].unk4[0] == 65;
|
||||
flag = (u8)pokemon->fill4[0] == 65;
|
||||
if(!flag || r3)
|
||||
{
|
||||
if(sub_80923D4(counter) == r0)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "friend_rescue.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern void sub_80338C4(u32);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
@@ -16,8 +17,6 @@ extern char gAvailablePokemonNames[0x50];
|
||||
extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
|
||||
|
||||
extern u8 sub_8039880(void);
|
||||
void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
void *MemoryAlloc(u32, u32);
|
||||
void ResetUnusedInputStruct(void);
|
||||
void sub_800641C(void *, u32, u32);
|
||||
|
||||
@@ -102,7 +101,6 @@ extern void sub_8035210(void);
|
||||
extern void sub_8035430(void);
|
||||
extern void sub_8034848(void);
|
||||
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_803084C(void);
|
||||
extern void sub_8031E10(void);
|
||||
extern void sub_8023C60(void);
|
||||
|
||||
34
src/game_options.c
Normal file
34
src/game_options.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "global.h"
|
||||
#include "gUnknown_203B46C.h"
|
||||
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
extern struct UnkSaveStruct1 gUnknown_2038C70;
|
||||
extern void sub_8094C14();
|
||||
|
||||
void LoadGameOptions(void)
|
||||
{
|
||||
gUnknown_203B46C = &gUnknown_2038C70;
|
||||
}
|
||||
|
||||
struct UnkSaveStruct1 * GetGameOptions(void)
|
||||
{
|
||||
return &gUnknown_2038C70;
|
||||
}
|
||||
|
||||
void InitializeGameOptions(u8 r0)
|
||||
{
|
||||
gUnknown_203B46C->unk8 = 0;
|
||||
if(r0 != 0)
|
||||
{
|
||||
gUnknown_203B46C->playerGender = 0;
|
||||
}
|
||||
gUnknown_203B46C->unk9 = 0;
|
||||
gUnknown_203B46C->unkA = 0;
|
||||
gUnknown_203B46C->unk0 = 0;
|
||||
gUnknown_203B46C->unk1 = 1;
|
||||
gUnknown_203B46C->unk2 = 1;
|
||||
gUnknown_203B46C->unk3 = 1;
|
||||
gUnknown_203B46C->unk4 = 1;
|
||||
gUnknown_203B46C->unkC = 0;
|
||||
sub_8094C14();
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "kangaskhan_storage.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct unkStruct_203B208 *gUnknown_203B208;
|
||||
extern struct unkData gUnknown_80DB748;
|
||||
@@ -13,8 +14,6 @@ extern struct unkData gUnknown_80DB760;
|
||||
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gUnknown_202E1C8[];
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
void UpdateKangaskhanStorageState(u32);
|
||||
|
||||
98
src/kangaskhan_storage_2.c
Normal file
98
src/kangaskhan_storage_2.c
Normal file
@@ -0,0 +1,98 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkStruct_203B20C
|
||||
{
|
||||
u32 state;
|
||||
u8 unk4[0x10];
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
};
|
||||
extern struct unkStruct_203B20C *gUnknown_203B20C;
|
||||
|
||||
extern void sub_800641C(u8 *, u32, u32);
|
||||
extern void sub_8017F10(u32);
|
||||
|
||||
|
||||
extern void sub_8017F10(u32);
|
||||
extern void sub_8018588(void);
|
||||
extern void sub_8018620(void);
|
||||
extern void sub_8018904(void);
|
||||
extern void sub_8018AC8(void);
|
||||
extern void sub_80186F8(void);
|
||||
extern void sub_8018854(void);
|
||||
extern void sub_80189C8(void);
|
||||
extern void sub_8018AE4(void);
|
||||
|
||||
|
||||
extern void sub_8017F28();
|
||||
extern void sub_8018100();
|
||||
|
||||
u32 sub_8017E1C(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, 1, 1);
|
||||
gUnknown_203B20C = MemoryAlloc(0x150, 8);
|
||||
gUnknown_203B20C->unk14 = 0;
|
||||
gUnknown_203B20C->unk18 = 0;
|
||||
gUnknown_203B20C->unk1C = 0;
|
||||
sub_8017F10(0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8017E54(void)
|
||||
{
|
||||
switch(gUnknown_203B20C->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8017F10(1);
|
||||
break;
|
||||
case 1:
|
||||
sub_8018588();
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
sub_8018620();
|
||||
break;
|
||||
case 6:
|
||||
sub_8018904();
|
||||
break;
|
||||
case 7:
|
||||
sub_8018AC8();
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
sub_80186F8();
|
||||
break;
|
||||
case 12:
|
||||
sub_8018854();
|
||||
break;
|
||||
case 13:
|
||||
sub_80189C8();
|
||||
break;
|
||||
case 14:
|
||||
sub_8018AE4();
|
||||
break;
|
||||
case 3:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_8017EF4(void)
|
||||
{
|
||||
if(gUnknown_203B20C != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B20C);
|
||||
gUnknown_203B20C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8017F10(u32 newState)
|
||||
{
|
||||
gUnknown_203B20C->state = newState;
|
||||
sub_8017F28();
|
||||
sub_8018100();
|
||||
}
|
||||
37
src/kangaskhan_storage_3.c
Normal file
37
src/kangaskhan_storage_3.c
Normal file
@@ -0,0 +1,37 @@
|
||||
#include "global.h"
|
||||
|
||||
extern u32 sub_801B410();
|
||||
extern void sub_801B450();
|
||||
extern void sub_8017F10(u32);
|
||||
|
||||
void sub_8018AC8(void)
|
||||
{
|
||||
switch(sub_801B410())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B450();
|
||||
sub_8017F10(0x5);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8018AE4(void)
|
||||
{
|
||||
switch(sub_801B410())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801B450();
|
||||
sub_8017F10(0xB);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "constants/species.h"
|
||||
#include "input.h"
|
||||
#include "kecleon_items.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct unkStruct_203B210 *gUnknown_203B210;
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
@@ -13,8 +14,6 @@ extern struct unkData gUnknown_80DB870;
|
||||
extern struct unkData gUnknown_80DB888;
|
||||
extern struct unkData gUnknown_80DB858;
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
void UpdateKecleonStoreState(u32);
|
||||
|
||||
extern void sub_8019730();
|
||||
@@ -47,7 +46,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B210->unk4 = 1;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->unkD4;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
monName = GetMonSpecies( SPECIES_KECLEON);
|
||||
@@ -63,7 +62,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_203B210->unk4 = 0;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->unkD4;
|
||||
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
|
||||
monName = GetMonSpecies( SPECIES_KECLEON);
|
||||
@@ -81,7 +80,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
|
||||
break;
|
||||
}
|
||||
faceFile = GetDialogueSpriteDataPtr(SPECIES_KECLEON);
|
||||
gUnknown_203B210->unkD4 = faceFile;
|
||||
gUnknown_203B210->faceFile = faceFile;
|
||||
gUnknown_203B210->unkD8 = faceFile->data;
|
||||
gUnknown_203B210->unkE0 = 0;
|
||||
gUnknown_203B210->unkE1 = 0;
|
||||
@@ -141,7 +140,7 @@ void sub_8018CF0(void)
|
||||
{
|
||||
if(gUnknown_203B210 != NULL)
|
||||
{
|
||||
CloseFile(gUnknown_203B210->unkD4);
|
||||
CloseFile(gUnknown_203B210->faceFile);
|
||||
MemoryFree(gUnknown_203B210);
|
||||
gUnknown_203B210 = NULL;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "main_menu.h"
|
||||
#include "play_time.h"
|
||||
#include "file_system.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern struct PlayTimeStruct gPlayTime;
|
||||
@@ -81,9 +82,6 @@ extern u8 gUnknown_80E7854;
|
||||
extern const char gUnknown_80E785C[]; // clmkpat
|
||||
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
u8 IsQuickSave(void);
|
||||
void DrawLoadScreenText(void);
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "adventure_log.h"
|
||||
#include "input.h"
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
// NOTE: 0x13 and 0x14
|
||||
// Communication Screen?
|
||||
@@ -20,10 +21,7 @@
|
||||
|
||||
|
||||
extern struct MainMenu *gMainMenu;
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
void sub_8035DA0(void);
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
extern void sub_8094C14(void);
|
||||
extern void sub_8099690(u32);
|
||||
@@ -74,7 +72,7 @@ struct unkStruct_203B34C
|
||||
u32 unk4;
|
||||
struct unkSubStruct *unk8; // Array of menu choices??
|
||||
u8 fillC[0x30 - 0xC];
|
||||
s16 unk30;
|
||||
s16 menuIndex;
|
||||
u8 fill32[0x144 - 0x32];
|
||||
struct unkData unk144[4];
|
||||
/* 0x1A4 */ u32 currMenuChoice;
|
||||
|
||||
@@ -14,7 +14,7 @@ struct unkStruct_203B34C
|
||||
u32 unk4;
|
||||
struct MenuItem *unk8; // Array of menu choices??
|
||||
u8 fillC[0x30 - 0xC];
|
||||
s16 unk30;
|
||||
s16 menuIndex;
|
||||
u8 fill32[0x144 - 0x32];
|
||||
struct unkData unk144[4];
|
||||
/* 0x1A4 */ u32 currMenuChoice;
|
||||
@@ -66,7 +66,7 @@ bool8 SetMainMenuText(void)
|
||||
|
||||
// Have to load the pointer before the index
|
||||
preload = gUnknown_203B34C->unk8;
|
||||
menuChoice = preload[gUnknown_203B34C->unk30].menuAction; // chosen menu action?
|
||||
menuChoice = preload[gUnknown_203B34C->menuIndex].menuAction; // chosen menu action?
|
||||
if (gUnknown_203B34C->currMenuChoice == menuChoice) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -14,7 +15,7 @@ struct unkStruct_203B318
|
||||
// size: 0xcc
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
s32 unk8;
|
||||
s32 state;
|
||||
u8 fillC[0x10 - 0xC];
|
||||
s16 unk10;
|
||||
u8 fill[0x58 - 0x12];
|
||||
@@ -37,8 +38,6 @@ extern struct unkData gUnknown_80E0760;
|
||||
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
extern void sub_8030208();
|
||||
extern void sub_8030258();
|
||||
@@ -46,7 +45,7 @@ extern void sub_80302A8();
|
||||
extern void sub_80302C4();
|
||||
extern void UpdateMakuhitaDialogue();
|
||||
|
||||
void sub_802FF04(s32);
|
||||
void UpdateMakuhitaState(s32);
|
||||
void sub_802FF1C();
|
||||
|
||||
u32 CreateMakuhitaShop(u32 param_1)
|
||||
@@ -113,14 +112,14 @@ u32 CreateMakuhitaShop(u32 param_1)
|
||||
gUnknown_203B318->unk66 = 0;
|
||||
gUnknown_203B318->unk60 = 2;
|
||||
gUnknown_203B318->unk62 = 8;
|
||||
sub_802FF04(initialState);
|
||||
UpdateMakuhitaState(initialState);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802FE58(void)
|
||||
{
|
||||
|
||||
switch(gUnknown_203B318->unk8) {
|
||||
switch(gUnknown_203B318->state) {
|
||||
case 0:
|
||||
case 1:
|
||||
sub_8030208();
|
||||
@@ -145,7 +144,7 @@ s16 sub_802FED0(void)
|
||||
return gUnknown_203B318->unk10;
|
||||
}
|
||||
|
||||
void sub_802FEE0(void)
|
||||
void CleanMakuhitaShop(void)
|
||||
{
|
||||
if(gUnknown_203B318 != NULL)
|
||||
{
|
||||
@@ -155,9 +154,9 @@ void sub_802FEE0(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802FF04(s32 newState)
|
||||
void UpdateMakuhitaState(s32 newState)
|
||||
{
|
||||
gUnknown_203B318->unk8 = newState;
|
||||
gUnknown_203B318->state = newState;
|
||||
sub_802FF1C();
|
||||
UpdateMakuhitaDialogue();
|
||||
}
|
||||
@@ -166,7 +165,7 @@ void sub_802FF1C(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
sub_8006518(gUnknown_203B318->unk6C);
|
||||
switch(gUnknown_203B318->unk8)
|
||||
switch(gUnknown_203B318->state)
|
||||
{
|
||||
case 0:
|
||||
case 4:
|
||||
|
||||
63
src/memory_mid.c
Normal file
63
src/memory_mid.c
Normal file
@@ -0,0 +1,63 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern u32 gUnknown_80B7F14;
|
||||
extern u32 gUnknown_80B7F20;
|
||||
extern struct HeapDescriptor gMainHeapDescriptor;
|
||||
|
||||
extern s32 MemorySearchFromBack(struct HeapDescriptor *heap, s32, s32);
|
||||
extern s32 MemorySearchFromFront(struct HeapDescriptor *heap, s32, s32);
|
||||
extern struct HeapDescriptor * _LocateSetBack(struct HeapDescriptor *, u32, u32, u32, u32);
|
||||
extern struct HeapDescriptor * _LocateSetFront(struct HeapDescriptor *, u32, u32, u32, u32);
|
||||
void DoFree(struct HeapDescriptor *, void *);
|
||||
void *DoAlloc(struct HeapDescriptor *, s32, u32);
|
||||
|
||||
void FatalError(u32 *, u32 *, ...) __attribute__((noreturn));
|
||||
|
||||
|
||||
s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3)
|
||||
{
|
||||
s32 index;
|
||||
struct HeapDescriptor * uVar2;
|
||||
s32 uVar3;
|
||||
|
||||
if (heap == NULL) {
|
||||
heap = &gMainHeapDescriptor;
|
||||
}
|
||||
|
||||
// Set some sort flag/attr?
|
||||
uVar3 = param_3 >> 8 | 1;
|
||||
|
||||
// Reset it?
|
||||
param_3 = param_3 & 0xff;
|
||||
|
||||
if ((uVar3 & 2) != 0) {
|
||||
index = MemorySearchFromFront(heap,uVar3,size);
|
||||
if (index < 0) goto error;
|
||||
uVar2 = _LocateSetFront(heap,index,uVar3,size,param_3);
|
||||
return uVar2->freeCount;
|
||||
}
|
||||
else {
|
||||
index = MemorySearchFromBack(heap,uVar3,size);
|
||||
if (index < 0) goto error;
|
||||
uVar2 = _LocateSetBack(heap,index,uVar3,size,param_3);
|
||||
return uVar2->freeCount;
|
||||
}
|
||||
|
||||
error:
|
||||
// LocateSet [%p] buffer %8x size can't locate
|
||||
// atb %02x grp %3d
|
||||
FatalError(&gUnknown_80B7F14,
|
||||
&gUnknown_80B7F20,
|
||||
heap,size,uVar3,param_3);
|
||||
}
|
||||
|
||||
void *MemoryAlloc(s32 size, s32 b)
|
||||
{
|
||||
DoAlloc(&gMainHeapDescriptor, size, b);
|
||||
}
|
||||
|
||||
void MemoryFree(void *a)
|
||||
{
|
||||
DoFree(&gMainHeapDescriptor, a);
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "main_menu.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -19,7 +20,7 @@ struct unkStruct_203B35C
|
||||
// size: 0x504
|
||||
u32 unk0;
|
||||
u32 unk4; // link status?
|
||||
u32 unk8; // state var?
|
||||
u32 state; // state var?
|
||||
u8 fillC[0x1C - 0xC];
|
||||
u32 unk1C;
|
||||
u8 fill20[0x15C - 0x20];
|
||||
@@ -74,9 +75,6 @@ extern struct unkStruct_203B460 *gUnknown_203B460;
|
||||
extern void sub_8037400(void);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern void ResetSprites(u32);
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u8, s32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_8035CF4(u32 *,u32, u32);
|
||||
extern void sub_80376CC();
|
||||
extern void sub_8035CC0(void *, u32);
|
||||
@@ -115,7 +113,7 @@ void sub_8036FDC(s32 param_1)
|
||||
|
||||
gUnknown_203B35C->unk0 = param_1;
|
||||
gUnknown_203B35C->unk4 = 0;
|
||||
gUnknown_203B35C->unk8 = 0;
|
||||
gUnknown_203B35C->state = 0;
|
||||
iVar3 = 0;
|
||||
do {
|
||||
gUnknown_203B35C->unk1C0[iVar3 * 2] = 0;
|
||||
@@ -269,7 +267,7 @@ u32 sub_80370F0(void)
|
||||
|
||||
local_10 = 4;
|
||||
nextMenu = MENU_NO_SCREEN_CHANGE;
|
||||
switch(gUnknown_203B35C->unk8){
|
||||
switch(gUnknown_203B35C->state){
|
||||
case 0:
|
||||
if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') {
|
||||
sub_8013114(&gUnknown_203B35C->unk1C,&local_10);
|
||||
@@ -278,13 +276,13 @@ u32 sub_80370F0(void)
|
||||
sub_8037748();
|
||||
}
|
||||
else {
|
||||
gUnknown_203B35C->unk8 = 1;
|
||||
gUnknown_203B35C->state = 1;
|
||||
sub_8037900();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_80376CC();
|
||||
gUnknown_203B35C->unk8 = 2;
|
||||
gUnknown_203B35C->state = 2;
|
||||
sub_80371B8();
|
||||
break;
|
||||
case 2:
|
||||
@@ -298,7 +296,7 @@ u32 sub_80370F0(void)
|
||||
if (local_10 != 4) {
|
||||
PlayMenuSoundEffect(3);
|
||||
nextMenu = sub_8037798();
|
||||
gUnknown_203B35C->unk8 = 4;
|
||||
gUnknown_203B35C->state = 4;
|
||||
}
|
||||
sub_8037748();
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "save.h"
|
||||
#include "memory.h"
|
||||
#include "gUnknown_203B46C.h"
|
||||
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_801317C(u32 *);
|
||||
extern void sub_8099690(u32);
|
||||
extern void sub_8001024(u32 *);
|
||||
@@ -67,14 +67,6 @@ struct PersonalityQuestion
|
||||
|
||||
extern struct PersonalityQuestion *gPersonalityQuestionPointerTable[NUM_QUIZ_QUESTIONS];
|
||||
|
||||
struct UnkSaveStruct1
|
||||
{
|
||||
/* 0x0 */ u32 unk0;
|
||||
/* 0x4 */ u32 unk4;
|
||||
/* 0x8 */ u16 unk8;
|
||||
/* 0xA */ u8 unkA;
|
||||
/* 0xB */ u8 playerGender;
|
||||
};
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
|
||||
struct stack_PartnerSprite
|
||||
|
||||
@@ -1,25 +1,46 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern u32 *gRecruitedPokemonRef;
|
||||
extern u32 gRecruitedPokemon;
|
||||
extern struct unkStruct_203B45C gRecruitedPokemon[];
|
||||
extern struct FileArchive gSystemFileArchive;
|
||||
extern const char gUnknown_81075F4;
|
||||
extern struct OpenedFile *gMonsterParametersFile;
|
||||
extern u16 gLevelCurrentPokeId;
|
||||
extern struct gPokemon *gMonsterParameters;
|
||||
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
|
||||
void LoadMonsterParameters(void)
|
||||
{
|
||||
gRecruitedPokemonRef = &gRecruitedPokemon;
|
||||
gRecruitedPokemonRef = gRecruitedPokemon;
|
||||
gMonsterParametersFile = OpenFileAndGetFileDataPtr(&gUnknown_81075F4, &gSystemFileArchive);
|
||||
gMonsterParameters = (struct gPokemon *)gMonsterParametersFile->data;
|
||||
gLevelCurrentPokeId = 0;
|
||||
}
|
||||
|
||||
u32 *sub_808CE00(void)
|
||||
struct unkStruct_203B45C *GetRecruitedPokemon(void)
|
||||
{
|
||||
return &gRecruitedPokemon;
|
||||
return gRecruitedPokemon;
|
||||
}
|
||||
|
||||
void InitializeRecruitedPokemon(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
|
||||
for(iVar3 = 0; iVar3 < NUM_SPECIES; iVar3++)
|
||||
{
|
||||
gRecruitedPokemonRef->pokemon[iVar3].unk0 = 0;
|
||||
}
|
||||
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
{
|
||||
gRecruitedPokemonRef->pokemon2[iVar3].unk0 = 0;
|
||||
}
|
||||
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
{
|
||||
gRecruitedPokemonRef->pokemon3[iVar3].unk8 = 0;
|
||||
gRecruitedPokemonRef->pokemon3[iVar3].unk0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "input.h"
|
||||
#include "constants/species.h"
|
||||
#include "menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct PostOfficeHelper
|
||||
{
|
||||
@@ -30,6 +31,7 @@ struct unkData
|
||||
|
||||
struct unkStruct_203B330
|
||||
{
|
||||
// size: 0x78
|
||||
struct UnkInputStruct *unk0;
|
||||
u8 fill4[0x8];
|
||||
u8 unkC;
|
||||
@@ -166,8 +168,6 @@ extern void sub_8031AE8();
|
||||
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(struct unkData *, u32, u32);
|
||||
extern void sub_8006518(struct unkData *);
|
||||
extern void sub_8031A2C(void);
|
||||
|
||||
152
src/save.c
152
src/save.c
@@ -63,7 +63,7 @@ struct unkStruct_203B194
|
||||
u8 *unk4;
|
||||
u32 unk8;
|
||||
u8 unkC;
|
||||
u8 padding[0x10 - 0xD];
|
||||
u8 fillD[3];
|
||||
u32 quickSaveStatus;
|
||||
};
|
||||
extern struct unkStruct_203B194 *gUnknown_203B194;
|
||||
@@ -85,19 +85,57 @@ extern u32 gUnknown_203B490;
|
||||
extern u32 gUnknown_203B494;
|
||||
extern struct ExclusivePokemonData *gUnknown_203B498;
|
||||
|
||||
extern const char gSaveCorrupted;
|
||||
extern const char gSavingAdventure;
|
||||
extern const char gWriteGamePak;
|
||||
extern const char gSaveCompleted;
|
||||
extern const char gSaveNotWritten;
|
||||
extern const char gSaveFailed;
|
||||
extern const char gUnknown_80D44C8;
|
||||
extern const char gUnknown_80D45AC;
|
||||
ALIGNED(4) const char gSaveCorrupted[] = _("#+The game data is corrupted.\n"
|
||||
"#+Your data will be erased.");
|
||||
|
||||
extern const char gUnknown_80D45F4;
|
||||
extern const char gUnknown_80D4668;
|
||||
extern const char gSaveNotWritten2;
|
||||
extern const char gSaveFailed2;
|
||||
ALIGNED(4) const char fill_save0[] = _("pksdir0");
|
||||
|
||||
ALIGNED(4) const char gSavingAdventure[] = _("#+Saving your adventure...\n"
|
||||
"#+Please don~27t turn off the power.");
|
||||
|
||||
ALIGNED(4) const char gWriteGamePak[] = _("#+Writing to GBA Game Pak.\n"
|
||||
"#+Do not remove the GBA Game Pak.\n"
|
||||
"#+Please wait with the power on.");
|
||||
|
||||
ALIGNED(4) const char gSaveCompleted[] = _("#+Save completed!");
|
||||
|
||||
ALIGNED(4) const char gSaveNotWritten[] = _("#+The data could not be written.\n"
|
||||
"#+Please turn off the power and remove\n"
|
||||
"#+and reinsert the DS Card.");
|
||||
|
||||
ALIGNED(4) const char gSaveFailed[] = _("#+Save failed.");
|
||||
|
||||
ALIGNED(4) const char fill_save1[] = _("pksdir0");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80D44C8[] = _("#+Your data was not properly saved~2c\n"
|
||||
"#+so your game cannot be resumed\n"
|
||||
"#+from your last spot.#P"
|
||||
"#+Your last outing is considered a defeat.\n"
|
||||
"#+Before shutting down~2c save in your\n"
|
||||
"#+team base~2c or quicksave in a dungeon.");
|
||||
|
||||
ALIGNED(4) const char fill_save2[] = _("pksdir0");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80D45AC[] = _("#+Quicksaving your adventure...\n"
|
||||
"#+Please don~27t turn off the power.");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80D45F4[] = _("#+Your adventure has been saved.\n"
|
||||
"#+When you are in a dungeon~2c quicksave\n"
|
||||
"#+your progress before ending the game.");
|
||||
|
||||
ALIGNED(4) const char gUnknown_80D4668[] = _("#+Your adventure has been saved.\n"
|
||||
"#+When you resume play~2c the quicksave\n"
|
||||
"#+data will be deleted.#P"
|
||||
"#+When you are shutting down the game~2c\n"
|
||||
"#+save your progress in your team base~2c\n"
|
||||
"#+or quicksave in a dungeon.");
|
||||
|
||||
ALIGNED(4) const char gSaveNotWritten2[] = _("#+The data could not be written.\n"
|
||||
"#+Please turn off the power and remove\n"
|
||||
"#+and reinsert the DS Card.");
|
||||
|
||||
ALIGNED(4) const char gSaveFailed2[] = _("#+Save failed.");
|
||||
ALIGNED(4) const char fill_save3[] = _("pksdir0");
|
||||
|
||||
extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
|
||||
|
||||
@@ -131,12 +169,12 @@ extern u32 sub_8097D60(u8 *, u32);
|
||||
extern u32 sub_8097D98(void* a, s32 b);
|
||||
extern void sub_80993E4();
|
||||
extern void sub_800135C(void);
|
||||
extern u32 *sub_808CE00(void);
|
||||
extern void sub_808CE08(void);
|
||||
extern u32 *GetRecruitedPokemon(void);
|
||||
extern void InitializeRecruitedPokemon(void);
|
||||
extern u32 *GetMoneyItemsInfo(void);
|
||||
extern void InitializeMoneyItems(void);
|
||||
extern u32 sub_8094990(void);
|
||||
extern void sub_8094998(u8 r0);
|
||||
extern u32 GetGameOptions(void);
|
||||
extern void InitializeGameOptions(u8 r0);
|
||||
extern u8 *sub_80950F8(void);
|
||||
extern void sub_80958E4(u8 *a, u32 b);
|
||||
extern u32 sub_80958F8(void);
|
||||
@@ -150,10 +188,6 @@ extern void sub_80993D8(void);
|
||||
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
|
||||
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFree(void* a);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void xxx_call_start_bg_music(void);
|
||||
|
||||
|
||||
@@ -527,7 +561,7 @@ void sub_8012284(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
InitializePlayerData();
|
||||
}
|
||||
|
||||
void sub_8012298(void)
|
||||
@@ -540,7 +574,7 @@ void sub_80122A8(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
InitializePlayerData();
|
||||
sub_8012240();
|
||||
}
|
||||
|
||||
@@ -566,17 +600,17 @@ void sub_80122F4(void)
|
||||
sub_800135C();
|
||||
}
|
||||
|
||||
void sub_8012300(void)
|
||||
void InitializePlayerData(void)
|
||||
{
|
||||
InitializeFriendAreas();
|
||||
sub_808CE08();
|
||||
InitializeRecruitedPokemon();
|
||||
InitializeMoneyItems();
|
||||
InitializeResuceTeamInfo();
|
||||
sub_80972F4();
|
||||
sub_8095118();
|
||||
sub_8095900();
|
||||
sub_80974E8();
|
||||
sub_8094998(1);
|
||||
InitializeGameOptions(1);
|
||||
InitializeExclusivePokemon();
|
||||
}
|
||||
|
||||
@@ -593,7 +627,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
|
||||
if(r0 != NULL)
|
||||
{
|
||||
gUnknown_203B460 = r0->unk0;
|
||||
gRecruitedPokemonRef = r0->unk4;
|
||||
gRecruitedPokemonRef = r0->recruitedPokemon;
|
||||
gUnknown_203B480 = r0->unk8;
|
||||
gUnknown_203B484 = r0->unkC;
|
||||
gUnknown_203B488 = r0->unk10;
|
||||
@@ -603,12 +637,12 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
|
||||
gUnknown_203B494 = r0->unk20;
|
||||
gUnknown_203B498 = r0->ExclusivePokemon;
|
||||
gFriendAreas = r0->BoughtFriendAreas;
|
||||
gUnknown_203B46C = r0->unk2C;
|
||||
gUnknown_203B46C = r0->gameOptions;
|
||||
gPlayTimeRef = r0->playTime;
|
||||
return;
|
||||
}
|
||||
gUnknown_203B460 = GetMoneyItemsInfo();
|
||||
gRecruitedPokemonRef = sub_808CE00();
|
||||
gRecruitedPokemonRef = GetRecruitedPokemon();
|
||||
gUnknown_203B480 = sub_80950F8();
|
||||
gUnknown_203B484 = sub_8095100();
|
||||
gUnknown_203B488 = sub_8095108();
|
||||
@@ -618,7 +652,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
|
||||
gUnknown_203B494 = sub_8097680();
|
||||
gUnknown_203B498 = GetExclusivePokemon();
|
||||
gFriendAreas = GetBoughtFriendAreas();
|
||||
gUnknown_203B46C = sub_8094990();
|
||||
gUnknown_203B46C = GetGameOptions();
|
||||
gPlayTimeRef = GetPlayTime();
|
||||
|
||||
}
|
||||
@@ -649,7 +683,7 @@ u8 sub_8012484(void)
|
||||
{
|
||||
if(IsSaveCorrupted())
|
||||
{
|
||||
sub_80141B4(&gSaveCorrupted, 0, 0, 0x301);
|
||||
sub_80141B4(gSaveCorrupted, 0, 0, 0x301);
|
||||
gUnknown_203B188->state = 3;
|
||||
}
|
||||
else
|
||||
@@ -661,11 +695,11 @@ u8 sub_8012484(void)
|
||||
{
|
||||
gUnknown_203B188->state = 6;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 3:
|
||||
if(sub_80144A4(&temp2) == 0)
|
||||
gUnknown_203B188->state = 4;
|
||||
break;
|
||||
break;
|
||||
case 4:
|
||||
sub_8012298();
|
||||
gUnknown_203B188->state = 6;
|
||||
@@ -711,10 +745,10 @@ void sub_8012574(s16 PokemonID)
|
||||
}
|
||||
if (gUnknown_203B18C->faceFile != 0) {
|
||||
preload_face = (u8 *)&gUnknown_203B18C->faceFile;
|
||||
sub_80141B4(&gSavingAdventure,0,preload_face,0x20);
|
||||
sub_80141B4(gSavingAdventure,0,preload_face,0x20);
|
||||
}
|
||||
else {
|
||||
sub_80141B4(&gSavingAdventure,0,0,0x20);
|
||||
sub_80141B4(gSavingAdventure,0,0,0x20);
|
||||
}
|
||||
gUnknown_203B18C->state = 3;
|
||||
}
|
||||
@@ -736,8 +770,8 @@ bool8 sub_8012600(void)
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203B18C->unk4++;
|
||||
if (8 < gUnknown_203B18C->unk4) {
|
||||
sub_80141B4(&gWriteGamePak, 0, 0, 0x20);
|
||||
if (gUnknown_203B18C->unk4 > 8) {
|
||||
sub_80141B4(gWriteGamePak, 0, 0, 0x20);
|
||||
gUnknown_203B18C->state = 3;
|
||||
}
|
||||
break;
|
||||
@@ -754,20 +788,20 @@ bool8 sub_8012600(void)
|
||||
{
|
||||
case SAVE_COMPLETED:
|
||||
if(gUnknown_203B18C->faceFile != NULL)
|
||||
sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
else
|
||||
sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
gUnknown_203B18C->state = 5;
|
||||
break;
|
||||
case SAVE_NOT_WRTTEN:
|
||||
sub_80141B4(&gSaveNotWritten, 0, 0, 0);
|
||||
sub_80141B4(gSaveNotWritten, 0, 0, 0);
|
||||
gUnknown_203B18C->state = 6;
|
||||
break;
|
||||
default:
|
||||
if(gUnknown_203B18C->faceFile != NULL)
|
||||
sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
else
|
||||
sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
gUnknown_203B18C->state = 5;
|
||||
break;
|
||||
}
|
||||
@@ -830,7 +864,12 @@ u32 sub_80127A8(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D44C8, 0, 0, 0x301);
|
||||
// Data was not properly saved
|
||||
// so your game cannot be resumed
|
||||
// from your last spot. Your last outing is considered a defeat.
|
||||
// Before shutting down, save in your
|
||||
// team base or quicksave in a dungeon
|
||||
sub_80141B4(gUnknown_80D44C8, 0, 0, 0x301);
|
||||
gUnknown_203B190->state = 2;
|
||||
}
|
||||
break;
|
||||
@@ -867,9 +906,13 @@ void sub_8012850(u8 *r0, u32 r1, u8 r2)
|
||||
gUnknown_203B194->unkC = r2;
|
||||
gUnknown_203B194->state = 0;
|
||||
if(gUnknown_203B194->unkC != 0)
|
||||
sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
|
||||
// Quicksaving your adventure...
|
||||
// Please don't turn off the power.
|
||||
sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
|
||||
else
|
||||
sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
|
||||
// Quicksaving your adventure...
|
||||
// Please don't turn off the power.
|
||||
sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
|
||||
}
|
||||
|
||||
u32 sub_80128B0(void)
|
||||
@@ -896,18 +939,29 @@ u32 sub_80128B0(void)
|
||||
case SAVE_COMPLETED:
|
||||
sub_80121E0(0xf1207);
|
||||
if(gUnknown_203B194->unkC != 0)
|
||||
sub_80141B4(&gUnknown_80D45F4, 0, 0, 0x301);
|
||||
// Your adventure has been saved
|
||||
// When you are in a dungeon, quicksave
|
||||
// your progress before ending the game.
|
||||
sub_80141B4(gUnknown_80D45F4, 0, 0, 0x301);
|
||||
else
|
||||
sub_80141B4(&gUnknown_80D4668, 0, 0, 0x301);
|
||||
// Your adventure has been saved.
|
||||
// When you resume play, the quicksave
|
||||
// data will be deleted. When you are shutting down the game,
|
||||
// save your progress in your team base,
|
||||
// or quicksave in a dungeon.
|
||||
sub_80141B4(gUnknown_80D4668, 0, 0, 0x301);
|
||||
gUnknown_203B194->state = 3;
|
||||
break;
|
||||
case SAVE_NOT_WRTTEN:
|
||||
sub_80141B4(&gSaveNotWritten2, 0, 0, 0);
|
||||
// The data could not be written.
|
||||
// Please turn off the power and remove
|
||||
// and reinsert the DS Card
|
||||
sub_80141B4(gSaveNotWritten2, 0, 0, 0);
|
||||
gUnknown_203B194->state = 4;
|
||||
break;
|
||||
default:
|
||||
sub_80121E0(0xf1209);
|
||||
sub_80141B4(&gSaveFailed2, 0, 0, 0x301);
|
||||
sub_80141B4(gSaveFailed2, 0, 0, 0x301);
|
||||
gUnknown_203B194->state = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "input.h"
|
||||
#include "trade_items_menu.h"
|
||||
#include "gUnknown_203B460.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct TradeItemsMenu *gTradeItemsMenu;
|
||||
|
||||
@@ -35,9 +36,6 @@ extern u32 gUnknown_80E6314;
|
||||
|
||||
extern void sub_8013AA0(u32 *);
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(u32 *, u32, u32);
|
||||
extern void sub_8035C1C();
|
||||
extern void sub_8035DA0();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "main_menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -29,9 +30,6 @@ extern struct unkData gUnknown_80E6E7C;
|
||||
extern struct unkData gUnknown_80E6E94;
|
||||
extern struct MenuItem gUnknown_80E6EAC[];
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u8, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_8038440();
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "input.h"
|
||||
#include "menu.h"
|
||||
#include "main_menu.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkData
|
||||
{
|
||||
@@ -33,9 +34,6 @@ extern struct unkData gUnknown_80E6F38;
|
||||
extern struct MenuItem gUnknown_80E7090[];
|
||||
extern struct MenuItem gUnknown_80E6F50[];
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u8, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_8038440();
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "file_system.h"
|
||||
#include "constants/species.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "memory.h"
|
||||
|
||||
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
|
||||
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
|
||||
@@ -86,10 +87,6 @@ extern void sub_803092C(void);
|
||||
extern void sub_8011C28(u32);
|
||||
|
||||
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
extern u32 sub_80154F0();
|
||||
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
|
||||
extern void sub_8014248(const char *r0, u32, u32, u32 *r4, u32, u32, u32, u32 *r5, u32);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "input.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkStruct_203B2C8
|
||||
{
|
||||
@@ -33,6 +34,7 @@ struct unkStruct_203B2C8
|
||||
u8 unk134;
|
||||
u8 fill135[0x3];
|
||||
u32 unk138;
|
||||
u32 fill13C;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
|
||||
@@ -71,9 +73,6 @@ extern char gAvailablePokemonNames[0x50];
|
||||
extern u32 sub_802F298();
|
||||
extern void sub_802F2C0();
|
||||
extern u32 sub_8011C34();
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFill8(u8 *, u8, s32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
extern u8 sub_8099394(u8 *);
|
||||
extern void sub_802B548(u32);
|
||||
@@ -108,8 +107,8 @@ u32 sub_802B2D4(void)
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B2C8 = MemoryAlloc(0x140,8);
|
||||
MemoryFill8((u8 *)gUnknown_203B2C8,0,0x140);
|
||||
gUnknown_203B2C8 = MemoryAlloc(sizeof(struct unkStruct_203B2C8),8);
|
||||
MemoryFill8((u8 *)gUnknown_203B2C8,0,sizeof(struct unkStruct_203B2C8));
|
||||
gUnknown_203B2C8->unk1 = -1;
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
|
||||
faceFile = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
|
||||
struct unkStruct_203B2F8
|
||||
{
|
||||
// size: 0x208
|
||||
u32 unk0; // state
|
||||
u32 state; // state
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
@@ -17,8 +18,6 @@ struct unkStruct_203B2F8
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
|
||||
extern void *MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern u8 sub_8099328(u8 *);
|
||||
extern u32 sub_8011C1C();
|
||||
extern void sub_802D1A0(u32);
|
||||
@@ -52,7 +51,7 @@ u32 sub_802D098(u32 param_1)
|
||||
|
||||
u32 sub_802D0E0(void)
|
||||
{
|
||||
switch(gUnknown_203B2F8->unk0) {
|
||||
switch(gUnknown_203B2F8->state) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
@@ -100,7 +99,7 @@ void sub_802D184(void)
|
||||
|
||||
void sub_802D1A0(u32 newState)
|
||||
{
|
||||
gUnknown_203B2F8->unk0 = newState;
|
||||
gUnknown_203B2F8->state = newState;
|
||||
sub_802D1B8();
|
||||
sub_802D2A8();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "save.h"
|
||||
#include "memory.h"
|
||||
|
||||
#define EXIT_TO_MAIN_MENU 5
|
||||
#define PASSWORD_SUCCESS 13
|
||||
@@ -38,9 +39,6 @@ extern u32 sub_8095324(u32);
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
extern void* MemoryAlloc(u32, u32);
|
||||
extern void MemoryFree(void *);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void sub_803A1C0(u8);
|
||||
extern void ResetUnusedInputStruct(void);
|
||||
extern void sub_800641C(void *, u32, u32);
|
||||
|
||||
@@ -4,10 +4,9 @@
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "memory.h"
|
||||
|
||||
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void sub_800641C(void *r0, u8, u8);
|
||||
|
||||
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
|
||||
|
||||
Reference in New Issue
Block a user