Moved Kermalis's decomped functions to C

This commit is contained in:
AnonymousRandomPerson
2024-07-21 10:13:58 -04:00
parent 94f0f6c711
commit fd5bcae6d5
51 changed files with 4672 additions and 4670 deletions

File diff suppressed because it is too large Load Diff

199
asm/code_803E490.s Normal file
View File

@@ -0,0 +1,199 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803E490
sub_803E490:
push {r4,r5,lr}
sub sp, 0x8
ldr r1, _0803E4D8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bl xxx_draw_string_80524F0
bl sub_8085F78
movs r0, 0x1
bl sub_803F580
ldr r2, _0803E4DC
ldr r1, [r2]
ldr r3, _0803E4E0
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
beq _0803E4EC
ldr r4, _0803E4E4
adds r1, r4
movs r0, 0x2
strb r0, [r1]
ldr r1, [r2]
ldr r2, _0803E4E8
adds r0, r1, r2
movs r3, 0
ldrsh r0, [r0, r3]
subs r4, 0x16
adds r1, r4
movs r2, 0
ldrsh r1, [r1, r2]
bl SetBG2RegOffsets
b _0803E4FC
.align 2, 0
_0803E4D8: .4byte gUnknown_202EDD4
_0803E4DC: .4byte gDungeon
_0803E4E0: .4byte 0x0001821a
_0803E4E4: .4byte 0x00018208
_0803E4E8: .4byte 0x000181f0
_0803E4EC:
ldr r3, _0803E628
adds r1, r3
movs r0, 0x3
strb r0, [r1]
movs r0, 0
movs r1, 0
bl SetBG2RegOffsets
_0803E4FC:
ldr r4, _0803E62C
ldr r2, [r4]
ldr r5, _0803E630
adds r0, r2, r5
movs r1, 0
ldrsh r0, [r0, r1]
ldr r3, _0803E634
adds r1, r2, r3
movs r3, 0
ldrsh r1, [r1, r3]
ldr r3, _0803E638
adds r2, r3
ldr r2, [r2]
subs r1, r2
bl SetBG3RegOffsets
bl sub_806CC10
bl sub_804522C
bl sub_803F9CC
ldr r0, [r4]
adds r0, r5
bl sub_800F7D0
ldr r1, [r4]
ldrh r2, [r1, 0x12]
movs r3, 0x12
ldrsh r0, [r1, r3]
cmp r0, 0x63
bgt _0803E540
adds r0, r2, 0x1
strh r0, [r1, 0x12]
_0803E540:
ldr r0, [r4]
adds r0, r5
bl sub_800E90C
bl sub_8042E5C
ldr r0, _0803E63C
ldr r0, [r0]
cmp r0, 0
beq _0803E562
cmp r0, 0x3
beq _0803E562
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0x6
bne _0803E566
_0803E562:
bl sub_8040894
_0803E566:
bl sub_803ECE0
bl sub_803EDF0
ldr r0, _0803E62C
ldr r3, [r0]
ldr r4, _0803E644
adds r0, r3, r4
ldrb r0, [r0]
cmp r0, 0
beq _0803E5A2
ldr r1, _0803E648
adds r0, r3, r1
ldr r0, [r0]
cmp r0, 0x3
beq _0803E5A2
ldr r0, _0803E64C
ldrb r0, [r0]
ldr r1, _0803E650
ldr r2, _0803E654
ldr r2, [r2]
str r2, [sp]
movs r4, 0xBE
lsls r4, 1
adds r2, r3, r4
str r2, [sp, 0x4]
movs r2, 0xA0
movs r3, 0x20
bl sub_8004AF0
_0803E5A2:
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0xA]
bl nullsub_8
bl sub_8005180
bl nullsub_12
bl sub_80060EC
ldr r1, _0803E658
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0803E65C
ldr r0, [r0]
bl IncrementPlayTime
bl sub_800CB20
bl LoadBufferedInputs
bl CopySpritesToOam
bl nullsub_13
bl sub_8005304
bl nullsub_14
bl TransferBGPaletteBuffer
bl sub_8009908
bl xxx_call_update_bg_vram
bl sub_8040788
bl xxx_call_update_bg_sound_input
ldr r0, _0803E62C
ldr r0, [r0]
ldr r1, _0803E660
adds r0, r1
movs r1, 0
strb r1, [r0]
bl UpdateDungeonMusic
bl sub_8011860
bl sub_8040B60
movs r0, 0
bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r1, _0803E664
ldr r0, [r1]
subs r0, 0x1
str r0, [r1]
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E628: .4byte 0x00018208
_0803E62C: .4byte gDungeon
_0803E630: .4byte 0x000181f0
_0803E634: .4byte 0x000181f2
_0803E638: .4byte 0x000181fc
_0803E63C: .4byte gUnknown_202EDD0
_0803E640: .4byte gGameOptionsRef
_0803E644: .4byte 0x00018215
_0803E648: .4byte 0x0001c06c
_0803E64C: .4byte gUnknown_203B40D
_0803E650: .4byte gUnknown_202EE8C
_0803E654: .4byte gUnknown_202EDC8
_0803E658: .4byte gUnknown_202EDCC
_0803E65C: .4byte gPlayTimeRef
_0803E660: .4byte 0x00018213
_0803E664: .4byte gUnknown_202EDD4
thumb_func_end sub_803E490
@ https://decomp.me/scratch/biQXr (kermalis 100%) `void sub_803E668(u32)`
.align 2, 0

3241
asm/code_803E724.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -692,117 +692,3 @@ _08084768:
.align 2, 0
_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}
ldr r0, _080847B8
ldr r1, _080847BC
bl strcpy
movs r4, 0
_08084784:
lsls r0, r4, 24
lsrs r0, 24
bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x6
bne _080847C8
ldr r0, _080847C0
ldr r0, [r0]
ldr r2, _080847C4
adds r0, r2
ldrb r0, [r0]
ldrb r2, [r1, 0x4]
cmp r0, r2
bne _080847C8
ldrb r0, [r1, 0x1]
cmp r0, 0x2
bne _080847C8
movs r0, 0xE
ldrsh r1, [r1, r0]
ldr r0, _080847B8
bl CopyCyanMonsterNametoBuffer
b _080847CE
.align 2, 0
_080847B8: .4byte gUnknown_202E088
_080847BC: .4byte gUnknown_8107224
_080847C0: .4byte gDungeon
_080847C4: .4byte 0x00000644
_080847C8:
adds r4, 0x1
cmp r4, 0x7
ble _08084784
_080847CE:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8084778
thumb_func_start sub_80847D4
sub_80847D4:
push {r4,r5,lr}
ldr r2, _08084820
ldr r0, [r2]
ldr r1, _08084824
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r2]
ldr r2, _08084828
adds r0, r2
strb r1, [r0]
bl sub_8040A84
movs r4, 0
ldr r0, _0808482C
ldrb r0, [r0]
cmp r0, 0
beq _08084846
movs r3, 0
_080847FA:
ldr r0, _08084820
ldr r0, [r0]
ldr r5, _08084830
adds r0, r5
movs r2, 0
ldrsh r1, [r0, r2]
adds r0, r1, 0
subs r0, 0x1C
cmp r0, 0x15
bhi _08084810
movs r1, 0x1B
_08084810:
ldr r2, _0808482C
adds r0, r3, r2
ldrb r5, [r0]
cmp r1, r5
bne _08084834
bl sub_8084854
b _08084846
.align 2, 0
_08084820: .4byte gDungeon
_08084824: .4byte 0x00003a0d
_08084828: .4byte 0x0001356c
_0808482C: .4byte gUnknown_8107234
_08084830: .4byte 0x00003a14
_08084834:
adds r3, 0x8
adds r4, 0x1
ldr r0, _08084850
cmp r4, r0
bgt _08084846
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, 0
bne _080847FA
_08084846:
bl sub_8097FF8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08084850: .4byte 0x000003e6
thumb_func_end sub_80847D4
.align 2,0

73
asm/code_80847D4.s Normal file
View File

