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:
Seth Barberee
2021-02-21 11:13:55 -08:00
committed by GitHub
parent c754c2a046
commit 7fa4f1a92b
25 changed files with 930 additions and 1341 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -605,7 +605,7 @@ gUnknown_203B470 = .; /* 203B470 */
gUnknown_203B474 = .; /* 203B474 */
. += 0x8;
gUnknown_203B47C = .; /* 203B47C */
gPlayTimeRef = .; /* 203B47C */
. += 0x4;
gUnknown_203B480 = .; /* 203B480 */