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:
Seth Barberee
2021-05-23 16:19:35 -05:00
committed by GitHub
parent f402e46cd3
commit eaa141c612
69 changed files with 27901 additions and 28364 deletions

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

833
asm/code_801DCC4.s Normal file
View 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

View File

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

View File

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

View File

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

View File

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

View File

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

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2306
data/data_80D47B8.s Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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