@@ -0,0 +1,73 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80847D4
sub_80847D4:
push {r4,r5,lr}
ldr r2, _08084820
ldr r0, [r2]
ldr r1, _08084824
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r2]
ldr r2, _08084828
adds r0, r2
strb r1, [r0]
bl sub_8040A84
movs r4, 0
ldr r0, _0808482C
ldrb r0, [r0]
cmp r0, 0
beq _08084846
movs r3, 0
_080847FA:
ldr r0, _08084820
ldr r0, [r0]
ldr r5, _08084830
adds r0, r5
movs r2, 0
ldrsh r1, [r0, r2]
adds r0, r1, 0
subs r0, 0x1C
cmp r0, 0x15
bhi _08084810
movs r1, 0x1B
_08084810:
ldr r2, _0808482C
adds r0, r3, r2
ldrb r5, [r0]
cmp r1, r5
bne _08084834
bl sub_8084854
b _08084846
.align 2, 0
_08084820: .4byte gDungeon
_08084824: .4byte 0x00003a0d
_08084828: .4byte 0x0001356c
_0808482C: .4byte gUnknown_8107234
_08084830: .4byte 0x00003a14
_08084834:
adds r3, 0x8
adds r4, 0x1
ldr r0, _08084850
cmp r4, r0
bgt _08084846
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, 0
bne _080847FA
_08084846:
bl sub_8097FF8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08084850: .4byte 0x000003e6
thumb_func_end sub_80847D4
.align 2,0

View File

