mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-15 19:08:27 +00:00
commit
439efca963
@ -213,21 +213,21 @@
|
||||
.public GetIGTMinutes
|
||||
.public Save_MysteryGift_Init
|
||||
.public SaveMysteryGift_CardGetByIdx
|
||||
.public sub_0202DC2C
|
||||
.public sub_0202DCAC
|
||||
.public sub_0202DD48
|
||||
.public sub_0202DDB0
|
||||
.public sub_0202DDEC
|
||||
.public SaveMysteryGift_TryInsertGift
|
||||
.public SaveMysteryGift_TryInsertCard
|
||||
.public SaveMysteryGift_TrySetSpecialCard
|
||||
.public SaveMysteryGift_ReceiveGiftAndClearCardByIndex
|
||||
.public SaveMysteryGift_DeleteWonderCardByIndex
|
||||
.public SaveMysteryGift_FindAvailable
|
||||
.public SaveMysteryGift_CardFindAvailable
|
||||
.public sub_0202DE90
|
||||
.public sub_0202DEBC
|
||||
.public sub_0202DED8
|
||||
.public sub_0202DEF8
|
||||
.public sub_0202DF7C
|
||||
.public sub_0202DFAC
|
||||
.public sub_0202E014
|
||||
.public sub_0202E024
|
||||
.public SaveMysteryGift_CardTagIsValid
|
||||
.public SaveMysteryGift_SpecialCardTagIsValid
|
||||
.public SaveMysteryGift_HasAnyCard
|
||||
.public SaveMysteryGift_HasAnyGift
|
||||
.public SaveMysteryGift_ReceivedFlagTest
|
||||
.public SaveMysteryGift_ReceivedFlagSet
|
||||
.public SaveMysteryGift_TestFlagx7FF
|
||||
.public SaveMysteryGift_SetFlagx7FF
|
||||
.public sub_0202EC14
|
||||
.public sub_0202EC28
|
||||
.public sub_0202EC98
|
||||
|
@ -30,12 +30,12 @@
|
||||
.public GiveOrTakeSeal
|
||||
.public SealCase_CheckSealQuantity
|
||||
.public Save_SpecialRibbons_Get
|
||||
.public GetStaticPointerToSaveMysteryGift
|
||||
.public DeleteStaticPointerToMysteryGift
|
||||
.public GetFirstQueuedMysteryGiftIdx
|
||||
.public GetMysteryGiftTagByIdx
|
||||
.public GetMysteryGiftDataByIdx
|
||||
.public SetMysteryGiftReceivedByIdx
|
||||
.public SaveMGDataPtr_Begin
|
||||
.public SaveMGDataPtr_End
|
||||
.public SaveMGDataPtr_GetFirstGiftIndex
|
||||
.public SaveMGDataPtr_GetTagByIndex
|
||||
.public SaveMGDataPtr_GetDataByIndex
|
||||
.public SaveMGDataPtr_SetReceivedByIndex
|
||||
.public UpdatePokedexWithReceivedSpecies
|
||||
.public Save_PhotoAlbum_Get
|
||||
.public PhotoAlbum_GetIndexOfFirstEmptySlot
|
||||
|
@ -6,21 +6,21 @@
|
||||
.public Save_MysteryGift_sizeof
|
||||
.public Save_MysteryGift_Init
|
||||
.public SaveMysteryGift_CardGetByIdx
|
||||
.public sub_0202DC2C
|
||||
.public sub_0202DCAC
|
||||
.public sub_0202DD48
|
||||
.public sub_0202DDB0
|
||||
.public sub_0202DDEC
|
||||
.public SaveMysteryGift_TryInsertGift
|
||||
.public SaveMysteryGift_TryInsertCard
|
||||
.public SaveMysteryGift_TrySetSpecialCard
|
||||
.public SaveMysteryGift_ReceiveGiftAndClearCardByIndex
|
||||
.public SaveMysteryGift_DeleteWonderCardByIndex
|
||||
.public SaveMysteryGift_FindAvailable
|
||||
.public SaveMysteryGift_CardFindAvailable
|
||||
.public sub_0202DE90
|
||||
.public sub_0202DEBC
|
||||
.public sub_0202DED8
|
||||
.public sub_0202DEF8
|
||||
.public sub_0202DF7C
|
||||
.public sub_0202DFAC
|
||||
.public sub_0202E014
|
||||
.public sub_0202E024
|
||||
.public SaveMysteryGift_CardTagIsValid
|
||||
.public SaveMysteryGift_SpecialCardTagIsValid
|
||||
.public SaveMysteryGift_HasAnyCard
|
||||
.public SaveMysteryGift_HasAnyGift
|
||||
.public SaveMysteryGift_ReceivedFlagTest
|
||||
.public SaveMysteryGift_ReceivedFlagSet
|
||||
.public SaveMysteryGift_TestFlagx7FF
|
||||
.public SaveMysteryGift_SetFlagx7FF
|
||||
.public GetStaticPointerToSaveMysteryGift
|
||||
.public DeleteStaticPointerToMysteryGift
|
||||
.public GetFirstQueuedMysteryGiftIdx
|
||||
|
@ -892,7 +892,7 @@ _022276D8:
|
||||
mov r0, #0
|
||||
str r0, [r4, #0x40]
|
||||
ldr r0, [r4, #0x14]
|
||||
bl sub_0202E014
|
||||
bl SaveMysteryGift_TestFlagx7FF
|
||||
cmp r0, #1
|
||||
bne _0222779A
|
||||
ldr r1, [r4, #0x40]
|
||||
@ -2120,7 +2120,7 @@ ov74_MainMenu_PrintMysteryGiftButton: ; 0x022280B4
|
||||
cmp r0, #0
|
||||
bne _022280FC
|
||||
ldr r0, [r5, #0x14]
|
||||
bl sub_0202E014
|
||||
bl SaveMysteryGift_TestFlagx7FF
|
||||
cmp r0, #1
|
||||
bne _022280D4
|
||||
mov r0, #1
|
||||
@ -2179,7 +2179,7 @@ _0222810C:
|
||||
orr r0, r1
|
||||
str r0, [r5, #0x38]
|
||||
ldr r0, [r5, #0x14]
|
||||
bl sub_0202E024
|
||||
bl SaveMysteryGift_SetFlagx7FF
|
||||
add sp, #8
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
@ -4656,7 +4656,7 @@ ov74_0222947C: ; 0x0222947C
|
||||
add r1, r4, #0
|
||||
ldr r0, [r5, r0]
|
||||
mov r2, #3
|
||||
bl sub_0202DC2C
|
||||
bl SaveMysteryGift_TryInsertGift
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
bl GfGfx_EngineBTogglePlanes
|
||||
@ -6258,7 +6258,7 @@ _0222A1CE:
|
||||
add r1, #0x4c
|
||||
ldrh r1, [r1]
|
||||
add r7, r0, #0
|
||||
bl sub_0202DFAC
|
||||
bl SaveMysteryGift_ReceivedFlagSet
|
||||
add r4, #0x4e
|
||||
ldrb r0, [r4]
|
||||
lsl r0, r0, #0x1d
|
||||
@ -6274,7 +6274,7 @@ _0222A1CE:
|
||||
bne _0222A204
|
||||
add r0, r7, #0
|
||||
add r1, r5, #0
|
||||
bl sub_0202DD48
|
||||
bl SaveMysteryGift_TrySetSpecialCard
|
||||
b _0222A21C
|
||||
_0222A204:
|
||||
cmp r6, #0
|
||||
@ -6282,12 +6282,12 @@ _0222A204:
|
||||
add r0, r7, #0
|
||||
add r1, r5, #0
|
||||
mov r2, #3
|
||||
bl sub_0202DC2C
|
||||
bl SaveMysteryGift_TryInsertGift
|
||||
b _0222A21C
|
||||
_0222A214:
|
||||
add r0, r7, #0
|
||||
add r1, r5, #0
|
||||
bl sub_0202DCAC
|
||||
bl SaveMysteryGift_TryInsertCard
|
||||
_0222A21C:
|
||||
ldr r0, [sp]
|
||||
bl ov74_022360A0
|
||||
@ -7229,7 +7229,7 @@ ov74_0222A94C: ; 0x0222A94C
|
||||
add r5, r5, #1
|
||||
str r2, [sp, #0x24]
|
||||
str r1, [sp, #0x28]
|
||||
bl sub_0202DED8
|
||||
bl SaveMysteryGift_HasAnyCard
|
||||
cmp r0, #0
|
||||
beq _0222A992
|
||||
lsl r6, r5, #3
|
||||
@ -7244,7 +7244,7 @@ ov74_0222A94C: ; 0x0222A94C
|
||||
str r2, [r1, #4]
|
||||
_0222A992:
|
||||
ldr r0, [sp, #0x18]
|
||||
bl sub_0202DEBC
|
||||
bl SaveMysteryGift_SpecialCardTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0222A9B0
|
||||
lsl r6, r5, #3
|
||||
@ -12330,7 +12330,7 @@ ov74_0222D308: ; 0x0222D308
|
||||
ldr r0, [r4, r1]
|
||||
add r1, #0x20
|
||||
ldr r1, [r4, r1]
|
||||
bl sub_0202DEF8
|
||||
bl SaveMysteryGift_HasAnyGift
|
||||
cmp r0, #1
|
||||
ldr r0, _0222D350 ; =0x00002BD0
|
||||
bne _0222D330
|
||||
@ -12378,20 +12378,20 @@ ov74_0222D358: ; 0x0222D358
|
||||
ldr r0, [r4, r1]
|
||||
add r1, #0x20
|
||||
ldr r1, [r4, r1]
|
||||
bl sub_0202DEF8
|
||||
bl SaveMysteryGift_HasAnyGift
|
||||
cmp r0, #1
|
||||
ldr r1, _0222D408 ; =0x00002BA0
|
||||
bne _0222D39A
|
||||
ldr r0, [r4, r1]
|
||||
add r1, #0x20
|
||||
ldr r1, [r4, r1]
|
||||
bl sub_0202DDB0
|
||||
bl SaveMysteryGift_ReceiveGiftAndClearCardByIndex
|
||||
b _0222D3A4
|
||||
_0222D39A:
|
||||
ldr r0, [r4, r1]
|
||||
add r1, #0x20
|
||||
ldr r1, [r4, r1]
|
||||
bl sub_0202DDEC
|
||||
bl SaveMysteryGift_DeleteWonderCardByIndex
|
||||
_0222D3A4:
|
||||
ldr r0, _0222D40C ; =0x00002BA4
|
||||
ldr r0, [r4, r0]
|
||||
@ -12401,7 +12401,7 @@ _0222D3A4:
|
||||
bl sub_0200F450
|
||||
ldr r0, _0222D408 ; =0x00002BA0
|
||||
ldr r0, [r4, r0]
|
||||
bl sub_0202DED8
|
||||
bl SaveMysteryGift_HasAnyCard
|
||||
cmp r0, #0
|
||||
bne _0222D3C4
|
||||
mov r0, #0x1b
|
||||
@ -12571,7 +12571,7 @@ _0222D50C:
|
||||
ldr r0, [r4, r0]
|
||||
cmp r0, #0
|
||||
beq _0222D51C
|
||||
bl sub_0202DEF8
|
||||
bl SaveMysteryGift_HasAnyGift
|
||||
cmp r0, #1
|
||||
bne _0222D520
|
||||
_0222D51C:
|
||||
@ -13346,7 +13346,7 @@ _0222DB14:
|
||||
ldr r0, _0222DB2C ; =0x00002BA0
|
||||
add r1, r4, #0
|
||||
ldr r0, [r5, r0]
|
||||
bl sub_0202DE90
|
||||
bl SaveMysteryGift_CardTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0222DB02
|
||||
_0222DB26:
|
||||
@ -17618,7 +17618,7 @@ _0222FDF2:
|
||||
cmp r0, #1
|
||||
bne _0222FE0E
|
||||
add r0, r6, #0
|
||||
bl sub_0202DF7C
|
||||
bl SaveMysteryGift_ReceivedFlagTest
|
||||
cmp r0, #1
|
||||
bne _0222FE0E
|
||||
mov r0, #2
|
||||
|
@ -37,24 +37,24 @@ FieldSystem_InitGetMysteryGiftGmmState: ; 0x0204BD78
|
||||
thumb_func_start FieldSystem_GetTagOfNextMG
|
||||
FieldSystem_GetTagOfNextMG: ; 0x0204BD80
|
||||
push {r3, lr}
|
||||
bl GetFirstQueuedMysteryGiftIdx
|
||||
bl GetMysteryGiftTagByIdx
|
||||
bl SaveMGDataPtr_GetFirstGiftIndex
|
||||
bl SaveMGDataPtr_GetTagByIndex
|
||||
pop {r3, pc}
|
||||
thumb_func_end FieldSystem_GetTagOfNextMG
|
||||
|
||||
thumb_func_start FieldSystem_GetDataOfNextMG
|
||||
FieldSystem_GetDataOfNextMG: ; 0x0204BD8C
|
||||
push {r3, lr}
|
||||
bl GetFirstQueuedMysteryGiftIdx
|
||||
bl GetMysteryGiftDataByIdx
|
||||
bl SaveMGDataPtr_GetFirstGiftIndex
|
||||
bl SaveMGDataPtr_GetDataByIndex
|
||||
pop {r3, pc}
|
||||
thumb_func_end FieldSystem_GetDataOfNextMG
|
||||
|
||||
thumb_func_start FieldSystem_SetQueuedMGReceived
|
||||
FieldSystem_SetQueuedMGReceived: ; 0x0204BD98
|
||||
push {r3, lr}
|
||||
bl GetFirstQueuedMysteryGiftIdx
|
||||
bl SetMysteryGiftReceivedByIdx
|
||||
bl SaveMGDataPtr_GetFirstGiftIndex
|
||||
bl SaveMGDataPtr_SetReceivedByIndex
|
||||
pop {r3, pc}
|
||||
thumb_func_end FieldSystem_SetQueuedMGReceived
|
||||
|
||||
@ -90,7 +90,7 @@ _0204BDD2:
|
||||
ldr r0, [r4]
|
||||
mov r1, #0x20
|
||||
ldr r0, [r0, #0xc]
|
||||
bl GetStaticPointerToSaveMysteryGift
|
||||
bl SaveMGDataPtr_Begin
|
||||
b _0204BF8C
|
||||
_0204BDE0:
|
||||
; End
|
||||
@ -98,7 +98,7 @@ _0204BDE0:
|
||||
ldr r0, [r4]
|
||||
mov r1, #0
|
||||
ldr r0, [r0, #0xc]
|
||||
bl DeleteStaticPointerToMysteryGift
|
||||
bl SaveMGDataPtr_End
|
||||
b _0204BF8C
|
||||
_0204BDEE:
|
||||
; End.2
|
||||
@ -106,7 +106,7 @@ _0204BDEE:
|
||||
ldr r0, [r4]
|
||||
mov r1, #1
|
||||
ldr r0, [r0, #0xc]
|
||||
bl DeleteStaticPointerToMysteryGift
|
||||
bl SaveMGDataPtr_End
|
||||
b _0204BF8C
|
||||
_0204BDFC:
|
||||
; Check bool
|
||||
|
@ -1,782 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "unk_0202DBA8.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.bss
|
||||
|
||||
sMysteryGiftData:
|
||||
.space 0x4
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start Save_MysteryGift_sizeof
|
||||
Save_MysteryGift_sizeof: ; 0x0202DBA8
|
||||
mov r0, #0x5a
|
||||
lsl r0, r0, #6
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
thumb_func_end Save_MysteryGift_sizeof
|
||||
|
||||
thumb_func_start Save_MysteryGift_Init
|
||||
Save_MysteryGift_Init: ; 0x0202DBB0
|
||||
ldr r3, _0202DBB8 ; =SaveSubstruct_UpdateCRC
|
||||
mov r0, #0x1b
|
||||
bx r3
|
||||
nop
|
||||
_0202DBB8: .word SaveSubstruct_UpdateCRC
|
||||
thumb_func_end Save_MysteryGift_Init
|
||||
|
||||
thumb_func_start MysteryGiftTagIsValid
|
||||
MysteryGiftTagIsValid: ; 0x0202DBBC
|
||||
cmp r0, #0
|
||||
beq _0202DBC8
|
||||
cmp r0, #0x10
|
||||
bhs _0202DBC8
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_0202DBC8:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
thumb_func_end MysteryGiftTagIsValid
|
||||
|
||||
thumb_func_start SaveMysteryGift_GetByIdx
|
||||
SaveMysteryGift_GetByIdx: ; 0x0202DBCC
|
||||
push {r3, r4, r5, lr}
|
||||
cmp r1, #0
|
||||
blt _0202DBF0
|
||||
cmp r1, #8
|
||||
bge _0202DBF0
|
||||
mov r2, #1
|
||||
lsl r2, r2, #8
|
||||
add r4, r0, r2
|
||||
lsl r0, r1, #6
|
||||
add r0, r1, r0
|
||||
lsl r5, r0, #2
|
||||
ldrh r0, [r4, r5]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DBF0
|
||||
add r0, r4, r5
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DBF0:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end SaveMysteryGift_GetByIdx
|
||||
|
||||
thumb_func_start SaveMysteryGift_CardGetByIdx
|
||||
SaveMysteryGift_CardGetByIdx: ; 0x0202DBF4
|
||||
push {r3, r4, r5, lr}
|
||||
cmp r1, #0
|
||||
blt _0202DC1A
|
||||
cmp r1, #3
|
||||
bge _0202DC1A
|
||||
mov r2, #0x92
|
||||
lsl r2, r2, #4
|
||||
add r4, r0, r2
|
||||
mov r0, #0xd6
|
||||
lsl r0, r0, #2
|
||||
add r5, r1, #0
|
||||
mul r5, r0
|
||||
ldrh r0, [r4, r5]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DC24
|
||||
add r0, r4, r5
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DC1A:
|
||||
cmp r1, #4
|
||||
bne _0202DC24
|
||||
ldr r1, _0202DC28 ; =0x00001328
|
||||
add r0, r0, r1
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DC24:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
_0202DC28: .word 0x00001328
|
||||
thumb_func_end SaveMysteryGift_CardGetByIdx
|
||||
|
||||
thumb_func_start sub_0202DC2C
|
||||
sub_0202DC2C: ; 0x0202DC2C
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x10
|
||||
str r1, [sp, #4]
|
||||
mov r1, #0
|
||||
str r0, [sp]
|
||||
str r2, [sp, #8]
|
||||
str r1, [sp, #0xc]
|
||||
bl SaveMysteryGift_FindAvailable
|
||||
cmp r0, #0
|
||||
bne _0202DC48
|
||||
add sp, #0x10
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0202DC48:
|
||||
mov r7, #0x41
|
||||
lsl r7, r7, #2
|
||||
ldr r5, [sp]
|
||||
mov r4, #0
|
||||
sub r6, r7, #4
|
||||
_0202DC52:
|
||||
ldrh r0, [r5, r6]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
bne _0202DC94
|
||||
lsl r0, r4, #6
|
||||
mov r2, #1
|
||||
add r0, r4, r0
|
||||
lsl r4, r0, #2
|
||||
ldr r1, [sp]
|
||||
lsl r2, r2, #8
|
||||
add r1, r1, r2
|
||||
ldr r0, [sp, #4]
|
||||
add r1, r1, r4
|
||||
add r2, r2, #4
|
||||
bl MI_CpuCopy8
|
||||
ldr r1, _0202DCA8 ; =0x00000102
|
||||
ldr r0, [sp]
|
||||
mov r2, #3
|
||||
add r1, r0, r1
|
||||
ldrh r0, [r1, r4]
|
||||
bic r0, r2
|
||||
ldr r2, [sp, #8]
|
||||
lsl r2, r2, #0x10
|
||||
lsr r3, r2, #0x10
|
||||
mov r2, #3
|
||||
and r2, r3
|
||||
orr r0, r2
|
||||
strh r0, [r1, r4]
|
||||
mov r0, #1
|
||||
str r0, [sp, #0xc]
|
||||
b _0202DC9C
|
||||
_0202DC94:
|
||||
add r4, r4, #1
|
||||
add r5, r5, r7
|
||||
cmp r4, #8
|
||||
blt _0202DC52
|
||||
_0202DC9C:
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
ldr r0, [sp, #0xc]
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_0202DCA8: .word 0x00000102
|
||||
thumb_func_end sub_0202DC2C
|
||||
|
||||
thumb_func_start sub_0202DCAC
|
||||
sub_0202DCAC: ; 0x0202DCAC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xc
|
||||
str r1, [sp, #4]
|
||||
mov r1, #0
|
||||
str r0, [sp]
|
||||
str r1, [sp, #8]
|
||||
bl SaveMysteryGift_CardFindAvailable
|
||||
cmp r0, #0
|
||||
bne _0202DCC6
|
||||
add sp, #0xc
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0202DCC6:
|
||||
ldr r1, _0202DD44 ; =0x00000152
|
||||
ldr r0, [sp, #4]
|
||||
ldrb r0, [r0, r1]
|
||||
lsl r0, r0, #0x1c
|
||||
lsr r0, r0, #0x1f
|
||||
cmp r0, #1
|
||||
bne _0202DCE4
|
||||
ldr r0, [sp]
|
||||
bl SaveMysteryGift_FindAvailable
|
||||
cmp r0, #0
|
||||
bne _0202DCE4
|
||||
add sp, #0xc
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_0202DCE4:
|
||||
mov r7, #0xd6
|
||||
mov r6, #0x92
|
||||
ldr r5, [sp]
|
||||
mov r4, #0
|
||||
lsl r7, r7, #2
|
||||
lsl r6, r6, #4
|
||||
_0202DCF0:
|
||||
ldrh r0, [r5, r6]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
bne _0202DD30
|
||||
mov r2, #0x92
|
||||
ldr r1, [sp]
|
||||
lsl r2, r2, #4
|
||||
add r3, r1, r2
|
||||
mov r2, #0xd6
|
||||
lsl r2, r2, #2
|
||||
add r1, r4, #0
|
||||
mul r1, r2
|
||||
ldr r0, [sp, #4]
|
||||
add r1, r3, r1
|
||||
bl MI_CpuCopy8
|
||||
ldr r1, _0202DD44 ; =0x00000152
|
||||
ldr r0, [sp, #4]
|
||||
ldrb r0, [r0, r1]
|
||||
lsl r0, r0, #0x1c
|
||||
lsr r0, r0, #0x1f
|
||||
cmp r0, #1
|
||||
bne _0202DD2A
|
||||
ldr r0, [sp]
|
||||
ldr r1, [sp, #4]
|
||||
add r2, r4, #0
|
||||
bl sub_0202DC2C
|
||||
_0202DD2A:
|
||||
mov r0, #1
|
||||
str r0, [sp, #8]
|
||||
b _0202DD38
|
||||
_0202DD30:
|
||||
add r4, r4, #1
|
||||
add r5, r5, r7
|
||||
cmp r4, #3
|
||||
blt _0202DCF0
|
||||
_0202DD38:
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
ldr r0, [sp, #8]
|
||||
add sp, #0xc
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_0202DD44: .word 0x00000152
|
||||
thumb_func_end sub_0202DCAC
|
||||
|
||||
thumb_func_start sub_0202DD48
|
||||
sub_0202DD48: ; 0x0202DD48
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
ldr r0, _0202DD78 ; =0x00001328
|
||||
add r4, r1, #0
|
||||
ldrh r0, [r5, r0]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #1
|
||||
bne _0202DD5E
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DD5E:
|
||||
ldr r1, _0202DD78 ; =0x00001328
|
||||
mov r2, #0xd6
|
||||
add r0, r4, #0
|
||||
add r1, r5, r1
|
||||
lsl r2, r2, #2
|
||||
bl MI_CpuCopy8
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
nop
|
||||
_0202DD78: .word 0x00001328
|
||||
thumb_func_end sub_0202DD48
|
||||
|
||||
thumb_func_start SaveMysteryGiftI_SetReceived
|
||||
SaveMysteryGiftI_SetReceived: ; 0x0202DD7C
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r1, #0
|
||||
add r4, r0, #0
|
||||
cmp r5, #8
|
||||
blt _0202DD8A
|
||||
bl GF_AssertFail
|
||||
_0202DD8A:
|
||||
lsl r0, r5, #6
|
||||
add r0, r5, r0
|
||||
lsl r0, r0, #2
|
||||
mov r1, #1
|
||||
mov r3, #0
|
||||
add r2, r4, r0
|
||||
lsl r1, r1, #8
|
||||
strh r3, [r2, r1]
|
||||
add r1, r1, #2
|
||||
add r3, r4, r1
|
||||
ldrh r2, [r3, r0]
|
||||
mov r1, #3
|
||||
bic r2, r1
|
||||
strh r2, [r3, r0]
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end SaveMysteryGiftI_SetReceived
|
||||
|
||||
thumb_func_start sub_0202DDB0
|
||||
sub_0202DDB0: ; 0x0202DDB0
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
cmp r4, #3
|
||||
blt _0202DDBE
|
||||
bl GF_AssertFail
|
||||
_0202DDBE:
|
||||
mov r0, #0xd6
|
||||
lsl r0, r0, #2
|
||||
mul r0, r4
|
||||
add r2, r5, r0
|
||||
mov r0, #0x92
|
||||
mov r1, #0
|
||||
lsl r0, r0, #4
|
||||
strh r1, [r2, r0]
|
||||
mov r1, #0xa7
|
||||
lsl r1, r1, #4
|
||||
ldrh r1, [r2, r1]
|
||||
add r0, r5, #0
|
||||
bl sub_0202DFDC
|
||||
add r0, r5, #0
|
||||
add r1, r4, #0
|
||||
bl sub_0202DF38
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DDB0
|
||||
|
||||
thumb_func_start sub_0202DDEC
|
||||
sub_0202DDEC: ; 0x0202DDEC
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
cmp r4, #3
|
||||
blt _0202DDFA
|
||||
bl GF_AssertFail
|
||||
_0202DDFA:
|
||||
mov r0, #0xd6
|
||||
lsl r0, r0, #2
|
||||
mul r0, r4
|
||||
add r1, r5, r0
|
||||
mov r0, #0x92
|
||||
mov r2, #0
|
||||
lsl r0, r0, #4
|
||||
strh r2, [r1, r0]
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DDEC
|
||||
|
||||
thumb_func_start SaveMysteryGift_FindAvailable
|
||||
SaveMysteryGift_FindAvailable: ; 0x0202DE14
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, #0x41
|
||||
lsl r7, r7, #2
|
||||
add r5, r0, #0
|
||||
mov r4, #0
|
||||
sub r6, r7, #4
|
||||
_0202DE20:
|
||||
ldrh r0, [r5, r6]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
bne _0202DE2E
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0202DE2E:
|
||||
add r4, r4, #1
|
||||
add r5, r5, r7
|
||||
cmp r4, #8
|
||||
blt _0202DE20
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end SaveMysteryGift_FindAvailable
|
||||
|
||||
thumb_func_start SaveMysteryGift_CardFindAvailable
|
||||
SaveMysteryGift_CardFindAvailable: ; 0x0202DE3C
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, #0xd6
|
||||
mov r6, #0x92
|
||||
add r5, r0, #0
|
||||
mov r4, #0
|
||||
lsl r7, r7, #2
|
||||
lsl r6, r6, #4
|
||||
_0202DE4A:
|
||||
ldrh r0, [r5, r6]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
bne _0202DE58
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0202DE58:
|
||||
add r4, r4, #1
|
||||
add r5, r5, r7
|
||||
cmp r4, #3
|
||||
blt _0202DE4A
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end SaveMysteryGift_CardFindAvailable
|
||||
|
||||
thumb_func_start SaveMysteryGiftI_TagIsValid
|
||||
SaveMysteryGiftI_TagIsValid: ; 0x0202DE64
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
cmp r4, #8
|
||||
blt _0202DE72
|
||||
bl GF_AssertFail
|
||||
_0202DE72:
|
||||
lsl r0, r4, #6
|
||||
add r0, r4, r0
|
||||
lsl r0, r0, #2
|
||||
add r1, r5, r0
|
||||
mov r0, #1
|
||||
lsl r0, r0, #8
|
||||
ldrh r0, [r1, r0]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DE8C
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DE8C:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end SaveMysteryGiftI_TagIsValid
|
||||
|
||||
thumb_func_start sub_0202DE90
|
||||
sub_0202DE90: ; 0x0202DE90
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
cmp r4, #3
|
||||
blt _0202DE9E
|
||||
bl GF_AssertFail
|
||||
_0202DE9E:
|
||||
mov r0, #0xd6
|
||||
lsl r0, r0, #2
|
||||
mul r0, r4
|
||||
add r1, r5, r0
|
||||
mov r0, #0x92
|
||||
lsl r0, r0, #4
|
||||
ldrh r0, [r1, r0]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DEB8
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DEB8:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DE90
|
||||
|
||||
thumb_func_start sub_0202DEBC
|
||||
sub_0202DEBC: ; 0x0202DEBC
|
||||
push {r3, lr}
|
||||
ldr r1, _0202DED4 ; =0x00001328
|
||||
ldrh r0, [r0, r1]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DECE
|
||||
mov r0, #1
|
||||
pop {r3, pc}
|
||||
_0202DECE:
|
||||
mov r0, #0
|
||||
pop {r3, pc}
|
||||
nop
|
||||
_0202DED4: .word 0x00001328
|
||||
thumb_func_end sub_0202DEBC
|
||||
|
||||
thumb_func_start sub_0202DED8
|
||||
sub_0202DED8: ; 0x0202DED8
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
mov r4, #0
|
||||
_0202DEDE:
|
||||
add r0, r5, #0
|
||||
add r1, r4, #0
|
||||
bl sub_0202DE90
|
||||
cmp r0, #1
|
||||
bne _0202DEEE
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202DEEE:
|
||||
add r4, r4, #1
|
||||
cmp r4, #3
|
||||
blt _0202DEDE
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DED8
|
||||
|
||||
thumb_func_start sub_0202DEF8
|
||||
sub_0202DEF8: ; 0x0202DEF8
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r5, r0, #0
|
||||
ldr r0, _0202DF34 ; =0x00000102
|
||||
add r7, r1, #0
|
||||
mov r6, #0
|
||||
add r4, r5, r0
|
||||
_0202DF04:
|
||||
mov r0, #1
|
||||
lsl r0, r0, #8
|
||||
ldrh r0, [r5, r0]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DF20
|
||||
ldrh r0, [r4]
|
||||
lsl r0, r0, #0x1e
|
||||
lsr r0, r0, #0x1e
|
||||
cmp r7, r0
|
||||
bne _0202DF20
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0202DF20:
|
||||
mov r0, #0x41
|
||||
lsl r0, r0, #2
|
||||
add r6, r6, #1
|
||||
add r5, r5, r0
|
||||
add r4, r4, r0
|
||||
cmp r6, #8
|
||||
blt _0202DF04
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_0202DF34: .word 0x00000102
|
||||
thumb_func_end sub_0202DEF8
|
||||
|
||||
thumb_func_start sub_0202DF38
|
||||
sub_0202DF38: ; 0x0202DF38
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r7, r1, #0
|
||||
ldr r1, _0202DF78 ; =0x00000102
|
||||
str r0, [sp]
|
||||
mov r6, #0
|
||||
add r4, r0, #0
|
||||
add r5, r0, r1
|
||||
_0202DF46:
|
||||
mov r0, #1
|
||||
lsl r0, r0, #8
|
||||
ldrh r0, [r4, r0]
|
||||
bl MysteryGiftTagIsValid
|
||||
cmp r0, #0
|
||||
beq _0202DF68
|
||||
ldrh r0, [r5]
|
||||
lsl r0, r0, #0x1e
|
||||
lsr r0, r0, #0x1e
|
||||
cmp r7, r0
|
||||
bne _0202DF68
|
||||
ldr r0, [sp]
|
||||
add r1, r6, #0
|
||||
bl SaveMysteryGiftI_SetReceived
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0202DF68:
|
||||
mov r0, #0x41
|
||||
lsl r0, r0, #2
|
||||
add r6, r6, #1
|
||||
add r4, r4, r0
|
||||
add r5, r5, r0
|
||||
cmp r6, #8
|
||||
blt _0202DF46
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_0202DF78: .word 0x00000102
|
||||
thumb_func_end sub_0202DF38
|
||||
|
||||
thumb_func_start sub_0202DF7C
|
||||
sub_0202DF7C: ; 0x0202DF7C
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
mov r0, #2
|
||||
add r4, r1, #0
|
||||
lsl r0, r0, #0xa
|
||||
cmp r4, r0
|
||||
blt _0202DF8E
|
||||
bl GF_AssertFail
|
||||
_0202DF8E:
|
||||
mov r0, #1
|
||||
mov r1, #7
|
||||
add r2, r4, #0
|
||||
and r2, r1
|
||||
add r1, r0, #0
|
||||
lsl r1, r2
|
||||
asr r2, r4, #2
|
||||
lsr r2, r2, #0x1d
|
||||
add r2, r4, r2
|
||||
asr r2, r2, #3
|
||||
ldrb r2, [r5, r2]
|
||||
tst r1, r2
|
||||
bne _0202DFAA
|
||||
mov r0, #0
|
||||
_0202DFAA:
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DF7C
|
||||
|
||||
thumb_func_start sub_0202DFAC
|
||||
sub_0202DFAC: ; 0x0202DFAC
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
mov r0, #2
|
||||
add r4, r1, #0
|
||||
lsl r0, r0, #0xa
|
||||
cmp r4, r0
|
||||
blt _0202DFBE
|
||||
bl GF_AssertFail
|
||||
_0202DFBE:
|
||||
asr r0, r4, #2
|
||||
lsr r0, r0, #0x1d
|
||||
add r0, r4, r0
|
||||
asr r1, r0, #3
|
||||
mov r2, #7
|
||||
ldrb r0, [r5, r1]
|
||||
mov r3, #1
|
||||
and r2, r4
|
||||
lsl r3, r2
|
||||
orr r0, r3
|
||||
strb r0, [r5, r1]
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end sub_0202DFAC
|
||||
|
||||
thumb_func_start sub_0202DFDC
|
||||
sub_0202DFDC: ; 0x0202DFDC
|
||||
push {r4, r5, r6, lr}
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
mov r1, #1
|
||||
mov r0, #7
|
||||
and r0, r4
|
||||
add r2, r1, #0
|
||||
lsl r2, r0
|
||||
mvn r0, r2
|
||||
lsl r0, r0, #0x18
|
||||
lsr r6, r0, #0x18
|
||||
lsl r0, r1, #0xb
|
||||
cmp r4, r0
|
||||
blt _0202DFFC
|
||||
bl GF_AssertFail
|
||||
_0202DFFC:
|
||||
asr r0, r4, #2
|
||||
lsr r0, r0, #0x1d
|
||||
add r0, r4, r0
|
||||
asr r1, r0, #3
|
||||
ldrb r0, [r5, r1]
|
||||
and r0, r6
|
||||
strb r0, [r5, r1]
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
pop {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end sub_0202DFDC
|
||||
|
||||
thumb_func_start sub_0202E014
|
||||
sub_0202E014: ; 0x0202E014
|
||||
ldr r3, _0202E01C ; =sub_0202DF7C
|
||||
ldr r1, _0202E020 ; =0x000007FF
|
||||
bx r3
|
||||
nop
|
||||
_0202E01C: .word sub_0202DF7C
|
||||
_0202E020: .word 0x000007FF
|
||||
thumb_func_end sub_0202E014
|
||||
|
||||
thumb_func_start sub_0202E024
|
||||
sub_0202E024: ; 0x0202E024
|
||||
ldr r3, _0202E02C ; =sub_0202DFAC
|
||||
ldr r1, _0202E030 ; =0x000007FF
|
||||
bx r3
|
||||
nop
|
||||
_0202E02C: .word sub_0202DFAC
|
||||
_0202E030: .word 0x000007FF
|
||||
thumb_func_end sub_0202E024
|
||||
|
||||
thumb_func_start GetStaticPointerToSaveMysteryGift
|
||||
GetStaticPointerToSaveMysteryGift: ; 0x0202E034
|
||||
push {r3, lr}
|
||||
ldr r1, _0202E050 ; =sMysteryGiftData
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0
|
||||
bne _0202E046
|
||||
bl Save_MysteryGift_Get
|
||||
ldr r1, _0202E050 ; =sMysteryGiftData
|
||||
str r0, [r1]
|
||||
_0202E046:
|
||||
mov r0, #0x1b
|
||||
bl SaveSubstruct_UpdateCRC
|
||||
pop {r3, pc}
|
||||
nop
|
||||
_0202E050: .word sMysteryGiftData
|
||||
thumb_func_end GetStaticPointerToSaveMysteryGift
|
||||
|
||||
thumb_func_start DeleteStaticPointerToMysteryGift
|
||||
DeleteStaticPointerToMysteryGift: ; 0x0202E054
|
||||
ldr r0, _0202E064 ; =sMysteryGiftData
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _0202E060
|
||||
mov r1, #0
|
||||
str r1, [r0]
|
||||
_0202E060:
|
||||
bx lr
|
||||
nop
|
||||
_0202E064: .word sMysteryGiftData
|
||||
thumb_func_end DeleteStaticPointerToMysteryGift
|
||||
|
||||
thumb_func_start GetFirstQueuedMysteryGiftIdx
|
||||
GetFirstQueuedMysteryGiftIdx: ; 0x0202E068
|
||||
push {r3, r4, r5, lr}
|
||||
ldr r4, _0202E08C ; =sMysteryGiftData
|
||||
mov r5, #0
|
||||
_0202E06E:
|
||||
ldr r0, [r4]
|
||||
add r1, r5, #0
|
||||
bl SaveMysteryGiftI_TagIsValid
|
||||
cmp r0, #1
|
||||
bne _0202E07E
|
||||
add r0, r5, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
_0202E07E:
|
||||
add r5, r5, #1
|
||||
cmp r5, #8
|
||||
blt _0202E06E
|
||||
mov r0, #0
|
||||
mvn r0, r0
|
||||
pop {r3, r4, r5, pc}
|
||||
nop
|
||||
_0202E08C: .word sMysteryGiftData
|
||||
thumb_func_end GetFirstQueuedMysteryGiftIdx
|
||||
|
||||
thumb_func_start GetMysteryGiftTagByIdx
|
||||
GetMysteryGiftTagByIdx: ; 0x0202E090
|
||||
push {r3, lr}
|
||||
add r1, r0, #0
|
||||
ldr r0, _0202E0A8 ; =sMysteryGiftData
|
||||
ldr r0, [r0]
|
||||
bl SaveMysteryGift_GetByIdx
|
||||
cmp r0, #0
|
||||
beq _0202E0A4
|
||||
ldrh r0, [r0]
|
||||
pop {r3, pc}
|
||||
_0202E0A4:
|
||||
mov r0, #0
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
_0202E0A8: .word sMysteryGiftData
|
||||
thumb_func_end GetMysteryGiftTagByIdx
|
||||
|
||||
thumb_func_start GetMysteryGiftDataByIdx
|
||||
GetMysteryGiftDataByIdx: ; 0x0202E0AC
|
||||
push {r3, lr}
|
||||
add r1, r0, #0
|
||||
ldr r0, _0202E0C4 ; =sMysteryGiftData
|
||||
ldr r0, [r0]
|
||||
bl SaveMysteryGift_GetByIdx
|
||||
cmp r0, #0
|
||||
beq _0202E0C0
|
||||
add r0, r0, #4
|
||||
pop {r3, pc}
|
||||
_0202E0C0:
|
||||
mov r0, #0
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
_0202E0C4: .word sMysteryGiftData
|
||||
thumb_func_end GetMysteryGiftDataByIdx
|
||||
|
||||
thumb_func_start SetMysteryGiftReceivedByIdx
|
||||
SetMysteryGiftReceivedByIdx: ; 0x0202E0C8
|
||||
add r1, r0, #0
|
||||
ldr r0, _0202E0D4 ; =sMysteryGiftData
|
||||
ldr r3, _0202E0D8 ; =SaveMysteryGiftI_SetReceived
|
||||
ldr r0, [r0]
|
||||
bx r3
|
||||
nop
|
||||
_0202E0D4: .word sMysteryGiftData
|
||||
_0202E0D8: .word SaveMysteryGiftI_SetReceived
|
||||
thumb_func_end SetMysteryGiftReceivedByIdx
|
@ -4,66 +4,187 @@
|
||||
#include "pokemon_types_def.h"
|
||||
#include "photo_album.h"
|
||||
|
||||
enum MysteryGiftTag {
|
||||
MG_TAG_pokemon,
|
||||
MG_TAG_egg,
|
||||
MG_TAG_item,
|
||||
MG_TAG_battle_rules,
|
||||
MG_TAG_secret_base_deco, // disabled in hgss
|
||||
MG_TAG_mon_deco,
|
||||
MG_TAG_manaphy_egg,
|
||||
MG_TAG_member_card, // disabled in hgss
|
||||
MG_TAG_oaks_letter, // disabled in hgss
|
||||
MG_TAG_azure_flute, // disabled in hgss
|
||||
MG_TAG_poketch_app, // disabled in hgss
|
||||
MG_TAG_secret_key, // disabled in hgss
|
||||
MG_TAG_pokemon_movie,
|
||||
MG_TAG_pokewalker_course,
|
||||
MG_TAG_memorial_photo,
|
||||
};
|
||||
#define MG_TAG_INVALID 0
|
||||
#define MG_TAG_POKEMON 1
|
||||
#define MG_TAG_EGG 2
|
||||
#define MG_TAG_ITEM 3
|
||||
#define MG_TAG_BATTLE_RULES 4
|
||||
#define MG_TAG_SECRET_BASE_DECO 5 // disabled in hgss
|
||||
#define MG_TAG_MON_DECO 6
|
||||
#define MG_TAG_MANAPHY_EGG 7
|
||||
#define MG_TAG_MEMBER_CARD 8 // disabled in hgss
|
||||
#define MG_TAG_OAKS_LETTER 9 // disabled in hgss
|
||||
#define MG_TAG_AZURE_FLUTE 10 // disabled in hgss
|
||||
#define MG_TAG_POKETCH_APP 11 // disabled in hgss
|
||||
#define MG_TAG_SECRET_KEY 12 // disabled in hgss
|
||||
#define MG_TAG_POKEMON_MOVIE 13
|
||||
#define MG_TAG_POKEWALKER_COURSE 14
|
||||
#define MG_TAG_MEMORIAL_PHOTO 15
|
||||
#define MG_TAG_MAX 16
|
||||
|
||||
typedef struct MG_POKEMON_TAG {
|
||||
#define NUM_SAVED_MYSTERY_GIFTS 8
|
||||
#define NUM_SAVED_WONDER_CARDS 3
|
||||
#define RECEIVED_WONDER_CARD_IDX 4
|
||||
#define NUM_MYSTERY_GIFT_RECV_FLAGS 2048
|
||||
|
||||
typedef struct MysteryGiftPokemonTag {
|
||||
BOOL fixedOT;
|
||||
Pokemon mon;
|
||||
u8 ribbons[10];
|
||||
} MG_POKEMON_TAG;
|
||||
} MysteryGiftPokemonTag;
|
||||
|
||||
typedef struct MG_MON_DECO_TAG {
|
||||
typedef struct MysteryGiftMonDecorationTag {
|
||||
int kind; // 1 = seal, 2 = fashion, 3 = background
|
||||
int id;
|
||||
} MG_MON_DECO_TAG;
|
||||
} MysteryGiftMonDecorationTag;
|
||||
|
||||
typedef union {
|
||||
MysteryGiftPokemonTag pokemon;
|
||||
Pokemon egg;
|
||||
u32 item;
|
||||
u16 ruleset[24];
|
||||
int baseDecoration;
|
||||
MysteryGiftMonDecorationTag monDecoration;
|
||||
u8 pokewalkerCourse;
|
||||
PHOTO photo;
|
||||
u8 raw[256];
|
||||
} MysteryGiftData;
|
||||
|
||||
typedef struct UnkWonderCardSubstruct_104 {
|
||||
u16 name[36];
|
||||
u32 version; // 88
|
||||
u16 id; // 8C
|
||||
u8 unique:1; // 8E
|
||||
u8 unk8E_1:1;
|
||||
u8 unk8E_2:1;
|
||||
u8 unk8E_3:1;
|
||||
u8 unk8E_4:1;
|
||||
u8 unk8E_5:1;
|
||||
u8 unk8E_6:2;
|
||||
} UnkWonderCardSubstruct_104;
|
||||
|
||||
typedef struct {
|
||||
u16 tag;
|
||||
u16 flag;
|
||||
union {
|
||||
MG_POKEMON_TAG pokemon;
|
||||
Pokemon egg;
|
||||
u32 item;
|
||||
u16 ruleset[24];
|
||||
int base_decoration;
|
||||
MG_MON_DECO_TAG mon_decoration;
|
||||
u8 pokewalkerCourse;
|
||||
PHOTO photo;
|
||||
u8 raw[256];
|
||||
};
|
||||
u16 flag : 2;
|
||||
u16 dummy : 14;
|
||||
MysteryGiftData data;
|
||||
} MysteryGift;
|
||||
|
||||
typedef struct {
|
||||
u16 tag;
|
||||
u16 flag;
|
||||
union {
|
||||
u8 raw[852];
|
||||
};
|
||||
} WonderCard;
|
||||
MysteryGiftData data;
|
||||
UnkWonderCardSubstruct_104 unk104;
|
||||
u16 text[250];
|
||||
u8 shareMax;
|
||||
u16 monIcon[3];
|
||||
u8 shareCount;
|
||||
s32 receiveDate;
|
||||
} WonderCard; // size: 0x358
|
||||
|
||||
typedef struct {
|
||||
u8 filler_000[0x100]; // 0000
|
||||
MysteryGift gifts[8]; // 0100
|
||||
WonderCard cards[4]; // 920
|
||||
} MYSTERY_GIFT_SAVE; // size = 0x1680
|
||||
u8 receivedFlags[NUM_MYSTERY_GIFT_RECV_FLAGS / 8]; // 0000
|
||||
MysteryGift gifts[NUM_SAVED_MYSTERY_GIFTS]; // 0100
|
||||
WonderCard cards[NUM_SAVED_WONDER_CARDS]; // 920
|
||||
WonderCard specialWonderCard; // 1328
|
||||
} MysteryGiftSave; // size = 0x1680
|
||||
|
||||
// Save block API
|
||||
u32 Save_MysteryGift_sizeof(void);
|
||||
void Save_MysteryGift_Init(MYSTERY_GIFT_SAVE *mg);
|
||||
void Save_MysteryGift_Init(MysteryGiftSave *mg);
|
||||
|
||||
// Returns a pointer to the requested Wonder Card.
|
||||
// If the index is 0, 1, or 2, will return a
|
||||
// pointer to the corresponding Wonder Card slot,
|
||||
// or NULL if that card slot is unoccupied or
|
||||
// corrupted. Otherwise, if the index is 4,
|
||||
// will return a non-nullable pointer to a
|
||||
// special Wonder Card slot that's exclusive
|
||||
// to HGSS. Otherwise, returns NULL.
|
||||
WonderCard* SaveMysteryGift_CardGetByIdx(MysteryGiftSave* mg, int index);
|
||||
|
||||
// Returns TRUE if there is an open slot
|
||||
// to receive a gift. The capacity is 8.
|
||||
BOOL SaveMysteryGift_FindAvailable(const MysteryGiftSave* mg);
|
||||
|
||||
// Attempts to insert a Mystery Gift into an
|
||||
// open slot. Returns TRUE on success.
|
||||
BOOL SaveMysteryGift_TryInsertGift(MysteryGiftSave* mg, const MysteryGift* src, int cardIdx);
|
||||
|
||||
// Attempts to insert a Wonder Card into an
|
||||
// open slot. Returns TRUE on success.
|
||||
BOOL SaveMysteryGift_TryInsertCard(MysteryGiftSave* mg, const WonderCard* src);
|
||||
|
||||
// Attempts to set the special Wonder Card slot
|
||||
// with the given data. Returns TRUE on success.
|
||||
BOOL SaveMysteryGift_TrySetSpecialCard(MysteryGiftSave* mg, const WonderCard* src);
|
||||
|
||||
// Deletes the Wonder Card at the given slot,
|
||||
// clears the corresponding event flag, and
|
||||
// removes the corresponding gift. Returns TRUE.
|
||||
BOOL SaveMysteryGift_ReceiveGiftAndClearCardByIndex(MysteryGiftSave* mg, int index);
|
||||
|
||||
// Deletes the Wonder Card at the given slot.
|
||||
// Returns TRUE.
|
||||
BOOL SaveMysteryGift_DeleteWonderCardByIndex(MysteryGiftSave* mg, int index);
|
||||
|
||||
// Returns TRUE if there is an open slot to add a
|
||||
// new Wonder Card
|
||||
BOOL SaveMysteryGift_CardFindAvailable(const MysteryGiftSave* mg);
|
||||
|
||||
// Returns TRUE if the given Wonder Card slot is
|
||||
// occupied.
|
||||
BOOL SaveMysteryGift_CardTagIsValid(const MysteryGiftSave* mg, int index);
|
||||
|
||||
// Returns TRUE if the special Wonder Card slot
|
||||
// is occupied.
|
||||
BOOL SaveMysteryGift_SpecialCardTagIsValid(const MysteryGiftSave* mg);
|
||||
|
||||
// Returns TRUE if any Wonder Card slot is
|
||||
// occupied, excluding the special slot.
|
||||
BOOL SaveMysteryGift_HasAnyCard(const MysteryGiftSave* mg);
|
||||
|
||||
// Returns TRUE if any Mystery Gift slot is
|
||||
// occupied.
|
||||
BOOL SaveMysteryGift_HasAnyGift(const MysteryGiftSave* mg, int index);
|
||||
|
||||
// Checks the event flag by index. Returns
|
||||
// TRUE if set.
|
||||
BOOL SaveMysteryGift_ReceivedFlagTest(const MysteryGiftSave* mg, int index);
|
||||
|
||||
// Sets the event flag by index.
|
||||
void SaveMysteryGift_ReceivedFlagSet(MysteryGiftSave* mg, int index);
|
||||
|
||||
// Checks whether flag 0x7FF (2047) is set.
|
||||
// Returns TRUE if so.
|
||||
BOOL SaveMysteryGift_TestFlagx7FF(const MysteryGiftSave* mg);
|
||||
|
||||
// Sets flag 0x7FF (2047).
|
||||
void SaveMysteryGift_SetFlagx7FF(MysteryGiftSave* mg);
|
||||
|
||||
// The following functions are used by script
|
||||
// commands.
|
||||
|
||||
// Loads the internal MysteryGiftSave pointer.
|
||||
void SaveMGDataPtr_Begin(SaveData* saveData);
|
||||
|
||||
// Unloads the internal MysteryGiftSave pointer.
|
||||
void SaveMGDataPtr_End(void);
|
||||
|
||||
// Gets the index of the first occupied
|
||||
// Mystery Gift slot.
|
||||
int SaveMGDataPtr_GetFirstGiftIndex(void);
|
||||
|
||||
// Returns the Mystery Gift type at the
|
||||
// given slot index.
|
||||
u16 SaveMGDataPtr_GetTagByIndex(int index);
|
||||
|
||||
// Retrieves a pointer to the Mystery Gift data
|
||||
// at the given slot index.
|
||||
MysteryGiftData* SaveMGDataPtr_GetDataByIndex(int index);
|
||||
|
||||
// Flag the Mystery Gift at the given slot index
|
||||
// as received.
|
||||
void SaveMGDataPtr_SetReceivedByIndex(int index);
|
||||
|
||||
#endif //POKEHEARTGOLD_MYSTERY_GIFT_H
|
||||
|
@ -34,7 +34,7 @@ extern const int gNumExtraSaveChunkHeaders;
|
||||
|
||||
struct UnkStruct_0202E474 *sub_020270C4(SaveData *saveData);
|
||||
PCStorage *SaveArray_PCStorage_Get(SaveData *saveData);
|
||||
MYSTERY_GIFT_SAVE *Save_MysteryGift_Get(SaveData *saveData);
|
||||
MysteryGiftSave *Save_MysteryGift_Get(SaveData *saveData);
|
||||
struct MigratedPokemonSav *Save_MigratedPokemon_Get(SaveData *saveData);
|
||||
HALL_OF_FAME *LoadHallOfFame(SaveData *saveData, HeapID heapId, int *ret_p);
|
||||
int SaveHallOfFame(SaveData *saveData, HALL_OF_FAME *hallOfFame);
|
||||
|
2
main.lsf
2
main.lsf
@ -120,7 +120,7 @@ Static main
|
||||
Object src/save_special_ribbons.o
|
||||
Object src/roamer.o
|
||||
Object asm/unk_0202DB34.o
|
||||
Object asm/unk_0202DBA8.o
|
||||
Object src/mystery_gift.o
|
||||
Object src/hall_of_fame.o
|
||||
Object asm/unk_0202E41C.o
|
||||
Object asm/unk_0202E4B0.o
|
||||
|
283
src/mystery_gift.c
Normal file
283
src/mystery_gift.c
Normal file
@ -0,0 +1,283 @@
|
||||
#include "global.h"
|
||||
#include "mystery_gift.h"
|
||||
#include "save.h"
|
||||
#include "save_arrays.h"
|
||||
#include "constants/save_arrays.h"
|
||||
|
||||
BOOL MysteryGiftTagIsValid(u32 tag);
|
||||
MysteryGift* SaveMysteryGift_GetByIdx(MysteryGiftSave* mg, int index);
|
||||
BOOL SaveMysteryGift_SetReceivedByIdx(MysteryGiftSave* mg, int index);
|
||||
void SaveMysteryGift_ReceivedFlagClear(MysteryGiftSave* mg, int index);
|
||||
void SaveMysteryGift_SetReceivedByCardId(MysteryGiftSave* mg, int index);
|
||||
BOOL SaveMysteryGift_TagAtIndexIsValid(const MysteryGiftSave* mg, int index);
|
||||
void SaveMysteryGift_ReceivedFlagClear(MysteryGiftSave* mg, int index);
|
||||
|
||||
u32 Save_MysteryGift_sizeof(void) {
|
||||
return sizeof(MysteryGiftSave);
|
||||
}
|
||||
|
||||
void Save_MysteryGift_Init(MysteryGiftSave* mg) {
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
}
|
||||
|
||||
BOOL MysteryGiftTagIsValid(u32 tag) {
|
||||
return tag != MG_TAG_INVALID && tag < MG_TAG_MAX;
|
||||
}
|
||||
|
||||
MysteryGift* SaveMysteryGift_GetByIdx(MysteryGiftSave* mg, int index) {
|
||||
if (index >= 0 && index < NUM_SAVED_MYSTERY_GIFTS) {
|
||||
MysteryGift* ret = &mg->gifts[index];
|
||||
if (MysteryGiftTagIsValid(ret->tag)) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
WonderCard* SaveMysteryGift_CardGetByIdx(MysteryGiftSave* mg, int index) {
|
||||
if (index >= 0 && index < NUM_SAVED_WONDER_CARDS) {
|
||||
WonderCard* ret = &mg->cards[index];
|
||||
if (MysteryGiftTagIsValid(ret->tag)) {
|
||||
return ret;
|
||||
}
|
||||
} else if (index == RECEIVED_WONDER_CARD_IDX) {
|
||||
return &mg->specialWonderCard;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_TryInsertGift(MysteryGiftSave* mg, const MysteryGift* src, int cardIdx) {
|
||||
BOOL ret = FALSE;
|
||||
int i;
|
||||
|
||||
if (!SaveMysteryGift_FindAvailable(mg)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_SAVED_MYSTERY_GIFTS; ++i) {
|
||||
if (!MysteryGiftTagIsValid(mg->gifts[i].tag)) {
|
||||
MI_CpuCopy8(src, &mg->gifts[i], sizeof(MysteryGift));
|
||||
mg->gifts[i].flag = cardIdx;
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_TryInsertCard(MysteryGiftSave* mg, const WonderCard* src) {
|
||||
BOOL ret = FALSE;
|
||||
int i;
|
||||
|
||||
if (!SaveMysteryGift_CardFindAvailable(mg)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (src->unk104.unk8E_3 == 1 && !SaveMysteryGift_FindAvailable(mg)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_SAVED_WONDER_CARDS; ++i) {
|
||||
if (!MysteryGiftTagIsValid(mg->cards[i].tag)) {
|
||||
MI_CpuCopy8(src, &mg->cards[i], sizeof(WonderCard));
|
||||
if (src->unk104.unk8E_3 == 1) {
|
||||
SaveMysteryGift_TryInsertGift(mg, (const MysteryGift*)src, i);
|
||||
}
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_TrySetSpecialCard(MysteryGiftSave* mg, const WonderCard* src) {
|
||||
if (MysteryGiftTagIsValid(mg->specialWonderCard.tag) == TRUE) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
MI_CpuCopy8(src, &mg->specialWonderCard, sizeof(WonderCard));
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_SetReceivedByIdx(MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_SAVED_MYSTERY_GIFTS);
|
||||
mg->gifts[index].tag = MG_TAG_INVALID;
|
||||
mg->gifts[index].flag = 0;
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_ReceiveGiftAndClearCardByIndex(MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_SAVED_WONDER_CARDS);
|
||||
mg->cards[index].tag = MG_TAG_INVALID;
|
||||
SaveMysteryGift_ReceivedFlagClear(mg, mg->cards[index].unk104.id);
|
||||
SaveMysteryGift_SetReceivedByCardId(mg, index);
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_DeleteWonderCardByIndex(MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_SAVED_WONDER_CARDS);
|
||||
mg->cards[index].tag = MG_TAG_INVALID;
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_FindAvailable(const MysteryGiftSave* mg) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_MYSTERY_GIFTS; ++i) {
|
||||
if (!MysteryGiftTagIsValid(mg->gifts[i].tag)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_CardFindAvailable(const MysteryGiftSave* mg) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_WONDER_CARDS; ++i) {
|
||||
if (!MysteryGiftTagIsValid(mg->cards[i].tag)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_TagAtIndexIsValid(const MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_SAVED_MYSTERY_GIFTS);
|
||||
|
||||
return MysteryGiftTagIsValid(mg->gifts[index].tag) != FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_CardTagIsValid(const MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_SAVED_WONDER_CARDS);
|
||||
|
||||
return MysteryGiftTagIsValid(mg->cards[index].tag) != FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_SpecialCardTagIsValid(const MysteryGiftSave* mg) {
|
||||
return MysteryGiftTagIsValid(mg->specialWonderCard.tag) != FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_HasAnyCard(const MysteryGiftSave* mg) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_WONDER_CARDS; ++i) {
|
||||
if (SaveMysteryGift_CardTagIsValid(mg, i) == TRUE) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_HasAnyGift(const MysteryGiftSave* mg, int a1) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_MYSTERY_GIFTS; ++i) {
|
||||
if (MysteryGiftTagIsValid(mg->gifts[i].tag) && a1 == mg->gifts[i].flag) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SaveMysteryGift_SetReceivedByCardId(MysteryGiftSave* mg, int a1) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_MYSTERY_GIFTS; ++i) {
|
||||
if (MysteryGiftTagIsValid(mg->gifts[i].tag) && a1 == mg->gifts[i].flag) {
|
||||
SaveMysteryGift_SetReceivedByIdx(mg, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_ReceivedFlagTest(const MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_MYSTERY_GIFT_RECV_FLAGS);
|
||||
return mg->receivedFlags[index / 8] & (1 << (index & 7)) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
void SaveMysteryGift_ReceivedFlagSet(MysteryGiftSave* mg, int index) {
|
||||
GF_ASSERT(index < NUM_MYSTERY_GIFT_RECV_FLAGS);
|
||||
mg->receivedFlags[index / 8] |= (1 << (index & 7));
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
}
|
||||
|
||||
void SaveMysteryGift_ReceivedFlagClear(MysteryGiftSave* mg, int index) {
|
||||
u8 mask = ~(1 << (index & 7));
|
||||
GF_ASSERT(index < NUM_MYSTERY_GIFT_RECV_FLAGS);
|
||||
mg->receivedFlags[index / 8] &= mask;
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
}
|
||||
|
||||
BOOL SaveMysteryGift_TestFlagx7FF(const MysteryGiftSave* mg) {
|
||||
return SaveMysteryGift_ReceivedFlagTest(mg, 0x7FF);
|
||||
}
|
||||
|
||||
void SaveMysteryGift_SetFlagx7FF(MysteryGiftSave* mg) {
|
||||
SaveMysteryGift_ReceivedFlagSet(mg, 0x7FF);
|
||||
}
|
||||
|
||||
// ======================================
|
||||
|
||||
static MysteryGiftSave* sMysteryGiftSaveData;
|
||||
|
||||
void SaveMGDataPtr_Begin(SaveData* saveData) {
|
||||
if (sMysteryGiftSaveData == NULL) {
|
||||
sMysteryGiftSaveData = Save_MysteryGift_Get(saveData);
|
||||
}
|
||||
SaveSubstruct_UpdateCRC(SAVE_MYSTERY_GIFT);
|
||||
}
|
||||
|
||||
void SaveMGDataPtr_End(void) {
|
||||
if (sMysteryGiftSaveData != NULL) {
|
||||
sMysteryGiftSaveData = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int SaveMGDataPtr_GetFirstGiftIndex(void) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_SAVED_MYSTERY_GIFTS; ++i) {
|
||||
if (SaveMysteryGift_TagAtIndexIsValid(sMysteryGiftSaveData, i) == TRUE) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
u16 SaveMGDataPtr_GetTagByIndex(int index) {
|
||||
MysteryGift* gift = SaveMysteryGift_GetByIdx(sMysteryGiftSaveData, index);
|
||||
if (gift != NULL) {
|
||||
return gift->tag;
|
||||
}
|
||||
|
||||
return MG_TAG_INVALID;
|
||||
}
|
||||
|
||||
MysteryGiftData* SaveMGDataPtr_GetDataByIndex(int index) {
|
||||
MysteryGift* gift = SaveMysteryGift_GetByIdx(sMysteryGiftSaveData, index);
|
||||
if (gift != NULL) {
|
||||
return &gift->data;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void SaveMGDataPtr_SetReceivedByIndex(int index) {
|
||||
SaveMysteryGift_SetReceivedByIdx(sMysteryGiftSaveData, index);
|
||||
}
|
@ -271,7 +271,7 @@ PCStorage *SaveArray_PCStorage_Get(SaveData *saveData) {
|
||||
return SaveArray_Get(saveData, SAVE_PCSTORAGE);
|
||||
}
|
||||
|
||||
MYSTERY_GIFT_SAVE *Save_MysteryGift_Get(SaveData *saveData) {
|
||||
MysteryGiftSave *Save_MysteryGift_Get(SaveData *saveData) {
|
||||
SaveSubstruct_AssertCRC(SAVE_MYSTERY_GIFT);
|
||||
return SaveArray_Get(saveData, SAVE_MYSTERY_GIFT);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user