mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-13 19:45:40 -05:00
Fully decomp save.s (#28)
* some work on decomping more save stuff * code cleanup and decomp another save func * fully decomp save and combine split save c files * fix two nonmatchings
This commit is contained in:
@@ -7466,7 +7466,7 @@ _080109EC: .4byte gUnknown_203B0E8
|
||||
_080109F0: .4byte 0x000052d8
|
||||
_080109F4: .4byte 0x000052da
|
||||
_080109F8: .4byte gUnknown_203B46C
|
||||
_080109FC: .4byte gUnknown_203B47C
|
||||
_080109FC: .4byte gPlayTimeRef
|
||||
thumb_func_end sub_8010960
|
||||
|
||||
thumb_func_start sub_8010A00
|
||||
|
||||
@@ -2720,7 +2720,7 @@ _0803E64C: .4byte gUnknown_203B40D
|
||||
_0803E650: .4byte gUnknown_202EE8C
|
||||
_0803E654: .4byte gUnknown_202EDC8
|
||||
_0803E658: .4byte gUnknown_202EDCC
|
||||
_0803E65C: .4byte gUnknown_203B47C
|
||||
_0803E65C: .4byte gPlayTimeRef
|
||||
_0803E660: .4byte 0x00018213
|
||||
_0803E664: .4byte gUnknown_202EDD4
|
||||
thumb_func_end sub_803E490
|
||||
@@ -2780,7 +2780,7 @@ sub_803E668:
|
||||
_0803E6F0: .4byte gUnknown_202EDD4
|
||||
_0803E6F4: .4byte gUnknown_203B46C
|
||||
_0803E6F8: .4byte gUnknown_202EDCC
|
||||
_0803E6FC: .4byte gUnknown_203B47C
|
||||
_0803E6FC: .4byte gPlayTimeRef
|
||||
_0803E700: .4byte gUnknown_203B418
|
||||
_0803E704: .4byte 0x00018213
|
||||
thumb_func_end sub_803E668
|
||||
|
||||
@@ -26755,7 +26755,7 @@ _0805FBAC: .4byte gFieldMenuItemsPtr
|
||||
_0805FBB0: .4byte gFieldMenuTeamPtr
|
||||
_0805FBB4: .4byte gFieldMenuOthersPtr
|
||||
_0805FBB8: .4byte gFieldMenuGroundPtr
|
||||
_0805FBBC: .4byte gUnknown_203B47C
|
||||
_0805FBBC: .4byte gPlayTimeRef
|
||||
_0805FBC0: .4byte gUnknown_202DE30
|
||||
_0805FBC4: .4byte gUnknown_80F9174
|
||||
_0805FBC8: .4byte gUnknown_203B460
|
||||
|
||||
@@ -526,7 +526,7 @@ _08098968: .4byte gUnknown_20398B9
|
||||
_0809896C: .4byte gUnknown_20398B8
|
||||
_08098970: .4byte gRealInputs
|
||||
_08098974: .4byte 0x0000030f
|
||||
_08098978: .4byte gUnknown_203B47C
|
||||
_08098978: .4byte gPlayTimeRef
|
||||
_0809897C:
|
||||
bl sub_80A4AEC
|
||||
movs r7, 0x1
|
||||
|
||||
@@ -7364,7 +7364,7 @@ _08039696:
|
||||
.align 2, 0
|
||||
_0803974C: .4byte gUnknown_80E780C
|
||||
_08039750: .4byte gUnknown_203B374
|
||||
_08039754: .4byte gUnknown_203B47C
|
||||
_08039754: .4byte gPlayTimeRef
|
||||
_08039758: .4byte gUnknown_80E7838
|
||||
_0803975C: .4byte gUnknown_80E7848
|
||||
_08039760: .4byte 0x000f1207
|
||||
|
||||
191
asm/save.s
191
asm/save.s
@@ -1,191 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801203C
|
||||
sub_801203C:
|
||||
push {r4-r7,lr}
|
||||
adds r7, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r0, _08012078
|
||||
movs r1, 0x5
|
||||
bl MemoryAlloc
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x89
|
||||
lsls r0, 3
|
||||
adds r5, r6, r0
|
||||
ldr r0, _0801207C
|
||||
ldr r2, [r0]
|
||||
cmp r2, 0
|
||||
bne _08012084
|
||||
ldr r1, _08012080
|
||||
adds r0, r6, r1
|
||||
str r4, [r0]
|
||||
bl sub_8011C34
|
||||
movs r2, 0x83
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
bl GetRngState
|
||||
movs r2, 0x84
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
b _0801209E
|
||||
.align 2, 0
|
||||
_08012078: .4byte 0x000057d4
|
||||
_0801207C: .4byte gUnknown_203B184
|
||||
_08012080: .4byte 0x0000041c
|
||||
_08012084:
|
||||
ldr r0, _080120C8
|
||||
adds r1, r6, r0
|
||||
ldr r0, [r2, 0x54]
|
||||
str r0, [r1]
|
||||
movs r0, 0x83
|
||||
lsls r0, 3
|
||||
adds r1, r6, r0
|
||||
ldr r0, [r2, 0x50]
|
||||
str r0, [r1]
|
||||
movs r0, 0x84
|
||||
lsls r0, 3
|
||||
adds r1, r6, r0
|
||||
ldr r0, [r2, 0x58]
|
||||
_0801209E:
|
||||
str r0, [r1]
|
||||
ldr r2, _080120CC
|
||||
adds r1, r6, r2
|
||||
ldr r0, _080120D0
|
||||
str r0, [r1]
|
||||
bl sub_8011C4C
|
||||
adds r1, r0, 0
|
||||
ldr r2, _080120D4
|
||||
adds r0, r6, r2
|
||||
movs r2, 0x10
|
||||
bl strncpy
|
||||
ldr r0, _080120D8
|
||||
ldr r1, [r0]
|
||||
cmp r1, 0
|
||||
bne _080120DC
|
||||
adds r0, r6, 0x4
|
||||
bl sub_8002700
|
||||
b _080120E8
|
||||
.align 2, 0
|
||||
_080120C8: .4byte 0x0000041c
|
||||
_080120CC: .4byte 0x00000414
|
||||
_080120D0: .4byte 0x05071412
|
||||
_080120D4: .4byte 0x00000404
|
||||
_080120D8: .4byte gUnknown_203B184
|
||||
_080120DC:
|
||||
adds r0, r6, 0x4
|
||||
ldr r1, [r1, 0x4C]
|
||||
movs r2, 0x80
|
||||
lsls r2, 3
|
||||
bl MemoryCopy8
|
||||
_080120E8:
|
||||
ldr r4, _080121A4
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_808ED78
|
||||
ldr r2, _080121A8
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, r4
|
||||
movs r4, 0x96
|
||||
lsls r4, 2
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_808F154
|
||||
movs r2, 0x85
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, r4
|
||||
subs r4, 0x80
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8091C68
|
||||
movs r2, 0x86
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, r4
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x10
|
||||
bl sub_80921C4
|
||||
ldr r2, _080121AC
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, 0x10
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x8
|
||||
bl sub_80927A8
|
||||
movs r2, 0x87
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, 0x8
|
||||
subs r4, 0xD8
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8097D60
|
||||
ldr r2, _080121B0
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, r4
|
||||
ldr r4, _080121B4
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8095624
|
||||
movs r2, 0x88
|
||||
lsls r2, 3
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
adds r5, r4
|
||||
ldr r1, _080121B8
|
||||
adds r0, r5, 0
|
||||
bl sub_80970D8
|
||||
ldr r2, _080121BC
|
||||
adds r1, r6, r2
|
||||
str r0, [r1]
|
||||
ldr r4, _080121C0
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
adds r2, r4, 0
|
||||
bl WriteSaveSector
|
||||
adds r5, r0, 0
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
adds r2, r4, 0
|
||||
bl WriteSaveSector
|
||||
adds r4, r0, 0
|
||||
adds r0, r6, 0
|
||||
bl MemoryFree
|
||||
cmp r5, 0
|
||||
beq _080121C4
|
||||
adds r0, r5, 0
|
||||
b _080121CE
|
||||
.align 2, 0
|
||||
_080121A4: .4byte 0x00004650
|
||||
_080121A8: .4byte 0x00000424
|
||||
_080121AC: .4byte 0x00000434
|
||||
_080121B0: .4byte 0x0000043c
|
||||
_080121B4: .4byte 0x00000594
|
||||
_080121B8: .4byte 0x00000221
|
||||
_080121BC: .4byte 0x00000444
|
||||
_080121C0: .4byte 0x000057d4
|
||||
_080121C4:
|
||||
cmp r4, 0
|
||||
bne _080121CC
|
||||
movs r0, 0
|
||||
b _080121CE
|
||||
_080121CC:
|
||||
adds r0, r4, 0
|
||||
_080121CE:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801203C
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
605
asm/save1.s
605
asm/save1.s
@@ -1,605 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8012574
|
||||
sub_8012574:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
bl sub_80993D8
|
||||
ldr r5, _080125D4
|
||||
movs r0, 0x20
|
||||
movs r1, 0x5
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
movs r6, 0
|
||||
movs r1, 0
|
||||
strh r4, [r0, 0x1C]
|
||||
str r1, [r0, 0xC]
|
||||
str r1, [r0, 0x10]
|
||||
cmp r4, 0
|
||||
beq _080125BA
|
||||
adds r0, r4, 0
|
||||
bl GetDialogueSpriteDataPtr
|
||||
ldr r1, [r5]
|
||||
str r0, [r1, 0xC]
|
||||
ldr r0, [r0, 0x4]
|
||||
str r0, [r1, 0x10]
|
||||
strb r6, [r1, 0x18]
|
||||
ldr r0, [r5]
|
||||
strb r6, [r0, 0x19]
|
||||
ldr r0, [r5]
|
||||
strb r6, [r0, 0x1A]
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x2
|
||||
strh r0, [r1, 0x14]
|
||||
movs r0, 0x8
|
||||
strh r0, [r1, 0x16]
|
||||
_080125BA:
|
||||
ldr r1, [r5]
|
||||
ldr r0, [r1, 0xC]
|
||||
cmp r0, 0
|
||||
beq _080125DC
|
||||
adds r2, r1, 0
|
||||
adds r2, 0xC
|
||||
ldr r0, _080125D8
|
||||
movs r1, 0
|
||||
movs r3, 0x20
|
||||
bl sub_80141B4
|
||||
b _080125E8
|
||||
.align 2, 0
|
||||
_080125D4: .4byte gUnknown_203B18C
|
||||
_080125D8: .4byte gUnknown_80D4398
|
||||
_080125DC:
|
||||
ldr r0, _080125F8
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x20
|
||||
bl sub_80141B4
|
||||
_080125E8:
|
||||
ldr r0, _080125FC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080125F8: .4byte gUnknown_80D4398
|
||||
_080125FC: .4byte gUnknown_203B18C
|
||||
thumb_func_end sub_8012574
|
||||
|
||||
thumb_func_start sub_8012600
|
||||
sub_8012600:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
movs r5, 0
|
||||
ldr r0, _08012628
|
||||
ldr r2, [r0]
|
||||
ldr r1, [r2, 0xC]
|
||||
adds r4, r0, 0
|
||||
cmp r1, 0
|
||||
beq _08012616
|
||||
adds r5, r2, 0
|
||||
adds r5, 0xC
|
||||
_08012616:
|
||||
ldr r0, [r2]
|
||||
cmp r0, 0x7
|
||||
bls _0801261E
|
||||
b _08012738
|
||||
_0801261E:
|
||||
lsls r0, 2
|
||||
ldr r1, _0801262C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08012628: .4byte gUnknown_203B18C
|
||||
_0801262C: .4byte _08012630
|
||||
.align 2, 0
|
||||
_08012630:
|
||||
.4byte _08012650
|
||||
.4byte _08012654
|
||||
.4byte _08012738
|
||||
.4byte _08012678
|
||||
.4byte _08012680
|
||||
.4byte _0801271C
|
||||
.4byte _08012738
|
||||
.4byte _08012734
|
||||
_08012650:
|
||||
ldr r1, [r4]
|
||||
b _0801272A
|
||||
_08012654:
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r1, 0x4]
|
||||
adds r0, 0x1
|
||||
str r0, [r1, 0x4]
|
||||
cmp r0, 0x8
|
||||
ble _08012738
|
||||
ldr r0, _08012674
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x20
|
||||
bl sub_80141B4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
b _08012738
|
||||
.align 2, 0
|
||||
_08012674: .4byte gUnknown_80D43D8
|
||||
_08012678:
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x4
|
||||
str r0, [r1]
|
||||
b _08012738
|
||||
_08012680:
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_80140DC
|
||||
bl sub_8011C1C
|
||||
adds r1, r0, 0
|
||||
mov r0, sp
|
||||
bl sub_801203C
|
||||
ldr r4, _080126B8
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x8]
|
||||
cmp r0, 0
|
||||
beq _080126C4
|
||||
cmp r0, 0x1
|
||||
beq _080126DC
|
||||
ldr r0, [r1, 0xC]
|
||||
cmp r0, 0
|
||||
beq _080126F4
|
||||
ldr r0, _080126BC
|
||||
_080126AA:
|
||||
ldr r3, _080126C0
|
||||
movs r1, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80141B4
|
||||
b _08012700
|
||||
.align 2, 0
|
||||
_080126B8: .4byte gUnknown_203B18C
|
||||
_080126BC: .4byte gUnknown_80D44B0
|
||||
_080126C0: .4byte 0x00000101
|
||||
_080126C4:
|
||||
ldr r0, [r1, 0xC]
|
||||
cmp r0, 0
|
||||
beq _080126D4
|
||||
ldr r0, _080126D0
|
||||
b _080126AA
|
||||
.align 2, 0
|
||||
_080126D0: .4byte gUnknown_80D4438
|
||||
_080126D4:
|
||||
ldr r0, _080126D8
|
||||
b _080126F6
|
||||
.align 2, 0
|
||||
_080126D8: .4byte gUnknown_80D4438
|
||||
_080126DC:
|
||||
ldr r0, _080126F0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_80141B4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x6
|
||||
b _08012706
|
||||
.align 2, 0
|
||||
_080126F0: .4byte gUnknown_80D444C
|
||||
_080126F4:
|
||||
ldr r0, _08012710
|
||||
_080126F6:
|
||||
ldr r3, _08012714
|
||||
movs r1, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80141B4
|
||||
_08012700:
|
||||
ldr r0, _08012718
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x5
|
||||
_08012706:
|
||||
str r0, [r1]
|
||||
bl sub_8014114
|
||||
b _08012738
|
||||
.align 2, 0
|
||||
_08012710: .4byte gUnknown_80D44B0
|
||||
_08012714: .4byte 0x00000101
|
||||
_08012718: .4byte gUnknown_203B18C
|
||||
_0801271C:
|
||||
add r0, sp, 0x4
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _08012738
|
||||
ldr r0, _08012730
|
||||
ldr r1, [r0]
|
||||
_0801272A:
|
||||
movs r0, 0x7
|
||||
str r0, [r1]
|
||||
b _08012738
|
||||
.align 2, 0
|
||||
_08012730: .4byte gUnknown_203B18C
|
||||
_08012734:
|
||||
movs r0, 0
|
||||
b _0801273A
|
||||
_08012738:
|
||||
movs r0, 0x1
|
||||
_0801273A:
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8012600
|
||||
|
||||
thumb_func_start sub_8012744
|
||||
sub_8012744:
|
||||
ldr r0, _0801274C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x8]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0801274C: .4byte gUnknown_203B18C
|
||||
thumb_func_end sub_8012744
|
||||
|
||||
thumb_func_start sub_8012750
|
||||
sub_8012750:
|
||||
push {r4,lr}
|
||||
ldr r4, _08012778
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _0801276E
|
||||
ldr r0, [r0, 0xC]
|
||||
cmp r0, 0
|
||||
beq _08012764
|
||||
bl CloseFile
|
||||
_08012764:
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0801276E:
|
||||
bl sub_80993E4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08012778: .4byte gUnknown_203B18C
|
||||
thumb_func_end sub_8012750
|
||||
|
||||
thumb_func_start sub_801277C
|
||||
sub_801277C:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
ldr r4, _080127A4
|
||||
movs r0, 0x10
|
||||
movs r1, 0x5
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
str r5, [r0, 0x4]
|
||||
str r6, [r0, 0x8]
|
||||
movs r1, 0
|
||||
strb r1, [r0, 0xC]
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080127A4: .4byte gUnknown_203B190
|
||||
thumb_func_end sub_801277C
|
||||
|
||||
thumb_func_start sub_80127A8
|
||||
sub_80127A8:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
ldr r5, _080127C0
|
||||
ldr r2, [r5]
|
||||
ldr r4, [r2]
|
||||
cmp r4, 0x1
|
||||
beq _080127D4
|
||||
cmp r4, 0x1
|
||||
bgt _080127C4
|
||||
cmp r4, 0
|
||||
beq _080127CE
|
||||
b _0801281E
|
||||
.align 2, 0
|
||||
_080127C0: .4byte gUnknown_203B190
|
||||
_080127C4:
|
||||
cmp r4, 0x2
|
||||
beq _08012808
|
||||
cmp r4, 0x3
|
||||
beq _0801281A
|
||||
b _0801281E
|
||||
_080127CE:
|
||||
movs r0, 0x1
|
||||
str r0, [r2]
|
||||
b _0801281E
|
||||
_080127D4:
|
||||
movs r0, 0x10
|
||||
str r0, [sp]
|
||||
ldr r1, [r2, 0x4]
|
||||
ldr r2, [r2, 0x8]
|
||||
mov r0, sp
|
||||
bl sub_8011F9C
|
||||
cmp r0, 0
|
||||
bne _080127EC
|
||||
ldr r0, [r5]
|
||||
strb r4, [r0, 0xC]
|
||||
b _08012812
|
||||
_080127EC:
|
||||
ldr r0, _08012800
|
||||
ldr r3, _08012804
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x2
|
||||
str r0, [r1]
|
||||
b _0801281E
|
||||
.align 2, 0
|
||||
_08012800: .4byte gUnknown_80D44C8
|
||||
_08012804: .4byte 0x00000301
|
||||
_08012808:
|
||||
add r0, sp, 0x4
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0801281E
|
||||
_08012812:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
b _0801281E
|
||||
_0801281A:
|
||||
movs r0, 0
|
||||
b _08012820
|
||||
_0801281E:
|
||||
movs r0, 0x1
|
||||
_08012820:
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80127A8
|
||||
|
||||
thumb_func_start sub_8012828
|
||||
sub_8012828:
|
||||
ldr r0, _08012830
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08012830: .4byte gUnknown_203B190
|
||||
thumb_func_end sub_8012828
|
||||
|
||||
thumb_func_start sub_8012834
|
||||
sub_8012834:
|
||||
push {r4,lr}
|
||||
ldr r4, _0801284C
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _08012846
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_08012846:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801284C: .4byte gUnknown_203B190
|
||||
thumb_func_end sub_8012834
|
||||
|
||||
thumb_func_start sub_8012850
|
||||
sub_8012850:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
adds r6, r0, 0
|
||||
mov r8, r1
|
||||
lsls r4, r2, 24
|
||||
lsrs r4, 24
|
||||
ldr r5, _0801288C
|
||||
movs r0, 0x14
|
||||
movs r1, 0x5
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
str r6, [r0, 0x4]
|
||||
mov r1, r8
|
||||
str r1, [r0, 0x8]
|
||||
movs r1, 0
|
||||
strb r4, [r0, 0xC]
|
||||
ldr r0, [r5]
|
||||
str r1, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
cmp r0, 0
|
||||
beq _08012894
|
||||
ldr r0, _08012890
|
||||
movs r2, 0
|
||||
movs r3, 0x20
|
||||
bl sub_80141B4
|
||||
b _080128A0
|
||||
.align 2, 0
|
||||
_0801288C: .4byte gUnknown_203B194
|
||||
_08012890: .4byte gUnknown_80D45AC
|
||||
_08012894:
|
||||
ldr r0, _080128AC
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x20
|
||||
bl sub_80141B4
|
||||
_080128A0:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080128AC: .4byte gUnknown_80D45AC
|
||||
thumb_func_end sub_8012850
|
||||
|
||||
thumb_func_start sub_80128B0
|
||||
sub_80128B0:
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
ldr r1, _080128CC
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
adds r4, r1, 0
|
||||
cmp r0, 0x5
|
||||
bls _080128C2
|
||||
b _080129F0
|
||||
_080128C2:
|
||||
lsls r0, 2
|
||||
ldr r1, _080128D0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080128CC: .4byte gUnknown_203B194
|
||||
_080128D0: .4byte _080128D4
|
||||
.align 2, 0
|
||||
_080128D4:
|
||||
.4byte _080128EC
|
||||
.4byte _080128F4
|
||||
.4byte _0801291C
|
||||
.4byte _080129C8
|
||||
.4byte _080129F0
|
||||
.4byte _080129E0
|
||||
_080128EC:
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
b _080129F0
|
||||
_080128F4:
|
||||
bl sub_80140DC
|
||||
movs r0, 0x10
|
||||
str r0, [sp]
|
||||
ldr r4, _08012918
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r0, 0x4]
|
||||
ldr r2, [r0, 0x8]
|
||||
mov r0, sp
|
||||
bl sub_80121D4
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x10]
|
||||
movs r0, 0x2
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
b _080129F2
|
||||
.align 2, 0
|
||||
_08012918: .4byte gUnknown_203B194
|
||||
_0801291C:
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
bne _08012934
|
||||
mov r0, sp
|
||||
movs r1, 0x2
|
||||
bl sub_801203C
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x10]
|
||||
_08012934:
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
beq _08012964
|
||||
cmp r0, 0x1
|
||||
beq _080129AC
|
||||
ldr r0, _08012958
|
||||
bl sub_80121E0
|
||||
ldr r0, _0801295C
|
||||
ldr r3, _08012960
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x3
|
||||
b _080129BC
|
||||
.align 2, 0
|
||||
_08012958: .4byte 0x000f1209
|
||||
_0801295C: .4byte gUnknown_80D47A0
|
||||
_08012960: .4byte 0x00000301
|
||||
_08012964:
|
||||
ldr r0, _08012980
|
||||
bl sub_80121E0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0xC]
|
||||
cmp r0, 0
|
||||
beq _0801298C
|
||||
ldr r0, _08012984
|
||||
ldr r3, _08012988
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
b _08012998
|
||||
.align 2, 0
|
||||
_08012980: .4byte 0x000f1207
|
||||
_08012984: .4byte gUnknown_80D45F4
|
||||
_08012988: .4byte 0x00000301
|
||||
_0801298C:
|
||||
ldr r0, _080129A0
|
||||
ldr r3, _080129A4
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_80141B4
|
||||
_08012998:
|
||||
ldr r0, _080129A8
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x3
|
||||
b _080129BC
|
||||
.align 2, 0
|
||||
_080129A0: .4byte gUnknown_80D4668
|
||||
_080129A4: .4byte 0x00000301
|
||||
_080129A8: .4byte gUnknown_203B194
|
||||
_080129AC:
|
||||
ldr r0, _080129C4
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_80141B4
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x4
|
||||
_080129BC:
|
||||
str r0, [r1]
|
||||
bl sub_8014114
|
||||
b _080129F0
|
||||
.align 2, 0
|
||||
_080129C4: .4byte gUnknown_80D473C
|
||||
_080129C8:
|
||||
add r0, sp, 0x4
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _080129F0
|
||||
ldr r0, _080129DC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
b _080129F0
|
||||
.align 2, 0
|
||||
_080129DC: .4byte gUnknown_203B194
|
||||
_080129E0:
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
bne _080129EC
|
||||
movs r0, 0x2
|
||||
b _080129F2
|
||||
_080129EC:
|
||||
movs r0, 0x3
|
||||
b _080129F2
|
||||
_080129F0:
|
||||
movs r0, 0
|
||||
_080129F2:
|
||||
add sp, 0x8
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80128B0
|
||||
|
||||
.align 2,0
|
||||
@@ -528,17 +528,17 @@ gUnknown_80D4120: @ 80D4120
|
||||
gUnknown_80D4124: @ 80D4124
|
||||
.incbin "baserom.gba", 0xD4124, 0x20
|
||||
|
||||
@ Error Handling
|
||||
.global gUnknown_80D4144
|
||||
gUnknown_80D4144: @ 80D4144
|
||||
.byte 0x2e, 0x01
|
||||
.byte 0x2f, 0x01
|
||||
.byte 0x2f, 0x01
|
||||
.byte 0x2d, 0x01
|
||||
.byte 0x30, 0x01
|
||||
.byte 0x32, 0x01
|
||||
.byte 0x33, 0x01
|
||||
.byte 0x00, 0x00
|
||||
.2byte 302
|
||||
.2byte 303
|
||||
.2byte 303
|
||||
.2byte 301
|
||||
.2byte 304
|
||||
.2byte 306
|
||||
.2byte 307
|
||||
.2byte 0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.string "pksdir0\0"
|
||||
.4byte noneText
|
||||
@@ -558,6 +558,7 @@ gUnknown_80D4144: @ 80D4144
|
||||
defaultText:
|
||||
.string "default\0"
|
||||
|
||||
@ Error Handling
|
||||
.global gFuncFileLineString
|
||||
gFuncFileLineString: @ 80D418C
|
||||
.string "func = '%s'\n"
|
||||
@@ -677,40 +678,40 @@ gUnknown_80D42D4: @ 80D42D4
|
||||
.string "pksdir0\0"
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80D4354
|
||||
gUnknown_80D4354: @ 80D4354
|
||||
.global gSaveCorrupted
|
||||
gSaveCorrupted: @ 80D4354
|
||||
.string "#+The game data is corrupted.\n"
|
||||
.string "#+Your data will be erased.\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80D4398
|
||||
gUnknown_80D4398: @ 80D4398
|
||||
.global gSavingAdventure
|
||||
gSavingAdventure: @ 80D4398
|
||||
.string "#+Saving your adventure...\n"
|
||||
.string "#+Please don~27t turn off the power.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D43D8
|
||||
gUnknown_80D43D8: @ 80D43D8
|
||||
.global gWriteGamePak
|
||||
gWriteGamePak: @ 80D43D8
|
||||
.string "#+Writing to GBA Game Pak.\n"
|
||||
.string "#+Do not remove the GBA Game Pak.\n"
|
||||
.string "#+Please wait with the power on.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D4438
|
||||
gUnknown_80D4438: @ 80D4438
|
||||
.global gSaveCompleted
|
||||
gSaveCompleted: @ 80D4438
|
||||
.string "#+Save completed!\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D444C
|
||||
gUnknown_80D444C: @ 80D444C
|
||||
.global gSaveNotWritten
|
||||
gSaveNotWritten: @ 80D444C
|
||||
.string "#+The data could not be written.\n"
|
||||
.string "#+Please turn off the power and remove\n"
|
||||
.string "#+and reinsert the DS Card.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D44B0
|
||||
gUnknown_80D44B0: @ 80D44B0
|
||||
.global gSaveFailed
|
||||
gSaveFailed: @ 80D44B0
|
||||
.string "#+Save failed.\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
@@ -756,8 +757,8 @@ gUnknown_80D473C: @ 80D473C
|
||||
.string "#+and reinsert the DS Card.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80D47A0
|
||||
gUnknown_80D47A0: @ 80D47A0
|
||||
.global gSaveFailed2
|
||||
gSaveFailed2: @ 80D47A0
|
||||
.string "#+Save failed.\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
@@ -2293,6 +2294,9 @@ gUnknown_80DC4BC: @ 80DC4BC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DC4D4
|
||||
gUnknown_80DC4D4: @ 80DC4D4
|
||||
.byte 0x01, 0x00, 0x12, 0x00
|
||||
|
||||
.global gUnknown_80DC4D8
|
||||
@@ -2307,7 +2311,8 @@ gUnknown_80DC4D8: @ 80DC4D8
|
||||
.byte 0x11, 0x00
|
||||
.byte 0x11, 0x00
|
||||
.byte 0x00, 0x00
|
||||
.byte 0xd4, 0xc4, 0x0d, 0x08
|
||||
|
||||
.4byte gUnknown_80DC4D4
|
||||
|
||||
.global gUnknown_80DC4F0
|
||||
gUnknown_80DC4F0: @ 80DC4F0
|
||||
|
||||
@@ -8729,25 +8729,46 @@ gAdventureLogText: @ 810B04C
|
||||
|
||||
.global gRescueTeamRanks
|
||||
gRescueTeamRanks: @ 810B44C
|
||||
.byte 0xBC, 0xB4, 0x10, 0x08 @ Normal
|
||||
.byte 0xB0, 0xB4, 0x10, 0x08
|
||||
.byte 0xA4, 0xB4, 0x10, 0x08
|
||||
.byte 0x98, 0xB4, 0x10, 0x08
|
||||
.byte 0x88, 0xB4, 0x10, 0x08
|
||||
.byte 0x78, 0xB4, 0x10, 0x08
|
||||
.byte 0x68, 0xB4, 0x10, 0x08 @ Lucario
|
||||
.4byte NormalRank
|
||||
.4byte BronzeRank
|
||||
.4byte SilverRank
|
||||
.4byte GoldRank
|
||||
.4byte PlatinumRank
|
||||
.4byte DiamondRank
|
||||
.4byte LucarioRank
|
||||
|
||||
.global LucarioRank
|
||||
LucarioRank:
|
||||
.string "Lucario Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global DiamondRank
|
||||
DiamondRank:
|
||||
.string "Diamond Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global PlatinumRank
|
||||
PlatinumRank:
|
||||
.string "Platinum Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global GoldRank
|
||||
GoldRank:
|
||||
.string "Gold Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global SilverRank
|
||||
SilverRank:
|
||||
.string "Silver Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global BronzeRank
|
||||
BronzeRank:
|
||||
.string "Bronze Rank\0"
|
||||
.align 2,0
|
||||
|
||||
.global NormalRank
|
||||
NormalRank:
|
||||
.string "Normal Rank\0"
|
||||
.align 2,0
|
||||
|
||||
@@ -9003,18 +9024,23 @@ gUnknown_8113080: @ 8113080
|
||||
.global gUnknown_811383C
|
||||
gUnknown_811383C: @ 811383C
|
||||
.byte 0x2C, 0x38, 0x11, 0x08
|
||||
|
||||
.global PlaceText
|
||||
PlaceText:
|
||||
.string "#+Place: $m0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_8113850
|
||||
gUnknown_8113850: @ 8113850
|
||||
.byte 0x40, 0x38, 0x11, 0x08
|
||||
.string "$m1 was defeated by\0"
|
||||
.4byte PlaceText
|
||||
|
||||
.global DefeatedbyText
|
||||
DefeatedbyText:
|
||||
.string "$m1 was defeated by\0"
|
||||
|
||||
.global gUnknown_8113868
|
||||
gUnknown_8113868: @ 8113868
|
||||
.byte 0x54, 0x38, 0x11, 0x08
|
||||
.4byte DefeatedbyText
|
||||
.string "$m1\0"
|
||||
.align 2,0
|
||||
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
struct unkTimeStruct
|
||||
{
|
||||
u16 unk0;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
#ifndef SAVE_H
|
||||
#define SAVE_H
|
||||
|
||||
#include "time.h"
|
||||
|
||||
struct UnkStruct_sub_8011DAC {
|
||||
u8 fill000[0x4];
|
||||
u8 unk004[0x400];
|
||||
u8 unk404[0x10];
|
||||
u32 unk414;
|
||||
u32 unk418;
|
||||
u32 unk41C;
|
||||
u32 unk420;
|
||||
u32 unk424;
|
||||
u32 unk428;
|
||||
u8 fill42C[0x4];
|
||||
u32 unk430;
|
||||
u32 unk434;
|
||||
u32 unk438;
|
||||
u32 unk43C;
|
||||
u32 unk440;
|
||||
u32 unk444;
|
||||
u8 unk448[0x538C];
|
||||
};
|
||||
|
||||
|
||||
struct UnkStruct_203B184 {
|
||||
/* 0x0 */ u32 *unk0;
|
||||
/* 0x4 */ u32 *unk4;
|
||||
@@ -19,7 +37,7 @@ struct UnkStruct_203B184 {
|
||||
/* 0x24 */ u8 *unk24;
|
||||
/* 0x28 */ u8 *BoughtFriendAreas;
|
||||
/* 0x2C */ u32 unk2C;
|
||||
/* 0x30 */ struct unkTimeStruct *unk30;
|
||||
/* 0x30 */ struct PlayTimeStruct *playTime;
|
||||
u32 unk34;
|
||||
u32 unk38;
|
||||
u32 unk3C;
|
||||
@@ -32,3 +50,41 @@ struct UnkStruct_203B184 {
|
||||
u32 unk058;
|
||||
};
|
||||
|
||||
u32 sub_8011C1C(void);
|
||||
void sub_8011C28(u32 in);
|
||||
s32 sub_8011C34(void);
|
||||
void sub_8011C40(s32 in);
|
||||
u32 sub_8011C4C(void);
|
||||
void sub_8011CA8(u32 *out, s32 size);
|
||||
u32 sub_8011DAC(u32 *a);
|
||||
u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size);
|
||||
bool8 sub_8011FF8(void);
|
||||
void sub_8012284(void);
|
||||
void sub_8012298(void);
|
||||
void sub_80122A8(void);
|
||||
void sub_8012468(void);
|
||||
u8 sub_8012484(void);
|
||||
void sub_8012558(void);
|
||||
void sub_8012574(s16 PokemonID);
|
||||
u8 sub_8012600(void);
|
||||
u32 sub_8012744(void);
|
||||
void sub_8012750(void);
|
||||
u32 sub_80127A8(void);
|
||||
u8 sub_8012828(void);
|
||||
void sub_8012834(void);
|
||||
void sub_8012850(u8 *r0, u32 r1, u8 r2);
|
||||
u32 sub_80128B0(void);
|
||||
void sub_80129FC(void);
|
||||
|
||||
void sub_8012298();
|
||||
void sub_80122D0();
|
||||
void sub_80122F4();
|
||||
void sub_8012300();
|
||||
void sub_80122A8();
|
||||
|
||||
u32 ReadSaveSector(s32 *a, u8 *dest, s32 size);
|
||||
u32 WriteSaveSector(s32 *a, u8 *src, s32 size);
|
||||
void CalculateChecksum(u8 *out, u32 size);
|
||||
bool8 ValidateChecksum(u8 *in, u32 size);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -11,9 +11,9 @@ struct PlayTimeStruct
|
||||
|
||||
void IncrementPlayTime(struct PlayTimeStruct *Time);
|
||||
void ResetPlayTime(struct PlayTimeStruct *Time);
|
||||
struct PlayTimeStruct *sub_8094FA0(void);
|
||||
struct PlayTimeStruct *GetPlayTime(void);
|
||||
void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds);
|
||||
void sub_8094F88(void);
|
||||
void InitializePlayTime(void);
|
||||
|
||||
|
||||
#endif // TIME_H
|
||||
|
||||
@@ -82,10 +82,7 @@ SECTIONS {
|
||||
src/debug.o(.text);
|
||||
asm/debug.o(.text);
|
||||
src/save.o(.text);
|
||||
asm/save.o(.text);
|
||||
src/save_mid.o(.text);
|
||||
asm/save1.o(.text);
|
||||
src/save1.o(.text);
|
||||
src/code_8012A18.o(.text);
|
||||
src/more_input.o(.text);
|
||||
asm/code_8012A18.o(.text);
|
||||
src/code_801D760.o(.text);
|
||||
|
||||
17
src/code_2.c
17
src/code_2.c
@@ -1,19 +1,20 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "file_system.h"
|
||||
#include "friend_area.h"
|
||||
#include "input.h"
|
||||
#include "bg.h"
|
||||
#include "memory.h"
|
||||
#include "music.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "time.h"
|
||||
#include "save.h"
|
||||
|
||||
extern void InitHeap(void);
|
||||
extern void NDS_DebugInit(void);
|
||||
extern void sub_801180C(void);
|
||||
extern void NDS_LoadOverlay_GroundMain(void);
|
||||
extern void sub_8014144(void);
|
||||
extern void LoadMonsterParameters(void);
|
||||
extern void sub_8097670(void);
|
||||
extern void sub_8094F88(void);
|
||||
extern void sub_8094980(void);
|
||||
extern void sub_8094C14(void);
|
||||
extern void sub_8097F5C(void);
|
||||
@@ -23,12 +24,10 @@ extern void LoadWazaParameters(void);
|
||||
extern void sub_80950BC(void);
|
||||
extern void sub_80958E8(void);
|
||||
extern void sub_800CD64(u32, u32);
|
||||
extern void sub_8012284(void);
|
||||
extern void sub_8094998(u32);
|
||||
extern void SetWindowTitle(char *);
|
||||
extern void sub_800DAAC(void);
|
||||
extern void SetSavingIconCoords(u32);
|
||||
extern u32 sub_8011DAC(u32 *);
|
||||
extern void sub_800135C(void);
|
||||
extern void xxx_script_related_8001334(u32);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
@@ -43,9 +42,6 @@ extern void LoadTitleScreen(void);
|
||||
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
|
||||
extern void sub_80095CC(u32, u32);
|
||||
extern void InitMainMenu(void);
|
||||
extern void sub_8012468(void);
|
||||
extern u32 sub_8012484(void);
|
||||
extern void sub_8012558(void);
|
||||
extern u8 sub_80363E0(void);
|
||||
extern void SetUpMenu(void);
|
||||
extern u32 UpdateMenu(void);
|
||||
@@ -53,7 +49,6 @@ extern void CleanUpMenu(void);
|
||||
extern void DeleteMainMenu(void);
|
||||
extern s32 sub_80953D4(u32);
|
||||
extern void sub_8095240(u8);
|
||||
extern void sub_80122A8(void);
|
||||
extern void nullsub_33(void);
|
||||
extern u32 sub_80009D0(u32);
|
||||
|
||||
@@ -96,7 +91,7 @@ void GameLoop(void)
|
||||
sub_8014144();
|
||||
LoadMonsterParameters();
|
||||
sub_8097670();
|
||||
sub_8094F88();
|
||||
InitializePlayTime();
|
||||
sub_8094980();
|
||||
sub_8094C14();
|
||||
sub_8097F5C();
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "code_800558C.h"
|
||||
|
||||
extern u32 gUnknown_203B47C;
|
||||
|
||||
extern u8 gUnknown_2026E38;
|
||||
extern u32 gUnknown_2026E3C;
|
||||
extern u16 gUnknown_2026E4E;
|
||||
|
||||
@@ -21,7 +21,7 @@ extern void sub_800C074(u16 r0, u16 r1);
|
||||
extern void sub_800C298(u16 r0);
|
||||
extern u8 sub_800C5D0(u16 r0);
|
||||
|
||||
extern struct PlayTimeStruct *gUnknown_203B47C;
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
|
||||
struct UnkSaveStruct1
|
||||
{
|
||||
@@ -81,7 +81,7 @@ void sub_801169C(void)
|
||||
nullsub_8(gUnknown_203B46C->unkA);
|
||||
sub_8005180();
|
||||
sub_80060EC();
|
||||
IncrementPlayTime(gUnknown_203B47C);
|
||||
IncrementPlayTime(gPlayTimeRef);
|
||||
sub_800CB20();
|
||||
LoadBufferedInputs();
|
||||
CopySpritesToOam();
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
#include "code_800558C.h"
|
||||
#include "input.h"
|
||||
|
||||
|
||||
struct UnkSaveStruct1
|
||||
struct UnkStruct_203B46C
|
||||
{
|
||||
/* 0x0 */ u32 unk0;
|
||||
/* 0x4 */ u32 unk4;
|
||||
@@ -12,7 +11,6 @@ struct UnkSaveStruct1
|
||||
};
|
||||
|
||||
|
||||
extern void MemoryFree(void *);
|
||||
extern void sub_8011860();
|
||||
extern void xxx_draw_string_80144C4();
|
||||
extern void nullsub_8(u8);
|
||||
@@ -26,17 +24,8 @@ extern void sub_8009908();
|
||||
extern void xxx_call_update_bg_sound_input();
|
||||
extern void ResetSprites(u8 r0);
|
||||
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
extern struct UnkStruct_203B46C *gUnknown_203B46C;
|
||||
|
||||
extern u8 *gUnknown_203B194;
|
||||
|
||||
void sub_80129FC()
|
||||
{
|
||||
if (gUnknown_203B194) {
|
||||
MemoryFree(gUnknown_203B194);
|
||||
gUnknown_203B194 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8012A18()
|
||||
{
|
||||
@@ -15,7 +15,7 @@ struct unkStruct_203B418
|
||||
u8 unk18217;
|
||||
};
|
||||
|
||||
extern struct PlayTimeStruct *gUnknown_203B47C;
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern struct unkStruct_203B418 *gUnknown_203B418;
|
||||
extern s32 gUnknown_80F6568[];
|
||||
extern u8 gUnknown_202EE01;
|
||||
@@ -36,7 +36,7 @@ void sub_8040094(u8 r0)
|
||||
gUnknown_203B418->unk18217 = r0;
|
||||
sub_803F7BC();
|
||||
sub_80060EC();
|
||||
IncrementPlayTime(gUnknown_203B47C);
|
||||
IncrementPlayTime(gPlayTimeRef);
|
||||
sub_800CB20();
|
||||
LoadBufferedInputs();
|
||||
xxx_call_update_bg_sound_input();
|
||||
|
||||
@@ -61,60 +61,21 @@ void sub_808EB0C(u8 *r0, s32 r1)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
void sub_808EB48(u8 *r0, s32 r1)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
// TODO array access and counter are mixed up in the regs.. so close
|
||||
s32 counter;
|
||||
u32 index;
|
||||
|
||||
index = 0;
|
||||
counter = 0xB;
|
||||
while(counter >= 0)
|
||||
for(counter = 0; counter <= 0xB; counter++)
|
||||
{
|
||||
if(gUnknown_810A378[index] <= r1)
|
||||
if(gUnknown_810A378[counter] <= r1)
|
||||
{
|
||||
r0[index] = TRUE;
|
||||
r0[counter] = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r0[index] = FALSE;
|
||||
r0[counter] = FALSE;
|
||||
}
|
||||
index++;
|
||||
counter--;
|
||||
}
|
||||
#else
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tadds r4, r1, 0\n"
|
||||
"\tmovs r6, 0x1\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tldr r1, _0808EB64\n"
|
||||
"\tmovs r3, 0xB\n"
|
||||
"_0808EB56:\n"
|
||||
"\tmovs r7, 0\n"
|
||||
"\tldrsh r0, [r1, r7]\n"
|
||||
"\tcmp r0, r4\n"
|
||||
"\tbgt _0808EB68\n"
|
||||
"\tstrb r6, [r2]\n"
|
||||
"\tb _0808EB6A\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808EB64: .4byte gUnknown_810A378\n"
|
||||
"_0808EB68:\n"
|
||||
"\tstrb r5, [r2]\n"
|
||||
"_0808EB6A:\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tadds r1, 0x2\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbge _0808EB56\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
#endif
|
||||
}
|
||||
|
||||
bool8 sub_808EB7C(s32 r0, u8 r1)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "time.h"
|
||||
|
||||
extern struct PlayTimeStruct *gUnknown_203B47C;
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern struct PlayTimeStruct gPlayTime;
|
||||
|
||||
extern u8 gUnknown_2038C88;
|
||||
@@ -18,17 +18,13 @@ extern void sub_809488C(u32 *r0, u32 *r1, u32);
|
||||
extern void sub_8094924(u32 *r0, u32 *r1, u32);
|
||||
|
||||
|
||||
// Forward Declaration
|
||||
void ResetPlayTime(struct PlayTimeStruct *Time);
|
||||
|
||||
|
||||
void sub_8094F88(void)
|
||||
void InitializePlayTime(void)
|
||||
{
|
||||
gUnknown_203B47C = &gPlayTime;
|
||||
gPlayTimeRef = &gPlayTime;
|
||||
ResetPlayTime(&gPlayTime);
|
||||
}
|
||||
|
||||
struct PlayTimeStruct *sub_8094FA0(void)
|
||||
struct PlayTimeStruct *GetPlayTime(void)
|
||||
{
|
||||
return &gPlayTime;
|
||||
}
|
||||
@@ -93,18 +89,18 @@ void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinut
|
||||
|
||||
void sub_8095044(u32 *r0)
|
||||
{
|
||||
sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->frames)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->seconds)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->minutes)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->hours)), 14);
|
||||
sub_809488C(r0, (u32 *)(&(gPlayTimeRef->frames)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gPlayTimeRef->seconds)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gPlayTimeRef->minutes)), 6);
|
||||
sub_809488C(r0, (u32 *)(&(gPlayTimeRef->hours)), 14);
|
||||
}
|
||||
|
||||
void sub_8095080(u32 *r0)
|
||||
{
|
||||
sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->frames)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->seconds)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->minutes)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->hours)), 14);
|
||||
sub_8094924(r0, (u32 *)(&(gPlayTimeRef->frames)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gPlayTimeRef->seconds)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gPlayTimeRef->minutes)), 6);
|
||||
sub_8094924(r0, (u32 *)(&(gPlayTimeRef->hours)), 14);
|
||||
}
|
||||
|
||||
void sub_80950BC(void)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "time.h"
|
||||
#include "input.h"
|
||||
|
||||
extern struct PlayTimeStruct *gUnknown_203B47C;
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
extern u32 gUnknown_20398A8;
|
||||
extern u32 gUnknown_20398AC;
|
||||
extern u32 gUnknown_20398B0;
|
||||
@@ -81,7 +81,7 @@ void sub_8098BDC(void)
|
||||
sub_8099BE4();
|
||||
sub_8099744();
|
||||
sub_8011860();
|
||||
IncrementPlayTime(gUnknown_203B47C);
|
||||
IncrementPlayTime(gPlayTimeRef);
|
||||
sub_800CB20();
|
||||
LoadBufferedInputs();
|
||||
nullsub_120();
|
||||
|
||||
@@ -73,10 +73,9 @@ void sub_800BA5C(void)
|
||||
nullsub_18();
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void xxx_update_bg_sound_input(void)
|
||||
{
|
||||
u8 store;
|
||||
u32 store;
|
||||
store = gUnknown_203B09B;
|
||||
if(gUnknown_203B09B != 0){
|
||||
gUnknown_203B09C++;
|
||||
@@ -93,55 +92,6 @@ void xxx_update_bg_sound_input(void)
|
||||
gUnknown_203B0A4 = gUnknown_203B0A0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void xxx_update_bg_sound_input(void)
|
||||
{
|
||||
asm_unified("\tpush {r4,r5,lr}\n"
|
||||
"\tldr r1, _0800BACC\n"
|
||||
"\tldrb r4, [r1]\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _0800BAD4\n"
|
||||
"\tldr r1, _0800BAD0\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tb _0800BAFE\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800BACC: .4byte gUnknown_203B09B\n"
|
||||
"_0800BAD0: .4byte gUnknown_203B09C\n"
|
||||
"_0800BAD4:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldr r0, _0800BB04\n"
|
||||
"\tstrb r4, [r0]\n"
|
||||
"\tldr r0, _0800BB08\n"
|
||||
"\tstr r4, [r0]\n"
|
||||
"\tbl UpdateBGControlRegisters\n"
|
||||
"\tldr r5, _0800BB0C\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0800BAF0\n"
|
||||
"\tbl UpdateSound\n"
|
||||
"_0800BAF0:\n"
|
||||
"\tbl UpdateInput\n"
|
||||
"\tstrb r4, [r5]\n"
|
||||
"\tldr r0, _0800BB10\n"
|
||||
"\tldr r1, _0800BB14\n"
|
||||
"\tldr r1, [r1]\n"
|
||||
"\tstr r1, [r0]\n"
|
||||
"_0800BAFE:\n"
|
||||
"\tpop {r4,r5}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0800BB04: .4byte gUnknown_203B09A\n"
|
||||
"_0800BB08: .4byte gUnknown_203B09C\n"
|
||||
"_0800BB0C: .4byte gUnknown_203B099\n"
|
||||
"_0800BB10: .4byte gUnknown_203B0A4\n"
|
||||
"_0800BB14: .4byte gUnknown_203B0A0");
|
||||
}
|
||||
#endif
|
||||
|
||||
void Timer3Intr(void)
|
||||
{
|
||||
|
||||
792
src/save.c
792
src/save.c
@@ -1,29 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "flash.h"
|
||||
#include "memory.h"
|
||||
#include "save.h"
|
||||
#include "event_flag.h"
|
||||
|
||||
struct UnkStruct_sub_8011DAC {
|
||||
u8 fill000[0x4];
|
||||
u8 unk004[0x400];
|
||||
u8 fill404[0x10];
|
||||
u32 unk414;
|
||||
u32 unk418;
|
||||
u32 unk41C;
|
||||
u32 unk420;
|
||||
u32 unk424;
|
||||
u32 unk428;
|
||||
u8 fill42C[0x4];
|
||||
u32 unk430;
|
||||
u32 unk434;
|
||||
u32 unk438;
|
||||
u32 unk43C;
|
||||
u32 unk440;
|
||||
u32 unk444;
|
||||
u8 fill448[0x538C];
|
||||
};
|
||||
|
||||
#include "flash.h"
|
||||
#include "friend_area.h"
|
||||
#include "memory.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "save.h"
|
||||
|
||||
struct unk_struct
|
||||
{
|
||||
@@ -34,28 +16,150 @@ struct unk_struct
|
||||
u32 unk10;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
u32 padding[505];
|
||||
u32 unk1C;
|
||||
u32 padding[504];
|
||||
};
|
||||
|
||||
struct unk_203B188
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
|
||||
extern struct unk_203B188 *gUnknown_203B188;
|
||||
|
||||
struct unkStruct_203B18C
|
||||
{
|
||||
u32 unk0;
|
||||
s32 unk4;
|
||||
u32 unk8;
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *faceData;
|
||||
u16 unk14;
|
||||
u16 unk16;
|
||||
u8 unk18;
|
||||
u8 unk19;
|
||||
u8 unk1A;
|
||||
u8 unk1B;
|
||||
u16 pokeID;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B18C *gUnknown_203B18C;
|
||||
|
||||
struct unkStruct_203B190
|
||||
{
|
||||
s32 unk0;
|
||||
u8 *unk4;
|
||||
u32 unk8;
|
||||
u8 unkC;
|
||||
};
|
||||
extern struct unkStruct_203B190 *gUnknown_203B190;
|
||||
|
||||
struct unkStruct_203B194
|
||||
{
|
||||
s32 unk0;
|
||||
u8 *unk4;
|
||||
u32 unk8;
|
||||
u8 unkC;
|
||||
u8 padding[0x10 - 0xD];
|
||||
u32 unk10;
|
||||
};
|
||||
extern struct unkStruct_203B194 *gUnknown_203B194;
|
||||
|
||||
|
||||
extern s32 gUnknown_202DE28;
|
||||
extern u32 gUnknown_203B17C;
|
||||
extern u32 gUnknown_203B180;
|
||||
extern u32 *gUnknown_203B45C;
|
||||
extern u32 *gUnknown_203B460;
|
||||
extern u32 gUnknown_203B464;
|
||||
extern u8 *gFriendAreas;
|
||||
extern u32 gUnknown_203B46C;
|
||||
extern u8 *gUnknown_203B480;
|
||||
extern u8 *gUnknown_203B484;
|
||||
extern u32 *gUnknown_203B488;
|
||||
extern u32 *gUnknown_203B48C;
|
||||
extern u32 gUnknown_203B490;
|
||||
extern u32 gUnknown_203B494;
|
||||
extern u8 *gUnknown_203B498;
|
||||
|
||||
extern const char gSaveCorrupted;
|
||||
extern const char gSavingAdventure;
|
||||
extern const char gWriteGamePak;
|
||||
extern const char gSaveCompleted;
|
||||
extern const char gSaveNotWritten;
|
||||
extern const char gSaveFailed;
|
||||
extern const char gUnknown_80D44C8;
|
||||
extern const char gUnknown_80D45AC;
|
||||
|
||||
extern const char gUnknown_80D45F4;
|
||||
extern const char gUnknown_80D4668;
|
||||
extern const char gUnknown_80D473C;
|
||||
extern const char gSaveFailed2;
|
||||
|
||||
extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
|
||||
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFree(void* a);
|
||||
extern void SetRngState(s32 state);
|
||||
extern bool8 sub_800DAB0(u16, u8*, s32);
|
||||
extern bool8 sub_800DAB4(u16, u8*, s32);
|
||||
extern bool8 sub_800DAB8(void);
|
||||
extern void sub_8011830(void);
|
||||
extern void sub_80140DC();
|
||||
extern void sub_8014114();
|
||||
extern void sub_80141B4(const char *r0, u32 r1, u8 *r2, u16 r3);
|
||||
extern u32 sub_80144A4(u32 *a);
|
||||
extern u32 sub_808ED78(u8 *, u32);
|
||||
extern u32 sub_808EE9C(void* a, s32 b);
|
||||
extern u32 sub_808F154(u8 *, u32);
|
||||
extern u32 sub_808F2B0(void* a, s32 b);
|
||||
extern u32 sub_8091C68(u8 *, u32);
|
||||
extern u32 sub_8091D14(void* a, s32 b);
|
||||
extern u32 sub_80921C4(u8 *, u32);
|
||||
extern u32 sub_809222C(void* a, s32 b);
|
||||
extern u32 sub_80927A8(u8 *, u32);
|
||||
extern u32 sub_80927F4(void* a, s32 b);
|
||||
extern u8 *sub_8095100(void);
|
||||
extern u32 *sub_8095108(void);
|
||||
extern u32 *sub_8095110(void);
|
||||
extern void sub_8095118(void);
|
||||
extern u32 sub_80954CC(void* a, s32 b);
|
||||
extern u32 sub_8095624(u8 *, u32);
|
||||
extern u32 sub_8096FA0(void* a, s32 b);
|
||||
extern u32 sub_80970D8(u8 *, u32);
|
||||
extern void sub_80976A8();
|
||||
extern u32 sub_8097D60(u8 *, u32);
|
||||
extern u32 sub_8097D98(void* a, s32 b);
|
||||
extern void sub_80993E4();
|
||||
extern void sub_800135C(void);
|
||||
extern u32 *sub_808CE00(void);
|
||||
extern void sub_808CE08(void);
|
||||
extern u32 *sub_80909D0(void);
|
||||
extern void sub_80909D8(void);
|
||||
extern u32 sub_809208C(void);
|
||||
extern void sub_8092094(void);
|
||||
extern u32 sub_8094990(void);
|
||||
extern void sub_8094998(u8 r0);
|
||||
extern u8 *sub_80950F8(void);
|
||||
extern void sub_80958E4(u8 *a, u32 b);
|
||||
extern u32 sub_80958F8(void);
|
||||
extern void sub_8095900(void);
|
||||
extern void sub_80972F4(void);
|
||||
extern u32 sub_8097680(void);
|
||||
extern u32 *sub_809769C(void);
|
||||
extern void sub_80974E8(void);
|
||||
extern void sub_8097748(void);
|
||||
extern u8 *sub_8097F6C(void);
|
||||
extern void sub_8097F74(void);
|
||||
extern void sub_80993D8(void);
|
||||
|
||||
extern struct PlayTimeStruct *gPlayTimeRef;
|
||||
|
||||
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFree(void* a);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void xxx_call_start_bg_music(void);
|
||||
|
||||
|
||||
u32 sub_8011C1C(void)
|
||||
{
|
||||
@@ -181,6 +285,7 @@ u32 ReadSaveSector(s32 *a, u8 *dest, s32 size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Unused
|
||||
bool8 sub_8011DA8(void)
|
||||
{
|
||||
return TRUE;
|
||||
@@ -189,7 +294,7 @@ bool8 sub_8011DA8(void)
|
||||
u32 sub_8011DAC(u32 *a)
|
||||
{
|
||||
struct UnkStruct_sub_8011DAC *r5 = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC), 5);
|
||||
u8 *r4 = (u8*)r5->fill448;
|
||||
u8 *r4 = (u8*)r5->unk448;
|
||||
u32 r7 = ReadSaveSector(a, (u8*)r5, sizeof(struct UnkStruct_sub_8011DAC));
|
||||
u32 r1;
|
||||
if (r7)
|
||||
@@ -226,7 +331,7 @@ u32 sub_8011DAC(u32 *a)
|
||||
r7 = 4;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else {
|
||||
MemoryCopy8(gUnknown_203B184->unk04C, r5->unk004, ARRAY_COUNT(r5->unk004));
|
||||
}
|
||||
}
|
||||
@@ -276,9 +381,9 @@ u32 sub_8011DAC(u32 *a)
|
||||
return r7;
|
||||
}
|
||||
|
||||
u32 sub_8011F9C(s32 *r0, u8 *r1, s32 r2)
|
||||
u32 sub_8011F9C(s32 *r0, u8 *dest, s32 size)
|
||||
{
|
||||
return ReadSaveSector(r0, r1, r2);
|
||||
return ReadSaveSector(r0, dest, size);
|
||||
}
|
||||
|
||||
u32 sub_8011FA8(void)
|
||||
@@ -324,3 +429,626 @@ bool8 sub_8011FF8(void)
|
||||
MemoryFree(r5);
|
||||
return r6;
|
||||
}
|
||||
|
||||
u32 sub_801203C(s32 *param_1,u32 param_2)
|
||||
{
|
||||
struct UnkStruct_sub_8011DAC *iVar1;
|
||||
char *__src;
|
||||
int r5;
|
||||
int r4;
|
||||
u8 *array_ptr;
|
||||
|
||||
iVar1 = MemoryAlloc(sizeof(struct UnkStruct_sub_8011DAC),5);
|
||||
array_ptr = iVar1->unk448;
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
iVar1->unk41C = param_2;
|
||||
iVar1->unk418 = sub_8011C34();
|
||||
iVar1->unk420 = GetRngState();
|
||||
}
|
||||
else {
|
||||
iVar1->unk41C = gUnknown_203B184->unk054;
|
||||
iVar1->unk418 = gUnknown_203B184->unk050;
|
||||
iVar1->unk420 = gUnknown_203B184->unk058;
|
||||
}
|
||||
iVar1->unk414 = 0x5071412;
|
||||
__src = (char *)sub_8011C4C();
|
||||
strncpy(iVar1->unk404,__src,16);
|
||||
if (gUnknown_203B184 == NULL) {
|
||||
sub_8002700(&iVar1->unk004);
|
||||
}
|
||||
else {
|
||||
MemoryCopy8(iVar1->unk004,gUnknown_203B184->unk04C,0x400);
|
||||
}
|
||||
|
||||
iVar1->unk424 = sub_808ED78(array_ptr,0x4650);
|
||||
array_ptr += 0x4650;
|
||||
iVar1->unk428 = sub_808F154(array_ptr,0x258);
|
||||
array_ptr += 0x258;
|
||||
iVar1->unk430 = sub_8091C68(array_ptr,0x1D8);
|
||||
array_ptr += 0x1D8;
|
||||
iVar1->unk434 = sub_80921C4(array_ptr,0x10);
|
||||
array_ptr += 0x10;
|
||||
iVar1->unk438 = sub_80927A8(array_ptr,8);
|
||||
array_ptr += 8;
|
||||
iVar1->unk43C = sub_8097D60(array_ptr,0x100);
|
||||
array_ptr += 0x100;
|
||||
iVar1->unk440 = sub_8095624(array_ptr,0x594);
|
||||
array_ptr += 0x594;
|
||||
iVar1->unk444 = sub_80970D8(array_ptr,0x221);
|
||||
|
||||
r5 = WriteSaveSector(param_1,(u8 *)iVar1,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
r4 = WriteSaveSector(param_1,(u8 *)iVar1,sizeof(struct UnkStruct_sub_8011DAC));
|
||||
MemoryFree(iVar1);
|
||||
|
||||
if (r5 != 0)
|
||||
return r5;
|
||||
if (r4 != 0)
|
||||
return r4;
|
||||
return r5;
|
||||
}
|
||||
|
||||
|
||||
s32 sub_80121D4(s32 *a, u8 *src, s32 size)
|
||||
{
|
||||
return WriteSaveSector(a, src, size);
|
||||
}
|
||||
|
||||
u32 sub_80121E0(u32 r0)
|
||||
{
|
||||
u32 temp;
|
||||
u32 *temp2;
|
||||
u32 temp3;
|
||||
struct unk_struct *r4 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
temp = 0x1F;
|
||||
|
||||
r4->unk18 = r0;
|
||||
r4->unk1C = *sub_809769C();
|
||||
r4->unk14 = 0x5071412;
|
||||
|
||||
temp2 = (u32 *)sub_8011C4C();
|
||||
strncpy((u8 *)r4 + 4, (u8*)temp2, 16);
|
||||
sub_80958E4((u8 *)r4 + 32, 0);
|
||||
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
|
||||
MemoryFree(r4);
|
||||
return temp3;
|
||||
}
|
||||
|
||||
u32 sub_8012240(void)
|
||||
{
|
||||
s32 temp;
|
||||
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
MemoryFill8((u8 *)r5, 0xFF, 0x4);
|
||||
sub_8011830();
|
||||
temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
|
||||
xxx_call_start_bg_music();
|
||||
MemoryFree(r5);
|
||||
if(temp != 0)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8012284(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
}
|
||||
|
||||
void sub_8012298(void)
|
||||
{
|
||||
sub_80976A8();
|
||||
sub_80122A8();
|
||||
}
|
||||
|
||||
void sub_80122A8(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
sub_8012240();
|
||||
|
||||
}
|
||||
|
||||
void nullsub_33(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_80122C4(void)
|
||||
{
|
||||
sub_80122A8();
|
||||
}
|
||||
|
||||
void sub_80122D0(void)
|
||||
{
|
||||
sub_8011C28(0);
|
||||
sub_8011C40(-1);
|
||||
sub_8097748();
|
||||
ResetPlayTime(gPlayTimeRef);
|
||||
}
|
||||
|
||||
void sub_80122F4(void)
|
||||
{
|
||||
sub_800135C();
|
||||
}
|
||||
|
||||
void sub_8012300(void)
|
||||
{
|
||||
InitializeFriendAreas();
|
||||
sub_808CE08();
|
||||
sub_80909D8();
|
||||
sub_8092094();
|
||||
sub_80972F4();
|
||||
sub_8095118();
|
||||
sub_8095900();
|
||||
sub_80974E8();
|
||||
sub_8094998(1);
|
||||
sub_8097F74();
|
||||
}
|
||||
|
||||
|
||||
// Unused
|
||||
void nullsub_200(u32 r0)
|
||||
{
|
||||
}
|
||||
|
||||
// Unused
|
||||
void sub_8012334(struct UnkStruct_203B184 *r0)
|
||||
{
|
||||
gUnknown_203B184 = r0;
|
||||
if(r0 != NULL)
|
||||
{
|
||||
gUnknown_203B460 = r0->unk0;
|
||||
gUnknown_203B45C = r0->unk4;
|
||||
gUnknown_203B480 = r0->unk8;
|
||||
gUnknown_203B484 = r0->unkC;
|
||||
gUnknown_203B488 = r0->unk10;
|
||||
gUnknown_203B48C = r0->unk14;
|
||||
gUnknown_203B490 = r0->unk18;
|
||||
gUnknown_203B464 = r0->unk1C;
|
||||
gUnknown_203B494 = r0->unk20;
|
||||
gUnknown_203B498 = r0->unk24;
|
||||
gFriendAreas = r0->BoughtFriendAreas;
|
||||
gUnknown_203B46C = r0->unk2C;
|
||||
gPlayTimeRef = r0->playTime;
|
||||
return;
|
||||
}
|
||||
gUnknown_203B460 = sub_80909D0();
|
||||
gUnknown_203B45C = sub_808CE00();
|
||||
gUnknown_203B480 = sub_80950F8();
|
||||
gUnknown_203B484 = sub_8095100();
|
||||
gUnknown_203B488 = sub_8095108();
|
||||
gUnknown_203B48C = sub_8095110();
|
||||
gUnknown_203B490 = sub_80958F8();
|
||||
gUnknown_203B464 = sub_809208C();
|
||||
gUnknown_203B494 = sub_8097680();
|
||||
gUnknown_203B498 = sub_8097F6C();
|
||||
gFriendAreas = GetBoughtFriendAreas();
|
||||
gUnknown_203B46C = sub_8094990();
|
||||
gPlayTimeRef = GetPlayTime();
|
||||
|
||||
}
|
||||
|
||||
void sub_8012468(void)
|
||||
{
|
||||
gUnknown_203B188 = MemoryAlloc(sizeof(struct unk_203B188), 5);
|
||||
gUnknown_203B188->unk0 = 1;
|
||||
|
||||
}
|
||||
|
||||
u8 sub_8012484(void)
|
||||
{
|
||||
u32 temp;
|
||||
u32 temp2;
|
||||
switch(gUnknown_203B188->unk0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B188->unk0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
temp = 0;
|
||||
gUnknown_203B188->unk4 = sub_8011DAC(&temp);
|
||||
gUnknown_203B188->unk0 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if(gUnknown_203B188->unk4 != 0)
|
||||
{
|
||||
if(sub_8011FF8())
|
||||
{
|
||||
sub_80141B4(&gSaveCorrupted, 0, 0, 0x301);
|
||||
gUnknown_203B188->unk0 = 3;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B188->unk0 = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B188->unk0 = 6;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
if(sub_80144A4(&temp2) == 0)
|
||||
{
|
||||
gUnknown_203B188->unk0 = 4;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
sub_8012298();
|
||||
gUnknown_203B188->unk0 = 6;
|
||||
case 5:
|
||||
break;
|
||||
case 6:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_8012558(void)
|
||||
{
|
||||
if(gUnknown_203B188 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B188);
|
||||
gUnknown_203B188 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8012574(s16 PokemonID)
|
||||
{
|
||||
struct OpenedFile *file;
|
||||
s32 id_s32;
|
||||
|
||||
id_s32 = PokemonID; // had to cast for asr shift
|
||||
|
||||
sub_80993D8();
|
||||
gUnknown_203B18C = MemoryAlloc(sizeof(struct unkStruct_203B18C),5);
|
||||
gUnknown_203B18C->pokeID = id_s32;
|
||||
gUnknown_203B18C->faceFile = NULL;
|
||||
gUnknown_203B18C->faceData = NULL;
|
||||
if (PokemonID != 0) {
|
||||
file = GetDialogueSpriteDataPtr(id_s32);
|
||||
gUnknown_203B18C->faceFile = file;
|
||||
gUnknown_203B18C->faceData = file->data;
|
||||
gUnknown_203B18C->unk18 = 0;
|
||||
gUnknown_203B18C->unk19 = 0;
|
||||
gUnknown_203B18C->unk1A = 0;
|
||||
gUnknown_203B18C->unk14 = 2;
|
||||
gUnknown_203B18C->unk16 = 8;
|
||||
}
|
||||
if (gUnknown_203B18C->faceFile != 0) {
|
||||
// LDR r0 and R2 statements get flipped... basically matches
|
||||
sub_80141B4(&gSavingAdventure,0,(u8 *)&gUnknown_203B18C->faceFile,0x20);
|
||||
}
|
||||
else {
|
||||
sub_80141B4(&gSavingAdventure,0,0,0x20);
|
||||
}
|
||||
gUnknown_203B18C->unk0 = 3;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_8012574(s16 PokemonID)
|
||||
{
|
||||
asm_unified("\tpush {r4-r6,lr}\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tasrs r4, r0, 16\n"
|
||||
"\tbl sub_80993D8\n"
|
||||
"\tldr r5, _080125D4\n"
|
||||
"\tmovs r0, 0x20\n"
|
||||
"\tmovs r1, 0x5\n"
|
||||
"\tbl MemoryAlloc\n"
|
||||
"\tstr r0, [r5]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tstrh r4, [r0, 0x1C]\n"
|
||||
"\tstr r1, [r0, 0xC]\n"
|
||||
"\tstr r1, [r0, 0x10]\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _080125BA\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl GetDialogueSpriteDataPtr\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tstr r0, [r1, 0xC]\n"
|
||||
"\tldr r0, [r0, 0x4]\n"
|
||||
"\tstr r0, [r1, 0x10]\n"
|
||||
"\tstrb r6, [r1, 0x18]\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tstrb r6, [r0, 0x19]\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tstrb r6, [r0, 0x1A]\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tstrh r0, [r1, 0x14]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tstrh r0, [r1, 0x16]\n"
|
||||
"_080125BA:\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tldr r0, [r1, 0xC]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080125DC\n"
|
||||
"\tadds r2, r1, 0\n"
|
||||
"\tadds r2, 0xC\n"
|
||||
"\tldr r0, _080125D8\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0x20\n"
|
||||
"\tbl sub_80141B4\n"
|
||||
"\tb _080125E8\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080125D4: .4byte gUnknown_203B18C\n"
|
||||
"_080125D8: .4byte gSavingAdventure\n"
|
||||
"_080125DC:\n"
|
||||
"\tldr r0, _080125F8\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0x20\n"
|
||||
"\tbl sub_80141B4\n"
|
||||
"_080125E8:\n"
|
||||
"\tldr r0, _080125FC\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0x3\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tpop {r4-r6}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080125F8: .4byte gSavingAdventure\n"
|
||||
"_080125FC: .4byte gUnknown_203B18C");
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
u8 sub_8012600(void)
|
||||
{
|
||||
struct OpenedFile **faceFile;
|
||||
u32 local_14;
|
||||
u32 other_stack;
|
||||
|
||||
faceFile = NULL;
|
||||
if (gUnknown_203B18C->faceFile != 0) {
|
||||
faceFile = &gUnknown_203B18C->faceFile;
|
||||
}
|
||||
switch(gUnknown_203B18C->unk0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B18C->unk0 = 7;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_203B18C->unk4++;
|
||||
if (8 < gUnknown_203B18C->unk4) {
|
||||
sub_80141B4(&gWriteGamePak, 0, 0, 0x20);
|
||||
gUnknown_203B18C->unk0 = 3;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B18C->unk0 = 4;
|
||||
break;
|
||||
case 4:
|
||||
local_14 = 0;
|
||||
sub_80140DC();
|
||||
gUnknown_203B18C->unk8 = sub_801203C(&local_14, sub_8011C1C());
|
||||
switch(gUnknown_203B18C->unk8)
|
||||
{
|
||||
case 0:
|
||||
if(gUnknown_203B18C->faceFile != NULL)
|
||||
{
|
||||
sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gSaveCompleted, 0, (u8 *)faceFile, 0x101);
|
||||
}
|
||||
gUnknown_203B18C->unk0 = 5;
|
||||
break;
|
||||
case 1:
|
||||
sub_80141B4(&gSaveNotWritten, 0, 0, 0);
|
||||
gUnknown_203B18C->unk0 = 6;
|
||||
break;
|
||||
default:
|
||||
if(gUnknown_203B18C->faceFile != NULL)
|
||||
{
|
||||
sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gSaveFailed, 0, (u8 *)faceFile, 0x101);
|
||||
}
|
||||
gUnknown_203B18C->unk0 = 5;
|
||||
break;
|
||||
}
|
||||
sub_8014114();
|
||||
break;
|
||||
case 5:
|
||||
if (sub_80144A4(&other_stack) == 0)
|
||||
gUnknown_203B18C->unk0 = 7;
|
||||
break;
|
||||
case 6:
|
||||
break;
|
||||
case 7:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_8012744(void)
|
||||
{
|
||||
return gUnknown_203B18C->unk8;
|
||||
}
|
||||
|
||||
void sub_8012750(void)
|
||||
{
|
||||
if(gUnknown_203B18C != NULL)
|
||||
{
|
||||
if(gUnknown_203B18C->faceFile != NULL)
|
||||
{
|
||||
CloseFile(gUnknown_203B18C->faceFile);
|
||||
}
|
||||
MemoryFree(gUnknown_203B18C);
|
||||
gUnknown_203B18C = NULL;
|
||||
}
|
||||
sub_80993E4();
|
||||
}
|
||||
|
||||
void sub_801277C(u8 *r0, u32 r1)
|
||||
{
|
||||
gUnknown_203B190 = MemoryAlloc(sizeof(struct unkStruct_203B190), 5);
|
||||
gUnknown_203B190->unk4 = r0;
|
||||
gUnknown_203B190->unk8 = r1;
|
||||
gUnknown_203B190->unkC = 0;
|
||||
gUnknown_203B190->unk0 = 1;
|
||||
}
|
||||
|
||||
u32 sub_80127A8(void)
|
||||
{
|
||||
u32 stack_1;
|
||||
u32 stack_2;
|
||||
|
||||
switch(gUnknown_203B190->unk0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B190->unk0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
stack_1 = 16;
|
||||
if(sub_8011F9C(&stack_1, gUnknown_203B190->unk4, gUnknown_203B190->unk8) == 0)
|
||||
{
|
||||
gUnknown_203B190->unkC = 1;
|
||||
gUnknown_203B190->unk0 = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D44C8, 0, 0, 0x301);
|
||||
gUnknown_203B190->unk0 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(sub_80144A4(&stack_2) == 0)
|
||||
gUnknown_203B190->unk0 = 3;
|
||||
break;
|
||||
case 3:
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 sub_8012828(void)
|
||||
{
|
||||
return gUnknown_203B190->unkC;
|
||||
}
|
||||
|
||||
void sub_8012834(void)
|
||||
{
|
||||
if(gUnknown_203B190 != NULL){
|
||||
MemoryFree(gUnknown_203B190);
|
||||
gUnknown_203B190 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8012850(u8 *r0, u32 r1, u8 r2)
|
||||
{
|
||||
gUnknown_203B194 = MemoryAlloc(sizeof(struct unkStruct_203B194), 5);
|
||||
gUnknown_203B194->unk4 = r0;
|
||||
gUnknown_203B194->unk8 = r1;
|
||||
gUnknown_203B194->unkC = r2;
|
||||
gUnknown_203B194->unk0 = 0;
|
||||
if(gUnknown_203B194->unkC != 0)
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D45AC, 0, 0, 0x20);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_80128B0(void)
|
||||
{
|
||||
u32 stack_1;
|
||||
u32 stack_2;
|
||||
switch(gUnknown_203B194->unk0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B194->unk0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
sub_80140DC();
|
||||
stack_1 = 16;
|
||||
gUnknown_203B194->unk10 = sub_80121D4(&stack_1, gUnknown_203B194->unk4, gUnknown_203B194->unk8);
|
||||
gUnknown_203B194->unk0 = 2;
|
||||
return 1;
|
||||
case 2:
|
||||
stack_1 = 0;
|
||||
if(gUnknown_203B194->unk10 == 0)
|
||||
{
|
||||
gUnknown_203B194->unk10 = sub_801203C(&stack_1, 2);
|
||||
}
|
||||
switch(gUnknown_203B194->unk10)
|
||||
{
|
||||
case 0:
|
||||
sub_80121E0(0xf1207);
|
||||
if(gUnknown_203B194->unkC != 0)
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D45F4, 0, 0, 0x301);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D4668, 0, 0, 0x301);
|
||||
}
|
||||
gUnknown_203B194->unk0 = 3;
|
||||
break;
|
||||
case 1:
|
||||
sub_80141B4(&gUnknown_80D473C, 0, 0, 0);
|
||||
gUnknown_203B194->unk0 = 4;
|
||||
break;
|
||||
default:
|
||||
sub_80121E0(0xf1209);
|
||||
sub_80141B4(&gSaveFailed2, 0, 0, 0x301);
|
||||
gUnknown_203B194->unk0 = 3;
|
||||
break;
|
||||
}
|
||||
sub_8014114();
|
||||
break;
|
||||
case 3:
|
||||
if(sub_80144A4(&stack_2) == 0)
|
||||
gUnknown_203B194->unk0 = 5;
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
if(gUnknown_203B194->unk10 == 0)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_80129FC()
|
||||
{
|
||||
if (gUnknown_203B194) {
|
||||
MemoryFree(gUnknown_203B194);
|
||||
gUnknown_203B194 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
310
src/save_mid.c
310
src/save_mid.c
@@ -1,310 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "save.h"
|
||||
#include "friend_area.h"
|
||||
|
||||
extern struct UnkStruct_203B184 *gUnknown_203B184;
|
||||
extern struct unkTimeStruct *gUnknown_203B47C;
|
||||
|
||||
struct unk_203B188
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
struct unk_struct
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u32 unk10;
|
||||
u32 unk14;
|
||||
u32 unk18;
|
||||
u32 unk1C;
|
||||
u32 padding[504];
|
||||
};
|
||||
|
||||
extern struct unk_203B188 *gUnknown_203B188;
|
||||
|
||||
extern u32 *gUnknown_203B45C;
|
||||
extern u32 *gUnknown_203B460;
|
||||
extern u32 gUnknown_203B464;
|
||||
extern u8 *gFriendAreas;
|
||||
extern u32 gUnknown_203B46C;
|
||||
extern u8 *gUnknown_203B480;
|
||||
extern u8 *gUnknown_203B484;
|
||||
extern u32 *gUnknown_203B488;
|
||||
extern u32 *gUnknown_203B48C;
|
||||
extern u32 gUnknown_203B490;
|
||||
extern u32 gUnknown_203B494;
|
||||
extern u8 *gUnknown_203B498;
|
||||
extern u32 gUnknown_80D4354;
|
||||
|
||||
extern void sub_800135C(void);
|
||||
extern u32 *sub_808CE00(void);
|
||||
extern void sub_808CE08(void);
|
||||
extern u32 *sub_80909D0(void);
|
||||
extern void sub_80909D8(void);
|
||||
extern u32 sub_809208C(void);
|
||||
extern void sub_8092094(void);
|
||||
extern u32 sub_8094990(void);
|
||||
extern void sub_8094998(u8 r0);
|
||||
extern u8 *sub_80950F8(void);
|
||||
extern u8 *sub_8095100(void);
|
||||
extern u32 *sub_8095108(void);
|
||||
extern u32 *sub_8095110(void);
|
||||
extern void sub_8095118(void);
|
||||
extern u32 sub_80958F8(void);
|
||||
extern void sub_8095900(void);
|
||||
extern u32 sub_8097680(void);
|
||||
extern void sub_80972F4(void);
|
||||
extern void sub_80974E8(void);
|
||||
extern u8 *sub_8097F6C(void);
|
||||
extern void sub_8097F74(void);
|
||||
|
||||
extern void sub_8011C28(u32 r0);
|
||||
extern void sub_8011C40(s32 r0);
|
||||
extern void sub_8097748(void);
|
||||
|
||||
|
||||
extern void ResetPlayTime(struct unkTimeStruct *Time); // defined in src/code_8094F88.c
|
||||
extern struct unkTimeStruct *sub_8094FA0(void);
|
||||
|
||||
extern void* MemoryAlloc(u32 a, u32 b);
|
||||
extern void MemoryFree(void* a);
|
||||
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
|
||||
extern void sub_8011830(void);
|
||||
extern s32 WriteFlashData(s32 sector, u8 *src, s32 size);
|
||||
extern void xxx_call_start_bg_music(void);
|
||||
extern u32 *sub_809769C(void);
|
||||
u32 *sub_8011C4C(void);
|
||||
extern void sub_80958E4(u8 *a, u32 b);
|
||||
extern s32 WriteSaveSector(s32 *a, u8 *src, s32 size);
|
||||
extern u32 sub_8011DAC(u32 *a);
|
||||
extern u32 sub_80144A4(u32 *a);
|
||||
extern bool8 sub_8011FF8(void);
|
||||
extern void sub_80141B4(u32 *r0, u32 r1, u32 r2, u16 r3);
|
||||
|
||||
void sub_8012298();
|
||||
void sub_80122D0();
|
||||
void sub_80122F4();
|
||||
void sub_8012300();
|
||||
void sub_80976A8();
|
||||
void sub_80122A8();
|
||||
|
||||
|
||||
s32 sub_80121D4(s32 *a, u8 *src, s32 size)
|
||||
{
|
||||
return WriteSaveSector(a, src, size);
|
||||
}
|
||||
|
||||
u32 sub_80121E0(u32 r0)
|
||||
{
|
||||
u32 temp;
|
||||
u32 *temp2;
|
||||
u32 temp3;
|
||||
struct unk_struct *r4 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
temp = 0x1F;
|
||||
|
||||
r4->unk18 = r0;
|
||||
r4->unk1C = *sub_809769C();
|
||||
r4->unk14 = 0x5071412;
|
||||
|
||||
temp2 = sub_8011C4C();
|
||||
strncpy((u8 *)r4 + 4, (u8*)temp2, 16);
|
||||
sub_80958E4((u8 *)r4 + 32, 0);
|
||||
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
|
||||
MemoryFree(r4);
|
||||
return temp3;
|
||||
}
|
||||
|
||||
u32 sub_8012240(void)
|
||||
{
|
||||
s32 temp;
|
||||
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
|
||||
MemoryFill8((u8 *)r5, 0xFF, 0x4);
|
||||
sub_8011830();
|
||||
temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct));
|
||||
xxx_call_start_bg_music();
|
||||
MemoryFree(r5);
|
||||
if(temp != 0)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8012284(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
}
|
||||
|
||||
void sub_8012298(void)
|
||||
{
|
||||
sub_80976A8();
|
||||
sub_80122A8();
|
||||
}
|
||||
|
||||
void sub_80122A8(void)
|
||||
{
|
||||
sub_80122D0();
|
||||
sub_80122F4();
|
||||
sub_8012300();
|
||||
sub_8012240();
|
||||
|
||||
}
|
||||
|
||||
void nullsub_33(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_80122C4(void)
|
||||
{
|
||||
sub_80122A8();
|
||||
}
|
||||
|
||||
void sub_80122D0(void)
|
||||
{
|
||||
sub_8011C28(0);
|
||||
sub_8011C40(-1);
|
||||
sub_8097748();
|
||||
ResetPlayTime(gUnknown_203B47C);
|
||||
}
|
||||
|
||||
void sub_80122F4(void)
|
||||
{
|
||||
sub_800135C();
|
||||
}
|
||||
|
||||
void sub_8012300(void)
|
||||
{
|
||||
InitializeFriendAreas();
|
||||
sub_808CE08();
|
||||
sub_80909D8();
|
||||
sub_8092094();
|
||||
sub_80972F4();
|
||||
sub_8095118();
|
||||
sub_8095900();
|
||||
sub_80974E8();
|
||||
sub_8094998(1);
|
||||
sub_8097F74();
|
||||
}
|
||||
|
||||
|
||||
// Unused
|
||||
void nullsub_200(u32 r0)
|
||||
{
|
||||
}
|
||||
|
||||
// Unused
|
||||
void sub_8012334(struct UnkStruct_203B184 *r0)
|
||||
{
|
||||
gUnknown_203B184 = r0;
|
||||
if(r0 != NULL)
|
||||
{
|
||||
gUnknown_203B460 = r0->unk0;
|
||||
gUnknown_203B45C = r0->unk4;
|
||||
gUnknown_203B480 = r0->unk8;
|
||||
gUnknown_203B484 = r0->unkC;
|
||||
gUnknown_203B488 = r0->unk10;
|
||||
gUnknown_203B48C = r0->unk14;
|
||||
gUnknown_203B490 = r0->unk18;
|
||||
gUnknown_203B464 = r0->unk1C;
|
||||
gUnknown_203B494 = r0->unk20;
|
||||
gUnknown_203B498 = r0->unk24;
|
||||
gFriendAreas = r0->BoughtFriendAreas;
|
||||
gUnknown_203B46C = r0->unk2C;
|
||||
gUnknown_203B47C = r0->unk30;
|
||||
return;
|
||||
}
|
||||
gUnknown_203B460 = sub_80909D0();
|
||||
gUnknown_203B45C = sub_808CE00();
|
||||
gUnknown_203B480 = sub_80950F8();
|
||||
gUnknown_203B484 = sub_8095100();
|
||||
gUnknown_203B488 = sub_8095108();
|
||||
gUnknown_203B48C = sub_8095110();
|
||||
gUnknown_203B490 = sub_80958F8();
|
||||
gUnknown_203B464 = sub_809208C();
|
||||
gUnknown_203B494 = sub_8097680();
|
||||
gUnknown_203B498 = sub_8097F6C();
|
||||
gFriendAreas = GetBoughtFriendAreas();
|
||||
gUnknown_203B46C = sub_8094990();
|
||||
gUnknown_203B47C = sub_8094FA0();
|
||||
|
||||
}
|
||||
|
||||
void sub_8012468(void)
|
||||
{
|
||||
gUnknown_203B188 = MemoryAlloc(sizeof(struct unk_203B188), 5);
|
||||
gUnknown_203B188->unk0 = 1;
|
||||
|
||||
}
|
||||
|
||||
u8 sub_8012484(void)
|
||||
{
|
||||
u32 temp;
|
||||
u32 temp2;
|
||||
switch(gUnknown_203B188->unk0)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203B188->unk0 = 1;
|
||||
break;
|
||||
case 1:
|
||||
temp = 0;
|
||||
gUnknown_203B188->unk4 = sub_8011DAC(&temp);
|
||||
gUnknown_203B188->unk0 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if(gUnknown_203B188->unk4 != 0)
|
||||
{
|
||||
if(sub_8011FF8())
|
||||
{
|
||||
sub_80141B4(&gUnknown_80D4354, 0, 0, 0x301);
|
||||
gUnknown_203B188->unk0 = 3;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B188->unk0 = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B188->unk0 = 6;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
if(sub_80144A4(&temp2) == 0)
|
||||
{
|
||||
gUnknown_203B188->unk0 = 4;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
sub_8012298();
|
||||
gUnknown_203B188->unk0 = 6;
|
||||
case 5:
|
||||
break;
|
||||
case 6:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_8012558(void)
|
||||
{
|
||||
if(gUnknown_203B188 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B188);
|
||||
gUnknown_203B188 = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "save.h"
|
||||
|
||||
// Wonder Mail Related
|
||||
struct WonderMailStruct_203B2C0
|
||||
@@ -57,9 +58,6 @@ extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
|
||||
|
||||
extern u32 sub_80144A4(s32 *r0);
|
||||
extern void sub_8011C28(u32);
|
||||
extern void sub_8012574(u32);
|
||||
extern u8 sub_8012600();
|
||||
extern void sub_8012750();
|
||||
extern void sub_8095240(u8);
|
||||
|
||||
extern void sub_809927C(u8);
|
||||
@@ -104,10 +102,6 @@ extern u32 sub_8030DA0(void);
|
||||
extern void sub_8030DE4(void);
|
||||
extern void sub_803092C(void);
|
||||
extern void sub_8011C28(u32);
|
||||
extern void sub_8012574(u32);
|
||||
extern u8 sub_8012600();
|
||||
extern u32 sub_8012744();
|
||||
extern void sub_8012750();
|
||||
|
||||
|
||||
extern u32 sub_80154F0();
|
||||
|
||||
@@ -605,7 +605,7 @@ gUnknown_203B470 = .; /* 203B470 */
|
||||
gUnknown_203B474 = .; /* 203B474 */
|
||||
. += 0x8;
|
||||
|
||||
gUnknown_203B47C = .; /* 203B47C */
|
||||
gPlayTimeRef = .; /* 203B47C */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_203B480 = .; /* 203B480 */
|
||||
|
||||
Reference in New Issue
Block a user