@@ -1,942 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.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}
adds r5, r0, 0
ldr r0, _08085B7C
str r3, [r0]
cmp r3, 0
ble _08085B76
movs r6, 0x1
adds r4, r1, 0
adds r1, r5, 0
_08085B5E:
strb r6, [r1]
ldm r2!, {r0}
str r0, [r1, 0x4]
ldm r4!, {r0}
str r0, [r1, 0xC]
movs r5, 0x4
ldrsh r0, [r0, r5]
str r0, [r1, 0x8]
adds r1, 0x10
subs r3, 0x1
cmp r3, 0
bne _08085B5E
_08085B76:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_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}
mov r7, r8
push {r7}
adds r1, r0, 0
movs r0, 0
mov r8, r0
movs r7, 0
ldr r0, _08085BE4
ldr r0, [r0]
cmp r8, r0
bge _08085C3E
adds r5, r1, 0
_08085B98:
ldr r6, [r5, 0x4]
ldr r2, [r6, 0x70]
adds r3, r2, 0
ldr r4, [r5, 0xC]
ldrb r0, [r5]
cmp r0, 0
beq _08085C32
movs r1, 0x1
mov r8, r1
ldr r0, [r5, 0x8]
cmp r0, 0
bne _08085C08
adds r4, 0x8
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08085BE8
strb r0, [r5]
ldrb r1, [r4]
movs r0, 0x7
ands r0, r1
adds r1, r2, 0
adds r1, 0x46
strb r0, [r1]
movs r3, 0
ldrsh r2, [r4, r3]
adds r0, r6, 0
movs r1, 0x7
bl sub_806CDD4
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r3, 0xC
ldrsh r2, [r4, r3]
adds r0, r6, 0
bl sub_80856C8
b _08085C32
.align 2, 0
_08085BE4: .4byte gUnknown_202F3D8
_08085BE8:
movs r1, 0x4
ldrsh r0, [r4, r1]
str r0, [r5, 0x8]
str r4, [r5, 0xC]
ldrb r1, [r4]
movs r0, 0x7
ands r0, r1
adds r1, r3, 0
adds r1, 0x46
strb r0, [r1]
movs r3, 0
ldrsh r2, [r4, r3]
adds r0, r6, 0
movs r1, 0
bl sub_806CDD4
_08085C08:
ldr r0, [r5, 0x8]
subs r0, 0x1
str r0, [r5, 0x8]
ldr r1, _08085C4C
movs r2, 0
ldrsh r0, [r4, r2]
lsls r0, 2
adds r0, r1
movs r3, 0
ldrsh r1, [r0, r3]
movs r3, 0x2
ldrsh r2, [r4, r3]
muls r1, r2
lsls r1, 8
movs r3, 0x2
ldrsh r0, [r0, r3]
muls r2, r0
lsls r2, 8
adds r0, r6, 0
bl IncreaseEntityPixelPos
_08085C32:
adds r5, 0x10
adds r7, 0x1
ldr r0, _08085C50
ldr r0, [r0]
cmp r7, r0
blt _08085B98
_08085C3E:
mov r0, r8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08085C4C: .4byte gAdjacentTileOffsets
_08085C50: .4byte gUnknown_202F3D8
thumb_func_end sub_8085B80
thumb_func_start SetDungeonBGColorRGB
SetDungeonBGColorRGB:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
str r0, [sp, 0x14]
mov r10, r1
mov r9, r2
ldr r4, [sp, 0x48]
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x18]
lsls r4, 24
lsrs r4, 24
bl sub_8085E98
movs r0, 0
mov r8, r0
ldr r0, _08085E70
ldr r0, [r0]
ldr r5, [r0, 0x4]
cmp r4, 0
beq _08085CAE
ldr r1, [sp, 0x14]
cmp r1, 0
blt _08085C92
lsrs r0, r1, 31
adds r0, r1, r0
asrs r0, 1
str r0, [sp, 0x14]
_08085C92:
mov r2, r10
cmp r2, 0
blt _08085CA0
lsrs r0, r2, 31
add r0, r10
asrs r0, 1
mov r10, r0
_08085CA0:
mov r3, r9
cmp r3, 0
blt _08085CAE
lsrs r0, r3, 31
add r0, r9
asrs r0, 1
mov r9, r0
_08085CAE:
ldr r1, _08085E74
ldr r0, [sp, 0x8]
ands r0, r1
ldr r1, _08085E78
ands r0, r1
ldr r1, _08085E7C
ands r0, r1
str r0, [sp, 0x8]
ldr r0, _08085E80
ldr r2, [r0]
ldr r0, _08085E84
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
ldr r2, [sp, 0x14]
lsls r2, 16
str r2, [sp, 0x1C]
mov r3, r10
lsls r3, 16
str r3, [sp, 0x20]
mov r0, r9
lsls r0, 16
str r0, [sp, 0x24]
add r7, sp, 0xC
movs r1, 0xA0
cmp r1, 0x1
ble _08085D56
add r6, sp, 0x8
movs r4, 0xA0
subs r4, 0x1
_08085CFA:
ldrb r0, [r5]
ldr r3, [sp, 0x14]
adds r2, r0, r3
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085D10
movs r2, 0xFF
_08085D10:
cmp r1, 0xFF
ble _08085D16
movs r1, 0xFF
_08085D16:
cmp r0, 0xFF
ble _08085D1C
movs r0, 0xFF
_08085D1C:
cmp r2, 0
bge _08085D22
movs r2, 0
_08085D22:
cmp r1, 0
bge _08085D28
movs r1, 0
_08085D28:
cmp r0, 0
bge _08085D2E
movs r0, 0
_08085D2E:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
ldr r0, _08085E84
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
subs r4, 0x1
cmp r4, 0
bne _08085CFA
_08085D56:
ldr r2, _08085E88
ldr r3, [sp, 0x1C]
lsrs r0, r3, 16
ldr r1, [sp, 0x20]
orrs r0, r1
str r0, [sp, 0xC]
ldr r3, [sp, 0x24]
lsrs r1, r3, 16
ldr r0, [r7, 0x4]
ands r0, r2
orrs r0, r1
str r0, [r7, 0x4]
ldr r0, _08085E8C
ldr r1, _08085E80
ldr r3, [r1]
ldr r1, _08085E84
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
str r1, [sp]
str r7, [sp, 0x4]
movs r1, 0xA0
movs r2, 0x20
bl sub_8004C00
movs r3, 0x20
add r8, r3
ldr r5, _08085E90
add r6, sp, 0x8
movs r4, 0x20
_08085D94:
ldrb r0, [r5]
ldr r1, [sp, 0x14]
adds r2, r0, r1
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085DAA
movs r2, 0xFF
_08085DAA:
cmp r1, 0xFF
ble _08085DB0
movs r1, 0xFF
_08085DB0:
cmp r0, 0xFF
ble _08085DB6
movs r0, 0xFF
_08085DB6:
cmp r2, 0
bge _08085DBC
movs r2, 0
_08085DBC:
cmp r1, 0
bge _08085DC2
movs r1, 0
_08085DC2:
cmp r0, 0
bge _08085DC8
movs r0, 0
_08085DC8:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
ldr r7, _08085E84
ldr r3, [r7]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
subs r4, 0x1
cmp r4, 0
bne _08085D94
ldr r2, [sp, 0x18]
cmp r2, 0
beq _08085E5E
ldr r0, [r7]
ldr r3, _08085E94
adds r0, r3
ldr r0, [r0]
ldr r5, [r0, 0x4]
movs r0, 0x80
lsls r0, 1
mov r8, r0
add r6, sp, 0x8
movs r4, 0xD0
_08085E0A:
ldrb r0, [r5]
ldr r1, [sp, 0x14]
adds r2, r0, r1
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085E20
movs r2, 0xFF
_08085E20:
cmp r1, 0xFF
ble _08085E26
movs r1, 0xFF
_08085E26:
cmp r0, 0xFF
ble _08085E2C
movs r0, 0xFF
_08085E2C:
cmp r2, 0
bge _08085E32
movs r2, 0
_08085E32:
cmp r1, 0
bge _08085E38
movs r1, 0
_08085E38:
cmp r0, 0
bge _08085E3E
movs r0, 0
_08085E3E:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
mov r0, r8
add r1, sp, 0x8
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r0, 0x1
add r8, r0
subs r4, 0x1
cmp r4, 0
bne _08085E0A
_08085E5E:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08085E70: .4byte gDungeonPaletteFile
_08085E74: .4byte 0xffffff00
_08085E78: .4byte 0xffff00ff
_08085E7C: .4byte 0xff00ffff
_08085E80: .4byte gUnknown_202EDC8
_08085E84: .4byte gDungeon
_08085E88: .4byte 0xffff0000
_08085E8C: .4byte gUnknown_202EE8C
_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
ldr r0, [r0]
ldr r1, _08085EAC
adds r0, r1
movs r1, 0
strb r1, [r0]
bx lr
.align 2, 0
_08085EA8: .4byte gDungeon
_08085EAC: .4byte 0x00018215
thumb_func_end sub_8085E98
thumb_func_start sub_8085EB0
sub_8085EB0:
ldr r0, _08085EC0
ldr r0, [r0]
ldr r1, _08085EC4
adds r0, r1
movs r1, 0x1
strb r1, [r0]
bx lr
.align 2, 0
_08085EC0: .4byte gDungeon
_08085EC4: .4byte 0x00018215
thumb_func_end sub_8085EB0
thumb_func_start sub_8085EC8
sub_8085EC8:
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x28
adds r4, r0, 0
mov r8, r1
mov r9, r2
adds r6, r3, 0
ldr r5, [sp, 0x40]
lsls r4, 16
asrs r4, 16
lsls r5, 24
lsrs r5, 24
adds r0, r4, 0
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
str r4, [sp]
mov r0, r8
str r0, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
mov r1, sp
ldrh r0, [r6]
movs r2, 0
strh r0, [r1, 0xC]
ldrh r0, [r6, 0x2]
strh r0, [r1, 0xE]
mov r0, sp
strh r2, [r0, 0x10]
strh r2, [r0, 0x12]
ldr r0, _08085F3C
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _08085F40
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
cmp r5, 0
beq _08085F2E
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_08085F2E:
add sp, 0x28
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085F3C: .4byte 0x0000ffff
_08085F40: .4byte gUnknown_8107374
thumb_func_end sub_8085EC8
thumb_func_start sub_8085F44
sub_8085F44:
push {r4,lr}
adds r4, r0, 0
b _08085F5C
_08085F4A:
ldr r0, _08085F70
ldr r0, [r0]
ldr r1, _08085F74
adds r0, r1
bl sub_800E90C
movs r0, 0x46
bl sub_803E46C
_08085F5C:
adds r0, r4, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _08085F4A
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085F70: .4byte gDungeon
_08085F74: .4byte 0x000181f0
thumb_func_end sub_8085F44
thumb_func_start sub_8085F78
sub_8085F78:
push {lr}
ldr r0, _08085F94
ldr r0, [r0]
ldr r1, _08085F98
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x3C
bls _08085F8A
b _080860A4
_08085F8A:
lsls r0, 2
ldr r1, _08085F9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085F94: .4byte gDungeon
_08085F98: .4byte 0x00003a0d
_08085F9C: .4byte _08085FA0
.align 2, 0
_08085FA0:
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _08086094
.4byte _08086094
.4byte _08086094
.4byte _0808609A
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A0
.4byte _080860A0
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
_08086094:
bl sub_8088848
b _080860A4
_0808609A:
bl sub_8088EE8
b _080860A4
_080860A0:
bl sub_808A718
_080860A4:
pop {r0}
bx r0
thumb_func_end sub_8085F78
thumb_func_start sub_80860A8
sub_80860A8:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r0, _08086108
ldr r2, [r0]
movs r3, 0x1
_080860B6:
ldrb r1, [r2]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080860C6
ldrb r0, [r2, 0x2]
cmp r0, r6
beq _08086104
_080860C6:
adds r2, 0x4
adds r5, 0x1
cmp r5, 0x13
ble _080860B6
movs r5, 0
_080860D0:
ldr r0, _0808610C
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _08086110
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08086114
ldr r2, [r4, 0x70]
adds r0, r2, 0
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08086114
adds r0, r2, 0
adds r0, 0x62
ldrb r0, [r0]
cmp r0, r6
bne _08086114
_08086104:
movs r0, 0x1
b _0808611C
.align 2, 0
_08086108: .4byte gTeamInventoryRef
_0808610C: .4byte gDungeon
_08086110: .4byte 0x0001357c
_08086114:
adds r5, 0x1
cmp r5, 0x3
ble _080860D0
movs r0, 0
_0808611C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80860A8
thumb_func_start sub_8086124
sub_8086124:
ldr r0, [r0, 0x70]
movs r2, 0xB0
lsls r2, 1
adds r0, r2
strb r1, [r0]
bx lr
thumb_func_end sub_8086124
thumb_func_start sub_8086130
sub_8086130:
push {lr}
movs r0, 0x3C
bl DungeonFadeOutBGM
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
ldr r0, _08086194
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _08086198
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _0808619C
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A0
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A4
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
pop {r0}
bx r0
.align 2, 0
_08086194: .4byte gUnknown_810665C
_08086198: .4byte gUnknown_810668C
_0808619C: .4byte gUnknown_81066D4
_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}
movs r1, 0
movs r2, 0x8
bl sub_806CDD4
pop {r0}
bx r0
thumb_func_end sub_80861A8
thumb_func_start sub_80861B8
sub_80861B8:
push {r4,r5,lr}
adds r4, r1, 0
lsls r4, 24
lsrs r4, 24
ldr r5, [r0, 0x70]
adds r1, r4, 0
bl sub_806CDD4
adds r5, 0xFE
strb r4, [r5]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80861B8
thumb_func_start sub_80861D4
sub_80861D4:
push {r4,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
bl sub_806CDD4
adds r0, r4, 0
bl sub_80861EC
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80861D4
thumb_func_start sub_80861EC
sub_80861EC:
ldr r0, [r0, 0x70]
adds r0, 0xFE
movs r1, 0x63
strb r1, [r0]
bx lr
thumb_func_end sub_80861EC
thumb_func_start sub_80861F8
sub_80861F8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
adds r6, r1, 0
lsls r0, 16
asrs r0, 16
adds r5, r0, 0
lsls r2, 24
lsrs r2, 24
mov r10, r2
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
ldr r0, [r6, 0x70]
mov r8, r0
movs r1, 0
mov r9, r1
str r1, [sp, 0x28]
adds r0, r5, 0
bl sub_800E700
adds r7, r0, 0
add r4, sp, 0x28
movs r2, 0x1
negs r2, r2
cmp r7, r2
beq _0808624A
adds r1, r6, 0
adds r1, 0x28
lsls r2, r7, 24
lsrs r2, 24
adds r0, r4, 0
bl sub_800569C
_0808624A:
str r5, [sp]
mov r3, r9
str r3, [sp, 0x4]
mov r0, r8
adds r0, 0x46
ldrb r0, [r0]
str r0, [sp, 0x8]
mov r1, sp
ldr r0, [r6, 0xC]
cmp r0, 0
bge _08086262
adds r0, 0xFF
_08086262:
asrs r0, 8
strh r0, [r1, 0xC]
mov r1, sp
ldr r0, [r6, 0x10]
cmp r0, 0
bge _08086270
adds r0, 0xFF
_08086270:
asrs r0, 8
strh r0, [r1, 0xE]
mov r1, sp
ldrh r0, [r4]
strh r0, [r1, 0x10]
add r0, sp, 0x28
ldrh r0, [r0, 0x2]
strh r0, [r1, 0x12]
str r7, [sp, 0x14]
ldr r0, _080862B4
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _080862B8
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
mov r4, r10
cmp r4, 0
beq _080862A2
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_080862A2:
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080862B4: .4byte 0x0000ffff
_080862B8: .4byte gUnknown_8107380
thumb_func_end sub_80861F8
.align 2,0

420
asm/code_8085B80.s Normal file
View File

@@ -0,0 +1,420 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
@ https://decomp.me/scratch/lb4jF (kermalis 87.53%) `bool8 sub_8085B80(struct_8085B80 *)`
thumb_func_start sub_8085B80
sub_8085B80:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r1, r0, 0
movs r0, 0
mov r8, r0
movs r7, 0
ldr r0, _08085BE4
ldr r0, [r0]
cmp r8, r0
bge _08085C3E
adds r5, r1, 0
_08085B98:
ldr r6, [r5, 0x4]
ldr r2, [r6, 0x70]
adds r3, r2, 0
ldr r4, [r5, 0xC]
ldrb r0, [r5]
cmp r0, 0
beq _08085C32
movs r1, 0x1
mov r8, r1
ldr r0, [r5, 0x8]
cmp r0, 0
bne _08085C08
adds r4, 0x8
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08085BE8
strb r0, [r5]
ldrb r1, [r4]
movs r0, 0x7
ands r0, r1
adds r1, r2, 0
adds r1, 0x46
strb r0, [r1]
movs r3, 0
ldrsh r2, [r4, r3]
adds r0, r6, 0
movs r1, 0x7
bl sub_806CDD4
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r3, 0xC
ldrsh r2, [r4, r3]
adds r0, r6, 0
bl sub_80856C8
b _08085C32
.align 2, 0
_08085BE4: .4byte gUnknown_202F3D8
_08085BE8:
movs r1, 0x4
ldrsh r0, [r4, r1]
str r0, [r5, 0x8]
str r4, [r5, 0xC]
ldrb r1, [r4]
movs r0, 0x7
ands r0, r1
adds r1, r3, 0
adds r1, 0x46
strb r0, [r1]
movs r3, 0
ldrsh r2, [r4, r3]
adds r0, r6, 0
movs r1, 0
bl sub_806CDD4
_08085C08:
ldr r0, [r5, 0x8]
subs r0, 0x1
str r0, [r5, 0x8]
ldr r1, _08085C4C
movs r2, 0
ldrsh r0, [r4, r2]
lsls r0, 2
adds r0, r1
movs r3, 0
ldrsh r1, [r0, r3]
movs r3, 0x2
ldrsh r2, [r4, r3]
muls r1, r2
lsls r1, 8
movs r3, 0x2
ldrsh r0, [r0, r3]
muls r2, r0
lsls r2, 8
adds r0, r6, 0
bl IncreaseEntityPixelPos
_08085C32:
adds r5, 0x10
adds r7, 0x1
ldr r0, _08085C50
ldr r0, [r0]
cmp r7, r0
blt _08085B98
_08085C3E:
mov r0, r8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08085C4C: .4byte gAdjacentTileOffsets
_08085C50: .4byte gUnknown_202F3D8
thumb_func_end sub_8085B80
thumb_func_start SetDungeonBGColorRGB
SetDungeonBGColorRGB:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
str r0, [sp, 0x14]
mov r10, r1
mov r9, r2
ldr r4, [sp, 0x48]
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x18]
lsls r4, 24
lsrs r4, 24
bl sub_8085E98
movs r0, 0
mov r8, r0
ldr r0, _08085E70
ldr r0, [r0]
ldr r5, [r0, 0x4]
cmp r4, 0
beq _08085CAE
ldr r1, [sp, 0x14]
cmp r1, 0
blt _08085C92
lsrs r0, r1, 31
adds r0, r1, r0
asrs r0, 1
str r0, [sp, 0x14]
_08085C92:
mov r2, r10
cmp r2, 0
blt _08085CA0
lsrs r0, r2, 31
add r0, r10
asrs r0, 1
mov r10, r0
_08085CA0:
mov r3, r9
cmp r3, 0
blt _08085CAE
lsrs r0, r3, 31
add r0, r9
asrs r0, 1
mov r9, r0
_08085CAE:
ldr r1, _08085E74
ldr r0, [sp, 0x8]
ands r0, r1
ldr r1, _08085E78
ands r0, r1
ldr r1, _08085E7C
ands r0, r1
str r0, [sp, 0x8]
ldr r0, _08085E80
ldr r2, [r0]
ldr r0, _08085E84
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
ldr r2, [sp, 0x14]
lsls r2, 16
str r2, [sp, 0x1C]
mov r3, r10
lsls r3, 16
str r3, [sp, 0x20]
mov r0, r9
lsls r0, 16
str r0, [sp, 0x24]
add r7, sp, 0xC
movs r1, 0xA0
cmp r1, 0x1
ble _08085D56
add r6, sp, 0x8
movs r4, 0xA0
subs r4, 0x1
_08085CFA:
ldrb r0, [r5]
ldr r3, [sp, 0x14]
adds r2, r0, r3
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085D10
movs r2, 0xFF
_08085D10:
cmp r1, 0xFF
ble _08085D16
movs r1, 0xFF
_08085D16:
cmp r0, 0xFF
ble _08085D1C
movs r0, 0xFF
_08085D1C:
cmp r2, 0
bge _08085D22
movs r2, 0
_08085D22:
cmp r1, 0
bge _08085D28
movs r1, 0
_08085D28:
cmp r0, 0
bge _08085D2E
movs r0, 0
_08085D2E:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
ldr r0, _08085E84
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
subs r4, 0x1
cmp r4, 0
bne _08085CFA
_08085D56:
ldr r2, _08085E88
ldr r3, [sp, 0x1C]
lsrs r0, r3, 16
ldr r1, [sp, 0x20]
orrs r0, r1
str r0, [sp, 0xC]
ldr r3, [sp, 0x24]
lsrs r1, r3, 16
ldr r0, [r7, 0x4]
ands r0, r2
orrs r0, r1
str r0, [r7, 0x4]
ldr r0, _08085E8C
ldr r1, _08085E80
ldr r3, [r1]
ldr r1, _08085E84
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
str r1, [sp]
str r7, [sp, 0x4]
movs r1, 0xA0
movs r2, 0x20
bl sub_8004C00
movs r3, 0x20
add r8, r3
ldr r5, _08085E90
add r6, sp, 0x8
movs r4, 0x20
_08085D94:
ldrb r0, [r5]
ldr r1, [sp, 0x14]
adds r2, r0, r1
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085DAA
movs r2, 0xFF
_08085DAA:
cmp r1, 0xFF
ble _08085DB0
movs r1, 0xFF
_08085DB0:
cmp r0, 0xFF
ble _08085DB6
movs r0, 0xFF
_08085DB6:
cmp r2, 0
bge _08085DBC
movs r2, 0
_08085DBC:
cmp r1, 0
bge _08085DC2
movs r1, 0
_08085DC2:
cmp r0, 0
bge _08085DC8
movs r0, 0
_08085DC8:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
ldr r7, _08085E84
ldr r3, [r7]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
mov r0, r8
add r1, sp, 0x8
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r1, 0x1
add r8, r1
subs r4, 0x1
cmp r4, 0
bne _08085D94
ldr r2, [sp, 0x18]
cmp r2, 0
beq _08085E5E
ldr r0, [r7]
ldr r3, _08085E94
adds r0, r3
ldr r0, [r0]
ldr r5, [r0, 0x4]
movs r0, 0x80
lsls r0, 1
mov r8, r0
add r6, sp, 0x8
movs r4, 0xD0
_08085E0A:
ldrb r0, [r5]
ldr r1, [sp, 0x14]
adds r2, r0, r1
ldrb r0, [r5, 0x1]
mov r3, r10
adds r1, r0, r3
ldrb r0, [r5, 0x2]
add r0, r9
cmp r2, 0xFF
ble _08085E20
movs r2, 0xFF
_08085E20:
cmp r1, 0xFF
ble _08085E26
movs r1, 0xFF
_08085E26:
cmp r0, 0xFF
ble _08085E2C
movs r0, 0xFF
_08085E2C:
cmp r2, 0
bge _08085E32
movs r2, 0
_08085E32:
cmp r1, 0
bge _08085E38
movs r1, 0
_08085E38:
cmp r0, 0
bge _08085E3E
movs r0, 0
_08085E3E:
strb r2, [r6]
strb r1, [r6, 0x1]
strb r0, [r6, 0x2]
ldr r0, _08085E80
ldr r2, [r0]
mov r0, r8
add r1, sp, 0x8
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r0, 0x1
add r8, r0
subs r4, 0x1
cmp r4, 0
bne _08085E0A
_08085E5E:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08085E70: .4byte gDungeonPaletteFile
_08085E74: .4byte 0xffffff00
_08085E78: .4byte 0xffff00ff
_08085E7C: .4byte 0xff00ffff
_08085E80: .4byte gUnknown_202EDC8
_08085E84: .4byte gDungeon
_08085E88: .4byte 0xffff0000
_08085E8C: .4byte gUnknown_202EE8C
_08085E90: .4byte gUnknown_202ECA4
_08085E94: .4byte 0x000181e4
thumb_func_end SetDungeonBGColorRGB

