mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 15:07:09 -05:00
Merge branch 'master' of https://github.com/pret/pmd-red into code_big
This commit is contained in:
commit
afc77f701f
|
|
@ -135,7 +135,7 @@ QuickSave:
|
|||
movs r0, 0
|
||||
bl xxx_update_some_bg_tiles
|
||||
bl sub_8014144
|
||||
bl sub_80097B0
|
||||
bl InitFontPalette
|
||||
movs r0, 0x2
|
||||
bl sub_800CDA8
|
||||
movs r0, 0
|
||||
|
|
@ -316,7 +316,7 @@ sub_80008C0:
|
|||
movs r0, 0
|
||||
bl xxx_update_some_bg_tiles
|
||||
bl sub_8014144
|
||||
bl sub_80097B0
|
||||
bl InitFontPalette
|
||||
movs r0, 0x2
|
||||
bl sub_800CDA8
|
||||
movs r0, 0
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ _0800FB1C:
|
|||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0800FB2E
|
||||
bl sub_80117D0
|
||||
bl PlayAcceptSoundEffect
|
||||
movs r5, 0x2
|
||||
_0800FB2E:
|
||||
ldrh r1, [r4, 0x2]
|
||||
|
|
@ -201,7 +201,7 @@ _0800FB2E:
|
|||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0800FB3E
|
||||
bl sub_80117E4
|
||||
bl PlayCancelSoundEffect
|
||||
movs r5, 0x3
|
||||
_0800FB3E:
|
||||
cmp r5, 0
|
||||
|
|
@ -247,7 +247,7 @@ _0800FB7E:
|
|||
beq _0800FBA2
|
||||
adds r0, r4, 0
|
||||
bl MoveMenuCursorDown
|
||||
bl sub_80117F8
|
||||
bl PlayCursorUpDownSoundEffect
|
||||
_0800FBA2:
|
||||
ldrh r1, [r6, 0x4]
|
||||
movs r0, 0x40
|
||||
|
|
@ -256,7 +256,7 @@ _0800FBA2:
|
|||
beq _0800FBB6
|
||||
adds r0, r4, 0
|
||||
bl MoveMenuCursorUp
|
||||
bl sub_80117F8
|
||||
bl PlayCursorUpDownSoundEffect
|
||||
_0800FBB6:
|
||||
ldrh r1, [r6, 0x2]
|
||||
movs r0, 0x1
|
||||
|
|
@ -269,7 +269,7 @@ _0800FBB6:
|
|||
cmp r0, 0
|
||||
beq _0800FC00
|
||||
_0800FBCA:
|
||||
bl sub_80117D0
|
||||
bl PlayAcceptSoundEffect
|
||||
ldr r1, [r7]
|
||||
movs r3, 0x18
|
||||
ldrsh r2, [r4, r3]
|
||||
|
|
@ -301,7 +301,7 @@ _0800FC00:
|
|||
cmp r0, 0
|
||||
beq _0800FB7E
|
||||
_0800FC12:
|
||||
bl sub_80117E4
|
||||
bl PlayCancelSoundEffect
|
||||
_0800FC16:
|
||||
mov r0, r8
|
||||
pop {r3}
|
||||
|
|
@ -966,7 +966,7 @@ sub_80100C0:
|
|||
adds r0, r2
|
||||
ldr r0, [r0, 0x4]
|
||||
str r0, [sp, 0x10]
|
||||
bl sub_80117F8
|
||||
bl PlayCursorUpDownSoundEffect
|
||||
movs r7, 0
|
||||
cmp r7, r8
|
||||
bge _0801018A
|
||||
|
|
@ -2450,7 +2450,7 @@ _08010D18:
|
|||
beq _08010D36
|
||||
add r0, sp, 0x4
|
||||
bl MoveMenuCursorDown
|
||||
bl sub_80117F8
|
||||
bl PlayCursorUpDownSoundEffect
|
||||
_08010D36:
|
||||
ldrh r1, [r4, 0x4]
|
||||
movs r0, 0x40
|
||||
|
|
@ -2459,7 +2459,7 @@ _08010D36:
|
|||
beq _08010D4A
|
||||
add r0, sp, 0x4
|
||||
bl MoveMenuCursorUp
|
||||
bl sub_80117F8
|
||||
bl PlayCursorUpDownSoundEffect
|
||||
_08010D4A:
|
||||
ldrh r1, [r4, 0x2]
|
||||
movs r0, 0x1
|
||||
|
|
@ -2472,7 +2472,7 @@ _08010D4A:
|
|||
cmp r0, 0
|
||||
beq _08010D18
|
||||
_08010D5E:
|
||||
bl sub_80117D0
|
||||
bl PlayAcceptSoundEffect
|
||||
add r0, sp, 0x4
|
||||
movs r1, 0x18
|
||||
ldrsh r0, [r0, r1]
|
||||
|
|
|
|||
|
|
@ -5,140 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_803D110
|
||||
sub_803D110:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0x6C
|
||||
adds r6, r0, 0
|
||||
mov r9, r1
|
||||
adds r5, r2, 0
|
||||
add r7, sp, 0x48
|
||||
adds r2, r7, 0
|
||||
movs r1, 0
|
||||
mov r0, sp
|
||||
adds r0, 0x69
|
||||
_0803D12A:
|
||||
strb r1, [r0]
|
||||
subs r0, 0x1
|
||||
cmp r0, r2
|
||||
bge _0803D12A
|
||||
movs r4, 0
|
||||
cmp r4, r5
|
||||
bge _0803D158
|
||||
_0803D138:
|
||||
ldrb r0, [r6]
|
||||
bl sub_803D0F0
|
||||
add r1, sp, 0x10
|
||||
adds r1, r4
|
||||
strb r0, [r1]
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0xFF
|
||||
bne _0803D150
|
||||
movs r0, 0
|
||||
b _0803D19A
|
||||
_0803D150:
|
||||
adds r6, 0x1
|
||||
adds r4, 0x1
|
||||
cmp r4, r5
|
||||
blt _0803D138
|
||||
_0803D158:
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
adds r2, r0, 0x5
|
||||
cmp r2, 0
|
||||
bge _0803D164
|
||||
adds r2, 0x7
|
||||
_0803D164:
|
||||
asrs r2, 3
|
||||
mov r8, r2
|
||||
mov r0, sp
|
||||
adds r1, r7, 0
|
||||
bl xxx_init_struct_8094924_save_809486C
|
||||
movs r4, 0
|
||||
cmp r4, r5
|
||||
bge _0803D188
|
||||
add r6, sp, 0x10
|
||||
_0803D178:
|
||||
adds r1, r6, r4
|
||||
mov r0, sp
|
||||
movs r2, 0x5
|
||||
bl SaveIntegerBits
|
||||
adds r4, 0x1
|
||||
cmp r4, r5
|
||||
blt _0803D178
|
||||
_0803D188:
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
mov r0, r9
|
||||
adds r1, r7, 0
|
||||
mov r2, r8
|
||||
bl MemoryCopy8
|
||||
movs r0, 0x1
|
||||
_0803D19A:
|
||||
add sp, 0x6C
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803D110
|
||||
|
||||
thumb_func_start sub_803D1A8
|
||||
sub_803D1A8:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x48
|
||||
adds r7, r0, 0
|
||||
adds r5, r2, 0
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
adds r2, r0, 0x5
|
||||
cmp r2, 0
|
||||
bge _0803D1BC
|
||||
adds r2, 0x7
|
||||
_0803D1BC:
|
||||
asrs r2, 3
|
||||
mov r0, sp
|
||||
bl xxx_init_struct_8094924_restore_809485C
|
||||
movs r4, 0
|
||||
cmp r4, r5
|
||||
bge _0803D1DC
|
||||
add r6, sp, 0x10
|
||||
_0803D1CC:
|
||||
adds r1, r6, r4
|
||||
mov r0, sp
|
||||
movs r2, 0x5
|
||||
bl RestoreIntegerBits
|
||||
adds r4, 0x1
|
||||
cmp r4, r5
|
||||
blt _0803D1CC
|
||||
_0803D1DC:
|
||||
mov r0, sp
|
||||
bl nullsub_102
|
||||
movs r4, 0
|
||||
cmp r4, r5
|
||||
bge _0803D1FC
|
||||
add r6, sp, 0x10
|
||||
_0803D1EA:
|
||||
adds r0, r6, r4
|
||||
ldrb r0, [r0]
|
||||
bl sub_803D100
|
||||
strb r0, [r7]
|
||||
adds r7, 0x1
|
||||
adds r4, 0x1
|
||||
cmp r4, r5
|
||||
blt _0803D1EA
|
||||
_0803D1FC:
|
||||
add sp, 0x48
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_803D1A8
|
||||
|
||||
thumb_func_start sub_803D204
|
||||
sub_803D204:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -2514,6 +2380,7 @@ _0803E464: .4byte gUnknown_202EDC8
|
|||
_0803E468: .4byte gUnknown_202D058
|
||||
thumb_func_end sub_803E250
|
||||
|
||||
@ https://decomp.me/scratch/5arGc (kermalis 100%) `void sub_803E46C(u32)`
|
||||
thumb_func_start sub_803E46C
|
||||
sub_803E46C:
|
||||
push {lr}
|
||||
|
|
@ -2725,6 +2592,7 @@ _0803E660: .4byte 0x00018213
|
|||
_0803E664: .4byte gUnknown_202EDD4
|
||||
thumb_func_end sub_803E490
|
||||
|
||||
@ https://decomp.me/scratch/biQXr (kermalis 100%) `void sub_803E668(u32)`
|
||||
thumb_func_start sub_803E668
|
||||
sub_803E668:
|
||||
push {r4,lr}
|
||||
|
|
@ -2785,6 +2653,7 @@ _0803E700: .4byte gDungeon
|
|||
_0803E704: .4byte 0x00018213
|
||||
thumb_func_end sub_803E668
|
||||
|
||||
@ https://decomp.me/scratch/bDSdY (kermalis 100%) `void sub_803E708(s32, u32)`
|
||||
thumb_func_start sub_803E708
|
||||
sub_803E708:
|
||||
push {r4,r5,lr}
|
||||
|
|
@ -3455,7 +3324,7 @@ _0803EC34:
|
|||
_0803EC46:
|
||||
movs r0, 0x2
|
||||
adds r1, r5, 0
|
||||
bl sub_801602C
|
||||
bl CreateConfirmNameMenu
|
||||
b _0803EC84
|
||||
.align 2, 0
|
||||
_0803EC50: .4byte gUnknown_203B40C
|
||||
|
|
|
|||
|
|
@ -4532,7 +4532,7 @@ _08054BD8:
|
|||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_80594E0
|
||||
bl SandstormMoveAction
|
||||
bl _080554BA
|
||||
_08054BE8:
|
||||
adds r0, r7, 0
|
||||
|
|
@ -5250,7 +5250,7 @@ _08055190:
|
|||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805785C
|
||||
bl RainDanceMoveAction
|
||||
b _080554BA
|
||||
_0805519E:
|
||||
adds r0, r7, 0
|
||||
|
|
@ -5313,7 +5313,7 @@ _0805520E:
|
|||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805A394
|
||||
bl SunnyDayMoveAction
|
||||
b _080554BA
|
||||
_0805521C:
|
||||
adds r0, r7, 0
|
||||
|
|
@ -5397,7 +5397,7 @@ _080552B6:
|
|||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_80578A4
|
||||
bl HailMoveAction
|
||||
b _080554BA
|
||||
_080552C4:
|
||||
adds r0, r7, 0
|
||||
|
|
|
|||
|
|
@ -1495,7 +1495,7 @@ _0805FBF4:
|
|||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _0805FBF4
|
||||
bl sub_80160D8
|
||||
bl CleanConfirmNameMenu
|
||||
movs r0, 0xE
|
||||
bl sub_803E46C
|
||||
movs r0, 0
|
||||
|
|
|
|||
|
|
@ -2120,658 +2120,4 @@ _0806E0F0:
|
|||
bx r1
|
||||
thumb_func_end sub_806D528
|
||||
|
||||
thumb_func_start sub_806E100
|
||||
sub_806E100:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x28
|
||||
adds r6, r0, 0
|
||||
mov r8, r1
|
||||
str r2, [sp, 0x18]
|
||||
lsls r3, 24
|
||||
lsrs r7, r3, 24
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x20]
|
||||
mov r2, r8
|
||||
ldr r2, [r2, 0x70]
|
||||
str r2, [sp, 0x24]
|
||||
ldr r3, [sp, 0x18]
|
||||
ldr r3, [r3, 0x70]
|
||||
mov r10, r3
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x1
|
||||
bl sub_800A020
|
||||
mov r0, r9
|
||||
ldr r4, [sp, 0x48]
|
||||
strb r0, [r4, 0xD]
|
||||
strb r0, [r4, 0xE]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x1C]
|
||||
ldr r0, [sp, 0x18]
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806E14E
|
||||
movs r0, 0x1
|
||||
b _0806E61A
|
||||
_0806E14E:
|
||||
cmp r7, 0x1
|
||||
beq _0806E156
|
||||
cmp r7, 0x7
|
||||
bne _0806E15A
|
||||
_0806E156:
|
||||
movs r2, 0x1
|
||||
str r2, [sp, 0x20]
|
||||
_0806E15A:
|
||||
ldr r0, [sp, 0x18]
|
||||
movs r1, 0x35
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E170
|
||||
cmp r7, 0
|
||||
beq _0806E170
|
||||
movs r3, 0x1
|
||||
str r3, [sp, 0x1C]
|
||||
_0806E170:
|
||||
movs r0, 0x2
|
||||
ldr r4, [sp, 0x48]
|
||||
str r0, [r4, 0x8]
|
||||
movs r5, 0
|
||||
add r0, sp, 0x10
|
||||
mov r9, r0
|
||||
b _0806E1F2
|
||||
_0806E17E:
|
||||
mov r1, r10
|
||||
adds r1, 0x5C
|
||||
ldr r2, [sp, 0x20]
|
||||
cmp r2, 0
|
||||
beq _0806E1B4
|
||||
adds r0, r1, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xE
|
||||
bne _0806E1B4
|
||||
mov r0, r10
|
||||
adds r0, 0xF5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806E1B4
|
||||
movs r4, 0
|
||||
ldr r0, _0806E1AC
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806E1B0
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
b _0806E1CA
|
||||
.align 2, 0
|
||||
_0806E1AC: .4byte gDungeon
|
||||
_0806E1B0: .4byte 0x00000179
|
||||
_0806E1B4:
|
||||
ldr r2, _0806E4E4
|
||||
adds r0, r1, r5
|
||||
ldrb r1, [r0]
|
||||
lsls r1, 1
|
||||
lsls r0, r7, 3
|
||||
adds r0, r7
|
||||
lsls r0, 2
|
||||
adds r1, r0
|
||||
adds r1, r2
|
||||
movs r0, 0
|
||||
ldrsh r4, [r1, r0]
|
||||
_0806E1CA:
|
||||
cmp r4, 0x2
|
||||
beq _0806E1DC
|
||||
lsls r0, r4, 2
|
||||
add r0, sp
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E1DC:
|
||||
lsls r0, r5, 2
|
||||
add r0, r9
|
||||
str r4, [r0]
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x9E
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
adds r0, r5
|
||||
strb r4, [r0]
|
||||
adds r5, 0x1
|
||||
_0806E1F2:
|
||||
cmp r5, 0x1
|
||||
bgt _0806E20E
|
||||
mov r1, sp
|
||||
ldr r0, _0806E4EC
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
adds r0, r6, 0
|
||||
bl sub_800A2A0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E17E
|
||||
_0806E20E:
|
||||
ldr r2, _0806E4F0
|
||||
mov r1, r9
|
||||
ldr r0, [r1, 0x4]
|
||||
lsls r0, 2
|
||||
ldr r1, [sp, 0x10]
|
||||
lsls r1, 4
|
||||
adds r0, r1
|
||||
adds r0, r2
|
||||
ldr r0, [r0]
|
||||
ldr r2, [sp, 0x48]
|
||||
str r0, [r2, 0x8]
|
||||
movs r3, 0x1
|
||||
mov r9, r3
|
||||
cmp r0, 0x3
|
||||
beq _0806E240
|
||||
movs r4, 0
|
||||
mov r9, r4
|
||||
ldr r0, [sp, 0x1C]
|
||||
cmp r0, 0
|
||||
beq _0806E240
|
||||
ldr r0, _0806E4F4
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r0, [r0]
|
||||
str r0, [r6]
|
||||
str r1, [r6, 0x4]
|
||||
_0806E240:
|
||||
cmp r7, 0x2
|
||||
beq _0806E248
|
||||
cmp r7, 0x6
|
||||
bne _0806E26C
|
||||
_0806E248:
|
||||
ldr r0, [sp, 0x18]
|
||||
movs r1, 0x2
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E26C
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806E4F8
|
||||
adds r1, r0, r2
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E4FC
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E26C:
|
||||
cmp r7, 0x2
|
||||
bne _0806E2A0
|
||||
ldr r0, [sp, 0x18]
|
||||
bl GetFlashFireStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E2A0
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r3, 0xB7
|
||||
lsls r3, 1
|
||||
adds r0, r3
|
||||
movs r4, 0
|
||||
movs r5, 0x1
|
||||
strb r5, [r0]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
bl sub_800A020
|
||||
ldr r0, [sp, 0x48]
|
||||
str r4, [r0, 0x8]
|
||||
strb r4, [r0, 0xD]
|
||||
strb r5, [r0, 0xE]
|
||||
movs r1, 0
|
||||
mov r9, r1
|
||||
_0806E2A0:
|
||||
cmp r7, 0x9
|
||||
bne _0806E2D2
|
||||
ldr r0, [sp, 0x18]
|
||||
movs r1, 0x37
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E2D2
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806E500
|
||||
adds r0, r2
|
||||
movs r4, 0
|
||||
movs r5, 0x1
|
||||
strb r5, [r0]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
bl sub_800A020
|
||||
ldr r3, [sp, 0x48]
|
||||
str r4, [r3, 0x8]
|
||||
strb r4, [r3, 0xD]
|
||||
strb r5, [r3, 0xE]
|
||||
mov r9, r4
|
||||
_0806E2D2:
|
||||
cmp r7, 0x3
|
||||
bne _0806E340
|
||||
mov r0, r8
|
||||
movs r1, 0x10
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E340
|
||||
movs r4, 0
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r2, 0x10
|
||||
ldrsh r1, [r0, r2]
|
||||
cmp r1, 0
|
||||
bge _0806E2F2
|
||||
adds r1, 0x3
|
||||
_0806E2F2:
|
||||
asrs r1, 2
|
||||
ldr r3, [sp, 0x24]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r3, r2]
|
||||
cmp r1, r0
|
||||
blt _0806E300
|
||||
movs r4, 0x1
|
||||
_0806E300:
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r1, 0x80
|
||||
adds r2, r4, 0
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0806E32A
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r3, 0xB8
|
||||
lsls r3, 1
|
||||
adds r0, r3
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r2, _0806E504
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E32A:
|
||||
cmp r5, 0
|
||||
beq _0806E340
|
||||
mov r0, r8
|
||||
bl sub_80428EC
|
||||
ldr r0, _0806E508
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x18]
|
||||
bl sub_80522F4
|
||||
_0806E340:
|
||||
cmp r7, 0x4
|
||||
bne _0806E3AC
|
||||
mov r0, r8
|
||||
movs r1, 0x1A
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E3AC
|
||||
movs r4, 0
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r2, 0x10
|
||||
ldrsh r1, [r0, r2]
|
||||
cmp r1, 0
|
||||
bge _0806E360
|
||||
adds r1, 0x3
|
||||
_0806E360:
|
||||
asrs r1, 2
|
||||
ldr r3, [sp, 0x24]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r3, r2]
|
||||
cmp r1, r0
|
||||
blt _0806E36E
|
||||
movs r4, 0x1
|
||||
_0806E36E:
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r1, 0x2
|
||||
adds r2, r4, 0
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0806E396
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806E50C
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E504
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E396:
|
||||
cmp r5, 0
|
||||
beq _0806E3AC
|
||||
mov r0, r8
|
||||
bl sub_80428D8
|
||||
ldr r0, _0806E510
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x18]
|
||||
bl sub_80522F4
|
||||
_0806E3AC:
|
||||
cmp r7, 0xC
|
||||
bne _0806E41A
|
||||
mov r0, r8
|
||||
movs r1, 0x43
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E41A
|
||||
movs r4, 0
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r2, 0x10
|
||||
ldrsh r1, [r0, r2]
|
||||
cmp r1, 0
|
||||
bge _0806E3CC
|
||||
adds r1, 0x3
|
||||
_0806E3CC:
|
||||
asrs r1, 2
|
||||
ldr r3, [sp, 0x24]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r3, r2]
|
||||
cmp r1, r0
|
||||
blt _0806E3DA
|
||||
movs r4, 0x1
|
||||
_0806E3DA:
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r1, 0x10
|
||||
adds r2, r4, 0
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0806E404
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r3, 0xB9
|
||||
lsls r3, 1
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E504
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E404:
|
||||
cmp r5, 0
|
||||
beq _0806E41A
|
||||
mov r0, r8
|
||||
bl sub_8042978
|
||||
ldr r0, _0806E514
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x18]
|
||||
bl sub_80522F4
|
||||
_0806E41A:
|
||||
cmp r7, 0x2
|
||||
bne _0806E486
|
||||
mov r0, r8
|
||||
movs r1, 0x46
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E486
|
||||
movs r4, 0
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r2, 0x10
|
||||
ldrsh r1, [r0, r2]
|
||||
cmp r1, 0
|
||||
bge _0806E43A
|
||||
adds r1, 0x3
|
||||
_0806E43A:
|
||||
asrs r1, 2
|
||||
ldr r3, [sp, 0x24]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r3, r2]
|
||||
cmp r1, r0
|
||||
blt _0806E448
|
||||
movs r4, 0x1
|
||||
_0806E448:
|
||||
ldr r0, [sp, 0x24]
|
||||
movs r1, 0x20
|
||||
adds r2, r4, 0
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0806E470
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806E518
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E504
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E470:
|
||||
cmp r5, 0
|
||||
beq _0806E486
|
||||
mov r0, r8
|
||||
bl sub_804298C
|
||||
ldr r0, _0806E51C
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x18]
|
||||
bl sub_80522F4
|
||||
_0806E486:
|
||||
adds r0, r6, 0
|
||||
bl sub_800A2A0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806E4B8
|
||||
mov r0, r8
|
||||
adds r1, r7, 0
|
||||
bl MonsterIsType
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806E4B8
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r4, 0xBA
|
||||
lsls r4, 1
|
||||
adds r0, r4
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r2, _0806E520
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E4B8:
|
||||
mov r0, r8
|
||||
bl GetApparentWeather
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0x1
|
||||
bne _0806E53E
|
||||
cmp r7, 0x2
|
||||
bne _0806E524
|
||||
ldr r0, _0806E4E8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xB6
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
strb r4, [r0]
|
||||
ldr r2, _0806E520
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
b _0806E53E
|
||||
.align 2, 0
|
||||
_0806E4E4: .4byte gTypeEffectivenessChart
|
||||
_0806E4E8: .4byte gDungeon
|
||||
_0806E4EC: .4byte gUnknown_8106F54
|
||||
_0806E4F0: .4byte gUnknown_80F54B4
|
||||
_0806E4F4: .4byte gUnknown_8106EFC
|
||||
_0806E4F8: .4byte 0x0000016d
|
||||
_0806E4FC: .4byte gUnknown_8106F1C
|
||||
_0806E500: .4byte 0x0000016f
|
||||
_0806E504: .4byte gUnknown_8106F0C
|
||||
_0806E508: .4byte gUnknown_80FEDA8
|
||||
_0806E50C: .4byte 0x00000171
|
||||
_0806E510: .4byte gUnknown_80FED88
|
||||
_0806E514: .4byte gUnknown_80FEDC8
|
||||
_0806E518: .4byte 0x00000173
|
||||
_0806E51C: .4byte gUnknown_80FEDE8
|
||||
_0806E520: .4byte gUnknown_8106F14
|
||||
_0806E524:
|
||||
cmp r7, 0x3
|
||||
bne _0806E53E
|
||||
ldr r0, _0806E560
|
||||
ldr r0, [r0]
|
||||
movs r2, 0xB6
|
||||
lsls r2, 1
|
||||
adds r0, r2
|
||||
strb r4, [r0]
|
||||
ldr r2, _0806E564
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E53E:
|
||||
cmp r4, 0x4
|
||||
bne _0806E586
|
||||
cmp r7, 0x2
|
||||
bne _0806E56C
|
||||
ldr r0, _0806E560
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806E568
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E564
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
b _0806E586
|
||||
.align 2, 0
|
||||
_0806E560: .4byte gDungeon
|
||||
_0806E564: .4byte gUnknown_8106F1C
|
||||
_0806E568: .4byte 0x0000016b
|
||||
_0806E56C:
|
||||
cmp r7, 0x3
|
||||
bne _0806E586
|
||||
ldr r0, _0806E62C
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806E630
|
||||
adds r1, r0, r2
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E634
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E586:
|
||||
cmp r4, 0x3
|
||||
bne _0806E5A6
|
||||
cmp r7, 0x1
|
||||
beq _0806E5A6
|
||||
ldr r2, _0806E638
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
ldr r0, _0806E62C
|
||||
ldr r0, [r0]
|
||||
movs r3, 0xB5
|
||||
lsls r3, 1
|
||||
adds r1, r0, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_0806E5A6:
|
||||
ldr r0, _0806E62C
|
||||
ldr r1, [r0]
|
||||
ldr r2, _0806E63C
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806E5B8
|
||||
cmp r4, 0x6
|
||||
bne _0806E5CE
|
||||
_0806E5B8:
|
||||
cmp r7, 0x5
|
||||
bne _0806E5CE
|
||||
ldr r3, _0806E640
|
||||
adds r1, r3
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E644
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E5CE:
|
||||
ldr r0, _0806E62C
|
||||
ldr r1, [r0]
|
||||
ldr r4, _0806E648
|
||||
adds r0, r1, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806E5F4
|
||||
cmp r7, 0x2
|
||||
bne _0806E5F4
|
||||
movs r0, 0xBB
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E644
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E5F4:
|
||||
cmp r7, 0x5
|
||||
bne _0806E618
|
||||
ldr r0, [sp, 0x24]
|
||||
adds r0, 0xC0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xB
|
||||
bne _0806E618
|
||||
ldr r0, _0806E62C
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806E64C
|
||||
adds r1, r0, r2
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r2, _0806E650
|
||||
adds r0, r6, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_800A34C
|
||||
_0806E618:
|
||||
mov r0, r9
|
||||
_0806E61A:
|
||||
add sp, 0x28
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0806E62C: .4byte gDungeon
|
||||
_0806E630: .4byte 0x0000016b
|
||||
_0806E634: .4byte gUnknown_8106F14
|
||||
_0806E638: .4byte gUnknown_8106F64
|
||||
_0806E63C: .4byte 0x0000e277
|
||||
_0806E640: .4byte 0x00000175
|
||||
_0806E644: .4byte gUnknown_8106F1C
|
||||
_0806E648: .4byte 0x0000e278
|
||||
_0806E64C: .4byte 0x00000177
|
||||
_0806E650: .4byte gUnknown_8106F0C
|
||||
thumb_func_end sub_806E100
|
||||
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -5,152 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8081AD4
|
||||
sub_8081AD4:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldrb r1, [r4]
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
adds r1, r4, 0x2
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x2
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x5]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081AD4
|
||||
|
||||
thumb_func_start sub_8081B08
|
||||
sub_8081B08:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r7, r1, 0
|
||||
adds r4, r7, 0
|
||||
movs r5, 0x3
|
||||
_08081B12:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8081AD4
|
||||
adds r4, 0x8
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _08081B12
|
||||
adds r0, r7, 0
|
||||
adds r0, 0x20
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B08
|
||||
|
||||
thumb_func_start sub_8081B34
|
||||
sub_8081B34:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r0, 0
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083048
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083048
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B34
|
||||
|
||||
thumb_func_start sub_8081B54
|
||||
sub_8081B54:
|
||||
push {lr}
|
||||
movs r2, 0x3
|
||||
bl sub_8082FA8
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B54
|
||||
|
||||
thumb_func_start sub_8081B60
|
||||
sub_8081B60:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldrh r1, [r4]
|
||||
bl sub_8083030
|
||||
ldrh r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083030
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x9
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
adds r4, 0xE
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B60
|
||||
|
||||
thumb_func_start sub_8081B94
|
||||
sub_8081B94:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
adds r1, r5, 0x1
|
||||
adds r0, r6, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
movs r4, 0
|
||||
_08081BAC:
|
||||
adds r0, r5, 0x3
|
||||
adds r0, r4
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
adds r0, r5, 0
|
||||
adds r0, 0xB
|
||||
adds r0, r4
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x7
|
||||
ble _08081BAC
|
||||
ldrb r1, [r5, 0x2]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r5, 0x13]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r5, 0x14]
|
||||
adds r0, r6, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r5, 0x15]
|
||||
adds r0, r6, 0
|
||||
bl sub_80830B4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081B94
|
||||
|
||||
thumb_func_start sub_8081BF4
|
||||
sub_8081BF4:
|
||||
push {lr}
|
||||
|
|
|
|||
|
|
@ -693,6 +693,7 @@ _08084768:
|
|||
_08084774: .4byte gUnknown_80FA3B8
|
||||
thumb_func_end sub_80845E0
|
||||
|
||||
@ https://decomp.me/scratch/vELLj (kermalis 100%) `void sub_8084778(void)`
|
||||
thumb_func_start sub_8084778
|
||||
sub_8084778:
|
||||
push {r4,lr}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
.text
|
||||
|
||||
@ https://decomp.me/scratch/GE070 (kermalis 100%) `void sub_8085B4C(struct_8085B80 *, s16 **, Entity **, s32)` idk the structs
|
||||
thumb_func_start sub_8085B4C
|
||||
sub_8085B4C:
|
||||
push {r4-r6,lr}
|
||||
|
|
@ -37,6 +38,7 @@ _08085B76:
|
|||
_08085B7C: .4byte gUnknown_202F3D8
|
||||
thumb_func_end sub_8085B4C
|
||||
|
||||
@ https://decomp.me/scratch/lb4jF (kermalis 87.53%) `bool8 sub_8085B80(struct_8085B80 *)`
|
||||
thumb_func_start sub_8085B80
|
||||
sub_8085B80:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -450,6 +452,7 @@ _08085E90: .4byte gUnknown_202ECA4
|
|||
_08085E94: .4byte 0x000181e4
|
||||
thumb_func_end SetDungeonBGColorRGB
|
||||
|
||||
@ gDungeon->field_0x18215 = 0;
|
||||
thumb_func_start sub_8085E98
|
||||
sub_8085E98:
|
||||
ldr r0, _08085EA8
|
||||
|
|
@ -789,6 +792,7 @@ _080861A0: .4byte gUnknown_81066F0
|
|||
_080861A4: .4byte gUnknown_810671C
|
||||
thumb_func_end sub_8086130
|
||||
|
||||
@ `sub_806CDD4(a0, 0, 8);`
|
||||
thumb_func_start sub_80861A8
|
||||
sub_80861A8:
|
||||
push {lr}
|
||||
|
|
|
|||
|
|
@ -5,45 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
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}
|
||||
|
|
|
|||
|
|
@ -1,229 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start GenerateMailJobInfo
|
||||
GenerateMailJobInfo:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
ldr r4, _08095B44
|
||||
add sp, r4
|
||||
adds r4, r0, 0
|
||||
bl GenerateMailJobDungeonInfo
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095B48
|
||||
movs r0, 0
|
||||
b _08095CCC
|
||||
.align 2, 0
|
||||
_08095B44: .4byte 0xfffffcb0
|
||||
_08095B48:
|
||||
movs r0, 0x5
|
||||
strb r0, [r4]
|
||||
movs r0, 0x8
|
||||
bl RandInt
|
||||
ldr r1, _08095BC8
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r4, 0x1]
|
||||
cmp r0, 0x2
|
||||
bne _08095B6C
|
||||
bl GetRescueTeamRank
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095B6C
|
||||
strb r0, [r4, 0x1]
|
||||
_08095B6C:
|
||||
movs r0, 0
|
||||
strb r0, [r4, 0x2]
|
||||
bl Rand32Bit
|
||||
ldr r1, _08095BCC
|
||||
ands r1, r0
|
||||
str r1, [r4, 0x8]
|
||||
movs r7, 0
|
||||
movs r5, 0x1
|
||||
adds r0, r4, 0x4
|
||||
mov r8, r0
|
||||
movs r1, 0x12
|
||||
adds r1, r4
|
||||
mov r9, r1
|
||||
mov r6, sp
|
||||
_08095B8A:
|
||||
lsls r0, r5, 16
|
||||
asrs r0, 16
|
||||
bl sub_803C110
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08095B9E
|
||||
strh r5, [r6]
|
||||
adds r6, 0x2
|
||||
adds r7, 0x1
|
||||
_08095B9E:
|
||||
adds r5, 0x1
|
||||
ldr r0, _08095BD0
|
||||
cmp r5, r0
|
||||
ble _08095B8A
|
||||
cmp r7, 0
|
||||
beq _08095BD4
|
||||
adds r0, r7, 0
|
||||
bl RandInt
|
||||
lsls r0, 1
|
||||
add r0, sp
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r4, 0xC]
|
||||
adds r0, r7, 0
|
||||
bl RandInt
|
||||
lsls r0, 1
|
||||
add r0, sp
|
||||
ldrh r0, [r0]
|
||||
b _08095BDC
|
||||
.align 2, 0
|
||||
_08095BC8: .4byte gUnknown_8109984
|
||||
_08095BCC: .4byte 0x00ffffff
|
||||
_08095BD0: .4byte 0x000001a7
|
||||
_08095BD4:
|
||||
movs r0, 0x10
|
||||
strh r0, [r4, 0xC]
|
||||
movs r0, 0x91
|
||||
lsls r0, 1
|
||||
_08095BDC:
|
||||
strh r0, [r4, 0xE]
|
||||
ldrb r0, [r4, 0x1]
|
||||
subs r0, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bls _08095BEE
|
||||
ldrh r0, [r4, 0xC]
|
||||
strh r0, [r4, 0xE]
|
||||
_08095BEE:
|
||||
ldrb r0, [r4, 0x4]
|
||||
bl sub_8095F28
|
||||
strb r0, [r4, 0x10]
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095C10
|
||||
strb r0, [r4, 0x1]
|
||||
ldrh r0, [r4, 0xC]
|
||||
strh r0, [r4, 0xE]
|
||||
adds r2, r4, 0
|
||||
adds r2, 0x10
|
||||
mov r0, r8
|
||||
movs r1, 0
|
||||
bl sub_803C37C
|
||||
_08095C10:
|
||||
ldrb r0, [r4, 0x4]
|
||||
bl GetMaxItemsAllowed
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
bne _08095C28
|
||||
ldrb r0, [r4, 0x1]
|
||||
cmp r0, 0x4
|
||||
bne _08095C28
|
||||
strb r1, [r4, 0x1]
|
||||
ldrh r0, [r4, 0xC]
|
||||
strh r0, [r4, 0xE]
|
||||
_08095C28:
|
||||
ldrb r1, [r4, 0x1]
|
||||
mov r0, r8
|
||||
mov r2, r9
|
||||
bl sub_803C37C
|
||||
ldrb r0, [r4, 0x10]
|
||||
ldrb r1, [r4, 0x12]
|
||||
cmp r0, r1
|
||||
beq _08095C28
|
||||
movs r0, 0
|
||||
strb r0, [r4, 0x13]
|
||||
ldrb r0, [r4, 0x1]
|
||||
cmp r0, 0x2
|
||||
beq _08095C90
|
||||
cmp r0, 0x2
|
||||
bgt _08095C4E
|
||||
cmp r0, 0x1
|
||||
beq _08095C6C
|
||||
b _08095CCA
|
||||
_08095C4E:
|
||||
cmp r0, 0x4
|
||||
bgt _08095CCA
|
||||
bl Rand32Bit
|
||||
adds r1, r0, 0
|
||||
movs r0, 0xE0
|
||||
lsls r0, 3
|
||||
ands r1, r0
|
||||
movs r0, 0xC0
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
beq _08095CC4
|
||||
cmp r1, r0
|
||||
bgt _08095CB4
|
||||
b _08095CAA
|
||||
_08095C6C:
|
||||
bl Rand32Bit
|
||||
adds r1, r0, 0
|
||||
movs r0, 0x70
|
||||
ands r1, r0
|
||||
cmp r1, 0x10
|
||||
beq _08095C80
|
||||
cmp r1, 0x30
|
||||
beq _08095C88
|
||||
b _08095CCA
|
||||
_08095C80:
|
||||
adds r0, r4, 0
|
||||
bl sub_803C3E0
|
||||
b _08095CCA
|
||||
_08095C88:
|
||||
adds r0, r4, 0
|
||||
bl sub_803C45C
|
||||
b _08095CCA
|
||||
_08095C90:
|
||||
bl Rand32Bit
|
||||
movs r1, 0xC0
|
||||
lsls r1, 6
|
||||
ands r1, r0
|
||||
movs r0, 0x80
|
||||
lsls r0, 5
|
||||
cmp r1, r0
|
||||
bne _08095CCA
|
||||
adds r0, r4, 0
|
||||
bl sub_803C4F0
|
||||
b _08095CCA
|
||||
_08095CAA:
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
cmp r1, r0
|
||||
beq _08095CBC
|
||||
b _08095CCA
|
||||
_08095CB4:
|
||||
movs r0, 0xC0
|
||||
lsls r0, 3
|
||||
cmp r1, r0
|
||||
bne _08095CCA
|
||||
_08095CBC:
|
||||
adds r0, r4, 0
|
||||
bl sub_803C580
|
||||
b _08095CCA
|
||||
_08095CC4:
|
||||
adds r0, r4, 0
|
||||
bl sub_803C610
|
||||
_08095CCA:
|
||||
movs r0, 0x1
|
||||
_08095CCC:
|
||||
movs r3, 0xD4
|
||||
lsls r3, 2
|
||||
add sp, r3
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end GenerateMailJobInfo
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8096078
|
||||
sub_8096078:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
ldr r0, _08096090
|
||||
mov r12, r0
|
||||
mov r8, r3
|
||||
movs r4, 0
|
||||
mov r9, r4
|
||||
b _080960B6
|
||||
.align 2, 0
|
||||
_08096090: .4byte gUnknown_203B490
|
||||
_08096094:
|
||||
cmp r2, r3
|
||||
ble _080960AA
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
mov r5, r8
|
||||
adds r1, r0, r5
|
||||
adds r0, r4
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
ldm r0!, {r6,r7}
|
||||
stm r1!, {r6,r7}
|
||||
_080960AA:
|
||||
adds r4, 0x14
|
||||
movs r0, 0x14
|
||||
add r9, r0
|
||||
adds r2, 0x1
|
||||
add r8, r0
|
||||
adds r3, 0x1
|
||||
_080960B6:
|
||||
cmp r2, 0x3
|
||||
bgt _080960E2
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
adds r0, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080960E2
|
||||
ldr r6, _08096110
|
||||
mov r1, r9
|
||||
_080960CA:
|
||||
adds r1, 0x14
|
||||
adds r4, 0x14
|
||||
movs r5, 0x14
|
||||
add r9, r5
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x3
|
||||
bgt _080960E2
|
||||
ldr r0, [r6]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080960CA
|
||||
_080960E2:
|
||||
cmp r2, 0x4
|
||||
bne _08096094
|
||||
cmp r3, 0x3
|
||||
bgt _08096102
|
||||
ldr r4, _08096110
|
||||
movs r2, 0
|
||||
lsls r0, r3, 2
|
||||
adds r0, r3
|
||||
lsls r1, r0, 2
|
||||
_080960F4:
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
adds r1, 0x14
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x3
|
||||
ble _080960F4
|
||||
_08096102:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08096110: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096078
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8096C80
|
||||
sub_8096C80:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
ldr r0, _08096C98
|
||||
mov r12, r0
|
||||
mov r8, r3
|
||||
movs r4, 0
|
||||
mov r9, r4
|
||||
b _08096CC2
|
||||
.align 2, 0
|
||||
_08096C98: .4byte gUnknown_203B490
|
||||
_08096C9C:
|
||||
cmp r2, r3
|
||||
ble _08096CB6
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
mov r5, r8
|
||||
adds r1, r0, r5
|
||||
adds r0, r4
|
||||
adds r1, 0xF0
|
||||
adds r0, 0xF0
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
ldm r0!, {r6,r7}
|
||||
stm r1!, {r6,r7}
|
||||
_08096CB6:
|
||||
adds r4, 0x14
|
||||
movs r0, 0x14
|
||||
add r9, r0
|
||||
adds r2, 0x1
|
||||
add r8, r0
|
||||
adds r3, 0x1
|
||||
_08096CC2:
|
||||
cmp r2, 0x7
|
||||
bgt _08096CF2
|
||||
mov r1, r12
|
||||
ldr r0, [r1]
|
||||
adds r0, r4
|
||||
adds r0, 0xF0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08096CF2
|
||||
ldr r6, _08096D20
|
||||
mov r1, r9
|
||||
_08096CD8:
|
||||
adds r1, 0x14
|
||||
adds r4, 0x14
|
||||
movs r5, 0x14
|
||||
add r9, r5
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x7
|
||||
bgt _08096CF2
|
||||
ldr r0, [r6]
|
||||
adds r0, r1
|
||||
adds r0, 0xF0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08096CD8
|
||||
_08096CF2:
|
||||
cmp r2, 0x8
|
||||
bne _08096C9C
|
||||
cmp r3, 0x7
|
||||
bgt _08096D14
|
||||
ldr r4, _08096D20
|
||||
movs r2, 0
|
||||
lsls r0, r3, 2
|
||||
adds r0, r3
|
||||
lsls r1, r0, 2
|
||||
_08096D04:
|
||||
ldr r0, [r4]
|
||||
adds r0, r1
|
||||
adds r0, 0xF0
|
||||
strb r2, [r0]
|
||||
adds r1, 0x14
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x7
|
||||
ble _08096D04
|
||||
_08096D14:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08096D20: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096C80
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -1,386 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8097944
|
||||
sub_8097944:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x8
|
||||
movs r0, 0x1
|
||||
str r0, [sp]
|
||||
movs r1, 0x1
|
||||
str r1, [sp, 0x4]
|
||||
movs r0, 0xD
|
||||
bl sub_8097710
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08097974
|
||||
bl HasAllFriendAreas
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08097974
|
||||
movs r0, 0xD
|
||||
bl sub_80976F8
|
||||
_08097974:
|
||||
movs r4, 0
|
||||
ldr r0, _08097B5C
|
||||
mov r10, r0
|
||||
mov r8, r4
|
||||
_0809797C:
|
||||
ldr r1, _08097B60
|
||||
ldr r0, [r1]
|
||||
mov r1, r8
|
||||
adds r2, r1, r0
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080979F6
|
||||
movs r0, 0x8
|
||||
ldrsh r3, [r2, r0]
|
||||
mov r1, r10
|
||||
ldr r2, [r1]
|
||||
adds r0, r3, 0
|
||||
cmp r3, 0
|
||||
bge _0809799E
|
||||
adds r0, 0x1F
|
||||
_0809799E:
|
||||
asrs r0, 5
|
||||
lsls r1, r0, 2
|
||||
adds r2, 0x1C
|
||||
adds r2, r1
|
||||
lsls r0, 5
|
||||
subs r0, r3, r0
|
||||
movs r1, 0x1
|
||||
lsls r1, r0
|
||||
ldr r0, [r2]
|
||||
orrs r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _08097B60
|
||||
mov r9, r0
|
||||
mov r12, r8
|
||||
movs r7, 0x1
|
||||
movs r6, 0x2C
|
||||
movs r5, 0x3
|
||||
_080979C0:
|
||||
mov r1, r9
|
||||
ldr r0, [r1]
|
||||
add r0, r12
|
||||
adds r3, r0, r6
|
||||
ldrb r1, [r3]
|
||||
adds r0, r7, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080979EE
|
||||
mov r0, r10
|
||||
ldr r2, [r0]
|
||||
ldrh r3, [r3, 0x2]
|
||||
lsrs r0, r3, 5
|
||||
lsls r0, 2
|
||||
adds r2, 0x8C
|
||||
adds r2, r0
|
||||
movs r0, 0x1F
|
||||
ands r3, r0
|
||||
adds r1, r7, 0
|
||||
lsls r1, r3
|
||||
ldr r0, [r2]
|
||||
orrs r0, r1
|
||||
str r0, [r2]
|
||||
_080979EE:
|
||||
adds r6, 0x8
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _080979C0
|
||||
_080979F6:
|
||||
movs r1, 0x58
|
||||
add r8, r1
|
||||
adds r4, 0x1
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
ble _0809797C
|
||||
movs r4, 0
|
||||
ldr r1, _08097B64
|
||||
_08097A08:
|
||||
cmp r4, 0
|
||||
bne _08097A0E
|
||||
b _08097B80
|
||||
_08097A0E:
|
||||
ldr r0, _08097B68
|
||||
cmp r4, r0
|
||||
bne _08097A16
|
||||
b _08097B80
|
||||
_08097A16:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A1E
|
||||
b _08097B80
|
||||
_08097A1E:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A26
|
||||
b _08097B80
|
||||
_08097A26:
|
||||
adds r0, 0x26
|
||||
cmp r4, r0
|
||||
bne _08097A2E
|
||||
b _08097B80
|
||||
_08097A2E:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A36
|
||||
b _08097B80
|
||||
_08097A36:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A3E
|
||||
b _08097B80
|
||||
_08097A3E:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A46
|
||||
b _08097B80
|
||||
_08097A46:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A4E
|
||||
b _08097B80
|
||||
_08097A4E:
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
bne _08097A56
|
||||
b _08097B80
|
||||
_08097A56:
|
||||
cmp r4, r1
|
||||
bne _08097A5C
|
||||
b _08097B80
|
||||
_08097A5C:
|
||||
ldr r0, _08097B5C
|
||||
ldr r5, [r0]
|
||||
adds r0, r4, 0
|
||||
cmp r4, 0
|
||||
bge _08097A68
|
||||
adds r0, 0x1F
|
||||
_08097A68:
|
||||
asrs r0, 5
|
||||
lsls r3, r0, 2
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x54
|
||||
adds r1, r3
|
||||
lsls r0, 5
|
||||
subs r0, r4, r0
|
||||
movs r2, 0x1
|
||||
lsls r2, r0
|
||||
ldr r0, [r1]
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
bne _08097A86
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x4]
|
||||
_08097A86:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x1C
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08097B7C
|
||||
cmp r4, 0x92
|
||||
bne _08097A9E
|
||||
movs r0, 0x10
|
||||
bl sub_80976F8
|
||||
_08097A9E:
|
||||
cmp r4, 0x91
|
||||
bne _08097AA8
|
||||
movs r0, 0x11
|
||||
bl sub_80976F8
|
||||
_08097AA8:
|
||||
cmp r4, 0x90
|
||||
bne _08097AB2
|
||||
movs r0, 0x12
|
||||
bl sub_80976F8
|
||||
_08097AB2:
|
||||
movs r0, 0xCF
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097AC0
|
||||
movs r0, 0x13
|
||||
bl sub_80976F8
|
||||
_08097AC0:
|
||||
ldr r0, _08097B6C
|
||||
cmp r4, r0
|
||||
bne _08097ACC
|
||||
movs r0, 0x14
|
||||
bl sub_80976F8
|
||||
_08097ACC:
|
||||
movs r0, 0x86
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097ADA
|
||||
movs r0, 0x15
|
||||
bl sub_80976F8
|
||||
_08097ADA:
|
||||
movs r0, 0x87
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097AE8
|
||||
movs r0, 0x16
|
||||
bl sub_80976F8
|
||||
_08097AE8:
|
||||
ldr r0, _08097B70
|
||||
cmp r4, r0
|
||||
bne _08097AF4
|
||||
movs r0, 0x17
|
||||
bl sub_80976F8
|
||||
_08097AF4:
|
||||
movs r0, 0xCD
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097B02
|
||||
movs r0, 0x18
|
||||
bl sub_80976F8
|
||||
_08097B02:
|
||||
ldr r0, _08097B74
|
||||
cmp r4, r0
|
||||
bne _08097B0E
|
||||
movs r0, 0x19
|
||||
bl sub_80976F8
|
||||
_08097B0E:
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097B1C
|
||||
movs r0, 0x1A
|
||||
bl sub_80976F8
|
||||
_08097B1C:
|
||||
movs r0, 0x89
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097B2A
|
||||
movs r0, 0x1B
|
||||
bl sub_80976F8
|
||||
_08097B2A:
|
||||
movs r0, 0x8A
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _08097B38
|
||||
movs r0, 0x1C
|
||||
bl sub_80976F8
|
||||
_08097B38:
|
||||
cmp r4, 0x97
|
||||
bne _08097B42
|
||||
movs r0, 0x1D
|
||||
bl sub_80976F8
|
||||
_08097B42:
|
||||
cmp r4, 0x96
|
||||
bne _08097B4C
|
||||
movs r0, 0x1E
|
||||
bl sub_80976F8
|
||||
_08097B4C:
|
||||
ldr r0, _08097B78
|
||||
cmp r4, r0
|
||||
bne _08097B80
|
||||
movs r0, 0x1F
|
||||
bl sub_80976F8
|
||||
b _08097B80
|
||||
.align 2, 0
|
||||
_08097B5C: .4byte gUnknown_203B494
|
||||
_08097B60: .4byte gRecruitedPokemonRef
|
||||
_08097B64: .4byte 0x000001a7
|
||||
_08097B68: .4byte 0x00000179
|
||||
_08097B6C: .4byte 0x0000010d
|
||||
_08097B70: .4byte 0x00000113
|
||||
_08097B74: .4byte 0x0000019b
|
||||
_08097B78: .4byte 0x0000019d
|
||||
_08097B7C:
|
||||
movs r1, 0
|
||||
str r1, [sp]
|
||||
_08097B80:
|
||||
adds r4, 0x1
|
||||
ldr r1, _08097C0C
|
||||
cmp r4, r1
|
||||
bgt _08097B8A
|
||||
b _08097A08
|
||||
_08097B8A:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0
|
||||
beq _08097B96
|
||||
movs r0, 0xF
|
||||
bl sub_80976F8
|
||||
_08097B96:
|
||||
ldr r1, [sp, 0x4]
|
||||
cmp r1, 0
|
||||
beq _08097BA2
|
||||
movs r0, 0xE
|
||||
bl sub_80976F8
|
||||
_08097BA2:
|
||||
movs r3, 0
|
||||
movs r4, 0
|
||||
_08097BA6:
|
||||
cmp r4, 0
|
||||
beq _08097BE2
|
||||
ldr r0, _08097C10
|
||||
cmp r4, r0
|
||||
beq _08097BE2
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
beq _08097BE2
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
beq _08097BE2
|
||||
ldr r0, _08097C14
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
cmp r4, 0
|
||||
bge _08097BC8
|
||||
adds r0, 0x1F
|
||||
_08097BC8:
|
||||
asrs r0, 5
|
||||
lsls r1, r0, 2
|
||||
adds r2, 0x8C
|
||||
adds r2, r1
|
||||
lsls r0, 5
|
||||
subs r0, r4, r0
|
||||
movs r1, 0x1
|
||||
lsls r1, r0
|
||||
ldr r0, [r2]
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08097BE2
|
||||
adds r3, 0x1
|
||||
_08097BE2:
|
||||
adds r4, 0x1
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
ble _08097BA6
|
||||
cmp r3, 0
|
||||
beq _08097BFC
|
||||
ldr r0, _08097C14
|
||||
ldr r0, [r0]
|
||||
strh r3, [r0, 0x18]
|
||||
movs r0, 0x7
|
||||
bl sub_80976F8
|
||||
_08097BFC:
|
||||
add sp, 0x8
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097C0C: .4byte 0x000001a7
|
||||
_08097C10: .4byte 0x00000163
|
||||
_08097C14: .4byte gUnknown_203B494
|
||||
thumb_func_end sub_8097944
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -1938,7 +1938,7 @@ _0809B7AC:
|
|||
adds r0, r1, r3
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
bl sub_801602C
|
||||
bl CreateConfirmNameMenu
|
||||
b _0809B784
|
||||
.align 2, 0
|
||||
_0809B7D8: .4byte 0x00000424
|
||||
|
|
@ -1948,7 +1948,7 @@ _0809B7E0:
|
|||
adds r0, r1, r2
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x2
|
||||
bl sub_801602C
|
||||
bl CreateConfirmNameMenu
|
||||
b _0809B784
|
||||
.align 2, 0
|
||||
_0809B7F0: .4byte 0x0000042c
|
||||
|
|
@ -1956,7 +1956,7 @@ _0809B7F4:
|
|||
bl sub_8016080
|
||||
cmp r0, 0x3
|
||||
bne _0809B80C
|
||||
bl sub_80160D8
|
||||
bl CleanConfirmNameMenu
|
||||
ldr r0, [r6]
|
||||
movs r3, 0x86
|
||||
lsls r3, 3
|
||||
|
|
@ -1971,7 +1971,7 @@ _0809B80C:
|
|||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0809B784
|
||||
bl sub_80160D8
|
||||
bl CleanConfirmNameMenu
|
||||
ldr r0, [r6]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
|
|
@ -1996,7 +1996,7 @@ _0809B834:
|
|||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
bl sub_801602C
|
||||
bl CreateConfirmNameMenu
|
||||
b _0809B784
|
||||
.align 2, 0
|
||||
_0809B858: .4byte 0x0000042c
|
||||
|
|
@ -2004,7 +2004,7 @@ _0809B85C:
|
|||
bl sub_8016080
|
||||
cmp r0, 0x3
|
||||
bne _0809B874
|
||||
bl sub_80160D8
|
||||
bl CleanConfirmNameMenu
|
||||
ldr r0, [r6]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
|
|
@ -2023,7 +2023,7 @@ _0809B87A:
|
|||
bne _0809B888
|
||||
b _0809B784
|
||||
_0809B888:
|
||||
bl sub_80160D8
|
||||
bl CleanConfirmNameMenu
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
|
|
@ -2938,7 +2938,7 @@ _0809C032:
|
|||
ldr r0, [r6]
|
||||
b _0809B972
|
||||
_0809C036:
|
||||
bl sub_802FE58
|
||||
bl HandleMakuhitaDojoState
|
||||
cmp r0, 0x2
|
||||
beq _0809C05E
|
||||
cmp r0, 0x3
|
||||
|
|
@ -3128,7 +3128,7 @@ _0809C1C2:
|
|||
b _0809C392
|
||||
_0809C1C8:
|
||||
movs r0, 0x2
|
||||
bl sub_80252F0
|
||||
bl CreateFriendListMenu
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809C1EC
|
||||
|
|
@ -3349,286 +3349,4 @@ _0809C394:
|
|||
bx r1
|
||||
thumb_func_end sub_809B648
|
||||
|
||||
thumb_func_start sub_809C39C
|
||||
sub_809C39C:
|
||||
push {lr}
|
||||
bl sub_801D178
|
||||
ldr r1, _0809C3D4
|
||||
ldr r1, [r1]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
adds r1, r2
|
||||
str r0, [r1]
|
||||
cmp r0, 0x3
|
||||
bne _0809C3CC
|
||||
bl sub_801D1D4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8002694
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
movs r1, 0
|
||||
bl GroundMainGroundRequest
|
||||
_0809C3CC:
|
||||
bl sub_801D1E0
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C3D4: .4byte gUnknown_3001B64
|
||||
thumb_func_end sub_809C39C
|
||||
|
||||
thumb_func_start sub_809C3D8
|
||||
sub_809C3D8:
|
||||
push {lr}
|
||||
bl sub_801D178
|
||||
ldr r1, _0809C410
|
||||
ldr r1, [r1]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
adds r1, r2
|
||||
str r0, [r1]
|
||||
cmp r0, 0x3
|
||||
bne _0809C408
|
||||
bl sub_801D1D4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8002694
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
movs r1, 0
|
||||
bl GroundMainGroundRequest
|
||||
_0809C408:
|
||||
bl sub_801D1E0
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C410: .4byte gUnknown_3001B64
|
||||
thumb_func_end sub_809C3D8
|
||||
|
||||
thumb_func_start sub_809C414
|
||||
sub_809C414:
|
||||
push {lr}
|
||||
bl sub_802540C
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
beq _0809C448
|
||||
ldr r0, _0809C444
|
||||
ldr r0, [r0]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
adds r0, r2
|
||||
str r1, [r0]
|
||||
adds r0, r1, 0
|
||||
bl sub_8002694
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
movs r1, 0
|
||||
bl GroundMainGroundRequest
|
||||
b _0809C458
|
||||
.align 2, 0
|
||||
_0809C444: .4byte gUnknown_3001B64
|
||||
_0809C448:
|
||||
ldr r0, _0809C460
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
_0809C458:
|
||||
bl sub_8025418
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C460: .4byte gUnknown_3001B64
|
||||
thumb_func_end sub_809C414
|
||||
|
||||
thumb_func_start sub_809C464
|
||||
sub_809C464:
|
||||
push {lr}
|
||||
bl DeleteTestTracker
|
||||
bl sub_8001064
|
||||
bl sub_809965C
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_809C464
|
||||
|
||||
thumb_func_start sub_809C478
|
||||
sub_809C478:
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
bl sub_80356A0
|
||||
cmp r0, 0x3
|
||||
bne _0809C492
|
||||
ldr r0, _0809C4AC
|
||||
bl PlaySound
|
||||
bl InitFlash
|
||||
bl ClearFlashData
|
||||
_0809C492:
|
||||
bl sub_8035758
|
||||
add r2, sp, 0x4
|
||||
movs r0, 0x3
|
||||
mov r1, sp
|
||||
bl sub_8001B88
|
||||
movs r0, 0
|
||||
bl sub_80993C0
|
||||
add sp, 0x8
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C4AC: .4byte 0x00000313
|
||||
thumb_func_end sub_809C478
|
||||
|
||||
thumb_func_start sub_809C4B0
|
||||
sub_809C4B0:
|
||||
push {r4,r5,lr}
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
ldr r5, _0809C4FC
|
||||
ldr r0, [r5]
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
adds r1, r0, r2
|
||||
ldr r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _0809C4DE
|
||||
bl sub_803B168
|
||||
lsls r0, 16
|
||||
ldr r1, [r5]
|
||||
ldr r3, _0809C500
|
||||
adds r2, r1, r3
|
||||
asrs r4, r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r2]
|
||||
movs r0, 0x86
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
_0809C4DE:
|
||||
str r4, [r1]
|
||||
bl sub_803B1BC
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
beq _0809C4F4
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl GroundMap_ExecuteEvent
|
||||
_0809C4F4:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C4FC: .4byte gUnknown_3001B64
|
||||
_0809C500: .4byte 0x000005a4
|
||||
thumb_func_end sub_809C4B0
|
||||
|
||||
thumb_func_start sub_809C504
|
||||
sub_809C504:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80282DC
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0x1
|
||||
bne _0809C530
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
bl sub_809927C
|
||||
ldr r0, _0809C52C
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
str r4, [r0]
|
||||
b _0809C540
|
||||
.align 2, 0
|
||||
_0809C52C: .4byte gUnknown_3001B64
|
||||
_0809C530:
|
||||
ldr r0, _0809C54C
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
_0809C540:
|
||||
bl sub_80282FC
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C54C: .4byte gUnknown_3001B64
|
||||
thumb_func_end sub_809C504
|
||||
|
||||
thumb_func_start sub_809C550
|
||||
sub_809C550:
|
||||
push {r4,r5,lr}
|
||||
bl sub_802E90C
|
||||
adds r4, r0, 0
|
||||
movs r5, 0
|
||||
bl sub_802E918
|
||||
cmp r4, 0x2
|
||||
beq _0809C586
|
||||
cmp r4, 0x2
|
||||
bhi _0809C56C
|
||||
cmp r4, 0x1
|
||||
beq _0809C572
|
||||
b _0809C5AC
|
||||
_0809C56C:
|
||||
cmp r4, 0x3
|
||||
beq _0809C59A
|
||||
b _0809C5AC
|
||||
_0809C572:
|
||||
movs r0, 0x4
|
||||
movs r1, 0x1D
|
||||
movs r2, 0x3
|
||||
bl sub_8001CC4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809C5AC
|
||||
movs r5, 0x1
|
||||
b _0809C5AC
|
||||
_0809C586:
|
||||
movs r0, 0x4
|
||||
movs r1, 0x1F
|
||||
movs r2, 0x2
|
||||
bl sub_8001CC4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809C5AC
|
||||
movs r5, 0x2
|
||||
b _0809C5AC
|
||||
_0809C59A:
|
||||
movs r0, 0xB
|
||||
movs r1, 0x33
|
||||
movs r2, 0x8
|
||||
bl sub_8001CC4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809C5AC
|
||||
movs r5, 0x3
|
||||
_0809C5AC:
|
||||
ldr r0, _0809C5C0
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x86
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
str r5, [r0]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0809C5C0: .4byte gUnknown_3001B64
|
||||
thumb_func_end sub_809C550
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
279
asm/math.s
279
asm/math.s
|
|
@ -5,285 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start u24_8_div
|
||||
u24_8_div:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
cmp r1, 0
|
||||
bne _08009EB8
|
||||
ldr r0, _08009EB4
|
||||
b _08009F58
|
||||
.align 2, 0
|
||||
_08009EB4: .4byte 0x7fffffff
|
||||
_08009EB8:
|
||||
cmp r0, 0
|
||||
bne _08009EC0
|
||||
movs r0, 0
|
||||
b _08009F58
|
||||
_08009EC0:
|
||||
lsrs r7, r0, 24
|
||||
lsls r6, r0, 8
|
||||
mov r10, r1
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
movs r5, 0
|
||||
movs r4, 0
|
||||
movs r1, 0x1
|
||||
mov r8, r1
|
||||
movs r2, 0x3F
|
||||
str r2, [sp]
|
||||
_08009ED6:
|
||||
lsls r5, 1
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x80
|
||||
lsls r1, 24
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08009EE8
|
||||
mov r2, r8
|
||||
orrs r5, r2
|
||||
_08009EE8:
|
||||
movs r1, 0x2
|
||||
negs r1, r1
|
||||
lsls r4, 1
|
||||
adds r0, r7, 0
|
||||
movs r2, 0x80
|
||||
lsls r2, 24
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08009EFE
|
||||
mov r0, r8
|
||||
orrs r4, r0
|
||||
_08009EFE:
|
||||
lsls r7, 1
|
||||
adds r0, r6, 0
|
||||
movs r2, 0x80
|
||||
lsls r2, 24
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08009F10
|
||||
mov r0, r8
|
||||
orrs r7, r0
|
||||
_08009F10:
|
||||
lsls r6, 1
|
||||
ands r6, r1
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
mov r3, r10
|
||||
bl u32_pair_less_than
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08009F3A
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
mov r2, r10
|
||||
subs r4, r2
|
||||
movs r2, 0
|
||||
subs r5, r2
|
||||
cmp r0, r4
|
||||
bcs _08009F3C
|
||||
subs r5, 0x1
|
||||
b _08009F3C
|
||||
_08009F3A:
|
||||
movs r1, 0
|
||||
_08009F3C:
|
||||
mov r0, r9
|
||||
lsls r0, 1
|
||||
mov r9, r0
|
||||
cmp r1, 0
|
||||
beq _08009F4C
|
||||
mov r1, r8
|
||||
orrs r0, r1
|
||||
mov r9, r0
|
||||
_08009F4C:
|
||||
ldr r2, [sp]
|
||||
subs r2, 0x1
|
||||
str r2, [sp]
|
||||
cmp r2, 0
|
||||
bge _08009ED6
|
||||
mov r0, r9
|
||||
_08009F58:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end u24_8_div
|
||||
|
||||
thumb_func_start sub_8009F68
|
||||
sub_8009F68:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
adds r4, r6, 0
|
||||
cmp r6, 0
|
||||
bge _08009F76
|
||||
negs r4, r6
|
||||
_08009F76:
|
||||
movs r7, 0x80
|
||||
lsls r7, 1
|
||||
cmp r4, 0
|
||||
beq _08009FA0
|
||||
_08009F7E:
|
||||
movs r0, 0x1
|
||||
ands r0, r4
|
||||
cmp r0, 0
|
||||
beq _08009F90
|
||||
adds r0, r7, 0
|
||||
adds r1, r5, 0
|
||||
bl s24_8_mul
|
||||
adds r7, r0, 0
|
||||
_08009F90:
|
||||
adds r0, r5, 0
|
||||
adds r1, r5, 0
|
||||
bl s24_8_mul
|
||||
adds r5, r0, 0
|
||||
asrs r4, 1
|
||||
cmp r4, 0
|
||||
bne _08009F7E
|
||||
_08009FA0:
|
||||
cmp r6, 0
|
||||
bge _08009FB0
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
adds r1, r7, 0
|
||||
bl s24_8_div
|
||||
b _08009FB2
|
||||
_08009FB0:
|
||||
adds r0, r7, 0
|
||||
_08009FB2:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8009F68
|
||||
|
||||
thumb_func_start sub_8009FB8
|
||||
sub_8009FB8:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
cmp r5, 0
|
||||
bge _08009FC4
|
||||
negs r5, r5
|
||||
_08009FC4:
|
||||
cmp r6, 0
|
||||
bge _08009FCA
|
||||
negs r6, r6
|
||||
_08009FCA:
|
||||
cmp r5, r6
|
||||
bge _08009FD4
|
||||
adds r4, r5, 0
|
||||
adds r5, r6, 0
|
||||
adds r6, r4, 0
|
||||
_08009FD4:
|
||||
cmp r6, 0
|
||||
beq _0800A016
|
||||
movs r7, 0x2
|
||||
_08009FDA:
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
bl s24_8_div
|
||||
adds r4, r0, 0
|
||||
adds r1, r4, 0
|
||||
bl s24_8_mul
|
||||
adds r4, r0, 0
|
||||
movs r0, 0x80
|
||||
lsls r0, 3
|
||||
adds r1, r4, r0
|
||||
adds r0, r4, 0
|
||||
bl s24_8_div
|
||||
adds r4, r0, 0
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl s24_8_mul
|
||||
lsls r0, 1
|
||||
adds r5, r0
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl s24_8_mul
|
||||
adds r6, r0, 0
|
||||
subs r7, 0x1
|
||||
cmp r7, 0
|
||||
bge _08009FDA
|
||||
_0800A016:
|
||||
adds r0, r5, 0
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8009FB8
|
||||
|
||||
thumb_func_start sub_800A020
|
||||
sub_800A020:
|
||||
push {r4,lr}
|
||||
adds r3, r0, 0
|
||||
ldr r4, _0800A044
|
||||
lsrs r2, r1, 16
|
||||
str r2, [r3]
|
||||
lsls r0, r1, 16
|
||||
str r0, [r3, 0x4]
|
||||
movs r0, 0x80
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0800A03C
|
||||
orrs r2, r4
|
||||
str r2, [r3]
|
||||
_0800A03C:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0800A044: .4byte 0xffff0000
|
||||
thumb_func_end sub_800A020
|
||||
|
||||
thumb_func_start sub_800A048
|
||||
sub_800A048:
|
||||
push {lr}
|
||||
ldrh r1, [r0]
|
||||
lsls r2, r1, 16
|
||||
ldr r0, [r0, 0x4]
|
||||
lsrs r1, r0, 16
|
||||
orrs r2, r1
|
||||
movs r1, 0x80
|
||||
lsls r1, 8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0800A060
|
||||
adds r2, 0x1
|
||||
_0800A060:
|
||||
adds r0, r2, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800A048
|
||||
|
||||
thumb_func_start sub_800A068
|
||||
sub_800A068:
|
||||
push {lr}
|
||||
ldrb r1, [r0]
|
||||
lsls r2, r1, 24
|
||||
ldr r0, [r0, 0x4]
|
||||
lsrs r1, r0, 8
|
||||
orrs r2, r1
|
||||
movs r1, 0x80
|
||||
lsls r1, 8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0800A080
|
||||
adds r2, 0x1
|
||||
_0800A080:
|
||||
adds r0, r2, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800A068
|
||||
|
||||
thumb_func_start sub_800A088
|
||||
sub_800A088:
|
||||
push {lr}
|
||||
|
|
|
|||
|
|
@ -3555,7 +3555,7 @@ _08009714:
|
|||
bl CpuCopy
|
||||
adds r0, r6, 0
|
||||
bl CloseFile
|
||||
bl sub_80097B0
|
||||
bl InitFontPalette
|
||||
ldr r0, _080097AC
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@
|
|||
|
||||
.global gUnknown_80F54B4
|
||||
gUnknown_80F54B4: @ 80F54B4
|
||||
.incbin "baserom.gba", 0xF54B4, 0x40
|
||||
.4byte 0, 0, 0, 1
|
||||
.4byte 0, 1, 1, 2
|
||||
.4byte 0, 1, 2, 3
|
||||
.4byte 1, 2, 3, 3
|
||||
|
||||
.global gUnknown_80F54F4
|
||||
gUnknown_80F54F4: @ 80F54F4
|
||||
|
|
|
|||
|
|
@ -357,57 +357,4 @@ gUnknown_8106EC8: @ 8106EC8
|
|||
.byte 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05
|
||||
.byte 0x06, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x07
|
||||
|
||||
.global gUnknown_8106EEF
|
||||
gUnknown_8106EEF: @ 8106EEF
|
||||
.byte 0x03, 0x04, 0x05, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00
|
||||
|
||||
.global gUnknown_8106EFC
|
||||
gUnknown_8106EFC: @ 8106EFC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_8106F04
|
||||
gUnknown_8106F04: @ 8106F04
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x01, 0x00
|
||||
|
||||
.global gUnknown_8106F0C
|
||||
gUnknown_8106F0C: @ 8106F0C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x02, 0x00
|
||||
|
||||
.global gUnknown_8106F14
|
||||
gUnknown_8106F14: @ 8106F14
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x80, 0x01, 0x00
|
||||
|
||||
.global gUnknown_8106F1C
|
||||
gUnknown_8106F1C: @ 8106F1C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x80, 0x00, 0x00
|
||||
|
||||
.global gUnknown_8106F24
|
||||
gUnknown_8106F24: @ 8106F24
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x01, 0x00
|
||||
.global gUnknown_8106F3C
|
||||
gUnknown_8106F3C:
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00
|
||||
.global gUnknown_8106F44
|
||||
gUnknown_8106F44:
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x66, 0xe6, 0x00, 0x00
|
||||
.global gUnknown_8106F4C
|
||||
gUnknown_8106F4C:
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00
|
||||
|
||||
.global gUnknown_8106F54
|
||||
gUnknown_8106F54: @ 8106F54
|
||||
.4byte gUnknown_8106F3C
|
||||
.4byte gUnknown_8106F44
|
||||
.4byte gUnknown_8106F04
|
||||
.4byte gUnknown_8106F4C
|
||||
|
||||
.global gUnknown_8106F64
|
||||
gUnknown_8106F64: @ 8106F64
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0xC0, 0x00, 0x00
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ gUnknown_8116208: @ 8116208
|
|||
gUnknown_8116218: @ 8116218
|
||||
.4byte 1
|
||||
.4byte 0
|
||||
.4byte sub_8021D1C
|
||||
.4byte CleanWigglytuffShop
|
||||
.4byte sub_8021C5C
|
||||
|
||||
.global gUnknown_8116228
|
||||
|
|
@ -222,21 +222,21 @@ gUnknown_8116298: @ 8116298
|
|||
.4byte 1
|
||||
.4byte 0
|
||||
.4byte MakuhitaDojo_Delete
|
||||
.4byte sub_802FE58
|
||||
.4byte HandleMakuhitaDojoState
|
||||
|
||||
.global gUnknown_81162A8
|
||||
gUnknown_81162A8: @ 81162A8
|
||||
.4byte 1
|
||||
.4byte 0
|
||||
.4byte MakuhitaDojo_Delete
|
||||
.4byte sub_802FE58
|
||||
.4byte HandleMakuhitaDojoState
|
||||
|
||||
.global gUnknown_81162B8
|
||||
gUnknown_81162B8: @ 81162B8
|
||||
.4byte 1
|
||||
.4byte 0
|
||||
.4byte MakuhitaDojo_Delete
|
||||
.4byte sub_802FE58
|
||||
.4byte HandleMakuhitaDojoState
|
||||
|
||||
.global gUnknown_81162C8
|
||||
gUnknown_81162C8: @ 81162C8
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ struct unkStruct_202D038
|
|||
|
||||
void vram_related_8009804(void);
|
||||
|
||||
void sub_80097B0(void);
|
||||
void InitFontPalette(void);
|
||||
void sub_80098A0(void);
|
||||
void sub_80098BC(u32 *, u32 *, u32);
|
||||
void sub_80098F8(u32);
|
||||
|
|
@ -25,4 +25,4 @@ void sub_8009908(void);
|
|||
void sub_80099C0(void);
|
||||
void sub_80099F0(u32);
|
||||
|
||||
#endif // GUARD_CODE_8009804_H
|
||||
#endif // GUARD_CODE_8009804_H
|
||||
|
|
|
|||
|
|
@ -10,12 +10,20 @@ struct unkStruct_203B200
|
|||
u32 unk4;
|
||||
/* 0x8 */ u8 *pokeName;
|
||||
/* 0xC */ s32 state;
|
||||
/* 0x10 */ MenuItem menus[3];
|
||||
u8 fill[0x50 - 0x28];
|
||||
/* 0x10 */ MenuItem menus[8];
|
||||
};
|
||||
|
||||
u32 sub_801602C(u32 mode, u8 *name);
|
||||
u32 CreateConfirmNameMenu(u32 mode, u8 *name);
|
||||
u32 sub_8016080(void);
|
||||
void sub_80160D8(void);
|
||||
void CleanConfirmNameMenu(void);
|
||||
|
||||
#endif // GUARD_CODE_801602C_H
|
||||
enum ConfirmNameMenuStates
|
||||
{
|
||||
CONFIRM_NAME_MENU_INIT,
|
||||
CONFIRM_NAME_MENU_PROMPT,
|
||||
CONFIRM_NAME_MENU_TOO_LONG,
|
||||
CONFIRM_NAME_MENU_EMPTY,
|
||||
CONFIRM_NAME_MENU_EXIT = 4
|
||||
};
|
||||
|
||||
#endif // GUARD_CODE_801602C_H
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
#ifndef GUARD_CODE_801BEEC_H
|
||||
#define GUARD_CODE_801BEEC_H
|
||||
|
||||
#include "constants/iq_skill.h"
|
||||
#include "structs/menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// size: 0x124
|
||||
struct unkStruct_203B238
|
||||
{
|
||||
/* 0x0 */ u32 state;
|
||||
/* 0x4 */ s16 species;
|
||||
/* 0x8 */ PokemonStruct1 *pokeStruct;
|
||||
/* 0xC */ u8 iqSkills[NUM_IQ_SKILLS];
|
||||
u32 unk24;
|
||||
/* 0x28 */ u8 iqSkillIndex;
|
||||
/* 0x2C */ u32 numIQSkills;
|
||||
/* 0x30 */ s32 menuAction;
|
||||
MenuItem unk34[8];
|
||||
MenuStruct unk74;
|
||||
UnkTextStruct2 unkC4[4];
|
||||
};
|
||||
|
||||
bool8 sub_801BEEC(s16 species);
|
||||
u32 sub_801BF48(void);
|
||||
void sub_801BF98(void);
|
||||
|
||||
#endif // GUARD_CODE_801BEEC_H
|
||||
|
|
@ -4,5 +4,7 @@
|
|||
u8 sub_803D0D8(void);
|
||||
u8 sub_803D0F0(u8);
|
||||
u8 sub_803D100(u8);
|
||||
u8 sub_803D110(u8 *param_1, u8 *param_2, s32 size);
|
||||
void sub_803D1A8(u8 *param_1, u8 *param_2, s32 size);
|
||||
|
||||
#endif // GUARD_CODE_803D0D8_H
|
||||
#endif // GUARD_CODE_803D0D8_H
|
||||
|
|
|
|||
|
|
@ -48,5 +48,6 @@ void sub_807A96C(Entity *pokemon, Entity *target);
|
|||
void WakeUpPokemon(Entity * pokemon);
|
||||
void SendThawedMessage(Entity *pokemon, Entity *target);
|
||||
void sub_807AA30(void);
|
||||
void sub_8079E34(Entity * pokemon, Entity * target, bool8 param_3);
|
||||
|
||||
#endif // !GUARD_CODE_8077274_1_H
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#define GUARD_CODE_8094D28_H
|
||||
|
||||
// code_8094D28.s
|
||||
extern void sub_8094D28(s32);
|
||||
void sub_8094D28(s32 r0);
|
||||
extern s32 sub_8094E4C(void);
|
||||
|
||||
#endif // GUARD_CODE_8094D28_H
|
||||
#endif // GUARD_CODE_8094D28_H
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@ typedef struct subStruct_203B490
|
|||
/* 0x8 */ s32 checksum; // really dumb checksum that just adds all the fields of WonderMail struct
|
||||
} subStruct_203B490;
|
||||
|
||||
|
||||
// size: 0x8
|
||||
struct unkStruct_8096AF8
|
||||
{
|
||||
bool8 unk0;
|
||||
/* 0x2 */ u16 clientSpecies;
|
||||
/* 0x4 */ u16 targetSpecies;
|
||||
};
|
||||
|
||||
// size: 0x32C?
|
||||
typedef struct unkStruct_203B490
|
||||
{
|
||||
|
|
@ -31,5 +40,32 @@ unkStruct_203B490 *GetMailInfo(void);
|
|||
void InitializeMailJobsNews(void);
|
||||
bool8 IsValidWonderMail(WonderMail *WonderMailData);
|
||||
bool8 ValidateWonderMail(WonderMail *data);
|
||||
s32 CountFilledMailboxSlots(void);
|
||||
WonderMail *GetMailboxSlotInfo(u8 index);
|
||||
bool8 IsMailSlotEmpty(u8 index);
|
||||
void ResetMailboxSlot(u8 index);
|
||||
void ShiftMailboxSlotsDown(void);
|
||||
bool8 AcceptJob(WonderMail *mail);
|
||||
s32 CountJobsinDungeon(u8 dungeon);
|
||||
WonderMail *GetJobSlotInfo(u8 index);
|
||||
s32 GetNumAcceptedJobs(void);
|
||||
bool8 IsJobSlotEmpty(u8 index);
|
||||
bool8 IsMailinJobSlot(WonderMail *mail);
|
||||
void ResetJobSlot(u8 index);
|
||||
bool8 sub_809693C(WonderMail *mail);
|
||||
void sub_8096AF8(struct unkStruct_8096AF8 *, u8 slotIndex, u8 dungeon);
|
||||
bool8 sub_8096C08(u8 *jobIndex);
|
||||
WonderMail *GetPelipperBoardSlotInfo(u8);
|
||||
bool8 IsPelipperBoardSlotEmpty(u8);
|
||||
void ResetPelipperBoardSlot(u8);
|
||||
void ShiftPelipperJobsDown(void);
|
||||
void ShiftJobSlotsDown(void);
|
||||
void ReceivePKMNNews(u8 index);
|
||||
bool8 CheckPKMNNewsSlot(u8 index);
|
||||
void SortJobSlots(void);
|
||||
u8 *sub_8096DD8(void);
|
||||
u8 *sub_8096DE8(void);
|
||||
u8 sub_8096E2C(void);
|
||||
void sub_8096EEC(WonderMail *mail);
|
||||
|
||||
#endif // GUARD_CODE_80958E8_H
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
#ifndef GUARD_CODE_80958E8_1_H
|
||||
#define GUARD_CODE_80958E8_1_H
|
||||
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
// size: 0x8
|
||||
struct unkStruct_8096AF8
|
||||
{
|
||||
bool8 unk0;
|
||||
/* 0x2 */ u16 clientSpecies;
|
||||
/* 0x4 */ u16 targetSpecies;
|
||||
};
|
||||
|
||||
bool8 AcceptJob(WonderMail *mail);
|
||||
s32 CountJobsinDungeon(u8 dungeon);
|
||||
WonderMail *GetJobSlotInfo(u8 index);
|
||||
s32 GetNumAcceptedJobs(void);
|
||||
bool8 IsJobSlotEmpty(u8 index);
|
||||
bool8 IsMailinJobSlot(WonderMail *mail);
|
||||
void ResetJobSlot(u8 index);
|
||||
|
||||
bool8 sub_809693C(WonderMail *mail);
|
||||
void sub_8096AF8(struct unkStruct_8096AF8 *, u8 slotIndex, u8 dungeon);
|
||||
bool8 sub_8096C08(u8 *jobIndex);
|
||||
|
||||
// code_80958E8_1.s
|
||||
extern WonderMail *GetPelipperBoardSlotInfo(u8);
|
||||
extern bool8 IsPelipperBoardSlotEmpty(u8);
|
||||
|
||||
#endif // GUARD_CODE_80958E8_1_H
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef GUARD_CODE_8096AF8_H
|
||||
#define GUARD_CODE_8096AF8_H
|
||||
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
extern void sub_8096C80(void);
|
||||
void ReceivePKMNNews(u8 index);
|
||||
bool8 CheckPKMNNewsSlot(u8 index);
|
||||
void SortJobSlots(void);
|
||||
u8 *sub_8096DD8(void);
|
||||
u8 *sub_8096DE8(void);
|
||||
u8 sub_8096E2C(void);
|
||||
void sub_8096EEC(WonderMail *mail);
|
||||
|
||||
#endif // GUARD_CODE_8096AF8_H
|
||||
|
|
@ -41,5 +41,8 @@ void sub_8097848(void);
|
|||
s16 sub_8097870(void);
|
||||
s16 sub_8097880(void);
|
||||
s16 sub_80978B8(void);
|
||||
void sub_8097944(void);
|
||||
u32 sub_8097D60(u8 *r0, u32 size);
|
||||
u32 sub_8097D98(u8 *r0, u32 size);
|
||||
|
||||
#endif // GUARD_CODE_8097670_H
|
||||
#endif // GUARD_CODE_8097670_H
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ enum WonderMailTypes
|
|||
{
|
||||
WONDER_MAIL_TYPE_NONE = 0,
|
||||
WONDER_MAIL_TYPE_SOS,
|
||||
//WONDER_MAIL_TYPE_SOS = 2, // SOS MAIL is 1 and 2?
|
||||
// 2 - 3
|
||||
WONDER_MAIL_TYPE_SOS_1,
|
||||
// 3
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
|
|
@ -82,4 +82,4 @@ enum WonderMailMissionTypes
|
|||
#define MAX_ITEM_REWARDS 3
|
||||
|
||||
|
||||
#endif //GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
#endif //GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
|
|
|
|||
|
|
@ -4,5 +4,7 @@
|
|||
#include "structs/dungeon_entity.h"
|
||||
|
||||
bool8 HasHeldItem(Entity *pokemon, u8 id);
|
||||
void sub_8046CE4(Item *item, s32 param_2);
|
||||
void sub_8046D20(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -10,5 +10,6 @@ typedef struct unkStruct_202F190
|
|||
|
||||
Tile *GetTile(s32 x, s32 y);
|
||||
Tile *GetTileSafe(s32 x, s32 y);
|
||||
void sub_804AC20(Position *pos);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/map.h"
|
||||
|
||||
extern u8 gWalkableTileToCrossableTerrain[8];
|
||||
|
||||
u8 GetCrossableTerrain(s16 species);
|
||||
u8 sub_807034C(s16 id, struct Tile *tile);
|
||||
u8 sub_80703A0(Entity *pokemon, Position *pos);
|
||||
|
|
|
|||
|
|
@ -16,5 +16,8 @@ Trap* GetTrapData_1(Entity *entity);
|
|||
Item *GetItemData(Entity *entity);
|
||||
struct Tile *GetTileAtEntitySafe(Entity *entity);
|
||||
Item *GetItemData_1(Entity *entity);
|
||||
void sub_804535C(Entity *entity, Position32 *pos);
|
||||
void SetEntityPixelPos(Entity *entity, s32 x, s32 y);
|
||||
void IncreaseEntityPixelPos(Entity *entity, s32 x, s32 y);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,9 +3,13 @@
|
|||
|
||||
#include "structs/dungeon_entity.h"
|
||||
|
||||
typedef void (*DungeonCallback)(Entity *);
|
||||
|
||||
Entity *xxx_call_GetLeader(void);
|
||||
Entity *GetPartnerEntity(void);
|
||||
void sub_80854D4(void);
|
||||
void sub_80855E4(DungeonCallback func);
|
||||
void sub_808563C(DungeonCallback func);
|
||||
Entity *GetEntityFromClientType(u8 entityType);
|
||||
void sub_80856C8(Entity * pokemon, s32 x, s32 y);
|
||||
void sub_80856E0(Entity * pokemon, s32 direction);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,73 @@
|
|||
#ifndef INCLUDE_FRIEND_LIST_MENU_H
|
||||
#define INCLUDE_FRIEND_LIST_MENU_H
|
||||
|
||||
bool8 sub_80252F0(s32 param_1);
|
||||
// there might be more overlap with unkStruct_203B2BC
|
||||
// I was working on the moves and put the data that seemed to correspond to that
|
||||
// into a separate struct
|
||||
typedef struct unkStruct_203B2B4
|
||||
{
|
||||
// size: 0x178
|
||||
s32 unk0;
|
||||
s32 state;
|
||||
u32 fallbackState;
|
||||
u8 unkC; // friend Area
|
||||
u8 unkD; // friend Area
|
||||
s16 species;
|
||||
u32 itemIndex;
|
||||
BulkItem item1;
|
||||
BulkItem item2;
|
||||
/* 0x1C */ PokemonStruct1 *pokeStruct;
|
||||
u32 moveIndex; // some sort of move index
|
||||
u16 moveID;
|
||||
Move moves[8];
|
||||
u16 moveIDs[4]; // some list of move IDs
|
||||
u32 menuAction1;
|
||||
s32 menuAction2;
|
||||
MenuStruct unk78;
|
||||
MenuItem unkC8[8];
|
||||
u16 unk108[8];
|
||||
UnkTextStruct2 unk118[4];
|
||||
} unkStruct_203B2B4;
|
||||
|
||||
bool8 CreateFriendListMenu(s32 param_1);
|
||||
u32 sub_8025354(void);
|
||||
u8 sub_802540C(void);
|
||||
void sub_8025418(void);
|
||||
void CleanFriendListMenu(void);
|
||||
|
||||
enum FriendListMenuStates {
|
||||
// 0
|
||||
// 1
|
||||
// 2
|
||||
// 3
|
||||
FRIEND_LIST_MENU_STATE_SUMMARY = 4,
|
||||
FRIEND_LIST_MENU_STATE_CHECK_IQ = 5,
|
||||
FRIEND_LIST_MENU_STATE_STANDBY = 7,
|
||||
FRIEND_LIST_MENU_STATE_ITEM_GIVEN = 8,
|
||||
FRIEND_LIST_MENU_STATE_ITEM_EXCHANGE = 9,
|
||||
FRIEND_LIST_MENU_STATE_TAKE = 0xA,
|
||||
FRIEND_LIST_MENU_STATE_GIVE = 0xB,
|
||||
// 0xC
|
||||
// 0xD
|
||||
FRIEND_LIST_MENU_STATE_INFO = 0xE,
|
||||
FRIEND_LIST_MENU_STATE_MOVES = 0xF,
|
||||
// 0x10
|
||||
// 0x11
|
||||
// 0x12
|
||||
FRIEND_LIST_MENU_STATE_EXIT = 0x13
|
||||
};
|
||||
|
||||
enum FriendListMenuActions {
|
||||
FRIEND_LIST_MENU_NULL = 1,
|
||||
FRIEND_LIST_MENU_INFO = 4,
|
||||
FRIEND_LIST_MENU_SUMMARY = 4,
|
||||
FRIEND_LIST_MENU_CHECK_IQ = 5,
|
||||
FRIEND_LIST_MENU_MOVES,
|
||||
FRIEND_LIST_MENU_VISIT,
|
||||
// 8
|
||||
FRIEND_LIST_MENU_STANDBY = 9,
|
||||
FRIEND_LIST_MENU_GIVE = 0xA,
|
||||
FRIEND_LIST_MENU_TAKE,
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -13,5 +13,6 @@ typedef struct unkStruct_811BAF4
|
|||
|
||||
bool8 sub_8098F88(void);
|
||||
const char *sub_8098FB4(void);
|
||||
bool8 GroundMainGroundRequest(s16 r0, u32 r1, s32 r2);
|
||||
|
||||
#endif // GUARD_GROUND_MAIN_H
|
||||
#endif // GUARD_GROUND_MAIN_H
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
#ifndef GUARD_CODE_801C620_H
|
||||
#define GUARD_CODE_801C620_H
|
||||
#ifndef GUARD_IQ_SKILL_INFO_MENU_H
|
||||
#define GUARD_IQ_SKILL_INFO_MENU_H
|
||||
|
||||
#include "structs/menu.h"
|
||||
#include "structs/subStruct_203B240.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// size: 0x94
|
||||
struct unkStruct_203B240
|
||||
struct IQSkillInfoMenu
|
||||
{
|
||||
/* 0x0 */ s32 state;
|
||||
/* 0x4 */ u8 chosenIQSkill;
|
||||
|
|
@ -20,8 +20,8 @@ struct unkStruct_203B240
|
|||
MenuInputStructSub unk88;
|
||||
};
|
||||
|
||||
bool8 sub_801C620(u8 iqSkill);
|
||||
u32 sub_801C674(void);
|
||||
void sub_801C6B4(void);
|
||||
bool8 CreateIQSkillInfoMenu(u8 iqSkill);
|
||||
u32 HandleIQSkillInfoMenuState(void);
|
||||
void CleanIQSkillInfoMenu(void);
|
||||
|
||||
#endif // GUARD_CODE_801C620_H
|
||||
#endif // GUARD_IQ_SKILL_INFO_MENU_H
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
// size: 0xC4
|
||||
struct unkStruct_203B23C
|
||||
struct IQSkillListMenu
|
||||
{
|
||||
/* 0x0 */ s16 species;
|
||||
/* 0x4 */ PokemonStruct1 *pokeStruct;
|
||||
|
|
@ -19,11 +19,11 @@ struct unkStruct_203B23C
|
|||
|
||||
bool8 HasNoAvailIQSkills(s16 species);
|
||||
|
||||
bool8 sub_801C244(s16 species, u32 index, u32);
|
||||
u32 sub_801C308(bool8);
|
||||
s32 sub_801C390(void);
|
||||
void sub_801C3B0(bool8);
|
||||
void sub_801C3F8(void);
|
||||
void sub_801C4C8(void);
|
||||
bool8 CreateIQSkillListMenu(s16 species, u32 index, u32);
|
||||
u32 HandleIQSkillListMenuInput(bool8);
|
||||
s32 GetIQSkillSelection(void);
|
||||
void RedrawIQSkillListMenu(bool8);
|
||||
void CleanIQSkillListMenu(void);
|
||||
void BuildIQSkillList(void);
|
||||
|
||||
#endif // GUARD_CODE_801C244_H
|
||||
44
include/iq_skill_menu.h
Normal file
44
include/iq_skill_menu.h
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#ifndef GUARD_CODE_IQ_SKILL_MENU_H
|
||||
#define GUARD_CODE_IQ_SKILL_MENU_H
|
||||
|
||||
#include "constants/iq_skill.h"
|
||||
#include "structs/menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// size: 0x124
|
||||
struct IQSkillMenu
|
||||
{
|
||||
/* 0x0 */ u32 state;
|
||||
/* 0x4 */ s16 species;
|
||||
/* 0x8 */ PokemonStruct1 *pokeStruct;
|
||||
/* 0xC */ u8 iqSkills[NUM_IQ_SKILLS];
|
||||
/* 0x24 */ u32 menuIndex;
|
||||
/* 0x28 */ u8 iqSkillIndex;
|
||||
/* 0x2C */ u32 numIQSkills;
|
||||
/* 0x30 */ s32 menuAction;
|
||||
MenuItem unk34[8];
|
||||
MenuStruct unk74;
|
||||
UnkTextStruct2 unkC4[4];
|
||||
};
|
||||
|
||||
bool8 CreateIQSkillMenu(s16 species);
|
||||
u32 sub_801BF48(void);
|
||||
void CleanIQSkillMenu(void);
|
||||
|
||||
enum IQSkillMenuStates
|
||||
{
|
||||
IQ_SKILL_MENU_STATE_INIT,
|
||||
IQ_SKILL_MENU_STATE_MAIN,
|
||||
IQ_SKILL_MENU_STATE_INFO = 3,
|
||||
IQ_SKILL_MENU_STATE_EXIT
|
||||
};
|
||||
|
||||
enum IQSkillMenuActions
|
||||
{
|
||||
IQ_SKILL_MENU_NULL = 1,
|
||||
IQ_SKILL_MENU_SWITCH,
|
||||
IQ_SKILL_MENU_INFO,
|
||||
};
|
||||
|
||||
#endif // GUARD_CODE_IQ_SKILL_MENU_H
|
||||
|
|
@ -14,7 +14,8 @@ enum KecleonStoreStates
|
|||
KECLEON_STORE_EXIT = 4,
|
||||
KECLEON_STORE_NO_STORE_ITEMS,
|
||||
KECLEON_STORE_NO_MONEY,
|
||||
// 7 - 8
|
||||
KECLEON_STORE_TOO_MUCH_MONEY,
|
||||
// 8
|
||||
KECLEON_STORE_NO_ITEMS_TO_SELL = 9,
|
||||
KECLEON_STORE_TOO_MANY_ITEMS,
|
||||
// 11
|
||||
|
|
@ -59,4 +60,4 @@ bool8 CreateKecleonBros(u32 mode);
|
|||
void DeleteKecleonBros(void);
|
||||
u32 KecleonBrosCallback(void);
|
||||
|
||||
#endif // GUARD_KECLEON_BROS1_H
|
||||
#endif // GUARD_KECLEON_BROS1_H
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef GUARD_MAILBOX_8095F8C_H
|
||||
#define GUARD_MAILBOX_8095F8C_H
|
||||
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
s32 CountFilledMailboxSlots(void);
|
||||
WonderMail *GetMailboxSlotInfo(u8 index);
|
||||
bool8 IsMailSlotEmpty(u8 index);
|
||||
void ResetMailboxSlot(u8 index);
|
||||
|
||||
#endif // GUARD_MAILBOX_8095F8C_H
|
||||
|
|
@ -43,7 +43,7 @@ typedef struct MakuhitaDojoWork1
|
|||
void MakuhitaDojo_Delete(void);
|
||||
bool8 MakuhitaDojo_New(u32 mode);
|
||||
|
||||
u32 sub_802FE58(void);
|
||||
u32 HandleMakuhitaDojoState(void);
|
||||
s16 sub_802FED0(void);
|
||||
|
||||
#endif // GUARD_MAKUHITA_DOJO1_H
|
||||
#endif // GUARD_MAKUHITA_DOJO1_H
|
||||
|
|
|
|||
|
|
@ -99,4 +99,15 @@ s32 s24_8_div(s32 r0, s32 r1);
|
|||
*/
|
||||
u24_8 u24_8_mul(u24_8 x, u24_8 y);
|
||||
|
||||
/**
|
||||
* This function divides two unsigned 24.8 fixed-point numbers.
|
||||
*
|
||||
* @param[in] x The first factor.
|
||||
* @param[in] y The second factor.
|
||||
*
|
||||
* @return The quotient `x/y` as an unsigned 24.8 fixed-point number.
|
||||
*/
|
||||
u24_8 u24_8_div(u24_8 x, u24_8 y);
|
||||
|
||||
|
||||
#endif // GUARD_MATH_H
|
||||
|
|
|
|||
|
|
@ -35,9 +35,58 @@ typedef struct unkStruct_203B2B8
|
|||
UnkTextStruct2 unk220[4];
|
||||
} unkStruct_203B2B8;
|
||||
|
||||
bool8 sub_8025EF4(PokemonStruct1 *pokeStruct);
|
||||
bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct);
|
||||
u32 sub_8025F68(void);
|
||||
bool8 sub_802604C(void);
|
||||
void sub_8026058(void);
|
||||
void CleanPartyListMenu(void);
|
||||
|
||||
#endif // GUARD_PARTY_LIST_MENU_H
|
||||
enum PartyListMenuStates
|
||||
{
|
||||
PARTY_LIST_STATE_INIT,
|
||||
PARTY_LIST_STATE_MAIN_MENU,
|
||||
PARTY_LIST_STATE_MAIN_MENU_1,
|
||||
PARTY_LIST_STATE_SUMMARY = 3,
|
||||
PARTY_LIST_STATE_CHECK_IQ = 4,
|
||||
PARTY_LIST_STATE_JOIN_TEAM = 5,
|
||||
PARTY_LIST_STATE_STANDBY = 6,
|
||||
PARTY_LIST_STATE_MAKE_LEADER = 7,
|
||||
PARTY_LIST_STATE_POKEMON_FAREWELL = 8,
|
||||
// 9
|
||||
// 0xA
|
||||
// 0xB
|
||||
PARTY_LIST_STATE_SAY_FAREWELL = 0xC,
|
||||
PARTY_LIST_STATE_CONFIRM_SAY_FAREWELL = 0xD,
|
||||
PARTY_LIST_STATE_GIVE_GUMMI = 0xe,
|
||||
PARTY_LIST_STATE_GIVEN_ITEM = 0xF,
|
||||
PARTY_LIST_STATE_GIVEN_ITEM_HELD_ITEM = 0x10,
|
||||
PARTY_LIST_STATE_TAKE_ITEM = 0x11,
|
||||
PARTY_LIST_STATE_GIVE_ITEM = 0x12,
|
||||
PARTY_LIST_STATE_GIVE_ITEM_1 = 0x13,
|
||||
// 0x14
|
||||
// 0x15
|
||||
PARTY_LIST_STATE_MOVES = 0x16,
|
||||
// 0x17
|
||||
// 0x18
|
||||
PARTY_LIST_STATE_EXIT = 0x19,
|
||||
|
||||
};
|
||||
|
||||
enum PartyListMenuActions
|
||||
{
|
||||
PARTY_LIST_MENU_NULL = 1,
|
||||
PARTY_LIST_MENU_YES,
|
||||
PARTY_LIST_MENU_NO,
|
||||
PARTY_LIST_MENU_INFO = 4,
|
||||
PARTY_LIST_MENU_SUMMARY = 4,
|
||||
PARTY_LIST_MENU_CHECK_IQ,
|
||||
PARTY_LIST_MENU_JOIN_TEAM,
|
||||
PARTY_LIST_MENU_STANDBY,
|
||||
PARTY_LIST_MENU_MAKE_LEADER,
|
||||
PARTY_LIST_MENU_SAY_FAREWELL,
|
||||
PARTY_LIST_MENU_GIVE_GUMMI,
|
||||
PARTY_LIST_MENU_GIVE_ITEM,
|
||||
PARTY_LIST_MENU_TAKE_ITEM,
|
||||
PARTY_LIST_MENU_MOVES,
|
||||
};
|
||||
|
||||
#endif // GUARD_PARTY_LIST_MENU_H
|
||||
|
|
|
|||
|
|
@ -28,3 +28,11 @@ enum PelipperBoardStates
|
|||
PELIPPER_JOB_LIST_MENU,
|
||||
};
|
||||
|
||||
enum PelipperBoardActions
|
||||
{
|
||||
PELIPPER_BOARD_NULL = 1,
|
||||
PELIPPER_BOARD_BULLETIN_BOARD,
|
||||
PELIPPER_BOARD_JOB_LIST,
|
||||
PELIPPER_BOARD_ACCEPT,
|
||||
PELIPPER_BOARD_INFO,
|
||||
};
|
||||
|
|
|
|||
48
include/structs/str_3001B64.h
Normal file
48
include/structs/str_3001B64.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#ifndef GUARD_STR_3001B64_H
|
||||
#define GUARD_STR_3001B64_H
|
||||
|
||||
#include "file_system.h"
|
||||
|
||||
struct unkStruct_3001B64_sub
|
||||
{
|
||||
// size: 0x24
|
||||
u16 unk0;
|
||||
/* 0x2 */ s16 speciesID;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u32 unk10;
|
||||
/* 0x14 */ u8 *faceData;
|
||||
u32 fill18;
|
||||
u8 unk1C;
|
||||
u8 fill1D[0x20 - 0x1D];
|
||||
/* 0x20 */ OpenedFile *faceFile;
|
||||
};
|
||||
|
||||
struct unkStruct_3001B64
|
||||
{
|
||||
// size: 0x5A8
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u8 fill10[0x414 - 0x10];
|
||||
u32 unk414;
|
||||
u32 unk418;
|
||||
u32 unk41C;
|
||||
u32 unk420;
|
||||
u32 unk424;
|
||||
u32 unk428;
|
||||
u32 unk42C;
|
||||
u32 unk430;
|
||||
u32 unk434;
|
||||
u32 fill438;
|
||||
struct unkStruct_3001B64_sub unk43C[10];
|
||||
u16 unk5A4;
|
||||
};
|
||||
|
||||
#endif // GUARD_STR_3001B61_H
|
||||
|
||||
|
|
@ -24,6 +24,7 @@ typedef struct DungeonLocation
|
|||
} DungeonLocation;
|
||||
|
||||
// size: 0x4
|
||||
// This might be "RGB"... see `SetDungeonBGColorRGB()`
|
||||
typedef struct Dungeon_sub
|
||||
{
|
||||
u8 unk0;
|
||||
|
|
@ -31,6 +32,19 @@ typedef struct Dungeon_sub
|
|||
u8 unk2;
|
||||
} Dungeon_sub;
|
||||
|
||||
typedef struct Weather
|
||||
{
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
/* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically.
|
||||
/* 0xE267 */ u8 unkE267[8];
|
||||
/* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
/* 0xE277 */ u8 mudSportTurns;
|
||||
/* 0xE278 */ u8 waterSportTurns;
|
||||
/* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects
|
||||
|
||||
} Weather;
|
||||
|
||||
// size: 0x30
|
||||
typedef struct unkDungeonGlobal_unk1CE98_sub
|
||||
{
|
||||
|
|
@ -123,7 +137,12 @@ typedef struct Dungeon
|
|||
u8 fill14[0xB8 - 0x14];
|
||||
Entity *unkB8;
|
||||
Entity *unkBC;
|
||||
u8 fillC0[0x16D - 0xC0];
|
||||
u8 fillC0[0x13C - 0xC0];
|
||||
u8 unk13C[2];
|
||||
u8 fill13E[0x16A - 0x13E];
|
||||
u8 unk16A;
|
||||
u8 unk16B;
|
||||
u8 unk16C;
|
||||
u8 unk16D;
|
||||
u8 fill16E[0x179 - 0x16E];
|
||||
/* 0x179 */ bool8 pokemonExposed; // True if a Pokémon on the floor has the Exposed status.
|
||||
|
|
@ -208,20 +227,7 @@ typedef struct Dungeon
|
|||
u32 unkE250;
|
||||
u8 fillE254[0xE260 - 0xE254];
|
||||
u32 unkE260;
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
/* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically.
|
||||
/* 0xE267 */ u8 unkE267[0xE269 - 0xE267];
|
||||
u8 unkE269;
|
||||
u8 fillE26A;
|
||||
u8 unkE26B;
|
||||
u8 weatherTurns;
|
||||
u8 fillE26D[0xE26F - 0xE26D];
|
||||
/* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
/* 0xE277 */ u8 mudSportTurns;
|
||||
/* 0xE278 */ u8 waterSportTurns;
|
||||
/* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects
|
||||
u8 fillE27A[0xE27C - 0xE27A];
|
||||
/* 0xE264 */ Weather weather; // Uses the weather constants in weather.h.
|
||||
/* 0xE27C */ Tile unkE27C[8][8];
|
||||
/* 0xE87C */ u8 unkE87C[8][8];
|
||||
u32 fillE8BC;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,39 @@
|
|||
#ifndef GUARD_TRAP_H
|
||||
#define GUARD_TRAP_H
|
||||
|
||||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/map.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
bool8 CanLayTrap(Position *pos);
|
||||
bool8 LayTrap(Position *pos, u8 trapID, u8 param_3);
|
||||
bool8 sub_807FD84(Entity *entity);
|
||||
bool8 sub_807FE04(Position *pos, char param_2);
|
||||
bool8 sub_807FE44(Position *pos, char param_2);
|
||||
void GetTrapName(u8 *buffer, u8 trapIndex);
|
||||
void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4);
|
||||
void HandleMudTrap(Entity *pokemon, Entity *target);
|
||||
void HandleStickyTrap(Entity *pokemon, Entity *target);
|
||||
void HandleGrimyTrap(Entity *pokemon, Entity *target);
|
||||
void HandleSummonTrap(Entity *pokemon, Position *pos);
|
||||
void HandlePitfallTrap(Entity *pokemon,Entity *target,Tile *tile);
|
||||
void HandleWarpTrap(Entity *pokemon, Entity *target);
|
||||
void HandleSpinTrap(Entity *pokemon, Entity *target);
|
||||
void HandleSlumberTrap(Entity *pokemon, Entity *target);
|
||||
void HandleSlowTrap(Entity *pokemon, Entity *target);
|
||||
void HandlePoisonTrap(Entity *pokemon, Entity *target);
|
||||
void HandleSelfdestructTrap(Entity *pokemon, Entity *target);
|
||||
void HandleExplosionTrap(Entity *pokemon, Entity *target);
|
||||
void HandlePPZeroTrap(Entity *pokemon, Entity *target);
|
||||
void HandleWonderTile(Entity *pokemon, Entity *target);
|
||||
|
||||
// code_807FCD4.s
|
||||
extern void HandleSealTrap(Entity *pokemon, Entity *target);
|
||||
extern void HandleWhirlwindTrap(Entity *entity, Entity *target);
|
||||
extern void HandlePokemonTrap(Entity *pokemon, Position *pos);
|
||||
|
||||
// trap_1.c
|
||||
void HandleTripTrap(Entity *pokemon, Entity *target);
|
||||
void SetTrap(Tile *tile, u8 id);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ typedef struct WigglytuffShop2Work
|
|||
MenuInputStructSub unk0;
|
||||
/* 0xC */ u8 friendArea;
|
||||
bool8 unkD;
|
||||
s16 unkE[0x10];
|
||||
u32 unk30[0x10];
|
||||
s16 friendAreaSpecies[0x10];
|
||||
u32 pokemonStatus[0x10];
|
||||
/* 0x70 */ s32 numPokemoninFriendArea;
|
||||
s32 unk74;
|
||||
UnkTextStruct2 *unk78;
|
||||
|
|
@ -18,8 +18,15 @@ typedef struct WigglytuffShop2Work
|
|||
u8 unkDC[4];
|
||||
} WigglytuffShop2Work;
|
||||
|
||||
bool8 sub_8021774(u8 friendArea, bool8, s32);
|
||||
u32 sub_80217EC(void);
|
||||
void sub_8021830(void);
|
||||
bool8 CreateWigglytuffShopFriendAreaMenu(u8 friendArea, bool8, s32);
|
||||
u32 HandleWigglytuffShopFriendAreaMenuInput(void);
|
||||
void CleanWigglytuffShopFriendAreaInfoMenu(void);
|
||||
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP2_H
|
||||
enum WigglytuffShop2FriendAreaPokemonStatus
|
||||
{
|
||||
POKEMON_UNKNOWN,
|
||||
POKEMON_SEEN,
|
||||
POKEMON_RECRUITED,
|
||||
};
|
||||
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP2_H
|
||||
|
|
|
|||
|
|
@ -68,6 +68,6 @@ typedef struct WigglytuffShop3Work
|
|||
|
||||
bool8 CreateWigglytuffShop(u32 mode);
|
||||
u32 sub_8021C5C(void);
|
||||
void sub_8021D1C(void);
|
||||
void CleanWigglytuffShop(void);
|
||||
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP3_H
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP3_H
|
||||
|
|
|
|||
|
|
@ -115,9 +115,9 @@ SECTIONS {
|
|||
src/code_801AFA4.o(.text);
|
||||
src/code_801B3C0.o(.text);
|
||||
src/code_801B60C.o(.text);
|
||||
src/code_801BEEC.o(.text);
|
||||
src/code_801C244.o(.text);
|
||||
src/code_801C620.o(.text);
|
||||
src/iq_skill_menu.o(.text);
|
||||
src/iq_skill_list_menu.o(.text);
|
||||
src/iq_skill_info_menu.o(.text);
|
||||
src/code_801C8C4.o(.text);
|
||||
src/code_801D014.o(.text);
|
||||
src/code_801D9E4.o(.text);
|
||||
|
|
@ -160,6 +160,8 @@ SECTIONS {
|
|||
src/mailbox.o(.text);
|
||||
src/pelipper_board.o(.text);
|
||||
src/wonder_mail_3_mid.o(.text);
|
||||
src/mission_reward.o(.text);
|
||||
src/code_8072F3C.o(.text);
|
||||
asm/wonder_mail_3_mid.o(.text);
|
||||
src/wonder_mail_3_1.o(.text);
|
||||
src/makuhita_dojo1.o(.text);
|
||||
|
|
@ -221,7 +223,7 @@ SECTIONS {
|
|||
src/code_8048480.o(.text);
|
||||
src/dungeon_ai_item_weight.o(.text);
|
||||
src/dungeon_map_access.o(.text);
|
||||
asm/code_80495E4.o(.text);
|
||||
asm/dungeon_map_access.o(.text);
|
||||
src/dungeon_map_access_1.o(.text);
|
||||
src/tile_types.o(.text);
|
||||
asm/code_804AFAC.o(.text);
|
||||
|
|
@ -276,7 +278,6 @@ SECTIONS {
|
|||
src/code_807CD9C.o(.text);
|
||||
src/weather.o(.text);
|
||||
asm/code_807E5AC.o(.text);
|
||||
src/code_807E5AC.o(.text);
|
||||
src/trap.o(.text);
|
||||
asm/code_807FCD4.o(.text);
|
||||
src/trap_1.o(.text);
|
||||
|
|
@ -318,20 +319,14 @@ SECTIONS {
|
|||
src/code_809447C.o(.text);
|
||||
src/code_8092334.o(.text);
|
||||
src/game_options.o(.text);
|
||||
src/code_8094D28.o(.text);
|
||||
asm/code_8094D28.o(.text);
|
||||
src/play_time.o(.text);
|
||||
src/code_8094F88.o(.text);
|
||||
src/code_80958E8.o(.text);
|
||||
asm/code_80958E8.o(.text);
|
||||
src/code_80958E8_mid.o(.text);
|
||||
src/mailbox_8095F8C.o(.text);
|
||||
asm/code_80958E8_1.o(.text);
|
||||
src/code_80958E8_1.o(.text);
|
||||
asm/code_8096AF8.o(.text);
|
||||
src/code_80972F4.o(.text);
|
||||
src/code_8097504.o(.text);
|
||||
src/code_8097670.o(.text);
|
||||
asm/code_8097670.o(.text);
|
||||
src/code_8097DD0.o(.text);
|
||||
asm/code_8097DD0.o(.text);
|
||||
src/code_8097F40.o(.text);
|
||||
|
|
@ -342,6 +337,7 @@ SECTIONS {
|
|||
asm/code_8098BDC.o(.text);
|
||||
src/code_809A560.o(.text);
|
||||
asm/code_809A560.o(.text);
|
||||
src/code_809A560_1.o(.text);
|
||||
src/code_809C5C4.o(.text);
|
||||
asm/code_809C5C4.o(.text);
|
||||
src/code_809D148.o(.text);
|
||||
|
|
@ -458,9 +454,9 @@ SECTIONS {
|
|||
src/code_801AFA4.o(.rodata);
|
||||
src/code_801B3C0.o(.rodata);
|
||||
src/code_801B60C.o(.rodata);
|
||||
src/code_801BEEC.o(.rodata);
|
||||
src/code_801C244.o(.rodata);
|
||||
src/code_801C620.o(.rodata);
|
||||
src/iq_skill_menu.o(.rodata);
|
||||
src/iq_skill_list_menu.o(.rodata);
|
||||
src/iq_skill_info_menu.o(.rodata);
|
||||
src/code_801C8C4.o(.rodata);
|
||||
src/code_801D014.o(.rodata);
|
||||
src/code_801D9E4.o(.rodata);
|
||||
|
|
@ -500,6 +496,8 @@ SECTIONS {
|
|||
src/mailbox.o(.rodata);
|
||||
src/pelipper_board.o(.rodata);
|
||||
src/wonder_mail_3_mid.o(.rodata);
|
||||
src/mission_reward.o(.rodata);
|
||||
src/code_8072F3C.o(.rodata);
|
||||
src/makuhita_dojo1.o(.rodata);
|
||||
src/makuhita_dojo2.o(.rodata);
|
||||
src/wonder_mail_4.o(.rodata);
|
||||
|
|
@ -549,6 +547,7 @@ SECTIONS {
|
|||
data/data_80F59C8.o(.rodata);
|
||||
src/charge_move.o(.rodata);
|
||||
data/data_8106A4C.o(.rodata);
|
||||
src/code_806CD90.o(.rodata);
|
||||
src/type_effectiveness.o(.data);
|
||||
data/data_8106F7C.o(.rodata);
|
||||
src/dungeon_capabilities.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -111,4 +111,4 @@ void sub_800CD64(s32 r0, bool8 r1)
|
|||
void SetBGOBJEnableFlags(u32 mask)
|
||||
{
|
||||
REG_DISPCNT = (REG_DISPCNT & 0xE0FF) | (~(mask << 8) & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ void GameLoop(void)
|
|||
sub_800A8F8(2);
|
||||
ResetSprites(TRUE);
|
||||
xxx_update_some_bg_tiles(0);
|
||||
sub_80097B0();
|
||||
InitFontPalette();
|
||||
sub_800CDA8(2);
|
||||
sub_800641C(NULL, TRUE, TRUE);
|
||||
gUnknown_2026E4E = 0x1000;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ extern struct unkStruct_202D240 gUnknown_202D240[8];
|
|||
// code_8009804.s
|
||||
extern void sub_8009A1C(u32);
|
||||
|
||||
void sub_80097B0(void)
|
||||
void InitFontPalette(void)
|
||||
{
|
||||
OpenedFile *fontpalFile;
|
||||
s32 i;
|
||||
|
|
@ -137,4 +137,4 @@ void sub_80099F0(u32 a0)
|
|||
UNUSED static void sub_8009A10(u32 *a0)
|
||||
{
|
||||
sub_8009A1C(a0[1]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
#include "random.h"
|
||||
#include "reg_control.h"
|
||||
|
||||
extern u32 gUnknown_203B0B8;
|
||||
extern u16 gRawKeyInput;
|
||||
EWRAM_DATA_2 u32 gUnknown_203B0B8 = {0};
|
||||
EWRAM_DATA_2 u16 gRawKeyInput = {0};
|
||||
|
||||
void sub_800CB20(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,10 +32,11 @@ extern struct UnkBgStruct *gUnknown_203B0E4;
|
|||
|
||||
|
||||
extern const u16 gUnknown_80D4144[8];
|
||||
EWRAM_DATA u32 gUnknown_202DE1C;
|
||||
EWRAM_DATA s16 gUnknown_202DE20;
|
||||
EWRAM_DATA s16 gUnknown_202DE22;
|
||||
EWRAM_DATA s16 gUnknown_202DE24;
|
||||
|
||||
EWRAM_DATA u32 gUnknown_202DE1C = {0};
|
||||
EWRAM_DATA s16 gUnknown_202DE20 = {0};
|
||||
EWRAM_DATA s16 gUnknown_202DE22 = {0};
|
||||
EWRAM_DATA s16 gUnknown_202DE24 = {0};
|
||||
|
||||
void nullsub_8(u32);
|
||||
extern void xxx_call_update_bg_vram(void);
|
||||
|
|
@ -92,20 +93,20 @@ void sub_80117C4(void)
|
|||
FadeOutBGM(30);
|
||||
}
|
||||
|
||||
// Some sound effect
|
||||
void sub_80117D0(void)
|
||||
// When you press A on a menu
|
||||
void PlayAcceptSoundEffect(void)
|
||||
{
|
||||
PlayFanfareSE(302, MAX_VOLUME);
|
||||
}
|
||||
|
||||
// Some sound effect
|
||||
void sub_80117E4(void)
|
||||
// When you press B on a menu
|
||||
void PlayCancelSoundEffect(void)
|
||||
{
|
||||
PlayFanfareSE(303, MAX_VOLUME);
|
||||
}
|
||||
|
||||
// Some sound effect
|
||||
void sub_80117F8(void)
|
||||
// When you go up or down
|
||||
void PlayCursorUpDownSoundEffect(void)
|
||||
{
|
||||
PlayFanfareSE(301, MAX_VOLUME);
|
||||
}
|
||||
|
|
@ -238,4 +239,4 @@ void sub_8011A04(void)
|
|||
UNUSED static void sub_8011A2C(u32 a0)
|
||||
{
|
||||
gUnknown_202DE1C = a0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,18 +15,18 @@ static EWRAM_DATA_2 struct unkStruct_203B200 *sUnknown_203B200 = {0};
|
|||
|
||||
#include "data/code_801602C.h"
|
||||
|
||||
static void CreateConfirmNameMenu(void);
|
||||
static void BuildConfirmNameMenu(void);
|
||||
static void HandleConfirmNameMenu(void);
|
||||
static bool8 IsNameEmpty(void);
|
||||
static void nullsub_36(void);
|
||||
|
||||
static void sub_80160F4(u32 newState);
|
||||
static void SetConfirmNameMenuState(u32 newState);
|
||||
static void sub_8016110(void);
|
||||
static void sub_80161F8(void);
|
||||
static void sub_8016280(void);
|
||||
static void sub_801629C(void);
|
||||
|
||||
u32 sub_801602C(u32 mode, u8 *name)
|
||||
u32 CreateConfirmNameMenu(u32 mode, u8 *name)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(NULL, TRUE, TRUE);
|
||||
|
|
@ -52,32 +52,32 @@ u32 sub_801602C(u32 mode, u8 *name)
|
|||
break;
|
||||
}
|
||||
|
||||
sub_80160F4(0);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_INIT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8016080(void)
|
||||
{
|
||||
switch (sUnknown_203B200->state) {
|
||||
case 0:
|
||||
case CONFIRM_NAME_MENU_INIT:
|
||||
sub_80161F8();
|
||||
break;
|
||||
case 1:
|
||||
case CONFIRM_NAME_MENU_PROMPT:
|
||||
HandleConfirmNameMenu();
|
||||
break;
|
||||
case 2:
|
||||
case CONFIRM_NAME_MENU_TOO_LONG:
|
||||
sub_8016280();
|
||||
break;
|
||||
case 3:
|
||||
case CONFIRM_NAME_MENU_EMPTY:
|
||||
sub_801629C();
|
||||
break;
|
||||
case 4:
|
||||
case CONFIRM_NAME_MENU_EXIT:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_80160D8(void)
|
||||
void CleanConfirmNameMenu(void)
|
||||
{
|
||||
if (sUnknown_203B200 != NULL) {
|
||||
MemoryFree(sUnknown_203B200);
|
||||
|
|
@ -85,7 +85,7 @@ void sub_80160D8(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void sub_80160F4(u32 newState)
|
||||
static void SetConfirmNameMenuState(u32 newState)
|
||||
{
|
||||
sUnknown_203B200->state = newState;
|
||||
nullsub_36();
|
||||
|
|
@ -99,11 +99,11 @@ static void nullsub_36(void)
|
|||
static void sub_8016110(void)
|
||||
{
|
||||
switch (sUnknown_203B200->state) {
|
||||
case 0:
|
||||
case CONFIRM_NAME_MENU_INIT:
|
||||
sub_80151C0(sUnknown_203B200->unk4, sUnknown_203B200->pokeName);
|
||||
break;
|
||||
case 1:
|
||||
CreateConfirmNameMenu();
|
||||
case CONFIRM_NAME_MENU_PROMPT:
|
||||
BuildConfirmNameMenu();
|
||||
if (sUnknown_203B200->unk4 == 1)
|
||||
sub_80922B4(gAvailablePokemonNames, sUnknown_203B200->pokeName, POKEMON_NAME_LENGTH);
|
||||
else
|
||||
|
|
@ -112,10 +112,10 @@ static void sub_8016110(void)
|
|||
sub_8014248(sIsNameOKPrompt, 0, 3, sUnknown_203B200->menus, 0, 4, 0, NULL, 32);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case CONFIRM_NAME_MENU_TOO_LONG:
|
||||
sub_80141B4(sNameTooLong, 0, 0, 0x121);
|
||||
break;
|
||||
case 3:
|
||||
case CONFIRM_NAME_MENU_EMPTY:
|
||||
sub_80141B4(sEnterAName, 0, 0, 0x121);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -123,7 +123,7 @@ static void sub_8016110(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void CreateConfirmNameMenu(void)
|
||||
static void BuildConfirmNameMenu(void)
|
||||
{
|
||||
sUnknown_203B200->menus[0].text = gCommonYes[0];
|
||||
sUnknown_203B200->menus[0].menuAction = MENU_ACTION_YES;
|
||||
|
|
@ -146,15 +146,15 @@ static void sub_80161F8(void)
|
|||
sub_80155F0();
|
||||
|
||||
if (IsNameEmpty()) {
|
||||
sub_80160F4(3);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_EMPTY);
|
||||
}
|
||||
else {
|
||||
length = sub_8015FEC(sUnknown_203B200->pokeName, POKEMON_NAME_LENGTH);
|
||||
maxLength = sub_8016028(); // returns 60
|
||||
if (length > maxLength)
|
||||
sub_80160F4(2);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_TOO_LONG);
|
||||
else
|
||||
sub_80160F4(1);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_PROMPT);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -167,11 +167,11 @@ static void HandleConfirmNameMenu(void)
|
|||
|
||||
switch (temp) {
|
||||
case MENU_ACTION_YES:
|
||||
sub_80160F4(4);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_EXIT);
|
||||
break;
|
||||
case MENU_ACTION_NO:
|
||||
case MENU_ACTION_DEFAULT:
|
||||
sub_80160F4(0);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_INIT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -183,7 +183,7 @@ static void sub_8016280(void)
|
|||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sub_80160F4(0);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_INIT);
|
||||
}
|
||||
|
||||
static void sub_801629C(void)
|
||||
|
|
@ -191,7 +191,7 @@ static void sub_801629C(void)
|
|||
s32 temp;
|
||||
|
||||
if (sub_80144A4(&temp) == 0)
|
||||
sub_80160F4(0);
|
||||
SetConfirmNameMenuState(CONFIRM_NAME_MENU_INIT);
|
||||
}
|
||||
|
||||
static bool8 IsNameEmpty(void)
|
||||
|
|
@ -214,4 +214,4 @@ static bool8 IsNameEmpty(void)
|
|||
} while (index < max);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,209 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_801BEEC.h"
|
||||
#include "code_801C244.h"
|
||||
#include "code_801C620.h"
|
||||
#include "common_strings.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B238 *sUnknown_203B238 = {0};
|
||||
|
||||
#include "data/code_801BEEC.h"
|
||||
|
||||
static void sub_801BFB4(s32 newState);
|
||||
static void sub_801BFCC(void);
|
||||
static void sub_801C03C(void);
|
||||
static void sub_801C0C8(void);
|
||||
static void sub_801C118(void);
|
||||
static void sub_801C1A0(void);
|
||||
static void sub_801C228(void);
|
||||
|
||||
bool8 sub_801BEEC(s16 species)
|
||||
{
|
||||
s32 species_s32 = species;
|
||||
|
||||
if (HasNoAvailIQSkills(species_s32))
|
||||
return FALSE;
|
||||
|
||||
sUnknown_203B238 = MemoryAlloc(sizeof(struct unkStruct_203B238), 8);
|
||||
sUnknown_203B238->menuAction = 0;
|
||||
sUnknown_203B238->species = species_s32;
|
||||
sUnknown_203B238->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
||||
sUnknown_203B238->numIQSkills = GetNumAvailableIQSkills(sUnknown_203B238->iqSkills, sUnknown_203B238->pokeStruct->IQ);
|
||||
sub_801BFB4(0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_801BF48(void)
|
||||
{
|
||||
switch (sUnknown_203B238->state) {
|
||||
case 4:
|
||||
return 3;
|
||||
case 0:
|
||||
case 1:
|
||||
sub_801C118();
|
||||
break;
|
||||
case 2:
|
||||
sub_801C1A0();
|
||||
break;
|
||||
case 3:
|
||||
sub_801C228();
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_801BF98(void)
|
||||
{
|
||||
if (sUnknown_203B238 != NULL) {
|
||||
MemoryFree(sUnknown_203B238);
|
||||
sUnknown_203B238 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801BFB4(s32 newState)
|
||||
{
|
||||
sUnknown_203B238->state = newState;
|
||||
sub_801BFCC();
|
||||
sub_801C03C();
|
||||
}
|
||||
|
||||
static void sub_801BFCC(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_8006518(sUnknown_203B238->unkC4);
|
||||
|
||||
if (sUnknown_203B238->state == 2)
|
||||
sUnknown_203B238->unkC4[2] = sUnknown_80DBDB0;
|
||||
else {
|
||||
for (i = 0; i < 4; i++)
|
||||
sUnknown_203B238->unkC4[i] = sUnknown_80DBD98;
|
||||
}
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B238->unkC4, TRUE, TRUE);
|
||||
}
|
||||
|
||||
static void sub_801C03C(void)
|
||||
{
|
||||
switch (sUnknown_203B238->state) {
|
||||
case 0:
|
||||
sub_801C244(sUnknown_203B238->species, 0, 8);
|
||||
break;
|
||||
case 1:
|
||||
sub_801C3B0(TRUE);
|
||||
break;
|
||||
case 2:
|
||||
sub_801C4C8();
|
||||
sub_801C0C8();
|
||||
sub_8012D60(&sUnknown_203B238->unk74, sUnknown_203B238->unk34, 0, 0, sUnknown_203B238->menuAction, 2);
|
||||
break;
|
||||
case 3:
|
||||
sub_801C620(sUnknown_203B238->iqSkillIndex);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C0C8(void)
|
||||
{
|
||||
struct unkStruct_203B238 *puVar1;
|
||||
s32 i;
|
||||
u8 *nullText;
|
||||
u32 menuAction;
|
||||
s32 max;
|
||||
|
||||
puVar1 = sUnknown_203B238;
|
||||
nullText = NULL;
|
||||
|
||||
sUnknown_203B238->unk34[0].text = sSwitch;
|
||||
puVar1->unk34[0].menuAction = 2;
|
||||
|
||||
menuAction = 1;
|
||||
puVar1->unk34[1].text = gCommonInfo[0];
|
||||
puVar1->unk34[1].menuAction = 3;
|
||||
|
||||
max = 2;
|
||||
puVar1->unk34[2].text = nullText;
|
||||
puVar1->unk34[2].menuAction = menuAction;
|
||||
|
||||
for (i = 0; i < max; i++) {
|
||||
if (sUnknown_203B238->unk34[i].menuAction == sUnknown_203B238->menuAction)
|
||||
return;
|
||||
}
|
||||
|
||||
sUnknown_203B238->menuAction = 2;
|
||||
}
|
||||
|
||||
static void sub_801C118(void)
|
||||
{
|
||||
switch (sub_801C308(TRUE)) {
|
||||
case 3:
|
||||
sUnknown_203B238->unk24 = sub_801C390();
|
||||
sUnknown_203B238->iqSkillIndex = sUnknown_203B238->iqSkills[sUnknown_203B238->unk24];
|
||||
sub_801BFB4(2);
|
||||
break;
|
||||
case 4:
|
||||
sUnknown_203B238->unk24 = sub_801C390();
|
||||
sUnknown_203B238->iqSkillIndex = sUnknown_203B238->iqSkills[sUnknown_203B238->unk24];
|
||||
sub_801BFB4(3);
|
||||
break;
|
||||
case 2:
|
||||
sub_801C3F8();
|
||||
sub_801BFB4(4);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C1A0(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
sub_801C308(FALSE);
|
||||
|
||||
if (!sub_8012FD8(&sUnknown_203B238->unk74)) {
|
||||
sub_8013114(&sUnknown_203B238->unk74, &menuAction);
|
||||
|
||||
if (menuAction != 1)
|
||||
sUnknown_203B238->menuAction = menuAction;
|
||||
}
|
||||
|
||||
switch (menuAction) {
|
||||
case 2:
|
||||
PlaySound(307);
|
||||
ToggleIQSkill((u8 *)&sUnknown_203B238->pokeStruct->IQSkills, sUnknown_203B238->iqSkillIndex);
|
||||
sub_801BFB4(1);
|
||||
break;
|
||||
case 3:
|
||||
sub_801BFB4(3);
|
||||
break;
|
||||
case 1:
|
||||
sub_801BFB4(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C228(void)
|
||||
{
|
||||
switch (sub_801C674()) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801C6B4();
|
||||
sub_801BFB4(1);
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_801C244.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
extern u8 gUnknown_202DEA8[];
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B23C *sUnknown_203B23C = {0};
|
||||
|
||||
#include "data/code_801C244.h"
|
||||
|
||||
static void sub_801C440(void);
|
||||
|
||||
bool8 sub_801C244(s16 species, u32 index, u32 a2)
|
||||
{
|
||||
#ifndef NONMATCHING
|
||||
register s32 species_s32 asm("r4");
|
||||
#else
|
||||
s32 species_s32;
|
||||
#endif
|
||||
|
||||
species_s32 = species;
|
||||
|
||||
if (HasNoAvailIQSkills(species))
|
||||
return FALSE;
|
||||
|
||||
if (sUnknown_203B23C == NULL)
|
||||
sUnknown_203B23C = MemoryAlloc(sizeof(struct unkStruct_203B23C), 8);
|
||||
|
||||
sUnknown_203B23C->species = species_s32;
|
||||
sUnknown_203B23C->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
||||
sUnknown_203B23C->numIQSkills = GetNumAvailableIQSkills(sUnknown_203B23C->iqSkills, sUnknown_203B23C->pokeStruct->IQ);
|
||||
sUnknown_203B23C->s24.s0.unk34 = index;
|
||||
sUnknown_203B23C->s24.s0.unk38 = &sUnknown_203B23C->s24.s0.unk3C[index];
|
||||
sub_8006518(sUnknown_203B23C->s24.s0.unk3C);
|
||||
sUnknown_203B23C->s24.s0.unk3C[sUnknown_203B23C->s24.s0.unk34] = sUnknown_80DBDF0;
|
||||
sUnknown_203B23C->s24.s0.unk38->unk14 = sUnknown_203B23C->s24.unk9C;
|
||||
sub_8012D08(sUnknown_203B23C->s24.s0.unk38, a2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&sUnknown_203B23C->s24.s0.input, sUnknown_203B23C->numIQSkills, a2, index);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_801C308(bool8 a0)
|
||||
{
|
||||
if (!a0) {
|
||||
sub_8013660(&sUnknown_203B23C->s24.s0.input);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (GetKeyPress(&sUnknown_203B23C->s24.s0.input)) {
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&sUnknown_203B23C->s24.s0.input, 1) != 0) {
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_801C390(void)
|
||||
{
|
||||
return (sUnknown_203B23C->s24.s0.input.unk1E * sUnknown_203B23C->s24.s0.input.unk1C) + sUnknown_203B23C->s24.s0.input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801C3B0(bool8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, FALSE, FALSE);
|
||||
sUnknown_203B23C->s24.s0.input.unk22 = sUnknown_203B23C->numIQSkills;
|
||||
sub_8013984(&sUnknown_203B23C->s24.s0.input);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
|
||||
if (r0)
|
||||
AddMenuCursorSprite(&sUnknown_203B23C->s24.s0.input);
|
||||
}
|
||||
|
||||
void sub_801C3F8(void)
|
||||
{
|
||||
if (sUnknown_203B23C != NULL) {
|
||||
sUnknown_203B23C->s24.s0.unk3C[sUnknown_203B23C->s24.s0.unk34] = sUnknown_80DBDD8;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(sUnknown_203B23C);
|
||||
sUnknown_203B23C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C440(void)
|
||||
{
|
||||
sUnknown_203B23C->s24.unk9C[0] = sUnknown_203B23C->s24.s0.input.unk20;
|
||||
sUnknown_203B23C->s24.unk9C[1] = sUnknown_203B23C->s24.s0.input.unk1E;
|
||||
sUnknown_203B23C->s24.unk9C[2] = 10;
|
||||
sUnknown_203B23C->s24.unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
|
||||
SUB_80095E4_CALL_2(sUnknown_203B23C->s24.s0);
|
||||
}
|
||||
|
||||
void sub_801C4C8(void)
|
||||
{
|
||||
u32 y;
|
||||
s32 x;
|
||||
s32 x2;
|
||||
u32 skillIndex;
|
||||
s32 counter;
|
||||
|
||||
sub_8008C54(sUnknown_203B23C->s24.s0.unk34);
|
||||
sub_80073B8(sUnknown_203B23C->s24.s0.unk34);
|
||||
x = sUnknown_203B23C->s24.s0.input.unk1E * 8;
|
||||
x2 = x;
|
||||
x2 += 10;
|
||||
xxx_call_draw_string(x2, 0, sIQSkills, sUnknown_203B23C->s24.s0.unk34, 0);
|
||||
|
||||
x += 4;
|
||||
x2 = x + sUnknown_203B23C->s24.unk9C[2] * 8;
|
||||
sub_8012BC4(x2, 0, sUnknown_203B23C->s24.s0.input.unk1E + 1, 1, 7, sUnknown_203B23C->s24.s0.unk34);
|
||||
|
||||
for (counter = 0; counter < sUnknown_203B23C->s24.s0.input.unk1A; counter++) {
|
||||
skillIndex = sUnknown_203B23C->iqSkills[(sUnknown_203B23C->s24.s0.input.unk1E * sUnknown_203B23C->s24.s0.input.unk1C) + counter];
|
||||
|
||||
y = sub_8013800(&sUnknown_203B23C->s24.s0.input, counter);
|
||||
strncpy(gUnknown_202DEA8, GetIQSkillName(skillIndex), 80);
|
||||
|
||||
if (IsIQSkillSet((u8 *)&sUnknown_203B23C->pokeStruct->IQSkills, 1 << skillIndex))
|
||||
strcpy(gUnknown_202DEA8 - 80, sStarBullet);
|
||||
else
|
||||
strcpy(gUnknown_202DEA8 - 80, sUnknown_80DBE18);
|
||||
|
||||
xxx_format_and_draw(12, y, sFmt01, sUnknown_203B23C->s24.s0.unk34, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(sUnknown_203B23C->s24.s0.unk34);
|
||||
}
|
||||
|
||||
bool8 HasNoAvailIQSkills(s16 species)
|
||||
{
|
||||
s32 species_s32;
|
||||
u8 iqSkillBuffer[NUM_IQ_SKILLS];
|
||||
PokemonStruct1 *pokeStruct;
|
||||
|
||||
species_s32 = species;
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
||||
|
||||
if (GetNumAvailableIQSkills(iqSkillBuffer, pokeStruct->IQ) == 0)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -1,157 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_801C620.h"
|
||||
#include "code_8097DD0.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "sprite.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gAvailablePokemonNames[]; // 202DF98
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B240 *sUnknown_203B240 = {0};
|
||||
|
||||
#include "data/code_801C620.h"
|
||||
|
||||
static void sub_801C6D0(s32 newState);
|
||||
static void sub_801C6E4(void);
|
||||
static void sub_801C7D4(void);
|
||||
static void sub_801C848(void);
|
||||
|
||||
bool8 sub_801C620(u8 iqSkill)
|
||||
{
|
||||
ResetSprites(TRUE);
|
||||
|
||||
sUnknown_203B240 = MemoryAlloc(sizeof(struct unkStruct_203B240), 8);
|
||||
sUnknown_203B240->chosenIQSkill = iqSkill;
|
||||
sub_801317C(&sUnknown_203B240->unk88);
|
||||
sUnknown_203B240->unk24 = 0;
|
||||
sub_80140B4(sUnknown_203B240->unk28);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B240->unk28, TRUE, TRUE);
|
||||
sub_801C6D0(0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_801C674(void)
|
||||
{
|
||||
switch (sUnknown_203B240->state) {
|
||||
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 (sUnknown_203B240 != NULL) {
|
||||
MemoryFree(sUnknown_203B240);
|
||||
sUnknown_203B240 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C6D0(s32 newState)
|
||||
{
|
||||
sUnknown_203B240->state = newState;
|
||||
sub_801C6E4();
|
||||
}
|
||||
|
||||
static void sub_801C6E4(void)
|
||||
{
|
||||
u8 *skillName;
|
||||
struct subStruct_203B240 *preload;
|
||||
|
||||
switch (sUnknown_203B240->state) {
|
||||
case 0:
|
||||
sub_8008C54(sUnknown_203B240->unk24);
|
||||
sub_80073B8(sUnknown_203B240->unk24);
|
||||
skillName = GetIQSkillName(sUnknown_203B240->chosenIQSkill);
|
||||
strcpy(gUnknown_202DE58, skillName);
|
||||
xxx_format_and_draw(16, 0, sFmtMoveItem0, 0, 0); // {ARG_MOVE_ITEM_0}
|
||||
xxx_call_draw_string(8, 16, GetIQSkillDescription(sUnknown_203B240->chosenIQSkill), sUnknown_203B240->unk24, 0);
|
||||
sub_80073E0(sUnknown_203B240->unk24);
|
||||
sUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(sUnknown_203B240->chosenIQSkill), sUnknown_203B240->unk10);
|
||||
sUnknown_203B240->unk20 = 0;
|
||||
break;
|
||||
case 1:
|
||||
sub_8008C54(sUnknown_203B240->unk24);
|
||||
sub_80073B8(sUnknown_203B240->unk24);
|
||||
preload = sUnknown_203B240->unk10[sUnknown_203B240->unk8];
|
||||
strcpy(gAvailablePokemonNames, preload->pokeName);
|
||||
xxx_format_and_draw(16, 0, sFmtPkmn0, sUnknown_203B240->unk24, 0); // {ARG_POKEMON_0}
|
||||
xxx_format_and_draw(4, 16, sUnknown_203B240->unk10[sUnknown_203B240->unk8]->unk4, sUnknown_203B240->unk24, 0);
|
||||
sub_80073E0(sUnknown_203B240->unk24);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C7D4(void)
|
||||
{
|
||||
if (sUnknown_203B240->unkC != 0) {
|
||||
if (sUnknown_203B240->unk20 & 8)
|
||||
sub_8013F84();
|
||||
|
||||
sUnknown_203B240->unk20++;
|
||||
}
|
||||
|
||||
switch (sub_8012A64(&sUnknown_203B240->unk88, sUnknown_203B240->unk24)) {
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
|
||||
if (sUnknown_203B240->unkC != 0) {
|
||||
sUnknown_203B240->unk8 = 0;
|
||||
sub_801C6D0(1);
|
||||
}
|
||||
else
|
||||
sub_801C6D0(3);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801C6D0(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801C848(void)
|
||||
{
|
||||
if (sUnknown_203B240->unk8 < sUnknown_203B240->unkC - 1) {
|
||||
if (sUnknown_203B240->unk20 & 8)
|
||||
sub_8013F84();
|
||||
|
||||
sUnknown_203B240->unk20++;
|
||||
}
|
||||
|
||||
switch (sub_8012A64(&sUnknown_203B240->unk88, sUnknown_203B240->unk24)) {
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
sUnknown_203B240->unk8++;
|
||||
|
||||
if (sUnknown_203B240->unk8 < sUnknown_203B240->unkC)
|
||||
sub_801C6D0(1);
|
||||
else
|
||||
sub_801C6D0(0);
|
||||
break;
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
sub_801C6D0(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -218,7 +218,7 @@ void sub_801CCD8(void)
|
|||
{
|
||||
u32 y;
|
||||
u32 y2;
|
||||
u32 uVar3;
|
||||
u32 itemID;
|
||||
s32 index;
|
||||
u8 buffer[80];
|
||||
|
||||
|
|
@ -228,14 +228,14 @@ void sub_801CCD8(void)
|
|||
sub_8012BC4(sUnknown_203B244->unk550[2] * 8 + 4, 0, sUnknown_203B244->input.unk1E + 1, 2, 7, sUnknown_203B244->unk4E8);
|
||||
|
||||
for(index = 0; index < sUnknown_203B244->input.unk1A; index++) {
|
||||
uVar3 = sUnknown_203B244->itemIDs[(sUnknown_203B244->input.unk1E * sUnknown_203B244->input.unk1C) + index];
|
||||
BufferItemName(buffer, uVar3, NULL);
|
||||
itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->input.unk1E * sUnknown_203B244->input.unk1C) + index];
|
||||
BufferItemName(buffer, itemID, NULL);
|
||||
y = sub_8013800(&sUnknown_203B244->input, index);
|
||||
xxx_call_draw_string(8, y, buffer, sUnknown_203B244->unk4E8, 0);
|
||||
y2 = sub_8013800(&sUnknown_203B244->input, index);
|
||||
sub_8012BC4((sUnknown_203B244->unk4EC->unkC * 8) - 2, y2, gTeamInventoryRef->teamStorage[uVar3], 3, 5, sUnknown_203B244->unk4E8);
|
||||
sub_8012BC4((sUnknown_203B244->unk4EC->unkC * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4E8);
|
||||
|
||||
if (sub_801CFE0(uVar3) & 1)
|
||||
if (sub_801CFE0(itemID) & 1)
|
||||
sub_8007B7C(sUnknown_203B244->unk4E8, 8, sub_8013800(&sUnknown_203B244->input, index), (sUnknown_203B244->unk4EC->unkC - 1) * '\b', 10); // TODO: Ghidra being crazy
|
||||
}
|
||||
|
||||
|
|
@ -340,4 +340,4 @@ UNUSED static void sub_801CFF4(u8 index, u32 value)
|
|||
struct unkStruct_203B244 *sub_801D008(void)
|
||||
{
|
||||
return sUnknown_203B244;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
#include "bg_palette_buffer.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_801BEEC.h"
|
||||
#include "iq_skill_menu.h"
|
||||
#include "code_801D014.h"
|
||||
#include "code_80227B8.h"
|
||||
#include "code_8023868.h"
|
||||
#include "code_8024458.h"
|
||||
#include "code_8096AF8.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "common_strings.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "event_flag.h"
|
||||
|
|
@ -264,22 +264,22 @@ static void sub_801D3A8(void)
|
|||
sub_8027074();
|
||||
break;
|
||||
case 5:
|
||||
sub_8025EF4(sUnknown_203B250->pokeStruct);
|
||||
CreatePartyListMenu(sUnknown_203B250->pokeStruct);
|
||||
break;
|
||||
case 6:
|
||||
sub_80252F0(0);
|
||||
CreateFriendListMenu(0);
|
||||
break;
|
||||
case 7:
|
||||
sub_80252F0(1);
|
||||
CreateFriendListMenu(1);
|
||||
break;
|
||||
case 8:
|
||||
sub_8024458(sUnknown_203B250->index, 2);
|
||||
break;
|
||||
case 9:
|
||||
sub_801BEEC(sUnknown_203B250->index);
|
||||
CreateIQSkillMenu(sUnknown_203B250->index);
|
||||
break;
|
||||
case 10:
|
||||
sub_8021774(sUnknown_203B250->currFriendAreaLocation, TRUE, 2);
|
||||
CreateWigglytuffShopFriendAreaMenu(sUnknown_203B250->currFriendAreaLocation, TRUE, 2);
|
||||
break;
|
||||
case 11:
|
||||
InitializeJobListMenu(0);
|
||||
|
|
@ -462,7 +462,7 @@ static void sub_801D798(void)
|
|||
if (sub_802604C())
|
||||
sUnknown_203B250->unk7 = sUnknown_203B250->currFriendAreaLocation;
|
||||
|
||||
sub_8026058();
|
||||
CleanPartyListMenu();
|
||||
sub_801D208(2);
|
||||
break;
|
||||
}
|
||||
|
|
@ -478,7 +478,7 @@ static void sub_801D7CC(void)
|
|||
case 2:
|
||||
case 3:
|
||||
sUnknown_203B250->unk7 = sub_802540C();
|
||||
sub_8025418();
|
||||
CleanFriendListMenu();
|
||||
|
||||
if (sUnknown_203B250->unk7 != 0)
|
||||
sub_801D208(2);
|
||||
|
|
@ -512,7 +512,7 @@ static void sub_801D824(void)
|
|||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_801BF98();
|
||||
CleanIQSkillMenu();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
|
|
@ -520,14 +520,14 @@ static void sub_801D824(void)
|
|||
|
||||
static void sub_801D840(void)
|
||||
{
|
||||
switch (sub_80217EC()) {
|
||||
switch (HandleWigglytuffShopFriendAreaMenuInput()) {
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8021830();
|
||||
CleanWigglytuffShopFriendAreaInfoMenu();
|
||||
sub_801D208(1);
|
||||
break;
|
||||
}
|
||||
|
|
@ -623,4 +623,4 @@ static void LoadTeamRankBadge(u32 a0, u32 a1, u32 a2)
|
|||
teamBadgePic = &teamBadgePic[rank * 128];
|
||||
sub_8007E20(a0, a1, a2, 16, 16, teamBadgePic, 14);
|
||||
CloseFile(teamBadgeFile);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,9 @@ extern u8 gAvailablePokemonNames[];
|
|||
|
||||
struct unkStruct_203B278
|
||||
{
|
||||
s32 state;
|
||||
u16 *moveIDs;
|
||||
u16 unk8;
|
||||
u16 fillA;
|
||||
/* 0x0 */ s32 state;
|
||||
/* 0x4 */ u16 *moveIDs;
|
||||
/* 0x8 */ u16 selectedMoveID;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
struct subStruct_203B240 *unk14[4];
|
||||
|
|
@ -141,8 +140,8 @@ void sub_801F9A4(void)
|
|||
switch (gUnknown_203B278->state) {
|
||||
case 0:
|
||||
sub_8008C54(gUnknown_203B278->unk5C);
|
||||
gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
|
||||
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
|
||||
gUnknown_203B278->selectedMoveID = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
|
||||
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->selectedMoveID,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
|
||||
gUnknown_203B278->unk24 = 0;
|
||||
break;
|
||||
case 1:
|
||||
|
|
|
|||
|
|
@ -4,8 +4,7 @@
|
|||
#include "code_802DB28.h"
|
||||
#include "code_802F204.h"
|
||||
#include "code_803C1D0.h"
|
||||
#include "code_80958E8_1.h"
|
||||
#include "code_8096AF8.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "input.h"
|
||||
#include "items.h"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "code_803D0D8.h"
|
||||
#include "code_8092334.h"
|
||||
#include "memory.h"
|
||||
|
||||
static EWRAM_DATA_2 u8 sUnknown_203B408 = {0};
|
||||
|
||||
|
|
@ -26,4 +28,71 @@ u8 sub_803D100(u8 r0)
|
|||
return sUnknown_80F42D0[r0];
|
||||
}
|
||||
|
||||
// Probably continues in code_803D110.s
|
||||
u8 sub_803D110(u8 *param_1, u8 *param_2, s32 size)
|
||||
{
|
||||
s32 index1;
|
||||
s32 newSize;
|
||||
s32 save;
|
||||
unkStruct_8094924 auStack_88;
|
||||
u8 local_78 [56];
|
||||
u8 auStack_40 [36];
|
||||
|
||||
|
||||
for(index1 = 0; index1 < 34; index1++)
|
||||
{
|
||||
auStack_40[index1] = 0;
|
||||
}
|
||||
|
||||
for (index1 = 0; index1 < size; index1++)
|
||||
{
|
||||
local_78[index1] = sub_803D0F0(*param_1);
|
||||
if (local_78[index1] == 0xff) {
|
||||
return 0;
|
||||
}
|
||||
param_1++;
|
||||
}
|
||||
|
||||
newSize = size * 5 + 5;
|
||||
if (newSize < 0) {
|
||||
newSize = size * 5 + 0xc;
|
||||
}
|
||||
|
||||
newSize >>= 3;
|
||||
save = newSize;
|
||||
xxx_init_struct_8094924_save_809486C(&auStack_88,auStack_40, save);
|
||||
|
||||
for(index1 = 0; index1 < size; index1++)
|
||||
{
|
||||
SaveIntegerBits(&auStack_88, &local_78[index1], 5);
|
||||
}
|
||||
nullsub_102(&auStack_88);
|
||||
MemoryCopy8(param_2, auStack_40, save);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_803D1A8(u8 *param_1, u8 *param_2, s32 size)
|
||||
{
|
||||
s32 index;
|
||||
s32 newSize;
|
||||
unkStruct_8094924 auStack_5c;
|
||||
u8 local_4c [56];
|
||||
|
||||
newSize = size * 5 + 5;
|
||||
if (newSize < 0) {
|
||||
newSize = size * 5 + 0xc;
|
||||
}
|
||||
newSize >>= 3;
|
||||
xxx_init_struct_8094924_restore_809485C(&auStack_5c, param_2, newSize);
|
||||
for(index = 0; index < size; index++)
|
||||
{
|
||||
RestoreIntegerBits(&auStack_5c, &local_4c[index], 5);
|
||||
}
|
||||
|
||||
nullsub_102(&auStack_5c);
|
||||
for(index = 0; index < size; index++)
|
||||
{
|
||||
*param_1++ = sub_803D100(local_4c[index]);
|
||||
}
|
||||
}
|
||||
|
||||
// Probably continues in code_803D110.s
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "constants/item.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
|
|
@ -15,9 +16,7 @@ extern struct unkStruct_8090F58 gUnknown_80F699C;
|
|||
extern struct unkStruct_8090F58 gUnknown_80F69A8;
|
||||
extern struct unkStruct_8090F58 gUnknown_80F6990;
|
||||
|
||||
extern bool8 IsNotSpecialItem(u8 id);
|
||||
void sub_8045BF8(u8 *, Item *);
|
||||
void sub_8046CE4(void *param_1,u32 param_2);
|
||||
extern u32 sub_803D73C(u32);
|
||||
void sub_80460F8(Position *, Item *, u32);
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "constants/direction.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_music.h"
|
||||
|
|
@ -18,8 +19,8 @@
|
|||
#include "pokemon_3.h"
|
||||
#include "pokemon.h"
|
||||
#include "position_util.h"
|
||||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "trap.h"
|
||||
|
||||
extern u32 gUnknown_202EDC8;
|
||||
extern u8 gUnknown_202E038[0x50];
|
||||
|
|
@ -317,14 +318,10 @@ extern bool8 sub_800E9A8(s32);
|
|||
extern void sub_800DC14(u32);
|
||||
|
||||
extern void sub_8086A3C(Entity *r0);
|
||||
extern void sub_80854D4(void);
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8068FE0(Entity *, u32, u32);
|
||||
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern void sub_8086448(void);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern void IncreaseEntityPixelPos(Entity *, u32, u32);
|
||||
extern void sub_8042B0C(Entity *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern u8 sub_806FD18(Entity *);
|
||||
|
|
@ -338,13 +335,12 @@ extern void SetupBossFightHP(Entity *, u32, u32);
|
|||
extern void sub_803E9D0(void);
|
||||
extern void DeoxysScreenFlash(void);
|
||||
extern void sub_8085EB0();
|
||||
extern void sub_808563C(void *);
|
||||
|
||||
void SetupDeoxysFightHP(Entity *r0);
|
||||
void sub_808C550(void);
|
||||
void sub_808C590(Entity *r0);
|
||||
void SetupDeoxysFacingDirection(Entity *r0);
|
||||
void sub_808C9B0();
|
||||
void sub_808C9B0(Entity *);
|
||||
void sub_808C8E0(Entity *param_1);
|
||||
void sub_808C360(void);
|
||||
void KyogreScreenFlash();
|
||||
|
|
@ -352,7 +348,6 @@ void KyogreScreenFlash();
|
|||
void sub_808C0CC();
|
||||
void LugiaScreenFlash();
|
||||
void LugiaScreenFlash2();
|
||||
extern void sub_80861B8(Entity *, u32, u32);
|
||||
|
||||
void nullsub_99();
|
||||
|
||||
|
|
@ -364,10 +359,7 @@ extern void sub_8086A54(Entity *);
|
|||
|
||||
extern void sub_806BFC0(EntityInfo *, u32);
|
||||
|
||||
|
||||
extern Entity *xxx_call_GetLeader(void);
|
||||
extern void sub_808BBA8(Entity * );
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8041888(u32);
|
||||
extern void sub_80861B8(Entity *, u32, u32);
|
||||
extern void sub_803E708(u32, u32);
|
||||
|
|
@ -387,7 +379,6 @@ extern u8 sub_80860A8(u32);
|
|||
extern void sub_8049ED4();
|
||||
extern void sub_8052D44(s16 *, Entity *, Entity *);
|
||||
extern void sub_80421C0(Entity *, u32);
|
||||
extern void sub_8046D20();
|
||||
extern void sub_808B1CC(u8);
|
||||
extern void sub_80464C8(Entity *, u32 *, Item *);
|
||||
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
|
||||
|
|
@ -421,13 +412,11 @@ void sub_80891F0(void);
|
|||
void sub_8089294(void);
|
||||
void GroudonScreenFlash2(void);
|
||||
|
||||
extern u8 sub_8086AE4(u32);
|
||||
|
||||
extern u8 sub_8086AE4(s16);
|
||||
|
||||
extern void sub_8072008(Entity *, Entity *, s16, u32, u32);
|
||||
extern void sub_8085374();
|
||||
|
||||
extern void sub_80856C8(Entity *, s32, s32);
|
||||
extern void sub_8086A54(Entity *);
|
||||
|
||||
extern void sub_803F878(u32,s32);
|
||||
|
|
@ -449,7 +438,7 @@ void ZapdosDropInEffect(Entity *param_1);
|
|||
void ZapdosScreenFlash(int param_1);
|
||||
|
||||
extern s32 sub_8052C68(u32, const u8 *, const u8 *, u32);
|
||||
extern void sub_80861A8(void);
|
||||
extern void sub_80861A8(Entity *);
|
||||
extern void sub_8045C28(Item *, u8 , u8 *);
|
||||
extern void EnableJirachiWishWarpTile(void);
|
||||
extern void sub_808BB3C(Position *);
|
||||
|
|
@ -457,7 +446,6 @@ extern void sub_8046860(Entity *, Position *, Item *, u32);
|
|||
extern u32 sub_803D73C(u32);
|
||||
|
||||
extern void sub_80460F8(Position *, Item *, u8);
|
||||
extern void sub_807FE04(Position *, u8);
|
||||
|
||||
void ZapdosReFightDialogue(void)
|
||||
{
|
||||
|
|
@ -1084,7 +1072,7 @@ void ArticunoPreFightDialogue(void)
|
|||
DisplayDungeonDialogue(gArticunoPreFightDialogue_7);
|
||||
sub_803E708(10,0x46);
|
||||
PlaySoundEffect(0); // snow flurry
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
PlaySoundEffect(0x1ee); // flash effect?
|
||||
sub_8088574();
|
||||
|
|
@ -1119,7 +1107,7 @@ void ArticunoReFightDialogue(void)
|
|||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
ArticunoEntity = GetEntityFromClientType(0xd);
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(gArticunoReFightDialogue_1);
|
||||
|
|
@ -1146,7 +1134,7 @@ void ArticunoPostStoryPreFightDialogue(void)
|
|||
sub_80866C4(gUnknown_8102A9C);
|
||||
}
|
||||
else {
|
||||
gDungeon->unkE265 = WEATHER_SNOW;
|
||||
gDungeon->weather.unkE265 = WEATHER_SNOW;
|
||||
sub_807EAA0(0,1);
|
||||
ArticunoScreenFlash();
|
||||
sub_8086738();
|
||||
|
|
@ -2506,7 +2494,7 @@ void RaikouPreFightDialogue(void)
|
|||
DisplayDungeonDialogue(gRaikouPreFightDialogue_1);
|
||||
RaikouScreenFlash();
|
||||
DisplayDungeonDialogue(gRaikouPreFightDialogue_2);
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
sub_803E708(10,70);
|
||||
DisplayDungeonDialogue(gRaikouPreFightDialogue_3);
|
||||
|
|
@ -2528,7 +2516,7 @@ void RaikouReFightDialogue(void)
|
|||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
RaikouEntity = GetEntityFromClientType(0x13);
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
RaikouScreenFlash();
|
||||
DisplayDungeonDialogue(gRaikouReFightDialogue_1);
|
||||
|
|
@ -2552,7 +2540,7 @@ void RaikouPostStoryPreFightDialogue(void)
|
|||
sub_80866C4(gRaikouPostStoryPreFightDialogue_4);
|
||||
}
|
||||
else {
|
||||
gDungeon->unkE265 = WEATHER_RAIN;
|
||||
gDungeon->weather.unkE265 = WEATHER_RAIN;
|
||||
sub_807EAA0(0,1);
|
||||
DisplayDungeonDialogue(gRaikouPostStoryPreFightDialogue_1);
|
||||
RaikouScreenFlash();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "constants/status.h"
|
||||
#include "constants/type.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
|
|
@ -41,7 +42,6 @@ extern bool8 sub_8045888(Entity *);
|
|||
extern void sub_806A2BC(Entity *, u8);
|
||||
extern void sub_804178C(u32);
|
||||
extern void sub_803F508(Entity *);
|
||||
extern void sub_804AC20(Position *);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E708(u32 r0, u32 r1);
|
||||
|
||||
|
|
@ -71,23 +71,23 @@ void TriggerWeatherAbilities(void)
|
|||
|
||||
if (gDungeon->unkC != 0) {
|
||||
gDungeon->unkC = 0;
|
||||
gDungeon->nullifyWeather = FALSE;
|
||||
gDungeon->weather.nullifyWeather = FALSE;
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
if (HasAbility(entity, ABILITY_DRIZZLE)) {
|
||||
gDungeon->naturalWeather[WEATHER_RAIN] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_RAIN] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_SAND_STREAM)) {
|
||||
gDungeon->naturalWeather[WEATHER_SANDSTORM] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_SANDSTORM] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_DROUGHT)) {
|
||||
gDungeon->naturalWeather[WEATHER_SUNNY] = 1;
|
||||
gDungeon->weather.naturalWeather[WEATHER_SUNNY] = 1;
|
||||
}
|
||||
if ((HasAbility(entity, ABILITY_AIR_LOCK)) || (HasAbility(entity, ABILITY_CLOUD_NINE))) {
|
||||
gDungeon->nullifyWeather = TRUE;
|
||||
gDungeon->weather.nullifyWeather = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@
|
|||
#include "sprite.h"
|
||||
#include "tile_types.h"
|
||||
|
||||
// data_8106A4C.s
|
||||
extern const u8 gUnknown_8106EEF[];
|
||||
const u8 gUnknown_8106EEF[] = {0x03, 0x04, 0x05, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 };
|
||||
|
||||
// code_803D110.s
|
||||
extern void sub_803E46C(u32);
|
||||
|
|
@ -32,7 +31,7 @@ void sub_806CC10(void)
|
|||
if (entityInfo->unk166 != 0) {
|
||||
entityInfo->unk166--;
|
||||
if ((entityInfo->unk166 & 1) == 0) // If value is even:
|
||||
sub_806CDD4(entity, 0, (entityInfo->action.direction - 1) & 7);
|
||||
sub_806CDD4(entity, 0, (entityInfo->action.direction - 1) & DIRECTION_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -208,25 +207,25 @@ void sub_806CF60(void)
|
|||
u32 sub_806CF98(Entity *entity)
|
||||
{
|
||||
struct Tile *mapTile;
|
||||
u32 uVar3;
|
||||
u32 shadowSize;
|
||||
u16 terrainType;
|
||||
EntityInfo *entityInfo;
|
||||
|
||||
mapTile = GetTileAtEntitySafe(entity);
|
||||
terrainType = mapTile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
entityInfo = entity->info;
|
||||
uVar3 = GetShadowSize(entityInfo->apparentID);
|
||||
shadowSize = GetShadowSize(entityInfo->apparentID);
|
||||
|
||||
if (terrainType == (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY))
|
||||
return 6;
|
||||
|
||||
if (terrainType == TERRAIN_TYPE_NORMAL) {
|
||||
if (IsWaterTileset())
|
||||
uVar3 = gUnknown_8106EEF[uVar3];
|
||||
shadowSize = gUnknown_8106EEF[shadowSize];
|
||||
}
|
||||
else if (terrainType == TERRAIN_TYPE_SECONDARY && gDungeonWaterType[gDungeon->tileset] != DUNGEON_WATER_TYPE_LAVA)
|
||||
uVar3 = gUnknown_8106EEF[uVar3];
|
||||
shadowSize = gUnknown_8106EEF[shadowSize];
|
||||
|
||||
entityInfo->unk204 = uVar3;
|
||||
return uVar3;
|
||||
entityInfo->unk204 = shadowSize;
|
||||
return shadowSize;
|
||||
}
|
||||
|
|
|
|||
225
src/code_8072F3C.c
Normal file
225
src/code_8072F3C.c
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "constants/input.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
|
||||
struct unkStruct_203B314
|
||||
{
|
||||
// size: 0x15C
|
||||
s16 unk0[2];
|
||||
u8 fill4[0x5C - 0x4];
|
||||
u8 unk5C[2];
|
||||
u8 fill5E[0x8A - 0x5E];
|
||||
u8 unk8A[2];
|
||||
u8 unk8C[0xB8 - 0x8C];
|
||||
u8 unkB8;
|
||||
u8 unkB9;
|
||||
u8 unkBA;
|
||||
u8 unkBB;
|
||||
struct struct_Sub80095E4_2 sBC;
|
||||
};
|
||||
|
||||
EWRAM_DATA_2 struct unkStruct_203B314 *gUnknown_203B314 = {0};
|
||||
|
||||
const UnkTextStruct2 gUnknown_80E06FC = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const UnkTextStruct2 gUnknown_80E0714 = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x02,
|
||||
0x0E, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
const UnkTextStruct2 gUnknown_80E072C = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06,
|
||||
0x02, 0x02,
|
||||
0x10, 0x10,
|
||||
0x10, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0744[] = "Dungeons";
|
||||
ALIGNED(4) const u8 gUnknown_80E0750[] = {0x83, 0xC2};
|
||||
ALIGNED(4) const u8 gUnknown_80E0754[] = {0x83, 0xC0};
|
||||
|
||||
void sub_802F9C0(void);
|
||||
void sub_802FA50(void);
|
||||
const u8 *sub_80974A0(s16 index);
|
||||
extern bool8 sub_802FCF0(u32);
|
||||
extern s32 sub_802FBF4(void);
|
||||
|
||||
u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3)
|
||||
{
|
||||
if (sub_802FCF0(r0))
|
||||
return 0;
|
||||
|
||||
if (gUnknown_203B314 == NULL)
|
||||
gUnknown_203B314 = MemoryAlloc(sizeof(struct unkStruct_203B314), 8);
|
||||
|
||||
gUnknown_203B314->unkB8 = r3;
|
||||
gUnknown_203B314->sBC.s0.unk34 = r0;
|
||||
gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34];
|
||||
sub_8006518(gUnknown_203B314->sBC.s0.unk3C);
|
||||
|
||||
if (r3 != 0)
|
||||
gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C;
|
||||
else
|
||||
gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714;
|
||||
|
||||
gUnknown_203B314->sBC.s0.unk38->unk14 = gUnknown_203B314->sBC.unk9C;
|
||||
|
||||
if (r1 != 0)
|
||||
gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1;
|
||||
|
||||
sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802F848(s16 param_1)
|
||||
{
|
||||
int index;
|
||||
s32 param_1_32;
|
||||
|
||||
param_1_32 = param_1; // cast needed
|
||||
|
||||
for( index = 0; index < gUnknown_203B314->sBC.s0.input.unk22; index++ ) {
|
||||
if (gUnknown_203B314->unk0[index] == param_1_32) {
|
||||
sub_8013878(&gUnknown_203B314->sBC.s0.input,index);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
sub_8013878(&gUnknown_203B314->sBC.s0.input,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 sub_802F8A0(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B314->sBC.s0.input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B314->sBC.s0.input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case INPUT_A_BUTTON:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B314->sBC.s0.input, 1) != 0)
|
||||
{
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s16 sub_802F90C(void)
|
||||
{
|
||||
return gUnknown_203B314->unk0[(gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C) + gUnknown_203B314->sBC.s0.input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802F938(u8 r0)
|
||||
{
|
||||
gUnknown_203B314->sBC.s0.input.unk22 = sub_802FBF4();
|
||||
sub_8013984(&gUnknown_203B314->sBC.s0.input);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
|
||||
if(r0 != 0)
|
||||
AddMenuCursorSprite(&gUnknown_203B314->sBC.s0.input);
|
||||
}
|
||||
|
||||
void sub_802F974(void)
|
||||
{
|
||||
if(gUnknown_203B314 != NULL)
|
||||
{
|
||||
gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_203B314);
|
||||
gUnknown_203B314 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802F9C0(void)
|
||||
{
|
||||
gUnknown_203B314->sBC.unk9C[0] = 1;
|
||||
gUnknown_203B314->sBC.unk9C[1] = 0;
|
||||
gUnknown_203B314->sBC.unk9C[2] = 8;
|
||||
gUnknown_203B314->sBC.unk9C[3] = 0;
|
||||
|
||||
SUB_80095E4_CALL(gUnknown_203B314->sBC.s0);
|
||||
}
|
||||
|
||||
void sub_802FA50(void)
|
||||
{
|
||||
s32 sVar1;
|
||||
const u8 *text;
|
||||
u32 y;
|
||||
u32 y2;
|
||||
int index;
|
||||
int counter;
|
||||
|
||||
sub_8008C54(gUnknown_203B314->sBC.s0.unk34);
|
||||
sub_80073B8(gUnknown_203B314->sBC.s0.unk34);
|
||||
xxx_call_draw_string(10,0,gUnknown_80E0744,gUnknown_203B314->sBC.s0.unk34,0);
|
||||
sub_8012BC4(gUnknown_203B314->sBC.unk9C[2] * 8 + 4,0,gUnknown_203B314->sBC.s0.input.unk1E + 1,2,7,gUnknown_203B314->sBC.s0.unk34);
|
||||
if (gUnknown_203B314->unkB8 != 0) {
|
||||
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter);
|
||||
index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter;
|
||||
sVar1 = gUnknown_203B314->unk0[index];
|
||||
if (gUnknown_203B314->unk5C[index] != 0) {
|
||||
xxx_call_draw_string(10,y,gUnknown_80E0750,gUnknown_203B314->sBC.s0.unk34,0);
|
||||
}
|
||||
else if (gUnknown_203B314->unk8A[index] != 0) {
|
||||
xxx_call_draw_string(10,y,gUnknown_80E0754,gUnknown_203B314->sBC.s0.unk34,0);
|
||||
}
|
||||
xxx_call_draw_string(0x18,y,sub_80974A0(sVar1),gUnknown_203B314->sBC.s0.unk34,0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
|
||||
{
|
||||
y2 = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter);
|
||||
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]);
|
||||
xxx_call_draw_string(8,y2,text,gUnknown_203B314->sBC.s0.unk34,0);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B314->sBC.s0.unk34);
|
||||
}
|
||||
|
|
@ -15,10 +15,10 @@
|
|||
#include "structs/str_dungeon.h"
|
||||
#include "tile_types.h"
|
||||
#include "position_util.h"
|
||||
#include "trap.h"
|
||||
|
||||
extern void sub_8049ED4(void);
|
||||
extern void sub_8073D14(Entity *);
|
||||
extern void sub_807FE9C(Entity *, Position *, u32, u32);
|
||||
|
||||
void sub_8075680(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "constants/type.h"
|
||||
#include "dungeon_ai.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "move_util.h"
|
||||
|
|
@ -20,10 +21,8 @@ extern void sub_80426C8(u32, u32);
|
|||
extern void sub_8068FE0(Entity *, u32, Entity *r2);
|
||||
extern void nullsub_93(Position *);
|
||||
extern void sub_80522F4(Entity *, Entity *, u8 *);
|
||||
extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
extern void sub_806F370(Entity *pokemon, Entity *target, u32, u32, u8 *, u8 moveType, s32, u32, u32, u32);
|
||||
extern void sub_80694C0(Entity *, s32, s32, u32);
|
||||
extern void sub_804535C(Entity *, u32);
|
||||
extern void sub_804AC20(Position *);
|
||||
extern void sub_807EC28(bool8);
|
||||
extern void sub_806A5B8(Entity *);
|
||||
|
||||
|
|
@ -35,7 +34,7 @@ extern u8 *gUnknown_80F9CBC[];
|
|||
extern u8 gAvailablePokemonNames[];
|
||||
extern u8 *gUnknown_80FCAC0[];
|
||||
|
||||
void sub_807E1A0(Entity *pokemon,Entity *target,u8 param_3,s16 param_4,s32 param_5)
|
||||
void sub_807E1A0(Entity *pokemon,Entity *target,u8 moveType,s16 param_4,s32 param_5)
|
||||
{
|
||||
EntityInfo *targetInfo;
|
||||
u8 flag;
|
||||
|
|
@ -65,7 +64,7 @@ void sub_807E1A0(Entity *pokemon,Entity *target,u8 param_3,s16 param_4,s32 param
|
|||
newHP /= 2;
|
||||
}
|
||||
}
|
||||
sub_806F370(pokemon,target,newHP,0,&flag,param_3,param_4_s32,0,0,0);
|
||||
sub_806F370(pokemon,target,newHP,0,&flag,moveType,param_4_s32,0,0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -95,8 +94,8 @@ void sub_807E254(Entity *pokemon,Entity *target)
|
|||
nullsub_93(&targetPos);
|
||||
sub_80694C0(pokemon,targetPos.x,targetPos.y,1);
|
||||
sub_80694C0(target,pokemonPos.x,pokemonPos.y,1);
|
||||
sub_804535C(pokemon,0x0);
|
||||
sub_804535C(target,0x0);
|
||||
sub_804535C(pokemon,NULL);
|
||||
sub_804535C(target,NULL);
|
||||
|
||||
if (EntityExists(pokemon)) {
|
||||
if (pokemon->info->isTeamLeader) {
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
|
||||
void sub_807FC3C(Position *pos, u32 trapID, u32 param_3)
|
||||
{
|
||||
gDungeon->trapPos.x = pos->x;
|
||||
gDungeon->trapPos.y = pos->y;
|
||||
gDungeon->trapID = trapID;
|
||||
gDungeon->unk13579 = param_3;
|
||||
gDungeon->unk13570 = 1;
|
||||
}
|
||||
|
|
@ -1,19 +1,19 @@
|
|||
#include "global.h"
|
||||
#include "code_8092334.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
extern void sub_8082FE0(u32, void *, u32);
|
||||
extern void sub_8082FA8(void *, void *, u32);
|
||||
extern void sub_8082FE0(unkStruct_8094924 *, void *, u32 size);
|
||||
extern void sub_8082FA8(unkStruct_8094924 *, void *, u32);
|
||||
|
||||
|
||||
void nullsub_98()
|
||||
void nullsub_98(unkStruct_8094924 *param_1)
|
||||
{}
|
||||
|
||||
void sub_808300C(u32 *param_1, u32 *param_2)
|
||||
void sub_808300C(unkStruct_8094924 *param_1, u8 *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, param_2, 8);
|
||||
}
|
||||
|
||||
void sub_8083018(u32 param_1)
|
||||
void sub_8083018(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u8 auStack_10 [12];
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ void sub_8083018(u32 param_1)
|
|||
auStack_10[8] = 0;
|
||||
}
|
||||
|
||||
void sub_8083030(u32 *param_1, u32 param_2)
|
||||
void sub_8083030(unkStruct_8094924 *param_1, u16 param_2)
|
||||
{
|
||||
u16 uStack_8;
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ void sub_8083030(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,2);
|
||||
}
|
||||
|
||||
void sub_8083048(u32 *param_1, u32 param_2)
|
||||
void sub_8083048(unkStruct_8094924 *param_1, u32 param_2)
|
||||
{
|
||||
u16 uStack_8;
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ void sub_8083048(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,2);
|
||||
}
|
||||
|
||||
void sub_8083060(u32 *param_1, u32 param_2)
|
||||
void sub_8083060(unkStruct_8094924 *param_1, u32 param_2)
|
||||
{
|
||||
u8 uStack_8;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ void sub_8083060(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,1);
|
||||
}
|
||||
|
||||
void sub_8083078(u32 *param_1, u32 param_2)
|
||||
void sub_8083078(unkStruct_8094924 *param_1, u32 param_2)
|
||||
{
|
||||
u32 uStack_8;
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ void sub_8083078(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,4);
|
||||
}
|
||||
|
||||
void sub_808308C(u32 *param_1, u32 param_2)
|
||||
void sub_808308C(unkStruct_8094924 *param_1, u32 param_2)
|
||||
{
|
||||
u32 uStack_8;
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ void sub_808308C(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,4);
|
||||
}
|
||||
|
||||
void sub_80830A0(u32 *param_1, u32 param_2)
|
||||
void sub_80830A0(unkStruct_8094924 *param_1, u32 param_2)
|
||||
{
|
||||
u32 uStack_8;
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ void sub_80830A0(u32 *param_1, u32 param_2)
|
|||
sub_8082FA8(param_1,&uStack_8,4);
|
||||
}
|
||||
|
||||
void sub_80830B4(u32 *param_1, u8 param_2)
|
||||
void sub_80830B4(unkStruct_8094924 *param_1, u8 param_2)
|
||||
{
|
||||
u8 local_8;
|
||||
|
||||
|
|
@ -77,13 +77,13 @@ void sub_80830B4(u32 *param_1, u8 param_2)
|
|||
sub_8082FA8(param_1,&local_8,1);
|
||||
}
|
||||
|
||||
void SavePosition(u32 *param_1, Position *param_2)
|
||||
void SavePosition(unkStruct_8094924 *param_1, Position *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->x, 1);
|
||||
sub_8082FA8(param_1, ¶m_2->y, 1);
|
||||
}
|
||||
|
||||
void sub_80830F8(u32 *param_1, u32 *param_2)
|
||||
void sub_80830F8(unkStruct_8094924 *param_1, u32 *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2[0], 1);
|
||||
sub_8082FA8(param_1, ¶m_2[1], 1);
|
||||
|
|
@ -91,18 +91,18 @@ void sub_80830F8(u32 *param_1, u32 *param_2)
|
|||
sub_8082FA8(param_1, ¶m_2[3], 1);
|
||||
}
|
||||
|
||||
void sub_808312C(u32 *param_1, u16 *param_2)
|
||||
void sub_808312C(unkStruct_8094924 *param_1, u16 *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2[0], 1);
|
||||
sub_8082FA8(param_1, ¶m_2[1], 1);
|
||||
}
|
||||
|
||||
void SaveSpeedCounters(u32 *param_1, u32 *speedCounters, u32 numCounters)
|
||||
void SaveSpeedCounters(unkStruct_8094924 *param_1, u32 *speedCounters, u32 numCounters)
|
||||
{
|
||||
sub_8082FA8(param_1, speedCounters, numCounters);
|
||||
}
|
||||
|
||||
u16 sub_8083158(u32 param_1)
|
||||
u16 sub_8083158(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u16 local_8;
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ u16 sub_8083158(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
s16 sub_8083170(u32 param_1)
|
||||
s16 sub_8083170(unkStruct_8094924 *param_1)
|
||||
{
|
||||
s16 local_8;
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ s16 sub_8083170(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
u8 sub_8083188(u32 param_1)
|
||||
u8 sub_8083188(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u8 local_8;
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ u8 sub_8083188(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
u32 sub_80831A0(u32 param_1)
|
||||
u32 sub_80831A0(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u32 local_8;
|
||||
|
||||
|
|
@ -134,7 +134,7 @@ u32 sub_80831A0(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
u32 sub_80831B4(u32 param_1)
|
||||
u32 sub_80831B4(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u32 local_8;
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ u32 sub_80831B4(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
u32 sub_80831C8(u32 param_1)
|
||||
u32 sub_80831C8(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u32 local_8;
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ u32 sub_80831C8(u32 param_1)
|
|||
return local_8;
|
||||
}
|
||||
|
||||
bool8 sub_80831DC(u32 param_1)
|
||||
bool8 sub_80831DC(unkStruct_8094924 *param_1)
|
||||
{
|
||||
u8 local_8;
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ bool8 sub_80831DC(u32 param_1)
|
|||
return local_8 != 0;
|
||||
}
|
||||
|
||||
void sub_80831F8(u32 param_1,u16 *param_2)
|
||||
void sub_80831F8(unkStruct_8094924 *param_1,u16 *param_2)
|
||||
{
|
||||
param_2[0] = 0;
|
||||
param_2[1] = 0;
|
||||
|
|
@ -167,7 +167,7 @@ void sub_80831F8(u32 param_1,u16 *param_2)
|
|||
}
|
||||
|
||||
|
||||
void sub_8083220(u32 param_1,u32 *param_2)
|
||||
void sub_8083220(unkStruct_8094924 *param_1,u32 *param_2)
|
||||
{
|
||||
param_2[0] = 0;
|
||||
param_2[1] = 0;
|
||||
|
|
@ -179,7 +179,7 @@ void sub_8083220(u32 param_1,u32 *param_2)
|
|||
sub_8082FE0(param_1,¶m_2[3],1);
|
||||
}
|
||||
|
||||
void sub_8083260(u32 param_1,u16 *param_2)
|
||||
void sub_8083260(unkStruct_8094924 *param_1,u16 *param_2)
|
||||
{
|
||||
param_2[0] = 0;
|
||||
param_2[1] = 0;
|
||||
|
|
@ -187,8 +187,8 @@ void sub_8083260(u32 param_1,u16 *param_2)
|
|||
sub_8082FE0(param_1,¶m_2[1],1);
|
||||
}
|
||||
|
||||
void sub_8083288(u32 r0, u16 *r1, u32 r2)
|
||||
void sub_8083288(unkStruct_8094924 *r0, u16 *r1, u32 size)
|
||||
{
|
||||
sub_8082FE0(r0, r1, r2);
|
||||
sub_8082FE0(r0, r1, size);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "code_80869E4.h"
|
||||
#include "constants/direction.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "random.h"
|
||||
|
||||
|
|
@ -27,12 +28,9 @@ extern void DisplayDungeonDialogue(const u8 *);
|
|||
|
||||
extern void sub_8085EB0(void);
|
||||
extern void sub_803E748(void);
|
||||
extern void sub_80855E4(void *);
|
||||
extern s32 GetCameraXPos(void);
|
||||
extern s32 GetCameraYPos(void);
|
||||
extern void sub_803F878(u32, u32);
|
||||
extern void IncreaseEntityPixelPos(Entity *, u32, u32);
|
||||
extern void sub_804535C(Entity *, Position32 *);
|
||||
extern void sub_8086A54(Entity *);
|
||||
extern void sub_8086A3C(Entity *);
|
||||
extern void PlaySoundEffect(u32);
|
||||
|
|
|
|||
|
|
@ -17,14 +17,12 @@
|
|||
extern u8 sub_8044B28(void);
|
||||
extern u8 gUnknown_202E038[];
|
||||
extern void sub_8085374();
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8068FE0(Entity *, u32, u32);
|
||||
extern void DisplayDungeonDialogue(const u8 *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern void sub_8086448(void);
|
||||
extern void SkarmoryEntry(Entity *);
|
||||
extern void sub_8086A54(Entity *);
|
||||
extern void sub_808563C(void *);
|
||||
extern void sub_8087144();
|
||||
extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
|
||||
extern bool8 sub_8085B80(u8 *);
|
||||
|
|
|
|||
18
src/code_8094D28.c
Normal file
18
src/code_8094D28.c
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#include "global.h"
|
||||
|
||||
IWRAM_DATA u32 gUnknown_3001198[0x270] = {0};
|
||||
EWRAM_DATA_2 s32 gUnknown_203B470 = {0};
|
||||
EWRAM_DATA_2 s32 gUnknown_203B474 = {0};
|
||||
|
||||
void sub_8094D28(s32 r0) {
|
||||
|
||||
gUnknown_3001198[0] = r0;
|
||||
gUnknown_203B470 = 1;
|
||||
|
||||
for(; gUnknown_203B470 < 0x270; gUnknown_203B470++)
|
||||
{
|
||||
gUnknown_3001198[gUnknown_203B470] =
|
||||
(gUnknown_3001198[gUnknown_203B470 - 1] ^
|
||||
(gUnknown_3001198[gUnknown_203B470 - 1] >> 0x1e)) * 0x6c078965 + gUnknown_203B470;
|
||||
}
|
||||
}
|
||||
1552
src/code_80958E8.c
1552
src/code_80958E8.c
File diff suppressed because it is too large
Load Diff
|
|
@ -1,735 +0,0 @@
|
|||
#include "constants/mailbox.h"
|
||||
#include "global.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/monster.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "items.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80958E8_1.h"
|
||||
#include "random.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8096AF8.h"
|
||||
#include "mailbox_8095F8C.h"
|
||||
#include "event_flag.h"
|
||||
#include "rescue_team_info.h"
|
||||
|
||||
extern u8 sub_8095E38(WonderMail *, u8, u8, bool8);
|
||||
extern void sub_80965F4();
|
||||
u8 sub_8097318(s16 param_1);
|
||||
extern bool8 GenerateMailJobInfo(WonderMail *);
|
||||
|
||||
bool8 sub_803C1D0(DungeonLocation *, u8);
|
||||
u8 sub_8095F28(u8);
|
||||
void sub_803C37C(DungeonLocation *, u8, u8 *);
|
||||
bool8 sub_8096E80(u8);
|
||||
u8 sub_8095E78(void);
|
||||
|
||||
void sub_8096078(void);
|
||||
bool8 sub_80963B4(void);
|
||||
|
||||
static void SortMailboxSlots(void)
|
||||
{
|
||||
s32 r1;
|
||||
s32 r6;
|
||||
WonderMail job;
|
||||
|
||||
for(r1 = 0; r1 < NUM_MAILBOX_SLOTS - 1; r1++)
|
||||
{
|
||||
for(r6 = r1 + 1; r6 < NUM_MAILBOX_SLOTS; r6++)
|
||||
{
|
||||
if(gUnknown_203B490->mailboxSlots[r6].mailType != 0)
|
||||
{
|
||||
if((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id > gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) ||
|
||||
((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id == gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) &&
|
||||
(gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.floor > gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.floor)))
|
||||
{
|
||||
job = gUnknown_203B490->mailboxSlots[r1];
|
||||
gUnknown_203B490->mailboxSlots[r1] = gUnknown_203B490->mailboxSlots[r6];
|
||||
gUnknown_203B490->mailboxSlots[r6] = job;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80961B4(void)
|
||||
{
|
||||
if (sub_8096E2C() != 0) {
|
||||
gUnknown_203B490->unk328 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80961D8(void)
|
||||
{
|
||||
s32 num;
|
||||
s32 index;
|
||||
u32 floor;
|
||||
s32 friendAreaReward;
|
||||
WonderMail *slot;
|
||||
bool8 flag = FALSE;
|
||||
|
||||
num = CountFilledMailboxSlots();
|
||||
index = RandRange(num, NUM_MAILBOX_SLOTS);
|
||||
if(num >= NUM_MAILBOX_SLOTS) return 0;
|
||||
if(!gUnknown_203B490->unk328)
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
gUnknown_203B490->unk328 = flag;
|
||||
}
|
||||
floor = 0x38;
|
||||
if(sub_8001D08(0xA, 0x31, 0x1))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x35])
|
||||
if(!sub_8096E80(0x35)) floor = 0x35;
|
||||
}
|
||||
if(sub_80023E4(0xF))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x34])
|
||||
if(!sub_8096E80(0x34)) floor = 0x34;
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x33])
|
||||
if(!sub_8096E80(0x33)) floor = 0x33;
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x32])
|
||||
if(!sub_8096E80(0x32)) floor = 0x32;
|
||||
|
||||
}
|
||||
if(GetRescueTeamRank() == LUCARIO_RANK)
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x36])
|
||||
if(!sub_8096E80(0x36)) floor = 0x36;
|
||||
}
|
||||
if(sub_80023E4(6))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x37])
|
||||
if(!sub_8096E80(0x37)) floor = 0x37;
|
||||
}
|
||||
|
||||
if(floor != 0x38) goto _slot;
|
||||
if(num > index) goto _08096392;
|
||||
floor = sub_8096E2C();
|
||||
if(!sub_80023E4(0xE) && (floor > 2)) goto _0809638E;
|
||||
if (floor > 0x31) goto _0809638E;
|
||||
_slot:
|
||||
slot = GetMailboxSlotInfo(num);
|
||||
slot->mailType = 1;
|
||||
slot->unk4.dungeon.id = NUM_DUNGEONS;
|
||||
slot->unk4.dungeon.floor = floor;
|
||||
goto _flag;
|
||||
_0809638E:
|
||||
for(; num <= index; num++)
|
||||
{
|
||||
slot = GetMailboxSlotInfo(num);
|
||||
if(GenerateMailJobInfo(slot))
|
||||
{
|
||||
friendAreaReward = sub_8095E78();
|
||||
if(!sub_803C1D0(&slot->unk4.dungeon, slot->missionType)) friendAreaReward = FRIEND_AREA_NONE;
|
||||
slot->rewardType = RandRange(MONEY1, END_REWARDS);
|
||||
if(slot->rewardType == FRIEND_AREA)
|
||||
{
|
||||
if(friendAreaReward == FRIEND_AREA_NONE)
|
||||
{
|
||||
slot->rewardType = MONEY1;
|
||||
flag = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
slot->friendAreaReward = friendAreaReward;
|
||||
flag = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_flag:
|
||||
flag = TRUE;
|
||||
}
|
||||
} else break;
|
||||
}
|
||||
_08096392:
|
||||
if(sub_80963B4())
|
||||
flag = TRUE;
|
||||
sub_8096078();
|
||||
SortMailboxSlots();
|
||||
return flag;
|
||||
}
|
||||
|
||||
bool8 sub_80963B4(void)
|
||||
{
|
||||
u8 floor;
|
||||
s32 num;
|
||||
WonderMail *slot;
|
||||
bool8 flag = FALSE;
|
||||
|
||||
floor = sub_8096E2C();
|
||||
num = CountFilledMailboxSlots();
|
||||
if(num >= NUM_MAILBOX_SLOTS) return FALSE;
|
||||
if(sub_80023E4(0xE))
|
||||
{
|
||||
if(floor < 0x32)
|
||||
{
|
||||
slot = GetMailboxSlotInfo(num);
|
||||
slot->mailType = 1;
|
||||
slot->unk4.dungeon.id = NUM_DUNGEONS;
|
||||
slot->unk4.dungeon.floor = floor;
|
||||
flag = TRUE;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
void sub_80963FC(void)
|
||||
{
|
||||
s32 index;
|
||||
WonderMail *slot;
|
||||
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
|
||||
{
|
||||
slot = GetMailboxSlotInfo(index);
|
||||
if(slot->mailType != 1)
|
||||
{
|
||||
ResetMailboxSlot(index);
|
||||
}
|
||||
}
|
||||
sub_8096078();
|
||||
slot = GetMailboxSlotInfo(CountFilledMailboxSlots());
|
||||
slot->mailType = 5;
|
||||
slot->missionType = 0;
|
||||
slot->unk2 = 0;
|
||||
slot->unk4.dungeon.id = DUNGEON_MT_STEEL;
|
||||
slot->unk4.dungeon.floor = 3;
|
||||
slot->unk4.seed = 0x00ffffff & Rand32Bit();
|
||||
slot->clientSpecies = MONSTER_PIDGEY;
|
||||
slot->targetSpecies = MONSTER_PIDGEY;
|
||||
slot->targetItem = sub_8095F28(slot->unk4.dungeon.id);
|
||||
slot->rewardType = MONEY1;
|
||||
do
|
||||
{
|
||||
sub_803C37C(&slot->unk4.dungeon, slot->missionType, &slot->itemReward);
|
||||
} while (slot->targetItem == slot->itemReward);
|
||||
slot->friendAreaReward = FRIEND_AREA_NONE;
|
||||
sub_8096078();
|
||||
SortMailboxSlots();
|
||||
}
|
||||
|
||||
void sub_8096488(void)
|
||||
{
|
||||
WonderMail *mail;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++){
|
||||
ResetMailboxSlot(index);
|
||||
}
|
||||
mail = GetMailboxSlotInfo(0);
|
||||
mail->mailType = 1;
|
||||
mail->unk4.dungeon.id = NUM_DUNGEONS;
|
||||
mail->unk4.dungeon.floor = 0;
|
||||
}
|
||||
|
||||
bool8 sub_80964B4(void)
|
||||
{
|
||||
if ((!gUnknown_203B490->PKMNNewsReceived[0x35]) && (sub_8096E80(0x35) == 0)) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80964E4(void)
|
||||
{
|
||||
if ((!gUnknown_203B490->PKMNNewsReceived[0x36]) && (sub_8096E80(0x36) == 0)) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
s32 CountFilledPelipperBoardSlots(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 slots;
|
||||
|
||||
slots = 0;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++) {
|
||||
if (!IsPelipperBoardSlotEmpty(index)) {
|
||||
slots++;
|
||||
}
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
|
||||
UNUSED bool8 sub_8096538(WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(gUnknown_203B490->pelipperBoardJobs[index].mailType == 0)
|
||||
{
|
||||
gUnknown_203B490->pelipperBoardJobs[index] = *mail;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WonderMail *GetPelipperBoardSlotInfo(u8 index)
|
||||
{
|
||||
return &gUnknown_203B490->pelipperBoardJobs[index];
|
||||
}
|
||||
|
||||
|
||||
bool8 IsPelipperBoardSlotEmpty(u8 index)
|
||||
{
|
||||
if (gUnknown_203B490->pelipperBoardJobs[index].mailType == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ResetPelipperBoardSlot(u8 index)
|
||||
{
|
||||
gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE;
|
||||
gUnknown_203B490->pelipperBoardJobs[index].unk4.dungeon.id = 99;
|
||||
gUnknown_203B490->pelipperBoardJobs[index].unk4.dungeon.floor = 0;
|
||||
gUnknown_203B490->pelipperBoardJobs[index].rewardType = 0;
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_80965F4(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tmov r6, r8\n"
|
||||
"\tpush {r6,r7}\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldr r0, _0809660C\n"
|
||||
"\tmov r12, r0\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tb _08096636\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0809660C: .4byte gUnknown_203B490\n"
|
||||
"_08096610:\n"
|
||||
"\tcmp r2, r3\n"
|
||||
"\tble _0809662A\n"
|
||||
"\tmov r1, r12\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tadds r1, r0, r5\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tadds r1, 0x50\n"
|
||||
"\tadds r0, 0x50\n"
|
||||
"\tldm r0!, {r5-r7}\n"
|
||||
"\tstm r1!, {r5-r7}\n"
|
||||
"\tldm r0!, {r6,r7}\n"
|
||||
"\tstm r1!, {r6,r7}\n"
|
||||
"_0809662A:\n"
|
||||
"\tadds r4, 0x14\n"
|
||||
"\tmovs r0, 0x14\n"
|
||||
"\tadd r9, r0\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tadd r8, r0\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"_08096636:\n"
|
||||
"\tcmp r2, 0x7\n"
|
||||
"\tbgt _08096666\n"
|
||||
"\tmov r1, r12\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tadds r0, r4\n"
|
||||
"\tadds r0, 0x50\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08096666\n"
|
||||
"\tldr r6, _08096694\n"
|
||||
"\tmov r1, r9\n"
|
||||
"_0809664C:\n"
|
||||
"\tadds r1, 0x14\n"
|
||||
"\tadds r4, 0x14\n"
|
||||
"\tmovs r5, 0x14\n"
|
||||
"\tadd r9, r5\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tcmp r2, 0x7\n"
|
||||
"\tbgt _08096666\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0x50\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0809664C\n"
|
||||
"_08096666:\n"
|
||||
"\tcmp r2, 0x8\n"
|
||||
"\tbne _08096610\n"
|
||||
"\tcmp r3, 0x7\n"
|
||||
"\tbgt _08096688\n"
|
||||
"\tldr r4, _08096694\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tlsls r0, r3, 2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tlsls r1, r0, 2\n"
|
||||
"_08096678:\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0x50\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tadds r1, 0x14\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, 0x7\n"
|
||||
"\tble _08096678\n"
|
||||
"_08096688:\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"
|
||||
"_08096694: .4byte gUnknown_203B490");
|
||||
}
|
||||
|
||||
void SortPelipperJobs(void)
|
||||
{
|
||||
s32 index1;
|
||||
s32 index2;
|
||||
|
||||
WonderMail mail;
|
||||
|
||||
for(index1 = 0; index1 < MAX_ACCEPTED_JOBS - 1; index1++)
|
||||
{
|
||||
for(index2 = index1 + 1; index2 < MAX_ACCEPTED_JOBS; index2++)
|
||||
{
|
||||
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != MAIL_TYPE_NONE)
|
||||
{
|
||||
if((gUnknown_203B490->pelipperBoardJobs[index1].unk4.dungeon.id > gUnknown_203B490->pelipperBoardJobs[index2].unk4.dungeon.id) ||
|
||||
((gUnknown_203B490->pelipperBoardJobs[index1].unk4.dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].unk4.dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].unk4.dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].unk4.dungeon.floor)))
|
||||
{
|
||||
mail = gUnknown_203B490->pelipperBoardJobs[index1];
|
||||
gUnknown_203B490->pelipperBoardJobs[index1] = gUnknown_203B490->pelipperBoardJobs[index2];
|
||||
gUnknown_203B490->pelipperBoardJobs[index2] = mail;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GeneratePelipperJobs(void)
|
||||
{
|
||||
s32 range;
|
||||
WonderMail *mail;
|
||||
s32 index;
|
||||
|
||||
range = RandRange(4,8);
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
if (sub_8097318(0xe) != 0) {
|
||||
mail = GetPelipperBoardSlotInfo(0);
|
||||
mail->mailType = MAIL_TYPE_UNK2;
|
||||
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
|
||||
mail->unk2 = 1;
|
||||
mail->unk4.dungeon.id = DUNGEON_UPROAR_FOREST;
|
||||
mail->unk4.dungeon.floor = 10;
|
||||
mail->unk4.seed = Rand32Bit() & 0xffffff;
|
||||
mail->clientSpecies = MONSTER_WYNAUT;
|
||||
mail->targetSpecies = MONSTER_MANKEY;
|
||||
mail->targetItem = 0;
|
||||
mail->rewardType = ITEM;
|
||||
mail->itemReward = ITEM_REVIVER_SEED;
|
||||
mail->friendAreaReward = 0;
|
||||
index = 1;
|
||||
}
|
||||
|
||||
|
||||
if (sub_8097318(0xf) != 0) {
|
||||
mail = GetPelipperBoardSlotInfo(index);
|
||||
mail->mailType = MAIL_TYPE_UNK3;
|
||||
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
|
||||
mail->unk2 = 2;
|
||||
mail->unk4.dungeon.id = DUNGEON_HOWLING_FOREST;
|
||||
mail->unk4.dungeon.floor = 15;
|
||||
mail->unk4.seed = Rand32Bit() & 0xffffff;
|
||||
mail->clientSpecies = MONSTER_SMEARGLE;
|
||||
mail->targetSpecies = MONSTER_SMEARGLE;
|
||||
mail->targetItem = 0;
|
||||
mail->rewardType = ITEM;
|
||||
mail->itemReward = ITEM_REVIVER_SEED;
|
||||
mail->friendAreaReward = 0;
|
||||
index++;
|
||||
}
|
||||
|
||||
if (sub_8097318(0x1c) != 0) {
|
||||
mail = GetPelipperBoardSlotInfo(index);
|
||||
mail->mailType = MAIL_TYPE_UNK4;
|
||||
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
|
||||
mail->unk2 = 3;
|
||||
mail->unk4.dungeon.id = DUNGEON_WISH_CAVE;
|
||||
mail->unk4.dungeon.floor = 20;
|
||||
mail->unk4.seed = Rand32Bit() & 0xffffff;
|
||||
mail->clientSpecies = MONSTER_MEDICHAM;
|
||||
mail->targetSpecies = MONSTER_MEDICHAM;
|
||||
mail->targetItem = 0;
|
||||
mail->rewardType = ITEM;
|
||||
mail->itemReward = ITEM_REVIVER_SEED;
|
||||
mail->friendAreaReward = 0;
|
||||
index++;
|
||||
}
|
||||
for (; index <= range; index++) {
|
||||
if (!GenerateMailJobInfo(&gUnknown_203B490->pelipperBoardJobs[index])) break;
|
||||
gUnknown_203B490->pelipperBoardJobs[index].rewardType = RandRange(MONEY, BLANK_4);
|
||||
}
|
||||
sub_80965F4();
|
||||
SortPelipperJobs();
|
||||
}
|
||||
|
||||
bool8 IsMailinJobSlot(WonderMail *mail)
|
||||
{
|
||||
WonderMail *jobSlot;
|
||||
s32 index;
|
||||
|
||||
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < MAX_ACCEPTED_JOBS; jobSlot++, index++)
|
||||
{
|
||||
if(jobSlot->mailType != MAIL_TYPE_NONE)
|
||||
if(mail->missionType == jobSlot->missionType)
|
||||
if(mail->unk2 == jobSlot->unk2)
|
||||
if(mail->unk4.dungeon.id == jobSlot->unk4.dungeon.id)
|
||||
if(mail->unk4.dungeon.floor == jobSlot->unk4.dungeon.floor)
|
||||
if(mail->unk4.seed == jobSlot->unk4.seed)
|
||||
if(mail->clientSpecies == jobSlot->clientSpecies)
|
||||
if(mail->targetSpecies == jobSlot->targetSpecies)
|
||||
if(mail->targetItem == jobSlot->targetItem)
|
||||
if(mail->rewardType == jobSlot->rewardType)
|
||||
if(mail->itemReward == jobSlot->itemReward)
|
||||
if(mail->friendAreaReward == jobSlot->friendAreaReward)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_809693C(WonderMail *mail)
|
||||
{
|
||||
u8 dungeonIndex;
|
||||
u8 floor;
|
||||
bool8 escortMission;
|
||||
s32 index;
|
||||
|
||||
dungeonIndex = mail->unk4.dungeon.id;
|
||||
floor = mail->unk4.dungeon.floor;
|
||||
escortMission = FALSE;
|
||||
if (!IsValidWonderMail(mail)) {
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
|
||||
escortMission = TRUE;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if ((gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_TAKEN_JOB) &&
|
||||
(sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeonIndex,floor,escortMission) != 0))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 GetNumAcceptedJobs(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 count;
|
||||
|
||||
count = 0;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if (!IsJobSlotEmpty(index)) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
s32 CountJobsinDungeon(u8 dungeon)
|
||||
{
|
||||
WonderMail *mail;
|
||||
s32 index;
|
||||
s32 count;
|
||||
|
||||
count = 0;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
mail = GetJobSlotInfo(index);
|
||||
if ((mail->unk4.dungeon.id == dungeon) &&
|
||||
(((mail->mailType == MAIL_TYPE_TAKEN_JOB || (mail->mailType == MAIL_TYPE_UNK8)) || (mail->mailType == MAIL_TYPE_UNK9)))) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
bool8 sub_8096A08(u8 dungeon, PokemonStruct1 *pokemon)
|
||||
{
|
||||
WonderMail *mail;
|
||||
s32 index;
|
||||
u32 local_14;
|
||||
s32 temp;
|
||||
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
mail = GetJobSlotInfo(index);
|
||||
if(mail->unk4.dungeon.id == dungeon)
|
||||
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
|
||||
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
|
||||
{
|
||||
temp = 0xffffff00;
|
||||
local_14 &= temp;
|
||||
temp = 0x4A;
|
||||
local_14 |= temp;
|
||||
|
||||
temp = 0xffff00ff;
|
||||
local_14 &= temp;
|
||||
temp = 0x100;
|
||||
local_14 |= temp;
|
||||
|
||||
sub_808CFD0(pokemon,mail->clientSpecies,NULL,0,(DungeonLocation *) &local_14,NULL);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 AcceptJob(WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
|
||||
{
|
||||
gUnknown_203B490->jobSlots[index] = *mail;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WonderMail *GetJobSlotInfo(u8 index)
|
||||
{
|
||||
return &gUnknown_203B490->jobSlots[index];
|
||||
}
|
||||
|
||||
bool8 IsJobSlotEmpty(u8 index)
|
||||
{
|
||||
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
|
||||
{
|
||||
WonderMail *jobSlot;
|
||||
Item *item;
|
||||
s32 index;
|
||||
|
||||
jobSlot = GetJobSlotInfo(slotIndex);
|
||||
param_1->unk0 = FALSE;
|
||||
param_1->clientSpecies = jobSlot->clientSpecies;
|
||||
param_1->targetSpecies = MONSTER_NONE;
|
||||
if (jobSlot->unk4.dungeon.id == dungeon) {
|
||||
switch(jobSlot->missionType) {
|
||||
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
|
||||
if (jobSlot->mailType == MAIL_TYPE_TAKEN_JOB) {
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
item = &gTeamInventoryRef->teamItems[index];
|
||||
if (((item->flags & ITEM_FLAG_EXISTS)) && (item->id == jobSlot->targetItem)) {
|
||||
param_1->unk0 = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
|
||||
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
|
||||
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
|
||||
param_1->unk0 = TRUE;
|
||||
}
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
|
||||
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
|
||||
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
|
||||
param_1->unk0 = TRUE;
|
||||
param_1->targetSpecies = jobSlot->targetSpecies;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Unused
|
||||
s16 sub_8096B98(u8 dungeon)
|
||||
{
|
||||
WonderMail *mail;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
mail = GetJobSlotInfo(index);
|
||||
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
|
||||
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
|
||||
if(mail->unk4.dungeon.id == dungeon)
|
||||
return mail->targetSpecies;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_8096BD0(void)
|
||||
{
|
||||
s32 index;
|
||||
WonderMail *mail;
|
||||
|
||||
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
|
||||
{
|
||||
switch(mail->mailType)
|
||||
{
|
||||
case MAIL_TYPE_UNK7:
|
||||
case MAIL_TYPE_UNK8:
|
||||
case MAIL_TYPE_UNK9:
|
||||
ResetJobSlot(index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_8096C80();
|
||||
SortJobSlots();
|
||||
}
|
||||
|
||||
bool8 sub_8096C08(u8 *jobIndex)
|
||||
{
|
||||
s32 index;
|
||||
WonderMail *mail;
|
||||
|
||||
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
|
||||
{
|
||||
if(mail->mailType > 4 && mail->unk2 == 4)
|
||||
{
|
||||
|
||||
*jobIndex = index;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ResetJobSlot(u8 index)
|
||||
{
|
||||
gUnknown_203B490->jobSlots[index].mailType = MAIL_TYPE_NONE;
|
||||
gUnknown_203B490->jobSlots[index].unk4.dungeon.id = 99;
|
||||
gUnknown_203B490->jobSlots[index].unk4.dungeon.floor = 0;
|
||||
gUnknown_203B490->jobSlots[index].rewardType = MONEY1;
|
||||
}
|
||||
|
|
@ -1,177 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "items.h"
|
||||
#include "random.h"
|
||||
#include "friend_area.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80A26CC.h"
|
||||
|
||||
bool8 sub_8095E38(WonderMail *mail, u8 dungeon, u32 floor, u8 param_4);
|
||||
extern s32 GetDungeonFloorCount(u8);
|
||||
extern bool8 sub_809017C(DungeonLocation *);
|
||||
|
||||
bool8 GenerateMailJobDungeonInfo(WonderMail *mail)
|
||||
{
|
||||
s32 counter;
|
||||
s32 floor;
|
||||
s32 index;
|
||||
u8 dungeon;
|
||||
bool8 flag;
|
||||
u8 dungeonStack [64];
|
||||
s32 counter_1;
|
||||
s32 cap;
|
||||
s32 floor_1;
|
||||
s32 halfFloorCount;
|
||||
s32 floorCount;
|
||||
DungeonLocation dungeonLoc;
|
||||
|
||||
|
||||
cap = sub_80A29B0(dungeonStack);
|
||||
if (cap == 0) {
|
||||
dungeonStack[0] = DUNGEON_TINY_WOODS;
|
||||
dungeonStack[1] = DUNGEON_THUNDERWAVE_CAVE;
|
||||
cap = 2;
|
||||
}
|
||||
counter = RandInt(cap);
|
||||
counter_1 = counter;
|
||||
do {
|
||||
dungeon = dungeonStack[counter];
|
||||
floorCount = GetDungeonFloorCount(dungeon);
|
||||
halfFloorCount = floorCount / 2;
|
||||
floor = RandRange(halfFloorCount, floorCount);
|
||||
floor_1 = floor;
|
||||
do {
|
||||
flag = TRUE;
|
||||
dungeonLoc.id = dungeon;
|
||||
dungeonLoc.floor = floor;
|
||||
|
||||
if(sub_809017C(&dungeonLoc))
|
||||
flag = FALSE;
|
||||
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
if (sub_8095E38(&gUnknown_203B490->mailboxSlots[index],dungeon,floor,1)) {
|
||||
flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
if (sub_8095E38(&gUnknown_203B490->pelipperBoardJobs[index],dungeon,floor,1)) {
|
||||
flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
if (sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeon,floor,1)) {
|
||||
flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
mail->unk4.dungeon.id = dungeon;
|
||||
mail->unk4.dungeon.floor = floor;
|
||||
return TRUE;
|
||||
}
|
||||
floor++;
|
||||
if (floor >= floorCount) {
|
||||
floor = halfFloorCount;
|
||||
}
|
||||
} while (floor != floor_1);
|
||||
|
||||
counter++;
|
||||
if (counter == cap) {
|
||||
counter = 0;
|
||||
}
|
||||
if (counter == counter_1) {
|
||||
return FALSE;
|
||||
}
|
||||
} while( TRUE );
|
||||
}
|
||||
|
||||
bool8 sub_8095E38(WonderMail *mail, u8 dungeon, u32 floor, u8 param_4)
|
||||
{
|
||||
if (mail->mailType != MAIL_TYPE_NONE) {
|
||||
if ((mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) && (param_4 == 1)) {
|
||||
if (mail->unk4.dungeon.id == dungeon) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if ((mail->unk4.dungeon.id == dungeon) && (mail->unk4.dungeon.floor == floor)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_8095E78(void)
|
||||
{
|
||||
bool8 flag;
|
||||
s32 index;
|
||||
s32 friendAreaIndex;
|
||||
s32 counter;
|
||||
|
||||
u8 friendAreaStack[NUM_FRIEND_AREAS];
|
||||
|
||||
counter = 0;
|
||||
for(friendAreaIndex = BOUNTIFUL_SEA; friendAreaIndex < NUM_FRIEND_AREAS; friendAreaIndex++)
|
||||
{
|
||||
if ((!gFriendAreas[friendAreaIndex]) &&
|
||||
(GetFriendAreaUnlockCondition(friendAreaIndex) == UNLOCK_WONDER_MAIL)) {
|
||||
flag = FALSE;
|
||||
|
||||
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
if((gUnknown_203B490->mailboxSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
|
||||
flag = TRUE;
|
||||
}
|
||||
|
||||
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
if((gUnknown_203B490->jobSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA))
|
||||
flag = TRUE;
|
||||
}
|
||||
|
||||
if (!flag) {
|
||||
friendAreaStack[counter] = friendAreaIndex;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (counter != 0) {
|
||||
return friendAreaStack[RandInt(counter)];
|
||||
}
|
||||
else {
|
||||
return FRIEND_AREA_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8095F28(u8 param_1)
|
||||
{
|
||||
s32 itemID;
|
||||
s32 counter;
|
||||
u8 itemStack [NUMBER_OF_ITEM_IDS];
|
||||
|
||||
counter = 0;
|
||||
for(itemID = ITEM_STICK; itemID < NUMBER_OF_ITEM_IDS; itemID++)
|
||||
{
|
||||
if ((param_1 == 0x63) ||
|
||||
(xxx_bit_lut_lookup_8091E50(param_1, itemID) != 0)) {
|
||||
if ((!IsThrowableItem(itemID)) && (IsNotMoneyOrUsedTMItem(itemID))) {
|
||||
itemStack[counter] = itemID;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (counter == 0) {
|
||||
return ITEM_NOTHING;
|
||||
}
|
||||
else {
|
||||
return itemStack[RandInt(counter)];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,4 @@
|
|||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "dungeon.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "event_flag.h"
|
||||
|
|
@ -14,273 +11,10 @@ ALIGNED(4) const u8 gDummyScenarioText[] = _("{COLOR_1 YELLOW_3}Scenario try dum
|
|||
ALIGNED(4) const u8 gBlankMission[] = _("{COLOR_1 RED_2}???{END_COLOR_TEXT_1}");
|
||||
|
||||
extern void sub_800199C(u8, u8, u16, s32);
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void GeneratePelipperJobs(void);
|
||||
extern void sub_80018D8(u8, u8, u32);
|
||||
|
||||
void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b);
|
||||
void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b);
|
||||
s32 CalculateMailChecksum(WonderMail *mail);
|
||||
|
||||
void SortJobSlots(void)
|
||||
{
|
||||
s32 r1;
|
||||
s32 r6;
|
||||
WonderMail job;
|
||||
|
||||
for(r1 = 0; r1 < MAX_ACCEPTED_JOBS - 1; r1++)
|
||||
{
|
||||
for(r6 = r1 + 1; r6 < MAX_ACCEPTED_JOBS; r6++)
|
||||
{
|
||||
if(gUnknown_203B490->jobSlots[r6].mailType != 0)
|
||||
{
|
||||
if((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id > gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) ||
|
||||
((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id == gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) &&
|
||||
(gUnknown_203B490->jobSlots[r1].unk4.dungeon.floor > gUnknown_203B490->jobSlots[r6].unk4.dungeon.floor)))
|
||||
{
|
||||
job = gUnknown_203B490->jobSlots[r1];
|
||||
gUnknown_203B490->jobSlots[r1] = gUnknown_203B490->jobSlots[r6];
|
||||
gUnknown_203B490->jobSlots[r6] = job;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 *sub_8096DD8(void)
|
||||
{
|
||||
return gUnknown_203B490->unk190;
|
||||
}
|
||||
|
||||
u8 *sub_8096DE8(void)
|
||||
{
|
||||
return gUnknown_203B490->unk1B8;
|
||||
}
|
||||
|
||||
void ReceivePKMNNews(u8 index)
|
||||
{
|
||||
gUnknown_203B490->PKMNNewsReceived[index] = TRUE;
|
||||
}
|
||||
|
||||
bool8 CheckPKMNNewsSlot(u8 index)
|
||||
{
|
||||
return gUnknown_203B490->PKMNNewsReceived[index];
|
||||
}
|
||||
|
||||
u8 sub_8096E2C(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 floor = 0;
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
|
||||
{
|
||||
if(gUnknown_203B490->mailboxSlots[index].mailType == 1)
|
||||
{
|
||||
if(floor <= gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor)
|
||||
if( gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor < 0x32)
|
||||
floor = gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor + 1;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = floor; index < 0x32; index++)
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[index]) return index;
|
||||
}
|
||||
return 0x38;
|
||||
}
|
||||
|
||||
bool8 sub_8096E80(u8 floor)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
|
||||
{
|
||||
if(gUnknown_203B490->mailboxSlots[index].mailType == 1)
|
||||
{
|
||||
if(floor == gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 CalculateMailChecksum(WonderMail *mail)
|
||||
{
|
||||
s32 sum;
|
||||
|
||||
sum = (mail->unk2 + mail->missionType);
|
||||
|
||||
sum += mail->unk4.dungeon.id;
|
||||
sum += mail->unk4.dungeon.floor;
|
||||
|
||||
sum += mail->unk4.seed << 0x8;
|
||||
|
||||
sum += mail->clientSpecies << 0xC;
|
||||
|
||||
sum += mail->targetSpecies << 0x10;
|
||||
|
||||
sum += mail->targetItem << 0x18;
|
||||
|
||||
sum += mail->rewardType;
|
||||
|
||||
sum += mail->itemReward;
|
||||
|
||||
sum += mail->friendAreaReward;
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
void sub_8096EEC(WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 15; index > 0; index--)
|
||||
{
|
||||
gUnknown_203B490->unk230[index] = gUnknown_203B490->unk230[index - 1];
|
||||
}
|
||||
gUnknown_203B490->unk230[0].sub = mail->unk4;
|
||||
gUnknown_203B490->unk230[0].checksum = CalculateMailChecksum(mail);
|
||||
}
|
||||
|
||||
bool8 sub_8096F50(WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
s32 checksum;
|
||||
subStruct_203B490 *temp;
|
||||
|
||||
checksum = CalculateMailChecksum(mail);
|
||||
|
||||
for (index = 0; index < 0x10; index++) {
|
||||
temp = &gUnknown_203B490->unk230[index];
|
||||
if (temp->sub.dungeon.id == mail->unk4.dungeon.id)
|
||||
if (temp->sub.dungeon.floor == mail->unk4.dungeon.floor)
|
||||
if (temp->sub.seed == mail->unk4.seed)
|
||||
if (temp->checksum == checksum)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 RestoreMailInfo(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
u32 temp;
|
||||
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
|
||||
{
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
|
||||
}
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
|
||||
}
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &temp, 1);
|
||||
if(temp & 1)
|
||||
gUnknown_203B490->PKMNNewsReceived[index] = TRUE;
|
||||
else
|
||||
gUnknown_203B490->PKMNNewsReceived[index] = FALSE;
|
||||
}
|
||||
RestoreIntegerBits(&backup, &temp, 1);
|
||||
if(temp & 1)
|
||||
gUnknown_203B490->unk328 = TRUE;
|
||||
else
|
||||
gUnknown_203B490->unk328 = FALSE;
|
||||
|
||||
RestoreIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
|
||||
RestoreIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].checksum, 0x20);
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].sub.seed, 0x18);
|
||||
RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].sub.dungeon);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
u32 SaveMailInfo(u8 *r0, u32 size)
|
||||
{
|
||||
s32 index;
|
||||
struct unkStruct_8094924 backup;
|
||||
u32 temp;
|
||||
|
||||
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
|
||||
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
|
||||
{
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
|
||||
}
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
|
||||
}
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
if(gUnknown_203B490->PKMNNewsReceived[index])
|
||||
temp = -1;
|
||||
else
|
||||
temp = 0;
|
||||
SaveIntegerBits(&backup, &temp, 1);
|
||||
}
|
||||
if(gUnknown_203B490->unk328)
|
||||
temp = -1;
|
||||
else
|
||||
temp = 0;
|
||||
SaveIntegerBits(&backup, &temp, 1);
|
||||
SaveIntegerBits(&backup, gUnknown_203B490->unk190, 0x140);
|
||||
SaveIntegerBits(&backup, gUnknown_203B490->unk1B8, 0x3C0);
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].checksum, 0x20);
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].sub.seed, 0x18);
|
||||
SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].sub.dungeon);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
void RestoreWonderMail(struct unkStruct_8094924 *a, WonderMail *b)
|
||||
{
|
||||
RestoreIntegerBits(a, &b->mailType, 4);
|
||||
RestoreIntegerBits(a, &b->missionType, 3);
|
||||
RestoreIntegerBits(a, &b->unk2, 4);
|
||||
RestoreIntegerBits(a, &b->clientSpecies, 9);
|
||||
RestoreIntegerBits(a, &b->targetSpecies, 9);
|
||||
RestoreIntegerBits(a, &b->targetItem, 8);
|
||||
RestoreIntegerBits(a, &b->rewardType, 4);
|
||||
RestoreIntegerBits(a, &b->itemReward, 8);
|
||||
RestoreIntegerBits(a, &b->friendAreaReward, 6);
|
||||
RestoreIntegerBits(a, &b->unk4.seed, 0x18);
|
||||
RestoreDungeonLocation(a, &b->unk4.dungeon);
|
||||
}
|
||||
|
||||
void SaveWonderMail(struct unkStruct_8094924 *a, WonderMail *b)
|
||||
{
|
||||
SaveIntegerBits(a, &b->mailType, 4);
|
||||
SaveIntegerBits(a, &b->missionType, 3);
|
||||
SaveIntegerBits(a, &b->unk2, 4);
|
||||
SaveIntegerBits(a, &b->clientSpecies, 9);
|
||||
SaveIntegerBits(a, &b->targetSpecies, 9);
|
||||
SaveIntegerBits(a, &b->targetItem, 8);
|
||||
SaveIntegerBits(a, &b->rewardType, 4);
|
||||
SaveIntegerBits(a, &b->itemReward, 8);
|
||||
SaveIntegerBits(a, &b->friendAreaReward, 6);
|
||||
SaveIntegerBits(a, &b->unk4.seed, 0x18);
|
||||
SaveDungeonLocation(a, &b->unk4.dungeon);
|
||||
}
|
||||
|
||||
void sub_80972F4(void)
|
||||
{
|
||||
sub_80015C0(0, 0x2B);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ extern void sub_800199C(u8, u8, u16, s32);
|
|||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void sub_80018D8(u8, u8, u32);
|
||||
|
||||
|
||||
bool8 sub_8097504(s16 mazeIndex)
|
||||
{
|
||||
s32 mazeIndex_s32;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "code_8097670.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "friend_area.h"
|
||||
|
||||
static EWRAM_DATA struct unkStruct_203B494 sUnknown_2039778 = {0};
|
||||
|
||||
|
|
@ -10,6 +12,13 @@ EWRAM_DATA_2 struct unkStruct_203B494 *gUnknown_203B494 = {0};
|
|||
// data_810AE24.s
|
||||
extern const u8 *gAdventureLogText[];
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
void ReadGameOptions(struct unkStruct_8094924 *param_1);
|
||||
void ReadPlayTime(struct unkStruct_8094924 *r0);
|
||||
void WriteGameOptions(struct unkStruct_8094924 *param_1);
|
||||
void WritePlayTime(struct unkStruct_8094924 *r0);
|
||||
|
||||
void sub_8097670(void)
|
||||
{
|
||||
gUnknown_203B494 = &sUnknown_2039778;
|
||||
|
|
@ -201,4 +210,202 @@ bool8 sub_8097900(s16 pokeIndex)
|
|||
if (preload->unk1C[iVar2 >> 5] & (1 << (baseSpecies + (iVar2 >> 5) * -0x20)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097944(void)
|
||||
{
|
||||
bool8 bVar2;
|
||||
bool8 bVar3;
|
||||
int index;
|
||||
s32 counter;
|
||||
Move *move;
|
||||
PokemonStruct1 *pokeStruct;
|
||||
s32 index1;
|
||||
s32 temp;
|
||||
|
||||
bVar2 = 1;
|
||||
bVar3 = 1;
|
||||
if (!sub_8097710(0xd) && (HasAllFriendAreas())) {
|
||||
sub_80976F8(0xd);
|
||||
}
|
||||
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
|
||||
#ifdef NONMATCHING
|
||||
pokeStruct = &index[gRecruitedPokemonRef->pokemon];
|
||||
#else
|
||||
register size_t offset asm("r1") = offsetof(unkStruct_203B45C, pokemon[index]);
|
||||
PokemonStruct1* p = gRecruitedPokemonRef->pokemon;
|
||||
size_t addr = offset + (size_t)p;
|
||||
pokeStruct = (PokemonStruct1*)addr;
|
||||
#endif
|
||||
|
||||
|
||||
if (((u8)(pokeStruct->unk0) & 1)) {
|
||||
temp = pokeStruct->speciesNum;
|
||||
gUnknown_203B494->unk1C[temp / 32] |= 1 << temp % 32;
|
||||
|
||||
for(index1 = 0; index1 < MAX_MON_MOVES; index1++)
|
||||
{
|
||||
move = &gRecruitedPokemonRef->pokemon[index].moves[index1];
|
||||
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
|
||||
gUnknown_203B494->unk8C[move->id / 32] |= 1 << move->id % 32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < MONSTER_MAX; index++)
|
||||
{
|
||||
if (index == MONSTER_NONE) continue;
|
||||
if (index == MONSTER_CASTFORM_SNOWY) continue;
|
||||
if (index == MONSTER_CASTFORM_SUNNY) continue;
|
||||
if (index == MONSTER_CASTFORM_RAINY) continue;
|
||||
if (index == MONSTER_DEOXYS_ATTACK) continue;
|
||||
if (index == MONSTER_DEOXYS_DEFENSE) continue;
|
||||
if (index == MONSTER_DEOXYS_SPEED) continue;
|
||||
if (index == MONSTER_MUNCHLAX) continue;
|
||||
if (index == MONSTER_DECOY) continue;
|
||||
if (index == MONSTER_STATUE) continue;
|
||||
if (index == MONSTER_RAYQUAZA_CUTSCENE) continue;
|
||||
|
||||
if ((gUnknown_203B494->unk54[index / 32] & 1 << index % 32) == 0)
|
||||
{
|
||||
bVar3 = 0;
|
||||
}
|
||||
if ((gUnknown_203B494->unk1C[index / 32] & 1 << index % 32) != 0)
|
||||
{
|
||||
if (index == MONSTER_MOLTRES) {
|
||||
sub_80976F8(0x10);
|
||||
}
|
||||
if (index == MONSTER_ZAPDOS) {
|
||||
sub_80976F8(0x11);
|
||||
}
|
||||
if (index == MONSTER_ARTICUNO) {
|
||||
sub_80976F8(0x12);
|
||||
}
|
||||
if (index == MONSTER_DEOXYS_NORMAL) {
|
||||
sub_80976F8(0x13);
|
||||
}
|
||||
if (index == MONSTER_ENTEI) {
|
||||
sub_80976F8(0x14);
|
||||
}
|
||||
if (index == MONSTER_RAIKOU) {
|
||||
sub_80976F8(0x15);
|
||||
}
|
||||
if (index == MONSTER_SUICUNE) {
|
||||
sub_80976F8(0x16);
|
||||
}
|
||||
if (index == MONSTER_HO_OH) {
|
||||
sub_80976F8(0x17);
|
||||
}
|
||||
if (index == MONSTER_KYOGRE) {
|
||||
sub_80976F8(0x18);
|
||||
}
|
||||
if (index == MONSTER_GROUDON) {
|
||||
sub_80976F8(0x19);
|
||||
}
|
||||
if (index == MONSTER_RAYQUAZA) {
|
||||
sub_80976F8(0x1a);
|
||||
}
|
||||
if (index == MONSTER_LUGIA) {
|
||||
sub_80976F8(0x1b);
|
||||
}
|
||||
if (index == MONSTER_CELEBI) {
|
||||
sub_80976F8(0x1c);
|
||||
}
|
||||
if (index == MONSTER_MEW) {
|
||||
sub_80976F8(0x1d);
|
||||
}
|
||||
if (index == MONSTER_MEWTWO) {
|
||||
sub_80976F8(0x1e);
|
||||
}
|
||||
if (index == MONSTER_JIRACHI) {
|
||||
sub_80976F8(0x1f);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bVar2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (bVar2) {
|
||||
sub_80976F8(0xf);
|
||||
}
|
||||
if (bVar3) {
|
||||
sub_80976F8(0xe);
|
||||
}
|
||||
counter = 0;
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
if (index == MONSTER_NONE || index == MONSTER_FLYGON || index == MONSTER_CACNEA || index == MONSTER_CACTURNE) continue;
|
||||
if (gUnknown_203B494->unk8C[index / 32] & 1 << index % 32) {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
if (counter != 0) {
|
||||
gUnknown_203B494->unk18 = counter;
|
||||
sub_80976F8(7);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097C18(struct unkStruct_8094924 *r0)
|
||||
{
|
||||
sub_8097944();
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
|
||||
SaveDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
|
||||
}
|
||||
|
||||
void sub_8097CC0(struct unkStruct_8094924 *r0)
|
||||
{
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
|
||||
RestoreDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
|
||||
}
|
||||
|
||||
// Save something...
|
||||
u32 sub_8097D60(u8 *r0, u32 size)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
|
||||
WriteGameOptions(&backup);
|
||||
WritePlayTime(&backup);
|
||||
sub_8097C18(&backup);
|
||||
WriteExclusivePokemon(&backup);
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
// Read something...
|
||||
u32 sub_8097D98(u8 *r0, u32 size)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
|
||||
ReadGameOptions(&backup);
|
||||
ReadPlayTime(&backup);
|
||||
sub_8097CC0(&backup);
|
||||
ReadExclusivePokemon(&backup);
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,74 +1,4 @@
|
|||
#include "global.h"
|
||||
#include "code_8092334.h"
|
||||
#include "code_8097670.h"
|
||||
#include "pokemon.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
||||
void ReadGameOptions(struct unkStruct_8094924 *param_1);
|
||||
void ReadPlayTime(struct unkStruct_8094924 *r0);
|
||||
void WriteGameOptions(struct unkStruct_8094924 *param_1);
|
||||
void WritePlayTime(struct unkStruct_8094924 *r0);
|
||||
|
||||
extern void sub_8097944(void);
|
||||
|
||||
void sub_8097C18(struct unkStruct_8094924 *r0)
|
||||
{
|
||||
sub_8097944();
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
|
||||
SaveIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
|
||||
SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
|
||||
SaveDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
|
||||
}
|
||||
|
||||
void sub_8097CC0(struct unkStruct_8094924 *r0)
|
||||
{
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk8, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unkC, 0x11);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk0, 0x20);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk14, 0xE);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk16, 0xE);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unk18, 0x9);
|
||||
RestoreIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
|
||||
RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
|
||||
RestoreDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
|
||||
}
|
||||
|
||||
u32 sub_8097D60(u8 *r0, u32 size)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
|
||||
WriteGameOptions(&backup);
|
||||
WritePlayTime(&backup);
|
||||
sub_8097C18(&backup);
|
||||
WriteExclusivePokemon(&backup);
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
u32 sub_8097D98(u8 *r0, u32 size)
|
||||
{
|
||||
struct unkStruct_8094924 backup;
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
|
||||
ReadGameOptions(&backup);
|
||||
ReadPlayTime(&backup);
|
||||
sub_8097CC0(&backup);
|
||||
ReadExclusivePokemon(&backup);
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
bool8 sub_8097DD0(s32 *param_1, s32 *param_2)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,50 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "text1.h"
|
||||
#include "memory.h"
|
||||
#include "file_system.h"
|
||||
#include "structs/str_3001B64.h"
|
||||
|
||||
struct unkStruct_3001B64_sub
|
||||
{
|
||||
// size: 0x24
|
||||
u16 unk0;
|
||||
/* 0x2 */ s16 speciesID;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u32 unk10;
|
||||
/* 0x14 */ u8 *faceData;
|
||||
u32 fill18;
|
||||
u8 unk1C;
|
||||
u8 fill1D[0x20 - 0x1D];
|
||||
/* 0x20 */ OpenedFile *faceFile;
|
||||
};
|
||||
|
||||
struct unkStruct_3001B64
|
||||
{
|
||||
// size: 0x5A8
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u8 fill10[0x414 - 0x10];
|
||||
u32 unk414;
|
||||
u32 unk418;
|
||||
u32 unk41C;
|
||||
u32 unk420;
|
||||
u32 unk424;
|
||||
u32 unk428;
|
||||
u32 unk42C;
|
||||
u32 unk430;
|
||||
u32 unk434;
|
||||
u32 fill438;
|
||||
struct unkStruct_3001B64_sub unk43C[10];
|
||||
u16 unk5A4;
|
||||
};
|
||||
|
||||
extern struct unkStruct_3001B64 *gUnknown_3001B64;
|
||||
IWRAM_DATA struct unkStruct_3001B64 *gUnknown_3001B64 = {0};
|
||||
|
||||
extern u16 gUnknown_20399DC;
|
||||
extern u16 gUnknown_20399DE;
|
||||
|
|
|
|||
170
src/code_809A560_1.c
Normal file
170
src/code_809A560_1.c
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#include "global.h"
|
||||
#include "structs/str_3001B64.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_801D014.h"
|
||||
#include "credits2.h"
|
||||
#include "event_flag.h"
|
||||
#include "flash.h"
|
||||
#include "friend_list_menu.h"
|
||||
#include "ground_main.h"
|
||||
#include "personality_test1.h"
|
||||
|
||||
extern struct unkStruct_3001B64 *gUnknown_3001B64;
|
||||
|
||||
u32 sub_802E90C();
|
||||
void sub_802E918();
|
||||
u32 sub_80282DC(u8 *r0);
|
||||
void sub_809927C(u8);
|
||||
void sub_80282FC(void);
|
||||
void sub_80993C0(u32);
|
||||
void sub_8001064(void);
|
||||
void sub_809965C(void);
|
||||
|
||||
void sub_809C39C(void) {
|
||||
gUnknown_3001B64->unk430 = sub_801D178();
|
||||
if(gUnknown_3001B64->unk430 == 3)
|
||||
GroundMainGroundRequest(sub_8002694(sub_801D1D4()), 0, -1);
|
||||
sub_801D1E0();
|
||||
}
|
||||
|
||||
void sub_809C3D8(void)
|
||||
{
|
||||
gUnknown_3001B64->unk430 = sub_801D178();
|
||||
if(gUnknown_3001B64->unk430 == 3)
|
||||
GroundMainGroundRequest(sub_8002694(sub_801D1D4()), 0, -1);
|
||||
sub_801D1E0();
|
||||
}
|
||||
|
||||
void sub_809C414(void)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
val = sub_802540C();
|
||||
|
||||
if(val != 0)
|
||||
{
|
||||
gUnknown_3001B64->unk430 = val;
|
||||
GroundMainGroundRequest(sub_8002694(val), 0, -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3001B64->unk430 = -1;
|
||||
}
|
||||
CleanFriendListMenu();
|
||||
|
||||
}
|
||||
|
||||
void sub_809C464(void)
|
||||
{
|
||||
DeleteTestTracker();
|
||||
sub_8001064();
|
||||
sub_809965C();
|
||||
}
|
||||
|
||||
void sub_809C478(void)
|
||||
{
|
||||
s32 temp;
|
||||
s32 temp1;
|
||||
|
||||
if(sub_80356A0() == 0x3)
|
||||
{
|
||||
PlaySound(0x313);
|
||||
InitFlash();
|
||||
ClearFlashData();
|
||||
}
|
||||
|
||||
sub_8035758();
|
||||
|
||||
sub_8001B88(3, &temp, &temp1);
|
||||
sub_80993C0(0);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/WyHAL - (84.32% matching - Seth)
|
||||
NAKED
|
||||
void sub_809C4B0(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,r5,lr}\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"\tnegs r4, r4\n"
|
||||
"\tldr r5, _0809C4FC\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r2, 0x86\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tadds r1, r0, r2\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0809C4DE\n"
|
||||
"\tbl sub_803B168\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tldr r3, _0809C500\n"
|
||||
"\tadds r2, r1, r3\n"
|
||||
"\tasrs r4, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r2]\n"
|
||||
"\tmovs r0, 0x86\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r1, r0\n"
|
||||
"_0809C4DE:\n"
|
||||
"\tstr r4, [r1]\n"
|
||||
"\tbl sub_803B1BC\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tcmp r4, r0\n"
|
||||
"\tbeq _0809C4F4\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl GroundMap_ExecuteEvent\n"
|
||||
"_0809C4F4:\n"
|
||||
"\tpop {r4,r5}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0809C4FC: .4byte gUnknown_3001B64\n"
|
||||
"_0809C500: .4byte 0x000005a4");
|
||||
}
|
||||
|
||||
|
||||
void sub_809C504(void)
|
||||
{
|
||||
u8 temp;
|
||||
|
||||
if(sub_80282DC(&temp) == 1)
|
||||
{
|
||||
sub_809927C(temp);
|
||||
gUnknown_3001B64->unk430 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3001B64->unk430 = -1;
|
||||
}
|
||||
sub_80282FC();
|
||||
}
|
||||
|
||||
void sub_809C550(void)
|
||||
{
|
||||
u32 ret;
|
||||
s32 val;
|
||||
|
||||
ret = sub_802E90C();
|
||||
val = 0;
|
||||
sub_802E918();
|
||||
|
||||
switch(ret)
|
||||
{
|
||||
case 1:
|
||||
if(sub_8001CC4(4, 0x1D, 0x3))
|
||||
val = 1;
|
||||
break;
|
||||
case 2:
|
||||
if(sub_8001CC4(4, 0x1F, 0x2))
|
||||
val = 2;
|
||||
break;
|
||||
case 3:
|
||||
if(sub_8001CC4(0xB, 0x33, 0x8))
|
||||
val = 3;
|
||||
break;
|
||||
}
|
||||
gUnknown_3001B64->unk430 = val;
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ struct unkStruct_3001B68
|
|||
u8 unk20;
|
||||
};
|
||||
|
||||
extern struct unkStruct_3001B68 *gUnknown_3001B68;
|
||||
IWRAM_DATA struct unkStruct_3001B68 *gUnknown_3001B68 = {0};
|
||||
|
||||
|
||||
struct unkStruct_20399E0
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "bg_control.h"
|
||||
#include "cpu.h"
|
||||
|
||||
extern u32 gUnknown_202D800;
|
||||
EWRAM_DATA u32 gUnknown_202D800 = {0};
|
||||
extern u16 gUnknown_203B0BE[];
|
||||
extern u16 *gUnknown_2026E3C;
|
||||
extern u8 gUnknown_2026E38;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,12 @@ static EWRAM_DATA_2 unkStruct_203B3F0 *sUnknown_203B3F0 = {0};
|
|||
|
||||
#include "data/debug_menu2.h"
|
||||
|
||||
enum menuActions {
|
||||
CANCEL_ACTION = 1,
|
||||
NUMBER_ACTION,
|
||||
INFO_ACTION
|
||||
};
|
||||
|
||||
static void sub_803A504(u32 newState);
|
||||
static void sub_803A51C(void);
|
||||
static void sub_803A5A0(void);
|
||||
|
|
@ -147,20 +153,20 @@ static void sub_803A6F0(void)
|
|||
s32 loopMax = 0;
|
||||
|
||||
sUnknown_203B3F0->menuItems[loopMax].text = sNumberPrompt;
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = 2;
|
||||
sUnknown_203B3F0->menuAction = 2;
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = NUMBER_ACTION;
|
||||
sUnknown_203B3F0->menuAction = NUMBER_ACTION;
|
||||
if (!IsNotMoneyOrUsedTMItem(sUnknown_203B3F0->id)) {
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = -1;
|
||||
sUnknown_203B3F0->menuAction = 3;
|
||||
sUnknown_203B3F0->menuAction = INFO_ACTION;
|
||||
}
|
||||
|
||||
loopMax++;
|
||||
sUnknown_203B3F0->menuItems[loopMax].text = gCommonInfo[0];
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = 3;
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = INFO_ACTION;
|
||||
|
||||
loopMax++;
|
||||
sUnknown_203B3F0->menuItems[loopMax].text = NULL;
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = 1;
|
||||
sUnknown_203B3F0->menuItems[loopMax].menuAction = CANCEL_ACTION;
|
||||
}
|
||||
|
||||
static void sub_803A740(void)
|
||||
|
|
@ -196,13 +202,13 @@ static void sub_803A7B0(void)
|
|||
sub_8013114(&sUnknown_203B3F0->unk4C, &menuAction);
|
||||
|
||||
switch (menuAction) {
|
||||
case 2:
|
||||
case NUMBER_ACTION:
|
||||
sub_803A504(3);
|
||||
break;
|
||||
case 3:
|
||||
case INFO_ACTION:
|
||||
sub_803A504(4);
|
||||
break;
|
||||
case 1:
|
||||
case CANCEL_ACTION:
|
||||
sub_803A504(1);
|
||||
break;
|
||||
}
|
||||
|
|
@ -238,4 +244,4 @@ static void sub_803A86C(void)
|
|||
sub_803A504(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,13 @@ static EWRAM_DATA_2 unkStruct_203B3F4 *sUnknown_203B3F4 = {0};
|
|||
|
||||
#include "data/debug_menu3.h"
|
||||
|
||||
enum menuActions {
|
||||
CANCEL_ACTION = 1,
|
||||
OPEN_ACTION,
|
||||
CLOSE_ACTION,
|
||||
INFO_ACTION
|
||||
};
|
||||
|
||||
static void sub_803A924(u32 newState);
|
||||
static void sub_803A93C(void);
|
||||
static void sub_803A9AC(void);
|
||||
|
|
@ -101,7 +108,7 @@ static void sub_803A9AC(void)
|
|||
sub_8012D60(&sUnknown_203B3F4->unk4C, sUnknown_203B3F4->menuItems, 0, 0, sUnknown_203B3F4->menuAction, 2);
|
||||
break;
|
||||
case 3:
|
||||
sub_8021774(sUnknown_203B3F4->friendArea, 1, 0);
|
||||
CreateWigglytuffShopFriendAreaMenu(sUnknown_203B3F4->friendArea, TRUE, 0);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
|
|
@ -121,22 +128,22 @@ static void sub_803AA34(void)
|
|||
sUnknown_203B3F4->menuItems[0].text = sClose;
|
||||
|
||||
if (sub_803ABC8())
|
||||
sUnknown_203B3F4->menuItems[0].menuAction = 3;
|
||||
sUnknown_203B3F4->menuItems[0].menuAction = CLOSE_ACTION;
|
||||
else
|
||||
sUnknown_203B3F4->menuItems[0].menuAction = -1;
|
||||
}
|
||||
else {
|
||||
sUnknown_203B3F4->menuItems[0].text = sOpen;
|
||||
sUnknown_203B3F4->menuItems[0].menuAction = 2;
|
||||
sUnknown_203B3F4->menuItems[0].menuAction = OPEN_ACTION;
|
||||
}
|
||||
|
||||
index++;
|
||||
sUnknown_203B3F4->menuItems[index].text = gCommonInfo[0];
|
||||
sUnknown_203B3F4->menuItems[index].menuAction = 4;
|
||||
sUnknown_203B3F4->menuItems[index].menuAction = INFO_ACTION;
|
||||
|
||||
index++;
|
||||
sUnknown_203B3F4->menuItems[index].text = NULL;
|
||||
sUnknown_203B3F4->menuItems[index].menuAction = 1;
|
||||
sUnknown_203B3F4->menuItems[index].menuAction = CANCEL_ACTION;
|
||||
|
||||
sUnknown_203B3F4->menuAction = sUnknown_203B3F4->menuItems[0].menuAction;
|
||||
}
|
||||
|
|
@ -174,18 +181,18 @@ static void sub_803AB34(void)
|
|||
sub_8013114(&sUnknown_203B3F4->unk4C, &menuAction);
|
||||
|
||||
switch (menuAction) {
|
||||
case 2:
|
||||
case OPEN_ACTION:
|
||||
UnlockFriendArea(sUnknown_203B3F4->friendArea);
|
||||
sub_803A924(1);
|
||||
break;
|
||||
case 3:
|
||||
case CLOSE_ACTION:
|
||||
sub_809249C(sUnknown_203B3F4->friendArea, 1);
|
||||
sub_803A924(1);
|
||||
break;
|
||||
case 4:
|
||||
case INFO_ACTION:
|
||||
sub_803A924(3);
|
||||
break;
|
||||
case 1:
|
||||
case CANCEL_ACTION:
|
||||
sub_803A924(1);
|
||||
break;
|
||||
}
|
||||
|
|
@ -193,10 +200,10 @@ static void sub_803AB34(void)
|
|||
|
||||
static void sub_803ABAC(void)
|
||||
{
|
||||
switch (sub_80217EC()) {
|
||||
switch (HandleWigglytuffShopFriendAreaMenuInput()) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_8021830();
|
||||
CleanWigglytuffShopFriendAreaInfoMenu();
|
||||
sub_803A924(1);
|
||||
break;
|
||||
case 0:
|
||||
|
|
@ -226,4 +233,4 @@ static bool8 sub_803ABC8(void)
|
|||
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@ static EWRAM_DATA_2 unkStruct_203B3F8 *sUnknown_203B3F8 = {0};
|
|||
|
||||
#include "data/debug_menu4.h"
|
||||
|
||||
enum menuActions {
|
||||
CANCEL_ACTION = 1,
|
||||
LEVEL_ACTION = 4,
|
||||
NAME_ACTION
|
||||
};
|
||||
|
||||
static void sub_803ACD0(u32 newState);
|
||||
static void sub_803ACE8(void);
|
||||
static void sub_803AD88(void);
|
||||
|
|
@ -124,7 +130,7 @@ static void sub_803AD88(void)
|
|||
sub_803AE58();
|
||||
break;
|
||||
case 6:
|
||||
sub_801602C(2, sUnknown_203B3F8->pokemon->name);
|
||||
CreateConfirmNameMenu(2, sUnknown_203B3F8->pokemon->name);
|
||||
case 0:
|
||||
case 4:
|
||||
case 7:
|
||||
|
|
@ -154,15 +160,15 @@ static void sub_803AEB0(void)
|
|||
|
||||
loopMax = 0;
|
||||
sUnknown_203B3F8->unk90[loopMax].text = sLevel;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = 4;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = LEVEL_ACTION;
|
||||
|
||||
loopMax++;
|
||||
sUnknown_203B3F8->unk90[loopMax].text = sName;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = 5;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = NAME_ACTION;
|
||||
|
||||
loopMax++;
|
||||
sUnknown_203B3F8->unk90[loopMax].text = NULL;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = 1;
|
||||
sUnknown_203B3F8->unk90[loopMax].menuAction = CANCEL_ACTION;
|
||||
|
||||
for (i = 0; i < loopMax; i++) {
|
||||
if (sUnknown_203B3F8->unkD0[i] == 0) {
|
||||
|
|
@ -202,13 +208,13 @@ static void sub_803AF88(void)
|
|||
sub_8013114(&sUnknown_203B3F8->unk10, &menuAction);
|
||||
|
||||
switch (menuAction) {
|
||||
case 4:
|
||||
case LEVEL_ACTION:
|
||||
sub_803ACD0(5);
|
||||
break;
|
||||
case 5:
|
||||
case NAME_ACTION:
|
||||
sub_803ACD0(6);
|
||||
break;
|
||||
case 1:
|
||||
case CANCEL_ACTION:
|
||||
sub_803ACD0(2);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -241,8 +247,8 @@ static void sub_803B034(void)
|
|||
switch (sub_8016080()) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_80160D8();
|
||||
CleanConfirmNameMenu();
|
||||
sub_803ACD0(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,10 +48,10 @@ extern const u8 *const gUnknown_80FC718[];
|
|||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
|
||||
extern bool8 gCanAttackInDirection[NUM_DIRECTIONS];
|
||||
extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS];
|
||||
extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS];
|
||||
extern Entity *gPotentialTargets[NUM_DIRECTIONS];
|
||||
EWRAM_DATA bool8 gCanAttackInDirection[NUM_DIRECTIONS] = {0};
|
||||
EWRAM_DATA u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS] = {0};
|
||||
EWRAM_DATA s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS] = {0};
|
||||
EWRAM_DATA Entity *gPotentialTargets[NUM_DIRECTIONS] = {0};
|
||||
|
||||
extern void sub_8055A00(Entity *, u8, u32, u32, u32);
|
||||
extern void sub_806A9B4(Entity *, u8);
|
||||
|
|
|
|||
|
|
@ -34,10 +34,12 @@ enum ItemTargetFlag
|
|||
ITEM_TARGET_ALLY = 1 << 1
|
||||
};
|
||||
|
||||
extern s32 gNumPotentialTargets;
|
||||
extern u32 gPotentialItemTargetWeights[NUM_DIRECTIONS];
|
||||
extern u32 gPotentialItemTargetDirections[NUM_DIRECTIONS];
|
||||
extern bool8 gTargetAhead[NUM_DIRECTIONS];
|
||||
EWRAM_DATA_2 s32 gNumPotentialTargets = {0};
|
||||
|
||||
EWRAM_DATA u32 gPotentialItemTargetDirections[NUM_DIRECTIONS] = {0};
|
||||
EWRAM_DATA bool8 gTargetAhead[NUM_DIRECTIONS] = {0};
|
||||
EWRAM_DATA u32 gPotentialItemTargetWeights[NUM_DIRECTIONS] = {0};
|
||||
|
||||
extern TeamInventory *gTeamInventoryRef;
|
||||
|
||||
void sub_807360C(void)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
#include "dungeon_visibility.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8077274_1.h"
|
||||
#include "trap.h"
|
||||
|
||||
extern u8 gUnknown_202F221;
|
||||
extern u8 gUnknown_202F222;
|
||||
|
|
@ -55,7 +57,6 @@ void HandlePickUpPlayerAction(Entity *);
|
|||
void sub_8066E14(Entity * );
|
||||
void sub_807348C(void);
|
||||
void sub_80732F0(void);
|
||||
void sub_807FD84(Entity *);
|
||||
void sub_8066BD4(Entity*);
|
||||
void HandleTalkFieldAction(Entity *);
|
||||
void HandleUseMovePlayerAction(Entity *);
|
||||
|
|
@ -67,7 +68,6 @@ void HandleUseItemAction(Entity *);
|
|||
void sub_8066FA4(Entity *);
|
||||
void HandleSetItemAction(Entity *,bool8);
|
||||
void HandleUnsetItemAction(Entity *,bool8);
|
||||
void sub_807FE9C(Entity *,Position *,u32,u32);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 UseAttack(Entity *);
|
||||
void sub_8052740(u32);
|
||||
|
|
@ -79,7 +79,6 @@ void HandlePickUpAIAction(Entity *pokemon);
|
|||
void HandleThrowItemAIAction(Entity *pokemon);
|
||||
void HandleEatAIAction(Entity *pokemon);
|
||||
bool8 sub_8044B84(void);
|
||||
void sub_8046D20(void);
|
||||
extern void sub_8074094(Entity *);
|
||||
extern void sub_8071DA4(Entity *);
|
||||
extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user