mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-22 15:08:24 -05:00
decompile more of code_2 and move some data
This commit is contained in:
parent
ad0ec301b9
commit
fb98bb9ec1
554
asm/code_2.s
554
asm/code_2.s
|
|
@ -1059,556 +1059,4 @@ _08000EC6:
|
|||
bx r1
|
||||
thumb_func_end sub_80009D0
|
||||
|
||||
thumb_func_start SaveLoadRelated_8000EDC
|
||||
SaveLoadRelated_8000EDC:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
movs r5, 0x1
|
||||
ldr r0, _08000F24
|
||||
str r5, [r0]
|
||||
movs r0, 0x3
|
||||
bl sub_800A8F8
|
||||
bl sub_8014144
|
||||
add r1, sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_8043D50
|
||||
ldr r0, [sp]
|
||||
movs r1, 0x7
|
||||
bl MemoryAlloc
|
||||
str r0, [r4, 0x74]
|
||||
ldr r0, [sp, 0x4]
|
||||
movs r1, 0x7
|
||||
bl MemoryAlloc
|
||||
str r0, [r4, 0x78]
|
||||
ldrb r0, [r4, 0x8]
|
||||
cmp r0, 0
|
||||
beq _08000F68
|
||||
ldr r0, [r4, 0x74]
|
||||
ldr r1, [sp]
|
||||
bl PrepareQuickSaveRead
|
||||
adds r7, r4, 0
|
||||
adds r7, 0x7C
|
||||
b _08000F2E
|
||||
.align 2, 0
|
||||
_08000F24: .4byte gUnknown_203B03C
|
||||
_08000F28:
|
||||
movs r0, 0
|
||||
bl xxx_update_stuff
|
||||
_08000F2E:
|
||||
bl ReadQuickSave
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08000F28
|
||||
bl IsQuickSaveValid
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
bl FinishQuickSaveRead
|
||||
bl sub_8011830
|
||||
cmp r5, 0
|
||||
beq _08000F58
|
||||
ldr r0, _08000F54
|
||||
bl sub_80121E0
|
||||
b _08000F5E
|
||||
.align 2, 0
|
||||
_08000F54: .4byte 0x000f1208
|
||||
_08000F58:
|
||||
ldr r0, _08000F64
|
||||
bl sub_80121E0
|
||||
_08000F5E:
|
||||
bl xxx_call_start_bg_music
|
||||
b _08000F78
|
||||
.align 2, 0
|
||||
_08000F64: .4byte 0x000f1209
|
||||
_08000F68:
|
||||
bl GeneratePelipperJobs
|
||||
bl sub_80961B4
|
||||
bl sub_808ED00
|
||||
adds r7, r4, 0
|
||||
adds r7, 0x7C
|
||||
_08000F78:
|
||||
cmp r5, 0
|
||||
beq _08000F92
|
||||
adds r0, r4, 0
|
||||
bl xxx_dungeon_8001340
|
||||
bl sub_8099648
|
||||
bl SetWindowBGColor
|
||||
movs r0, 0
|
||||
bl sub_8099690
|
||||
b _08000F96
|
||||
_08000F92:
|
||||
movs r0, 0x5
|
||||
strh r0, [r7]
|
||||
_08000F96:
|
||||
adds r5, r7, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r6, 0x2
|
||||
negs r6, r6
|
||||
cmp r0, r6
|
||||
bne _08000FAC
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x84
|
||||
bl sub_809542C
|
||||
_08000FAC:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0x3
|
||||
beq _08000FB8
|
||||
cmp r0, r6
|
||||
bne _0800100C
|
||||
_08000FB8:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x80
|
||||
bl SetDungeonLocationInfo
|
||||
bl xxx_call_stop_bgm
|
||||
movs r1, 0
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r0, r6
|
||||
bne _08000FD8
|
||||
ldr r0, [r4, 0x74]
|
||||
ldr r1, [sp]
|
||||
movs r2, 0x1
|
||||
bl PrepareQuickSaveWrite
|
||||
b _08000FFA
|
||||
_08000FD8:
|
||||
ldr r0, [r4, 0x74]
|
||||
ldr r1, [sp]
|
||||
movs r2, 0
|
||||
bl PrepareQuickSaveWrite
|
||||
b _08000FFA
|
||||
_08000FE4:
|
||||
cmp r0, 0x1
|
||||
bne _08000FF4
|
||||
ldr r0, [r4, 0x78]
|
||||
bl MemoryFree
|
||||
ldr r0, [r4, 0x74]
|
||||
bl MemoryFree
|
||||
_08000FF4:
|
||||
movs r0, 0
|
||||
bl xxx_update_stuff
|
||||
_08000FFA:
|
||||
bl WriteQuickSave
|
||||
cmp r0, 0x2
|
||||
beq _08001006
|
||||
cmp r0, 0x3
|
||||
bne _08000FE4
|
||||
_08001006:
|
||||
bl FinishQuickSaveWrite
|
||||
b _0800101C
|
||||
_0800100C:
|
||||
bl sub_808ED00
|
||||
ldr r0, [r4, 0x78]
|
||||
bl MemoryFree
|
||||
ldr r0, [r4, 0x74]
|
||||
bl MemoryFree
|
||||
_0800101C:
|
||||
add sp, 0x8
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end SaveLoadRelated_8000EDC
|
||||
|
||||
thumb_func_start sub_8001024
|
||||
sub_8001024:
|
||||
push {r4,lr}
|
||||
ldr r1, _08001040
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
ldm r1!, {r2-r4}
|
||||
stm r0!, {r2-r4}
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001040: .4byte gPersonalityRelated_203B040
|
||||
thumb_func_end sub_8001024
|
||||
|
||||
thumb_func_start sub_8001044
|
||||
sub_8001044:
|
||||
push {r4,lr}
|
||||
ldr r1, _08001060
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001060: .4byte gPersonalityRelated_203B040
|
||||
thumb_func_end sub_8001044
|
||||
|
||||
thumb_func_start sub_8001064
|
||||
sub_8001064:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x28
|
||||
bl GetPlayerPokemonStruct
|
||||
cmp r0, 0
|
||||
bne _080010AE
|
||||
ldr r5, _0800109C
|
||||
ldrb r0, [r5, 0x8]
|
||||
cmp r0, 0
|
||||
bne _080010A0
|
||||
add r4, sp, 0x14
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r5, r0]
|
||||
adds r0, r4, 0
|
||||
bl CopyMonsterNameToBuffer
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl CopyStringtoBuffer
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r1, 0x1
|
||||
mov r2, sp
|
||||
bl sub_808CE74
|
||||
b _080010AE
|
||||
.align 2, 0
|
||||
_0800109C: .4byte gPersonalityRelated_203B040
|
||||
_080010A0:
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r5, r4]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x8
|
||||
movs r1, 0x1
|
||||
bl sub_808CE74
|
||||
_080010AE:
|
||||
bl sub_808D378
|
||||
cmp r0, 0
|
||||
bne _080010F2
|
||||
ldr r5, _080010E0
|
||||
ldrb r0, [r5, 0x1C]
|
||||
cmp r0, 0
|
||||
bne _080010E4
|
||||
add r4, sp, 0x14
|
||||
movs r0, 0x6
|
||||
ldrsh r1, [r5, r0]
|
||||
adds r0, r4, 0
|
||||
bl CopyMonsterNameToBuffer
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl CopyStringtoBuffer
|
||||
movs r1, 0x6
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r1, 0
|
||||
mov r2, sp
|
||||
bl sub_808CE74
|
||||
b _080010F2
|
||||
.align 2, 0
|
||||
_080010E0: .4byte gPersonalityRelated_203B040
|
||||
_080010E4:
|
||||
movs r4, 0x6
|
||||
ldrsh r0, [r5, r4]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x1C
|
||||
movs r1, 0
|
||||
bl sub_808CE74
|
||||
_080010F2:
|
||||
ldr r3, _08001164
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r3, r0]
|
||||
cmp r1, 0
|
||||
beq _08001126
|
||||
ldr r2, _08001168
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r2, r4]
|
||||
cmp r0, 0
|
||||
beq _0800111C
|
||||
cmp r1, r0
|
||||
beq _0800111C
|
||||
_0800110A:
|
||||
adds r2, 0x8
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r2, r0]
|
||||
cmp r1, 0
|
||||
beq _0800111C
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r3, r4]
|
||||
cmp r0, r1
|
||||
bne _0800110A
|
||||
_0800111C:
|
||||
ldr r2, [r2]
|
||||
movs r0, 0
|
||||
movs r1, 0x27
|
||||
bl SetScriptVarValue
|
||||
_08001126:
|
||||
ldr r3, _08001164
|
||||
movs r0, 0x6
|
||||
ldrsh r1, [r3, r0]
|
||||
cmp r1, 0
|
||||
beq _0800115A
|
||||
ldr r2, _0800116C
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r2, r4]
|
||||
cmp r0, 0
|
||||
beq _08001150
|
||||
cmp r1, r0
|
||||
beq _08001150
|
||||
_0800113E:
|
||||
adds r2, 0x8
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r2, r0]
|
||||
cmp r1, 0
|
||||
beq _08001150
|
||||
movs r4, 0x6
|
||||
ldrsh r0, [r3, r4]
|
||||
cmp r0, r1
|
||||
bne _0800113E
|
||||
_08001150:
|
||||
ldr r2, [r2]
|
||||
movs r0, 0
|
||||
movs r1, 0x26
|
||||
bl SetScriptVarValue
|
||||
_0800115A:
|
||||
add sp, 0x28
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001164: .4byte gPersonalityRelated_203B040
|
||||
_08001168: .4byte gBaseKindTable
|
||||
_0800116C: .4byte gTalkKindTable
|
||||
thumb_func_end sub_8001064
|
||||
|
||||
thumb_func_start sub_8001170
|
||||
sub_8001170:
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
add r4, sp, 0x4
|
||||
movs r0, 0x63
|
||||
strb r0, [r4]
|
||||
mov r1, sp
|
||||
adds r1, 0x2
|
||||
mov r0, sp
|
||||
bl sub_80992E0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08001196
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
bl sub_80A2740
|
||||
b _080011BE
|
||||
_08001196:
|
||||
adds r0, r4, 0
|
||||
bl sub_8099328
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080011C0
|
||||
adds r0, r4, 0
|
||||
bl sub_8099360
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080011C0
|
||||
mov r0, sp
|
||||
adds r0, 0x5
|
||||
bl sub_8099394
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080011C0
|
||||
movs r0, 0x3F
|
||||
_080011BE:
|
||||
strb r0, [r4]
|
||||
_080011C0:
|
||||
ldrb r0, [r4]
|
||||
add sp, 0x8
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8001170
|
||||
|
||||
thumb_func_start sub_80011CC
|
||||
sub_80011CC:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
movs r5, 0
|
||||
strb r1, [r4]
|
||||
strb r5, [r4, 0x1]
|
||||
bl sub_80011E8
|
||||
strb r5, [r4, 0xB]
|
||||
strb r5, [r4, 0x4]
|
||||
strb r5, [r4, 0xC]
|
||||
strb r5, [r4, 0xD]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80011CC
|
||||
|
||||
thumb_func_start sub_80011E8
|
||||
sub_80011E8:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
movs r0, 0x8
|
||||
bl sub_80023E4
|
||||
strb r0, [r4, 0x5]
|
||||
movs r0, 0x3
|
||||
bl sub_80023E4
|
||||
strb r0, [r4, 0x6]
|
||||
movs r0, 0x7
|
||||
bl sub_80023E4
|
||||
strb r0, [r4, 0x8]
|
||||
movs r0, 0
|
||||
bl sub_80023E4
|
||||
strb r0, [r4, 0x9]
|
||||
movs r0, 0x5
|
||||
bl sub_80023E4
|
||||
strb r0, [r4, 0xA]
|
||||
movs r0, 0x18
|
||||
bl sub_80023E4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0800123C
|
||||
movs r0, 0x19
|
||||
bl sub_80023E4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0800123C
|
||||
movs r0, 0x1A
|
||||
bl sub_80023E4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0800123C
|
||||
movs r0, 0x1
|
||||
b _0800123E
|
||||
_0800123C:
|
||||
movs r0, 0
|
||||
_0800123E:
|
||||
strb r0, [r4, 0x7]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80011E8
|
||||
|
||||
thumb_func_start sub_8001248
|
||||
sub_8001248:
|
||||
push {r4,r5,lr}
|
||||
movs r4, 0
|
||||
movs r5, 0
|
||||
_0800124E:
|
||||
movs r0, 0x64
|
||||
bl RandInt
|
||||
cmp r0, 0x31
|
||||
bgt _08001266
|
||||
lsls r0, r4, 2
|
||||
ldr r1, _080012B8
|
||||
ldr r1, [r1]
|
||||
adds r0, r1
|
||||
strb r5, [r0, 0x2]
|
||||
strb r5, [r0, 0x1]
|
||||
strb r5, [r0]
|
||||
_08001266:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x13
|
||||
ble _0800124E
|
||||
bl FillInventoryGaps
|
||||
movs r4, 0
|
||||
ldr r5, _080012BC
|
||||
movs r3, 0x1
|
||||
_08001276:
|
||||
movs r0, 0x58
|
||||
adds r1, r4, 0
|
||||
muls r1, r0
|
||||
ldr r0, [r5]
|
||||
adds r1, r0, r1
|
||||
ldrh r2, [r1]
|
||||
adds r0, r3, 0
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08001298
|
||||
lsrs r0, r2, 1
|
||||
ands r0, r3
|
||||
cmp r0, 0
|
||||
beq _08001298
|
||||
adds r1, 0x28
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_08001298:
|
||||
adds r4, 0x1
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
ble _08001276
|
||||
ldr r0, _080012B8
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080012B8: .4byte gTeamInventoryRef
|
||||
_080012BC: .4byte gRecruitedPokemonRef
|
||||
thumb_func_end sub_8001248
|
||||
|
||||
thumb_func_start sub_80012C0
|
||||
sub_80012C0:
|
||||
push {r4,r5,lr}
|
||||
movs r3, 0
|
||||
ldr r4, _08001324
|
||||
movs r2, 0
|
||||
_080012C8:
|
||||
lsls r1, r3, 2
|
||||
ldr r0, [r4]
|
||||
adds r1, r0
|
||||
strb r2, [r1, 0x2]
|
||||
strb r2, [r1, 0x1]
|
||||
strb r2, [r1]
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x13
|
||||
ble _080012C8
|
||||
bl FillInventoryGaps
|
||||
movs r3, 0
|
||||
ldr r5, _08001328
|
||||
movs r4, 0x1
|
||||
_080012E4:
|
||||
movs r0, 0x58
|
||||
adds r1, r3, 0
|
||||
muls r1, r0
|
||||
ldr r0, [r5]
|
||||
adds r1, r0, r1
|
||||
ldrh r2, [r1]
|
||||
adds r0, r4, 0
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08001306
|
||||
lsrs r0, r2, 1
|
||||
ands r0, r4
|
||||
cmp r0, 0
|
||||
beq _08001306
|
||||
adds r1, 0x28
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
_08001306:
|
||||
adds r3, 0x1
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r3, r0
|
||||
ble _080012E4
|
||||
ldr r0, _08001324
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001324: .4byte gTeamInventoryRef
|
||||
_08001328: .4byte gRecruitedPokemonRef
|
||||
thumb_func_end sub_80012C0
|
||||
|
||||
.align 2,0
|
||||
.align 2,0
|
||||
|
|
|
|||
|
|
@ -3,61 +3,9 @@
|
|||
@ START code_80130A8
|
||||
|
||||
|
||||
.global gUnknown_80D48A0
|
||||
gUnknown_80D48A0: @ 80D48A0
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80D48AC
|
||||
gUnknown_80D48AC: @ 80D48AC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80D48C4
|
||||
gUnknown_80D48C4: @ 80D48C4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x0f, 0x00
|
||||
.byte 0x1a, 0x00, 0x05, 0x00
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80D48DC
|
||||
gUnknown_80D48DC: @ 80D48DC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x08, 0x00
|
||||
.byte 0x1a, 0x00, 0x05, 0x00
|
||||
.byte 0x07, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gSpeakerNameSeparator
|
||||
gSpeakerNameSeparator: @ 80D48F4
|
||||
.byte 0x3A, 0x20, 0x00, 0x00 @ maybe just a colon and space
|
||||
|
||||
.global gUnknown_80D48F8
|
||||
gUnknown_80D48F8: @ 80D48F8
|
||||
.string "????\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D4900
|
||||
gUnknown_80D4900: @ 80D4900
|
||||
.string "%d\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D4904
|
||||
gUnknown_80D4904: @ 80D4904
|
||||
.string "%*d\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D4908
|
||||
gUnknown_80D4908: @ 80D4908
|
||||
.string "%0*d\0"
|
||||
.asciz "%0*d"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D4910
|
||||
|
|
|
|||
36
include/structs/str_dungeon_8042F6C.h
Normal file
36
include/structs/str_dungeon_8042F6C.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef GUARD_STR_DUNGEON_8042F6C_H
|
||||
#define GUARD_STR_DUNGEON_8042F6C_H
|
||||
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "structs/str_dungeon_location.h"
|
||||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
struct UnkStruct_xxx_dungeon_8042F6C
|
||||
{
|
||||
u8 unk0;
|
||||
DungeonLocation unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
unkStruct_Dungeon64C unk14;
|
||||
PokemonStruct1 unk1C;
|
||||
u8 *unk74;
|
||||
Dungeon *unk78;
|
||||
s16 unk7C;
|
||||
u8 unk7E;
|
||||
DungeonLocation unk80;
|
||||
WonderMailSub unk84;
|
||||
};
|
||||
|
||||
void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8);
|
||||
|
||||
#endif // GUARD_STR_DUNGEON_8042F6C_H
|
||||
|
||||
|
|
@ -79,4 +79,4 @@ typedef struct WonderMailStruct_203B2C0_sub
|
|||
/* 0x30 */ PokemonStruct1 pokemon;
|
||||
} WonderMailStruct_203B2C0_sub;
|
||||
|
||||
#endif // GUARD_STR_WONDER_MAIL_H
|
||||
#endif // GUARD_STR_WONDER_MAIL_H
|
||||
|
|
|
|||
266
src/code.c
266
src/code.c
|
|
@ -1,16 +1,276 @@
|
|||
#include "global.h"
|
||||
#include "structs/str_dungeon_8042F6C.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_80A26CC.h"
|
||||
#include "code_8099360.h"
|
||||
#include "event_flag.h"
|
||||
#include "items.h"
|
||||
#include "memory.h"
|
||||
#include "pokemon.h"
|
||||
#include "quick_save_read.h"
|
||||
#include "quick_save_write.h"
|
||||
#include "random.h"
|
||||
#include "save.h"
|
||||
#include "string_format.h"
|
||||
#include "text_util.h"
|
||||
|
||||
extern void xxx_dungeon_8042F6C(u32 r0);
|
||||
extern void NDS_LoadOverlay_GroundMain();
|
||||
extern u32 xxx_script_related_8098468(u32);
|
||||
extern u8 sub_80992E0(s16 *, s16 *);
|
||||
extern bool8 sub_8099328(u8 *dungeonId);
|
||||
extern bool8 sub_8099360(u8 *);
|
||||
extern u8 sub_8099394(u8 *);
|
||||
extern void GeneratePelipperJobs();
|
||||
extern void sub_8043D50(s32 *a0, s32 *a1);
|
||||
extern void xxx_update_stuff(u32);
|
||||
extern void sub_80961B4();
|
||||
extern void sub_808ED00();
|
||||
extern void SetDungeonLocationInfo(DungeonLocation *dl);
|
||||
extern void sub_808CE74(s16, bool32, u8*);
|
||||
|
||||
void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0);
|
||||
void sub_80011E8(u8 *param_1);
|
||||
void sub_809542C(WonderMailSub *param_1);
|
||||
|
||||
struct unkTalkTable
|
||||
{
|
||||
u32 unk0;
|
||||
s16 species;
|
||||
};
|
||||
|
||||
extern struct unkTalkTable gTalkKindTable[];
|
||||
extern struct unkTalkTable gBaseKindTable[];
|
||||
|
||||
// size: 0x30
|
||||
struct PersonalityRelated
|
||||
{
|
||||
u8 fill0[4];
|
||||
s16 speciesID1;
|
||||
s16 speciesID2;
|
||||
u8 speciesName1[0x14];
|
||||
u8 speciesName2[0x14];
|
||||
};
|
||||
struct PersonalityRelated gPersonalityRelated_203B040;
|
||||
extern u32 gUnknown_203B03C;
|
||||
|
||||
void SaveLoadRelated_8000EDC(struct UnkStruct_xxx_dungeon_8042F6C *param_1)
|
||||
{
|
||||
u8 quickSaveValid;
|
||||
s32 quickSaveStatus;
|
||||
s32 local_1c; // 0x4800
|
||||
s32 local_18; // sizeof(Dungeon)
|
||||
|
||||
quickSaveValid = TRUE;
|
||||
gUnknown_203B03C = 1;
|
||||
sub_800A8F8(3);
|
||||
sub_8014144();
|
||||
sub_8043D50(&local_1c,&local_18);
|
||||
param_1->unk74 = MemoryAlloc(local_1c,7); // size: 0x4800
|
||||
param_1->unk78 = MemoryAlloc(local_18,7); // size: sizeof(Dungeon)
|
||||
if (param_1->unk8) {
|
||||
PrepareQuickSaveRead(param_1->unk74,local_1c);
|
||||
while( TRUE ) {
|
||||
if (!ReadQuickSave()) break;
|
||||
xxx_update_stuff(0);
|
||||
}
|
||||
quickSaveValid = IsQuickSaveValid();
|
||||
FinishQuickSaveRead();
|
||||
sub_8011830();
|
||||
if (quickSaveValid) {
|
||||
sub_80121E0(0xf1208);
|
||||
}
|
||||
else {
|
||||
sub_80121E0(0xf1209);
|
||||
}
|
||||
xxx_call_start_bg_music();
|
||||
}
|
||||
else {
|
||||
GeneratePelipperJobs();
|
||||
sub_80961B4();
|
||||
sub_808ED00();
|
||||
}
|
||||
if (quickSaveValid) {
|
||||
xxx_dungeon_8001340(param_1);
|
||||
sub_8099648();
|
||||
SetWindowBGColor();
|
||||
sub_8099690(0);
|
||||
}
|
||||
else {
|
||||
param_1->unk7C = 5;
|
||||
}
|
||||
if (param_1->unk7C == -2) {
|
||||
sub_809542C(¶m_1->unk84);
|
||||
}
|
||||
if ((param_1->unk7C == 3) || (param_1->unk7C == -2)) {
|
||||
SetDungeonLocationInfo(¶m_1->unk80);
|
||||
xxx_call_stop_bgm();
|
||||
if (param_1->unk7C == -2) {
|
||||
PrepareQuickSaveWrite(param_1->unk74,local_1c,1);
|
||||
}
|
||||
else {
|
||||
PrepareQuickSaveWrite(param_1->unk74,local_1c,0);
|
||||
}
|
||||
while ((quickSaveStatus = WriteQuickSave(), (quickSaveStatus != 2))) {
|
||||
if (quickSaveStatus == 3) break;
|
||||
if (quickSaveStatus == 1) {
|
||||
MemoryFree(param_1->unk78);
|
||||
MemoryFree(param_1->unk74);
|
||||
}
|
||||
xxx_update_stuff(0);
|
||||
}
|
||||
FinishQuickSaveWrite();
|
||||
}
|
||||
else {
|
||||
sub_808ED00();
|
||||
MemoryFree(param_1->unk78);
|
||||
MemoryFree(param_1->unk74);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8001024(struct PersonalityRelated *r0)
|
||||
{
|
||||
*r0 = gPersonalityRelated_203B040;
|
||||
}
|
||||
|
||||
void sub_8001044(struct PersonalityRelated *r0)
|
||||
{
|
||||
gPersonalityRelated_203B040 = *r0;
|
||||
}
|
||||
|
||||
void sub_8001064(void)
|
||||
{
|
||||
struct unkTalkTable *psVar2;
|
||||
u8 buffer2 [20];
|
||||
u8 buffer1 [20];
|
||||
|
||||
if (GetPlayerPokemonStruct() == NULL) {
|
||||
if (gPersonalityRelated_203B040.speciesName1[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID1);
|
||||
CopyStringtoBuffer(buffer2,buffer1);
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,buffer2);
|
||||
}
|
||||
else {
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID1,TRUE,gPersonalityRelated_203B040.speciesName1);
|
||||
}
|
||||
}
|
||||
if (sub_808D378() == NULL) {
|
||||
if (gPersonalityRelated_203B040.speciesName2[0] == '\0') {
|
||||
CopyMonsterNameToBuffer(buffer1,gPersonalityRelated_203B040.speciesID2);
|
||||
CopyStringtoBuffer(buffer2,buffer1);
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,buffer2);
|
||||
}
|
||||
else {
|
||||
sub_808CE74(gPersonalityRelated_203B040.speciesID2,FALSE,gPersonalityRelated_203B040.speciesName2);
|
||||
}
|
||||
}
|
||||
if (gPersonalityRelated_203B040.speciesID1 != MONSTER_NONE) {
|
||||
psVar2 = &gBaseKindTable[0];
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID1 != psVar2->species))) {
|
||||
psVar2++;
|
||||
}
|
||||
SetScriptVarValue(NULL,BASE_KIND,psVar2->unk0);
|
||||
}
|
||||
if (gPersonalityRelated_203B040.speciesID2 != MONSTER_NONE) {
|
||||
psVar2 = &gTalkKindTable[0];
|
||||
while ((psVar2->species != MONSTER_NONE && (gPersonalityRelated_203B040.speciesID2 != psVar2->species))) {
|
||||
psVar2++;
|
||||
}
|
||||
SetScriptVarValue(NULL,PARTNER_TALK_KIND,psVar2->unk0);
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8001170(void)
|
||||
{
|
||||
s16 local_10;
|
||||
s16 auStack_e;
|
||||
u8 dungeonID;
|
||||
u8 auStack_b;
|
||||
|
||||
dungeonID = 0x63;
|
||||
if (sub_80992E0(&local_10,&auStack_e) != 0) {
|
||||
dungeonID = sub_80A2740(local_10);
|
||||
}
|
||||
else {
|
||||
if (!sub_8099328(&dungeonID) && (!sub_8099360(&dungeonID) && sub_8099394(&auStack_b) != 0)) {
|
||||
dungeonID = 0x3F;
|
||||
}
|
||||
}
|
||||
return dungeonID;
|
||||
}
|
||||
|
||||
void sub_80011CC(u8 *param_1,u8 param_2)
|
||||
{
|
||||
u32 zero = 0;
|
||||
param_1[0] = param_2;
|
||||
param_1[1] = zero;
|
||||
sub_80011E8(param_1);
|
||||
param_1[0xb] = 0;
|
||||
param_1[4] = 0;
|
||||
param_1[0xc] = 0;
|
||||
param_1[0xd] = 0;
|
||||
}
|
||||
|
||||
void sub_80011E8(u8 *param_1)
|
||||
{
|
||||
param_1[5] = sub_80023E4(8);
|
||||
param_1[6] = sub_80023E4(3);
|
||||
param_1[8] = sub_80023E4(7);
|
||||
param_1[9] = sub_80023E4(0);
|
||||
param_1[10] = sub_80023E4(5);
|
||||
if (sub_80023E4(0x18) && sub_80023E4(0x19) && sub_80023E4(0x1a)) {
|
||||
param_1[7] = 1;
|
||||
}
|
||||
else {
|
||||
param_1[7] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8001248(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter;
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
counter = RandInt(100);
|
||||
if(counter < 50)
|
||||
ZeroOutItem(&gTeamInventoryRef->teamItems[index]);
|
||||
}
|
||||
FillInventoryGaps();
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index];
|
||||
if(PokemonFlag1(mon) && PokemonFlag2(mon))
|
||||
mon->heldItem.id = ITEM_NOTHING;
|
||||
}
|
||||
gTeamInventoryRef->teamMoney = 0;
|
||||
}
|
||||
|
||||
void sub_80012C0(void)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
ZeroOutItem(&gTeamInventoryRef->teamItems[index]);
|
||||
}
|
||||
FillInventoryGaps();
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index];
|
||||
if(PokemonFlag1(mon) && PokemonFlag2(mon))
|
||||
mon->heldItem.id = ITEM_NOTHING;
|
||||
}
|
||||
gTeamInventoryRef->teamMoney = 0;
|
||||
}
|
||||
|
||||
void NDS_LoadOverlay_GroundMain()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void nullsub_2(u32 r0)
|
||||
void nullsub_2(struct UnkStruct_xxx_dungeon_8042F6C *r0)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -20,7 +280,7 @@ u32 xxx_script_related_8001334(u32 r0)
|
|||
return xxx_script_related_8098468(r0);
|
||||
}
|
||||
|
||||
void xxx_dungeon_8001340(u32 r0)
|
||||
void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0)
|
||||
{
|
||||
nullsub_2(r0);
|
||||
xxx_dungeon_8042F6C(r0);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "dungeon_util_1.h"
|
||||
#include "memory.h"
|
||||
#include "structs/rgb.h"
|
||||
#include "structs/str_dungeon_8042F6C.h"
|
||||
#include "code_803E46C.h"
|
||||
#include "code_800E9E4.h"
|
||||
#include "code_800DAC0.h"
|
||||
|
|
@ -250,35 +251,6 @@ extern u8 gUnknown_203B40C;
|
|||
extern DungeonPos gUnknown_203B410;
|
||||
extern u8 *gSerializedData_203B41C;
|
||||
|
||||
struct Substruct_xxx_dungeon_8042F6C
|
||||
{
|
||||
DungeonLocation a0;
|
||||
u32 a4;
|
||||
};
|
||||
|
||||
struct UnkStruct_xxx_dungeon_8042F6C
|
||||
{
|
||||
u8 unk0;
|
||||
DungeonLocation unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
unkStruct_Dungeon64C unk14;
|
||||
PokemonStruct1 unk1C;
|
||||
u8 *unk74;
|
||||
Dungeon *unk78;
|
||||
s16 unk7C;
|
||||
u8 unk7E;
|
||||
DungeonLocation unk80;
|
||||
struct Substruct_xxx_dungeon_8042F6C unk84;
|
||||
};
|
||||
|
||||
extern void sub_8040094(u8 r0);
|
||||
extern void sub_8068BDC(u8 r0);
|
||||
|
|
@ -915,8 +887,8 @@ void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8)
|
|||
r8->unk7C = -2;
|
||||
memset(&r8->unk84, 0, sizeof(r8->unk84));
|
||||
r8->unk80 = gDungeon->unk644.dungeonLocation;
|
||||
r8->unk84.a0 = gDungeon->unk644.dungeonLocation;
|
||||
r8->unk84.a4 = gDungeon->unk644.unk38;
|
||||
r8->unk84.dungeon = gDungeon->unk644.dungeonLocation;
|
||||
r8->unk84.seed = gDungeon->unk644.unk38;
|
||||
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ struct SubStruct_203B198
|
|||
u16 unkC; // x3C
|
||||
u16 unkE; // x3E
|
||||
u16 unk10; // x40
|
||||
u8 fill12[0x48-0x42]; // x42
|
||||
u8 fill12[6]; // x42
|
||||
};
|
||||
|
||||
struct UnkStruct_203B198
|
||||
|
|
@ -104,16 +104,42 @@ extern struct UnkStruct_203B198 gUnknown_203B198;
|
|||
extern UnkTextStruct1 gUnknown_2027370[4];
|
||||
extern void (*gUnknown_203B088)(s32 a0);
|
||||
|
||||
extern const struct SubStruct_203B198 gUnknown_80D48AC;
|
||||
extern const struct UnkTextStruct2 gUnknown_80D48DC;
|
||||
extern const struct UnkTextStruct2 gUnknown_80D48C4;
|
||||
extern const u32 gUnknown_80D48A0[];
|
||||
extern const u8 gUnknown_80D48F8[];
|
||||
extern const u8 gUnknown_80D4900[];
|
||||
extern const u8 gUnknown_80D4904[];
|
||||
static const u32 gUnknown_80D48A0[] = {0x7, 0x2, 0x2};
|
||||
static const struct SubStruct_203B198 gUnknown_80D48AC = {
|
||||
0x00,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
|
||||
};
|
||||
|
||||
static const UnkTextStruct2 gUnknown_80D48C4 = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00,
|
||||
0x02, 0x0F,
|
||||
0x1A, 0x05,
|
||||
0x07, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const UnkTextStruct2 gUnknown_80D48DC = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x02,
|
||||
0x02, 0x08,
|
||||
0x1A, 0x05,
|
||||
0x07, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
ALIGNED(4) static const u8 sSpeakerNameSeparator[] = ": ";
|
||||
ALIGNED(4) static const u8 sUnknownTeamName[] = "????";
|
||||
ALIGNED(4) static const u8 gUnknown_80D4900[] = "%d";
|
||||
ALIGNED(4) static const u8 gUnknown_80D4904[] = "%*d" ;
|
||||
extern const u8 gUnknown_80D4908[];
|
||||
extern const u8 gUnknown_80D4910[];
|
||||
extern const u8 gSpeakerNameSeparator[];
|
||||
|
||||
extern void SetCharacterMask(int a0);
|
||||
extern void DisplayMonPortraitSprite(s32 a0, const u8 *compressedData, s32 a2);
|
||||
|
|
@ -705,7 +731,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags)
|
|||
r9 = FALSE;
|
||||
if (flags & 8) {
|
||||
AppendString(gSpeakerNameBuffer, &dst, dstMax, flags);
|
||||
AppendString(gSpeakerNameSeparator, &dst, dstMax, flags);
|
||||
AppendString(sSpeakerNameSeparator, &dst, dstMax, flags);
|
||||
}
|
||||
}
|
||||
else if (r9) {
|
||||
|
|
@ -759,7 +785,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags)
|
|||
sub_80920D8(sFormatBuffer_TeamName);
|
||||
}
|
||||
else {
|
||||
strcpy(sFormatBuffer_TeamName, gUnknown_80D48F8); // ????
|
||||
strcpy(sFormatBuffer_TeamName, sUnknownTeamName); // ????
|
||||
}
|
||||
txtPtr = sFormatBuffer_TeamName;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user