331
asm/code_8085EB0.s Normal file
View File

@@ -0,0 +1,331 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8085EB0
sub_8085EB0:
ldr r0, _08085EC0
ldr r0, [r0]
ldr r1, _08085EC4
adds r0, r1
movs r1, 0x1
strb r1, [r0]
bx lr
.align 2, 0
_08085EC0: .4byte gDungeon
_08085EC4: .4byte 0x00018215
thumb_func_end sub_8085EB0
thumb_func_start sub_8085EC8
sub_8085EC8:
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x28
adds r4, r0, 0
mov r8, r1
mov r9, r2
adds r6, r3, 0
ldr r5, [sp, 0x40]
lsls r4, 16
asrs r4, 16
lsls r5, 24
lsrs r5, 24
adds r0, r4, 0
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
str r4, [sp]
mov r0, r8
str r0, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
mov r1, sp
ldrh r0, [r6]
movs r2, 0
strh r0, [r1, 0xC]
ldrh r0, [r6, 0x2]
strh r0, [r1, 0xE]
mov r0, sp
strh r2, [r0, 0x10]
strh r2, [r0, 0x12]
ldr r0, _08085F3C
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _08085F40
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
cmp r5, 0
beq _08085F2E
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_08085F2E:
add sp, 0x28
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085F3C: .4byte 0x0000ffff
_08085F40: .4byte gUnknown_8107374
thumb_func_end sub_8085EC8
thumb_func_start sub_8085F44
sub_8085F44:
push {r4,lr}
adds r4, r0, 0
b _08085F5C
_08085F4A:
ldr r0, _08085F70
ldr r0, [r0]
ldr r1, _08085F74
adds r0, r1
bl sub_800E90C
movs r0, 0x46
bl sub_803E46C
_08085F5C:
adds r0, r4, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _08085F4A
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085F70: .4byte gDungeon
_08085F74: .4byte 0x000181f0
thumb_func_end sub_8085F44
thumb_func_start sub_8085F78
sub_8085F78:
push {lr}
ldr r0, _08085F94
ldr r0, [r0]
ldr r1, _08085F98
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x3C
bls _08085F8A
b _080860A4
_08085F8A:
lsls r0, 2
ldr r1, _08085F9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085F94: .4byte gDungeon
_08085F98: .4byte 0x00003a0d
_08085F9C: .4byte _08085FA0
.align 2, 0
_08085FA0:
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _08086094
.4byte _08086094
.4byte _08086094
.4byte _0808609A
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A0
.4byte _080860A0
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
_08086094:
bl sub_8088848
b _080860A4
_0808609A:
bl sub_8088EE8
b _080860A4
_080860A0:
bl sub_808A718
_080860A4:
pop {r0}
bx r0
thumb_func_end sub_8085F78
thumb_func_start sub_80860A8
sub_80860A8:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r0, _08086108
ldr r2, [r0]
movs r3, 0x1
_080860B6:
ldrb r1, [r2]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080860C6
ldrb r0, [r2, 0x2]
cmp r0, r6
beq _08086104
_080860C6:
adds r2, 0x4
adds r5, 0x1
cmp r5, 0x13
ble _080860B6
movs r5, 0
_080860D0:
ldr r0, _0808610C
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _08086110
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08086114
ldr r2, [r4, 0x70]
adds r0, r2, 0
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08086114
adds r0, r2, 0
adds r0, 0x62
ldrb r0, [r0]
cmp r0, r6
bne _08086114
_08086104:
movs r0, 0x1
b _0808611C
.align 2, 0
_08086108: .4byte gTeamInventoryRef
_0808610C: .4byte gDungeon
_08086110: .4byte 0x0001357c
_08086114:
adds r5, 0x1
cmp r5, 0x3
ble _080860D0
movs r0, 0
_0808611C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80860A8
thumb_func_start sub_8086124
sub_8086124:
ldr r0, [r0, 0x70]
movs r2, 0xB0
lsls r2, 1
adds r0, r2
strb r1, [r0]
bx lr
thumb_func_end sub_8086124
thumb_func_start sub_8086130
sub_8086130:
push {lr}
movs r0, 0x3C
bl DungeonFadeOutBGM
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
ldr r0, _08086194
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _08086198
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _0808619C
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A0
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A4
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
pop {r0}
bx r0
.align 2, 0
_08086194: .4byte gUnknown_810665C
_08086198: .4byte gUnknown_810668C
_0808619C: .4byte gUnknown_81066D4
_080861A0: .4byte gUnknown_81066F0
_080861A4: .4byte gUnknown_810671C
thumb_func_end sub_8086130

144
asm/code_80861B8.s Normal file
View File

@@ -0,0 +1,144 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80861B8
sub_80861B8:
push {r4,r5,lr}
adds r4, r1, 0
lsls r4, 24
lsrs r4, 24
ldr r5, [r0, 0x70]
adds r1, r4, 0
bl sub_806CDD4
adds r5, 0xFE
strb r4, [r5]
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80861B8
thumb_func_start sub_80861D4
sub_80861D4:
push {r4,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
bl sub_806CDD4
adds r0, r4, 0
bl sub_80861EC
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80861D4
thumb_func_start sub_80861EC
sub_80861EC:
ldr r0, [r0, 0x70]
adds r0, 0xFE
movs r1, 0x63
strb r1, [r0]
bx lr
thumb_func_end sub_80861EC
thumb_func_start sub_80861F8
sub_80861F8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
adds r6, r1, 0
lsls r0, 16
asrs r0, 16
adds r5, r0, 0
lsls r2, 24
lsrs r2, 24
mov r10, r2
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
ldr r0, [r6, 0x70]
mov r8, r0
movs r1, 0
mov r9, r1
str r1, [sp, 0x28]
adds r0, r5, 0
bl sub_800E700
adds r7, r0, 0
add r4, sp, 0x28
movs r2, 0x1
negs r2, r2
cmp r7, r2
beq _0808624A
adds r1, r6, 0
adds r1, 0x28
lsls r2, r7, 24
lsrs r2, 24
adds r0, r4, 0
bl sub_800569C
_0808624A:
str r5, [sp]
mov r3, r9
str r3, [sp, 0x4]
mov r0, r8
adds r0, 0x46
ldrb r0, [r0]
str r0, [sp, 0x8]
mov r1, sp
ldr r0, [r6, 0xC]
cmp r0, 0
bge _08086262
adds r0, 0xFF
_08086262:
asrs r0, 8
strh r0, [r1, 0xC]
mov r1, sp
ldr r0, [r6, 0x10]
cmp r0, 0
bge _08086270
adds r0, 0xFF
_08086270:
asrs r0, 8
strh r0, [r1, 0xE]
mov r1, sp
ldrh r0, [r4]
strh r0, [r1, 0x10]
add r0, sp, 0x28
ldrh r0, [r0, 0x2]
strh r0, [r1, 0x12]
str r7, [sp, 0x14]
ldr r0, _080862B4
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _080862B8
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
mov r4, r10
cmp r4, 0
beq _080862A2
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_080862A2:
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080862B4: .4byte 0x0000ffff
_080862B8: .4byte gUnknown_8107380
thumb_func_end sub_80861F8
.align 2,0

View File

@@ -15,6 +15,7 @@ struct unkStructFor800561C
extern s16 *gUnknown_203B078;
void nullsub_7(s16 *);
void nullsub_8(u32);
void nullsub_9(void);
void nullsub_10(bool8);
void nullsub_12(void);

6
include/code_803E46C.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_CODE_803E46C_H
#define GUARD_CODE_803E46C_H
void sub_803E46C(u32);
#endif

7
include/code_803E668.h Normal file
View File

@@ -0,0 +1,7 @@
#ifndef GUARD_CODE_803E668_H
#define GUARD_CODE_803E668_H
void sub_803E668(u32);
void sub_803E708(s32, u32);
#endif

6
include/code_8084778.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_CODE_8084778_H
#define GUARD_CODE_8084778_H
void sub_8084778(void);
#endif

6
include/code_8085E98.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_CODE_8085E98_H
#define GUARD_CODE_8085E98_H
void sub_8085E98(void);
#endif

8
include/code_80861A8.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef GUARD_CODE_80861A8_H
#define GUARD_CODE_80861A8_H
#include "structs/dungeon_entity.h"
void sub_80861A8(Entity *a0);
#endif

View File

@@ -4,6 +4,12 @@
#include "structs/dungeon_entity.h"
typedef void (*DungeonCallback)(Entity *);
typedef struct struct_8085B80 {
u8 unk0;
Entity *unk4;
s32 unk8;
s16 *unkC;
} struct_8085B80;
Entity *xxx_call_GetLeader(void);
Entity *GetPartnerEntity(void);

View File

@@ -36,7 +36,6 @@ void InitializeRecruitedPokemon(void);
// These two need to be overridden in status_actions.c
// Uncomment when fixed
//void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index);
//u8 GetBodySize(s16 index);

View File

@@ -4,6 +4,7 @@
#include "pokemon.h"
bool8 ComparePokemonNames(s16, s16);
void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index);
void PrintPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon);
void GetPokemonLevelData(LevelData* a1, s16 _id, s32 level);
const u8* DecompressMoveID(const u8* a1, u16* moveID);

View File

@@ -150,17 +150,17 @@ typedef struct Dungeon
s32 unk690;
s32 unk694;
u8 fill698;
u8 unk699;
u8 unk699;
u8 fill69A[0x69C - 0x69A];
EntityInfo unk69C[4];
EntityInfo unkEBC[1]; // Unsure about the size... See sub_8082A08()
u8 fill10C4[0x363C - 0x10C4];
u8 fill10C4[0x363C - 0x10C4];
/* 0x363C */ u8 expYieldRankings[NUM_MONSTERS];
u8 fill37D9[0x37F0 - 0x37D9];
/* 0x37F0 */ u32 unk37F0;
/* 0x37F4 */ s32 unk37F4;
/* 0x37F8 */ bool8 plusIsActive[2]; // Index 0: Enemy , Index 1: Team
/* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team
/* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team
/* 0x37FC */ bool8 decoyActive;
u8 fill37FD;
/* 0x37FE */ bool8 deoxysDefeat; // Flag set for deoxys in Meteor Cave
@@ -247,7 +247,9 @@ typedef struct Dungeon
u8 unk18211;
u8 unk18212;
u8 unk18213;
u8 fill18214[3];
u8 fill18214;
u8 unk18215;
u8 fill18216;
u8 unk18217;
u8 fill18218[0x1821A - 0x18218];
u8 unk1821A;

View File

@@ -202,6 +202,10 @@ SECTIONS {
src/personality_test2.o(.text);
src/code_803D0D8.o(.text);
asm/code_803D110.o(.text);
src/code_803E46C.o(.text);
asm/code_803E490.o(.text);
src/code_803E668.o(.text);
asm/code_803E724.o(.text);
src/code_8040094.o(.text);
asm/code_8040094.o(.text);
src/code_8041AD0.o(.text);
@@ -290,10 +294,16 @@ SECTIONS {
src/dungeon_random.o(.text);
src/code_808417C.o(.text);
asm/code_808417C.o(.text);
src/code_8084778.o(.text);
asm/code_80847D4.o(.text);
src/code_80848F0.o(.text);
asm/code_80848F0.o(.text);
src/dungeon_util_1.o(.text);
asm/code_8085B0C.o(.text);
asm/code_8085B80.o(.text);
src/code_8085E98.o(.text);
asm/code_8085EB0.o(.text);
src/code_80861A8.o(.text);
asm/code_80861B8.o(.text);
src/code_80869E4.o(.text);
src/code_8086A3C.o(.text);
asm/code_8086A3C.o(.text);

View File

@@ -25,8 +25,8 @@
#include "play_time.h"
#include "pokemon.h"
#include "rescue_team_info.h"
#include "save.h"
#include "save_read.h"
#include "save.h"
#include "sprite.h"
#include "text1.h"
#include "text2.h"
@@ -41,8 +41,6 @@ extern void sub_80095CC(u32, u32);
extern void nullsub_33(void);
extern u32 sub_80009D0(u32);
extern void nullsub_8(u32);
extern void sub_80060EC(void);
extern void xxx_call_update_bg_vram(void);
extern u32 gUnknown_203B03C;

View File

@@ -170,7 +170,7 @@ void sub_8005770(s32 param_1, u8 *colorArray, s32 a1, u8 *a2)
void nullsub_7(s16 *a0)
{}
void nullsub_8(void)
void nullsub_8(u32 a0)
{}
void nullsub_9(void)

View File

@@ -38,7 +38,6 @@ 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);
extern bool8 sub_80111C4();
extern void sub_8010F28();

View File

@@ -8,7 +8,6 @@
#include "game_options.h"
#include "sprite.h"
extern void nullsub_8(u8);
extern void xxx_call_update_bg_vram();
void sub_8012A18()

16
src/code_803E46C.c Normal file
View File

@@ -0,0 +1,16 @@
#include "global.h"
#include "code_803E46C.h"
#include "code_803E668.h"
extern u8 gUnknown_203B40C;
extern void sub_803E490(u32);
void sub_803E46C(u32 a0)
{
if (gUnknown_203B40C != 0)
sub_803E490(a0);
else
sub_803E668(a0);
}

54
src/code_803E668.c Normal file
View File

@@ -0,0 +1,54 @@
#include "global.h"
#include "code_803E668.h"
#include "bg_palette_buffer.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "code_80118A4.h"
#include "code_803E46C.h"
#include "game_options.h"
#include "input.h"
#include "play_time.h"
#include "sprite.h"
#include "structs/str_dungeon.h"
extern s32 gUnknown_202EDCC;
extern s32 gUnknown_202EDD4;
extern void xxx_call_update_bg_vram(void);
void sub_803E668(u32 a0)
{
gUnknown_202EDD4++;
nullsub_8(gGameOptionsRef->unkA);
sub_8005180();
nullsub_12();
sub_8005838(NULL, 0);
sub_80060EC();
gUnknown_202EDCC++;
IncrementPlayTime(gPlayTimeRef);
sub_800CB20();
LoadBufferedInputs();
CopySpritesToOam();
nullsub_13();
sub_8005304();
nullsub_14();
TransferBGPaletteBuffer();
sub_8009908();
xxx_call_update_bg_vram();
xxx_call_update_bg_sound_input();
gDungeon->unk18213 = 0;
sub_8011860();
ResetSprites(FALSE);
nullsub_10(FALSE);
gUnknown_202EDD4--;
}
void sub_803E708(s32 a0, u32 a1)
{
while (a0 != 0) {
sub_803E46C(a1);
a0--;
}
}

View File

@@ -1,14 +1,16 @@
#include "global.h"
#include "code_806CD90.h"
#include "code_800E9A8.h"
#include "code_803E46C.h"
#include "code_804267C.h"
#include "code_806CD90.h"
#include "constants/direction.h"
#include "constants/status.h"
#include "constants/type.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "items.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
// size: 0xC
struct unkStruct_80420E8
@@ -66,10 +68,8 @@ extern u8 sub_800E9FC(u8);
extern void sub_800DBBC(void);
extern void sub_803EA10(void);
extern void sub_8042E98(void);
extern void sub_803E46C(u32);
extern void sub_800EE5C(u32);
extern void sub_800EF64(void);
extern bool8 sub_800E9A8(s32);
extern u32 sub_800E890(unkStruct_80416E0 *);
u32 sub_8041764(unkStruct_80416E0 *param_1, bool8 param_2);

View File

@@ -1,5 +1,8 @@
#include "global.h"
#include "code_804267C.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "code_806CD90.h"
#include "dungeon.h"
@@ -18,8 +21,6 @@ extern const u32 gUnknown_80F680C[8];
extern const u16 gUnknown_80F682C[8];
extern const u8 *gPtrFeralFoundItemMessage[];
extern void sub_803E46C(u32);
extern void sub_803E708(u32 r0, u32 r1);
extern void sub_8040238(void);
extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2);
extern void sub_804178C(u32);

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
#include "code_8077274_1.h"
@@ -115,7 +116,6 @@ extern void sub_8078A58(Entity *, Entity *, s16, u32);
extern s32 sub_8042520(Entity *);
Entity *sub_80696FC(Entity *);
extern void sub_80943A0(void*, s32);
extern void sub_803E708(u32 r0, u32 r1);
extern void sub_806A7E8(EntityInfo *, s32);
extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32);

View File

@@ -1,5 +1,10 @@
#include "global.h"
#include "code_800E9A8.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_804267C.h"
#include "code_8045A00.h"
#include "code_80861A8.h"
#include "code_806CD90.h"
#include "code_80869E4.h"
#include "constants/bg_music.h"
@@ -314,16 +319,13 @@ extern const u8 gUnknown_81058A8[];
extern const u8 gUnknown_81074FC[];
extern bool8 sub_800E9A8(s32);
extern void sub_800DC14(u32);
extern void sub_8086A3C(Entity *r0);
extern void sub_8068FE0(Entity *, u32, u32);
extern void sub_803E708(u32, u32);
extern void sub_8086448(void);
extern void sub_8042B0C(Entity *);
extern void sub_803E708(u32, u32);
extern u8 sub_806FD18(Entity *);
extern void sub_80861D4(Entity *, u32, s32 direction);
extern void sub_806FDF4(Entity *, Entity *, Entity **);
@@ -362,7 +364,6 @@ extern void sub_806BFC0(EntityInfo *, u32);
extern void sub_808BBA8(Entity * );
extern void sub_8041888(u32);
extern void sub_80861B8(Entity *, u32, u32);
extern void sub_803E708(u32, u32);
extern void DisplayDungeonDialogue(const u8 *r0);
extern u32 sub_80861F8(u32, Entity *, u32);
@@ -382,10 +383,8 @@ extern void sub_80421C0(Entity *, u32);
extern void sub_808B1CC(u8);
extern void sub_80464C8(Entity *, u32 *, Item *);
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
extern void sub_803E46C(u32);
extern u32 sub_8085EC8(u32, u32, u32, Position *, u32);
extern void sub_80426C8(u32, u32);
extern void sub_807EAA0(u32, u32);
extern void CreateJirachiWishWarpTile(void);
@@ -438,7 +437,6 @@ void ZapdosDropInEffect(Entity *param_1);
void ZapdosScreenFlash(int param_1);
extern s32 sub_8052C68(u32, const u8 *, const u8 *, u32);
extern void sub_80861A8(Entity *);
extern void sub_8045C28(Item *, u8 , u8 *);
extern void EnableJirachiWishWarpTile(void);
extern void sub_808BB3C(Position *);

View File

@@ -1,4 +1,6 @@
#include "global.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "constants/ability.h"
#include "constants/move_id.h"
@@ -42,8 +44,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_803E46C(u32);
extern void sub_803E708(u32 r0, u32 r1);
void sub_8069E0C(Entity *pokemon)
{

View File

@@ -1,21 +1,20 @@
#include "global.h"
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_803E46C.h"
#include "code_805D8C8.h"
#include "constants/direction.h"
#include "constants/status.h"
#include "structs/str_dungeon.h"
#include "dungeon_util.h"
#include "pokemon.h"
#include "pokemon_mid.h"
#include "pokemon.h"
#include "random.h"
#include "sprite.h"
#include "structs/str_dungeon.h"
#include "tile_types.h"
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);
void sub_806CC10(void)
{
EntityInfo *entityInfo;
@@ -176,7 +175,7 @@ void sub_806CF18(Entity *entity)
if (!EntityExists(entity))
return;
entityInfo = entity->info;
for (i = 0; i < 100; i++) {
sub_803E46C(33);

View File

@@ -1,15 +1,16 @@
#include "global.h"
#include "structs/dungeon_entity.h"
#include "structs/map.h"
#include "structs/str_pokemon.h"
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "dungeon_map_access.h"
#include "dungeon_movement.h"
#include "dungeon_random.h"
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "moves.h"
#include "pokemon_mid.h"
#include "pokemon_mid.h"
#include "status_checks_1.h"
#include "structs/dungeon_entity.h"
#include "structs/map.h"
#include "structs/str_pokemon.h"
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DFE8[];
@@ -35,8 +36,6 @@ void sub_8042A44(Entity *r0);
void sub_8083D78(void);
extern bool8 sub_803D930(u32);
void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index);
void sub_8072AC8(s16 *param_1, s16 species, s32 param_3)
{
const u8 *levelUpMoves;

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "code_803E46C.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
#include "code_805D8C8.h"
@@ -17,6 +18,7 @@
#include "move_effects_target.h"
#include "moves.h"
#include "pokemon.h"
#include "pokemon_mid.h"
#include "status_checks_1.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
@@ -167,7 +169,6 @@ extern u8 *gUnknown_80FBF84[];
extern void sub_8049ED4();
extern void sub_8040A84();
extern void sub_803E46C(u32);
extern void sub_80522F4(Entity *pokemon, Entity *r1, const char[]);
extern void EntityUpdateStatusSprites(Entity *);
extern void sub_8042A74(Entity *r0);
@@ -211,7 +212,6 @@ extern void sub_8041DD8(Entity *r0, s32 r1); // NOTE: is s16 in another file
extern s32 sub_803D870(void *, u32);
extern bool8 sub_806AA0C(s32, u32);
u32 ExtractSpeciesIndex(PokemonStruct1 **r0); // TODO: look more into this and fix it.
void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index);
void MuzzleTarget(Entity *pokemon, Entity *target)
{

View File

@@ -1,5 +1,6 @@
#include "global.h"
#include "code_804267C.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
#include "constants/ability.h"
@@ -17,7 +18,6 @@ extern u8 UseAttack(Entity *);
extern void sub_805E804(void);
void sub_806A2BC(Entity *pokemon, u8 param_2);
extern u8 sub_8044B28(void);
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 *);

27
src/code_8084778.c Normal file
View File

@@ -0,0 +1,27 @@
#include "global.h"
#include "code_8084778.h"
#include "code_80958E8.h"
#include "mailbox.h"
#include "pokemon_mid.h"
#include "structs/str_dungeon.h"
extern u8 gUnknown_202E088[];
extern const u8 gUnknown_8107224[];
void sub_8084778(void)
{
s32 i;
WonderMail *wm;
strcpy(gUnknown_202E088, gUnknown_8107224);
for (i = 0; i < MAX_ACCEPTED_JOBS; i++) {
wm = GetJobSlotInfo(i);
if (wm->mailType == MAIL_TYPE_TAKEN_JOB && gDungeon->dungeonLocation.id == wm->unk4.dungeon.id && wm->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) {
CopyCyanMonsterNametoBuffer(gUnknown_202E088, wm->targetSpecies);
break;
}
}
}

9
src/code_8085E98.c Normal file
View File

@@ -0,0 +1,9 @@
#include "global.h"
#include "code_8085E98.h"
#include "structs/str_dungeon.h"
void sub_8085E98(void)
{
gDungeon->unk18215 = 0;
}

9
src/code_80861A8.c Normal file
View File

@@ -0,0 +1,9 @@
#include "global.h"
#include "code_80861A8.h"
#include "code_806CD90.h"
void sub_80861A8(Entity *a0)
{
sub_806CDD4(a0, 0, 8);
}

View File

@@ -1,11 +1,13 @@
#include "global.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#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"
#include "structs/str_dungeon.h"
// This file may originally be merged with code_8086A3C.c and code_8057824_1.c
@@ -18,8 +20,6 @@ EWRAM_DATA unkStruct_202F3D0 gUnknown_202F3D0 = {0};
extern u32 gUnknown_8107314[];
s8 sub_8002984(s8, u8);
void sub_803E708(u32, u32);
extern void sub_803E46C(u32);
extern void sub_803E9D0(void);
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
extern void PlaySoundEffect(u32);

View File

@@ -1,33 +1,34 @@
#include "global.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "code_80869E4.h"
#include "constants/bg_music.h"
#include "constants/direction.h"
#include "constants/monster.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
#include "dungeon_music.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "dungeon_util_1.h"
#include "dungeon_util.h"
#include "exclusive_pokemon.h"
#include "pokemon.h"
#include "pokemon_3.h"
#include "pokemon.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
extern u8 sub_8044B28(void);
extern u8 gUnknown_202E038[];
extern void sub_8085374();
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_8087144();
extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
extern bool8 sub_8085B80(u8 *);
// TODO The parameters don't match the function definition in dungeon_util_1.h (struct_8085B80*, s16**, Entity**, s32).
extern void sub_8085B4C(u8 *, void *, Entity **, u32);
extern void sub_803E46C(u32);
extern const u8 gUnknown_810739C[];
extern const u8 gUnknown_81073D4[];
@@ -298,14 +299,14 @@ void sub_8086F00(void)
// From @jiangzhengwenjz:
// Matches this way for -O2 but can match w/o this hack on -O1
// https://decomp.me/scratch/BTqWo
// https://decomp.me/scratch/BTqWo
void sub_8086F54(u8 param_1, u8 param_2)
{
Entity *entity;
s32 index;
u32 unk1 = 0;
if (param_2 == 4 || param_2 == 5) {
void *labels[2];
labels[0] = labels[1] = &&label;
@@ -452,7 +453,7 @@ void sub_808729C(void)
{
Entity *LeaderEntity;
Entity *ZapdosEntity;
LeaderEntity = xxx_call_GetLeader();
ZapdosEntity = GetEntityFromClientType(8);
sub_80854D4();

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "dungeon_ai.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
#include "code_8077274_1.h"
@@ -42,7 +43,6 @@ extern u8 sub_8044B28(void);
extern void sub_807AB38(Entity *, u32);
extern void sub_8041888(u32);
extern u8 sub_803F428(s16 *);
extern void sub_803E708(u32, u32);
void sub_8075900(Entity *pokemon, u8 r1)
{

View File

@@ -2,6 +2,7 @@
#include "dungeon_ai_leader.h"
#include "charge_move.h"
#include "code_803E46C.h"
#include "code_804267C.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
@@ -72,7 +73,6 @@ extern u8 sub_8044B28(void);
extern u8 UseAttack(Entity *);
void sub_8052740(u32);
void sub_806A1E8(Entity *pokemon);
extern void sub_803E46C(u32);
extern void sub_80694C0(Entity *, s32, s32, u32);
bool8 sub_804AE08(Position *pos);
void HandlePickUpAIAction(Entity *pokemon);

View File

@@ -1,13 +1,15 @@
#include "global.h"
#include "structs/dungeon_entity.h"
#include "dungeon_engine.h"
#include "code_803E46C.h"
#include "constants/dungeon.h"
#include "structs/str_dungeon.h"
#include "dungeon_ai.h"
#include "dungeon_ai_leader.h"
#include "dungeon_ai.h"
#include "dungeon_leader.h"
#include "dungeon_movement.h"
#include "dungeon_util.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
extern s16 gSpeedTurns[2][25];
@@ -25,7 +27,6 @@ extern void sub_8071DA4(Entity *);
extern void TriggerWeatherAbilities(void);
extern void sub_805D8C8(void);
extern void sub_805F02C(void);
extern void sub_803E46C(u32);
static void sub_8044454(void);
static bool8 xxx_dungeon_80442D0(bool8);
@@ -60,7 +61,7 @@ bool8 IsMakuhitaTrainingMaze(void)
void RunFractionalTurn(bool8 param_1)
{
bool8 cVar2;
if (!sub_8044B28()) {
TrySpawnMonsterAndActivatePlusMinus();
if (!sub_8044B28()) {
@@ -95,7 +96,7 @@ static bool8 xxx_dungeon_80442D0(bool8 param_1)
EntityInfo *entityInfo;
Entity *entity;
s32 movSpeed;
entity = GetLeader();
if (entity == NULL) {
return FALSE;
@@ -175,10 +176,10 @@ static void sub_8044454(void)
Entity *entity;
EntityInfo *entityInfo;
s32 index;
if (gDungeon->unkE) {
gDungeon->unkE = 0;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
@@ -203,10 +204,10 @@ void sub_80444F4(Entity *pokemon)
Entity *entity;
EntityInfo *entityInfo;
s32 index;
if (pokemon == GetLeader() && gDungeon->unkE) {
gDungeon->unkE = 0;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];

View File

@@ -1,7 +1,9 @@
#include "global.h"
#include "dungeon_items.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "code_80861A8.h"
#include "code_80869E4.h"
#include "dungeon_capabilities.h"
#include "dungeon_leader.h"
@@ -19,9 +21,7 @@ extern u8 *gUnknown_81053A8[];
extern u8 *gUnknown_8105434[];
extern s32 sub_8052B8C(u32, u8 *, u32);
extern void sub_80861A8(void);
extern void PrintFieldMessage(u32, u8 *, u32);
extern void sub_803E708(u32, u32);
extern void sub_80416E0(Position32 *r0, u32, bool8);
extern void sub_80421C0(Entity *, u32);
extern void sub_80855E4(void *);

View File

@@ -1,22 +1,23 @@
#include "global.h"
#include "code_806CD90.h"
#include "dungeon_util_1.h"
#include "code_803E46C.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "constants/direction.h"
#include "constants/dungeon.h"
#include "structs/str_dungeon.h"
#include "dungeon_leader.h"
#include "dungeon_util.h"
#include "random.h"
#include "structs/str_dungeon.h"
extern s32 gUnknown_202F3D8;
extern const u8 gUnknown_8107358[25];
extern s32 GetCameraXPos(void);
extern s32 GetCameraYPos(void);
extern void sub_803F4A0(u32);
extern void sub_803F878(s32, s32);
extern void sub_803E46C(u32);
extern void sub_803E708(u32, u32);
extern void sub_8068FE0(Entity *, u32, Entity*);
extern void sub_80457DC(Entity *);
@@ -55,7 +56,7 @@ void sub_80854D4(void)
Entity *entity3;
Entity *entity4;
Entity *entity5;
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity = gDungeon->teamPokemon[index];
@@ -402,3 +403,17 @@ void sub_8085B0C(Entity *pokemon)
index++;
}
}
void sub_8085B4C(struct_8085B80 *a0, s16 **a1, Entity **a2, s32 a3)
{
s32 i;
gUnknown_202F3D8 = a3;
for (i = 0; i < a3; i++) {
a0[i].unk0 = 1;
a0[i].unk4 = a2[i];
a0[i].unkC = a1[i];
a0[i].unk8 = a1[i][2];
}
}

View File

@@ -1,5 +1,6 @@
#include "global.h"
#include "charge_move.h"
#include "code_803E46C.h"
#include "code_8045A00.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
@@ -193,7 +194,6 @@ void sub_8075900(Entity *pokemon, u8 r1);
extern void sub_80943A0(void*, s32);
extern u8 sub_8044B28(void);
extern u8 sub_803F428(Position *pos);
extern void sub_803E46C(u32);
extern void sub_807EC28(bool8);
extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *);

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "status.h"
#include "code_803E46C.h"
#include "code_8045A00.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
@@ -131,7 +132,6 @@ extern void RaiseAttackStageTarget(Entity *, Entity *, u32, u32);
extern void RaiseDefenseStageTarget(Entity *, Entity *, u32, u32);
extern void sub_8041D48(Entity *);
extern void sub_8041D38(Entity * pokemon);
extern void sub_803E46C(u32);
extern u8 sub_8043D10(void);
extern void sub_8041CDC(Entity *pokemon);
extern void sub_8041CEC(Entity *pokemon);

View File

@@ -88,6 +88,7 @@ extern void sub_807CD9C(Entity *, Entity *, u32 direction);
// NOTE: Override pokemon.c types for these two funcs
// GetSize is ok
extern u8 GetBodySize(s32 index);
// TODO The parameters don't match the function definition in pokemon_mid.h (u8*, s16).
extern void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index);
extern u32 GetSize(s16 index);

View File

@@ -1,20 +1,21 @@
#include "global.h"
#include "status_checks_1.h"
#include "code_800D090.h"
#include "code_80521D0.h"
#include "constants/ability.h"
#include "constants/iq_skill.h"
#include "constants/status.h"
#include "constants/weather.h"
#include "dungeon_engine.h"
#include "structs/str_dungeon.h"
#include "dungeon_items.h"
#include "dungeon_map_access.h"
#include "dungeon_movement.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_map_access.h"
#include "dungeon_util.h"
#include "code_800D090.h"
#include "code_80521D0.h"
#include "pokemon_mid.h"
#include "pokemon.h"
#include "structs/str_dungeon.h"
#include "weather.h"
extern void sub_80429B4(Entity *r0);
@@ -25,7 +26,6 @@ extern u8 *gUnknown_80F8994[];
extern u8 *gUnknown_80F8968[];
extern u8 *gUnknown_80F8988[];
extern u8 gUnknown_8106FA4[];
void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index);
s32 sub_8070828(Entity *pokemon, bool8 displayMessage)
{

View File

@@ -1,6 +1,7 @@
#include "global.h"
#include "trap.h"
#include "code_803E668.h"
#include "code_8045A00.h"
#include "code_80521D0.h"
#include "code_8077274_1.h"
@@ -70,7 +71,6 @@ bool8 sub_806AA0C(s32, s32);
void sub_80421EC(Position *, u32);
bool8 sub_8045888(Entity *);
void sub_803E708(u32, u32);
u8 sub_8043D10(void);
void sub_8068FE0(Entity *, u32, Entity *);
void sub_805239C(Entity *, u8 *);

View File

@@ -2,6 +2,7 @@
#include "structs/dungeon_entity.h"
#include "structs/map.h"
#include "trap.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "code_8092334.h"
#include "items.h"
@@ -68,7 +69,6 @@ void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2);
void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2);
void SaveSpeedCounters(unkStruct_8094924 *param_1, u8 *speedCounters, u32 numCounters);
void SaveClientType(unkStruct_8094924 *param_1, u8 param_2);
void sub_803E708(u32, u32);
void sub_80421C0(Entity *, u16);
void sub_804687C(Entity *, Position *, Position *, Item *, u32);