mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-14 02:02:43 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
4754b344c4
@ -73,7 +73,7 @@
|
||||
.public GfGfx_EngineATogglePlanes
|
||||
.public GfGfx_EngineASetPlanes
|
||||
.public GfGfx_EngineBTogglePlanes
|
||||
.public GfGfx_EngineBGetPlanes
|
||||
.public GfGfx_EngineAGetPlanes
|
||||
.public Camera_New
|
||||
.public Camera_Delete
|
||||
.public Camera_Copy
|
||||
|
@ -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
|
||||
|
@ -6538,7 +6538,7 @@ _02257258: .word 0x00000283
|
||||
ov03_0225725C: ; 0x0225725C
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bl GfGfx_EngineBGetPlanes
|
||||
bl GfGfx_EngineAGetPlanes
|
||||
mov r1, #0x9f
|
||||
lsl r1, r1, #2
|
||||
str r0, [r4, r1]
|
||||
|
@ -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
|
22
include/blackout.h
Normal file
22
include/blackout.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef POKEHEARTGOLD_BLACKOUT_H
|
||||
#define POKEHEARTGOLD_BLACKOUT_H
|
||||
|
||||
#include "global.h"
|
||||
#include "field_system.h"
|
||||
#include "message_format.h"
|
||||
#include "msgdata.h"
|
||||
#include "task.h"
|
||||
|
||||
typedef struct BlackoutScreenEnvironment {
|
||||
s32 state;
|
||||
FieldSystem *fieldSystem;
|
||||
BgConfig *bgConfig;
|
||||
Window window;
|
||||
MsgData *msgData;
|
||||
MessageFormat *msgFmt;
|
||||
} BlackoutScreenEnvironment;
|
||||
|
||||
BOOL Task_Blackout(TaskManager *taskManager);
|
||||
void CallTask_Blackout(TaskManager *taskManager);
|
||||
|
||||
#endif //POKEHEARTGOLD_BLACKOUT_H
|
@ -3,8 +3,8 @@
|
||||
|
||||
#include "script.h"
|
||||
|
||||
BOOL CheckUseEscapeRopeInAlphChamber(FieldSystem* fieldSystem);
|
||||
BOOL CheckUseFlashInAlphChamber(FieldSystem* fieldSystem);
|
||||
BOOL CheckUseWaterStoneInAlphChamber(FieldSystem* fieldSystem);
|
||||
BOOL CheckUseEscapeRopeInAlphChamber(FieldSystem *fieldSystem);
|
||||
BOOL CheckUseFlashInAlphChamber(FieldSystem *fieldSystem);
|
||||
BOOL CheckUseWaterStoneInAlphChamber(FieldSystem *fieldSystem);
|
||||
|
||||
#endif //POKEHEARTGOLD_FIELD_ALPH_CHECKS_H
|
||||
|
@ -1,9 +0,0 @@
|
||||
#ifndef POKEHEARTGOLD_FIELD_BLACK_OUT_H
|
||||
#define POKEHEARTGOLD_FIELD_BLACK_OUT_H
|
||||
|
||||
#include "task.h"
|
||||
|
||||
BOOL FieldTask_BlackOut(TaskManager *taskManager);
|
||||
void CallFieldTask_BlackOut(TaskManager *taskManager);
|
||||
|
||||
#endif //POKEHEARTGOLD_FIELD_BLACK_OUT_H
|
@ -55,6 +55,6 @@ void GfGfx_EngineBTogglePlanes(GXPlaneMask planeMask, GFPlaneToggle enable);
|
||||
void GfGfx_EngineBSetPlanes(u32 planes);
|
||||
void GfGfx_BothDispOn(void);
|
||||
void GfGfx_SwapDisplay(void);
|
||||
u32 GfGfx_EngineBGetPlanes(void);
|
||||
u32 GfGfx_EngineAGetPlanes(void);
|
||||
|
||||
#endif //POKEHEARTGOLD_GF_GFX_PLANES_H
|
||||
|
@ -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);
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "options.h"
|
||||
#include "text_0205B4EC.h"
|
||||
|
||||
#define MakeTextColor(fg, sh, bg) ((((fg) & 0xFF) << 16) | (((sh) & 0xFF) << 8) | (((bg) & 0xFF) << 0))
|
||||
#define MAKE_TEXT_COLOR(fg, sh, bg) ((((fg) & 0xFF) << 16) | (((sh) & 0xFF) << 8) | (((bg) & 0xFF) << 0))
|
||||
|
||||
#define TEXT_SPEED_INSTANT 0 // Transfers to VRAM
|
||||
#define TEXT_SPEED_NOTRANSFER 0xFF // Defers VRAM transfer
|
||||
|
4
main.lsf
4
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
|
||||
@ -190,7 +190,7 @@ Static main
|
||||
Object src/encounter.o
|
||||
Object asm/unk_020517A4.o
|
||||
Object src/battle/battle_setup.o
|
||||
Object src/field_black_out.o
|
||||
Object src/blackout.o
|
||||
Object src/game_clear.o
|
||||
Object src/field_warp_tasks.o
|
||||
Object src/script_pokemon_util.o
|
||||
|
@ -881,7 +881,7 @@ static void ov17_02202850(BerryPotsAppData *data, u32 seqNo) {
|
||||
FillWindowPixelBuffer(&data->windows[0], 0);
|
||||
|
||||
u32 stringWidth = FontID_String_GetWidth(4, data->cancelString, 0);
|
||||
AddTextPrinterParameterized2(&data->windows[0], 4, data->cancelString, (48 - stringWidth) / 2, 0, 0xFF, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->windows[0], 4, data->cancelString, (48 - stringWidth) / 2, 0, 0xFF, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
ScheduleWindowCopyToVram(&data->windows[0]);
|
||||
}
|
||||
|
243
src/blackout.c
Normal file
243
src/blackout.c
Normal file
@ -0,0 +1,243 @@
|
||||
#include "scrcmd.h"
|
||||
#include "gf_gfx_loader.h"
|
||||
#include "unk_0200FA24.h"
|
||||
#include "blackout.h"
|
||||
#include "system.h"
|
||||
#include "render_window.h"
|
||||
#include "font.h"
|
||||
#include "text.h"
|
||||
#include "save_local_field_data.h"
|
||||
#include "unk_0203BA5C.h"
|
||||
#include "field_warp_tasks.h"
|
||||
#include "brightness.h"
|
||||
#include "unk_0206793C.h"
|
||||
#include "unk_0200B150.h"
|
||||
#include "unk_02054E00.h"
|
||||
#include "unk_020552A4.h"
|
||||
#include "use_item_on_mon.h"
|
||||
#include "sound.h"
|
||||
#include "msgdata/msg/msg_0203.h"
|
||||
#include "msgdata/msg.naix"
|
||||
|
||||
static void Blackout_InitDisplays(BgConfig *bgConfig);
|
||||
static void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager);
|
||||
static BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager);
|
||||
static void Blackout_PrintMessage(BlackoutScreenEnvironment *environment, s32 msgNo, u8 x, u8 y);
|
||||
|
||||
static const struct GraphicsBanks sBlackoutGraphicsBanks = {
|
||||
.bg = GX_VRAM_BG_128_B,
|
||||
.bgextpltt = GX_VRAM_BGEXTPLTT_NONE,
|
||||
.subbg = GX_VRAM_SUB_BG_128_C,
|
||||
.subbgextpltt = GX_VRAM_SUB_BGEXTPLTT_NONE,
|
||||
.obj = GX_VRAM_OBJ_64_E,
|
||||
.objextpltt = GX_VRAM_OBJEXTPLTT_NONE,
|
||||
.subobj = GX_VRAM_SUB_OBJ_16_I,
|
||||
.subobjextpltt = GX_VRAM_SUB_OBJEXTPLTT_NONE,
|
||||
.tex = GX_VRAM_TEX_0_A,
|
||||
.texpltt = GX_VRAM_TEXPLTT_01_FG,
|
||||
};
|
||||
|
||||
static const struct GraphicsModes sBlackoutGraphicsModes = {
|
||||
.dispMode = GX_DISPMODE_GRAPHICS,
|
||||
.bgMode = GX_BGMODE_0,
|
||||
.subMode = GX_BGMODE_0,
|
||||
._2d3dMode = GX_BG0_AS_2D,
|
||||
};
|
||||
|
||||
static const BgTemplate sBlackoutBgTemplate = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0xf800,
|
||||
.charBase = GX_BG_CHARBASE_0x00000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 1,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.dummy = 0,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
|
||||
static const WindowTemplate sBlackoutWindowTemplate = {
|
||||
.bgId = GF_BG_LYR_MAIN_3,
|
||||
.left = 4,
|
||||
.top = 5,
|
||||
.width = 25,
|
||||
.height = 15,
|
||||
.palette = 13,
|
||||
.baseTile = 0x01
|
||||
};
|
||||
|
||||
static void Blackout_InitDisplays(BgConfig *bgConfig) {
|
||||
GfGfx_SetBanks(&sBlackoutGraphicsBanks);
|
||||
SetBothScreensModesAndDisable(&sBlackoutGraphicsModes);
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_3, &sBlackoutBgTemplate, GF_BG_TYPE_TEXT);
|
||||
GfGfxLoader_GXLoadPal(NARC_graphic_font, 7, GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_13_OFFSET, 0x20, HEAP_ID_FIELD);
|
||||
BG_SetMaskColor(GF_BG_LYR_MAIN_3, RGB_WHITE);
|
||||
}
|
||||
|
||||
static void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager) {
|
||||
BlackoutScreenEnvironment *env = AllocFromHeap(HEAP_ID_FIELD, sizeof(BlackoutScreenEnvironment));
|
||||
|
||||
GF_ASSERT(env != NULL);
|
||||
memset(env, 0, sizeof(BlackoutScreenEnvironment));
|
||||
env->state = 0;
|
||||
env->fieldSystem = fieldSystem;
|
||||
env->bgConfig = BgConfig_Alloc(HEAP_ID_FIELD);
|
||||
sub_0200FBF4(PM_LCD_TOP, RGB_WHITE); //are RGBs correct here?
|
||||
sub_0200FBF4(PM_LCD_BOTTOM, RGB_WHITE);
|
||||
sub_0200FBDC(0); //PM_LCD_TOP?
|
||||
sub_0200FBDC(1); //PM_LCD_TOP?
|
||||
Blackout_InitDisplays(env->bgConfig);
|
||||
env->msgData = NewMsgDataFromNarc(MSGDATA_LOAD_LAZY, NARC_msgdata_msg, NARC_msg_msg_0203_bin, HEAP_ID_FIELD);
|
||||
env->msgFmt = MessageFormat_New(HEAP_ID_FIELD);
|
||||
|
||||
AddWindow(env->bgConfig, &env->window, &sBlackoutWindowTemplate);
|
||||
|
||||
BufferPlayersName(env->msgFmt, 0, Save_PlayerData_GetProfileAddr(FieldSystem_GetSaveData(fieldSystem)));
|
||||
if (fieldSystem->location->mapId == MAP_T20R0201) {
|
||||
// {STRVAR_1 3, 0, 0} scurried back home, protecting the exhausted and fainted Pokémon from further harm...
|
||||
Blackout_PrintMessage(env, msg_0203_00004, 0, 0);
|
||||
} else {
|
||||
// {STRVAR_1 3, 0, 0} scurried to a Pokémon Center, protecting the exhausted and fainted Pokémon from further harm...
|
||||
Blackout_PrintMessage(env, msg_0203_00003, 0, 0);
|
||||
}
|
||||
CopyWindowToVram(&env->window);
|
||||
TaskManager_Call(taskManager, Task_ShowPrintedBlackoutMessage, env);
|
||||
}
|
||||
|
||||
enum {
|
||||
STATE_SHOW_PRINTED_BLACKOUT_FADE_IN,
|
||||
STATE_SHOW_PRINTED_BLACKOUT_FADE_IN_WAIT,
|
||||
STATE_SHOW_PRINTED_BLACKOUT_FADE_OUT_INPUT,
|
||||
STATE_SHOW_PRINTED_BLACKOUT_FADE_OUT_WAIT,
|
||||
STATE_SHOW_PRINTED_BLACKOUT_CLEANUP,
|
||||
};
|
||||
|
||||
static BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager) {
|
||||
BlackoutScreenEnvironment *env = TaskManager_GetEnvironment(taskManager);
|
||||
switch (env->state) {
|
||||
case STATE_SHOW_PRINTED_BLACKOUT_FADE_IN:
|
||||
BeginNormalPaletteFade(3, 1, 43, RGB_WHITE, 8, 1, HEAP_ID_32);
|
||||
G2_BlendNone();
|
||||
env->state++;
|
||||
break;
|
||||
case STATE_SHOW_PRINTED_BLACKOUT_FADE_IN_WAIT:
|
||||
if (IsPaletteFadeFinished()) {
|
||||
env->state++;
|
||||
}
|
||||
break;
|
||||
case STATE_SHOW_PRINTED_BLACKOUT_FADE_OUT_INPUT:
|
||||
if (gSystem.newKeys & PAD_BUTTON_A || gSystem.newKeys & PAD_BUTTON_B || gSystem.touchNew != 0) {
|
||||
BeginNormalPaletteFade(0, 0, 0, RGB_BLACK, 8, 1, HEAP_ID_32);
|
||||
env->state++;
|
||||
}
|
||||
break;
|
||||
case STATE_SHOW_PRINTED_BLACKOUT_FADE_OUT_WAIT:
|
||||
if (IsPaletteFadeFinished()) {
|
||||
FillWindowPixelBuffer(&env->window, 0);
|
||||
env->state++;
|
||||
}
|
||||
break;
|
||||
case STATE_SHOW_PRINTED_BLACKOUT_CLEANUP:
|
||||
ClearFrameAndWindow2(&env->window, FALSE);
|
||||
RemoveWindow(&env->window);
|
||||
MessageFormat_Delete(env->msgFmt);
|
||||
DestroyMsgData(env->msgData);
|
||||
FreeBgTilemapBuffer(env->bgConfig, GF_BG_LYR_MAIN_3);
|
||||
FreeToHeap(env->bgConfig);
|
||||
FreeToHeap(env);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Blackout_PrintMessage(BlackoutScreenEnvironment *environment, s32 msgNo, u8 x, u8 y) {
|
||||
String *tmpStr = String_New(1024, HEAP_ID_FIELD);
|
||||
String *finStr = String_New(1024, HEAP_ID_FIELD);
|
||||
|
||||
FillWindowPixelBuffer(&environment->window, 0);
|
||||
ReadMsgDataIntoString(environment->msgData, msgNo, tmpStr);
|
||||
StringExpandPlaceholders(environment->msgFmt, finStr, tmpStr);
|
||||
|
||||
u32 width = FontID_String_GetWidthMultiline(0, finStr, 0);
|
||||
x = (environment->window.width * 8 - width);
|
||||
x /= 2;
|
||||
x -= 4;
|
||||
|
||||
AddTextPrinterParameterized2(&environment->window, 0, finStr, x, y, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
String_Delete(tmpStr);
|
||||
String_Delete(finStr);
|
||||
}
|
||||
|
||||
enum {
|
||||
STATE_BLACKOUT_TASK_INIT,
|
||||
STATE_BLACKOUT_TASK_SOUND_FADE,
|
||||
STATE_BLACKOUT_TASK_SOUND_FADE_WAIT,
|
||||
STATE_BLACKOUT_TASK_DRAW,
|
||||
STATE_BLACKOUT_TASK_RESTORE_OVERWORLD,
|
||||
STATE_BLACKOUT_TASK_QUEUE_SCRIPT,
|
||||
STATE_BLACKOUT_TASK_EXIT
|
||||
};
|
||||
|
||||
BOOL Task_Blackout(TaskManager *taskManager) {
|
||||
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager);
|
||||
u32 *state = TaskManager_GetStatePtr(taskManager);
|
||||
LocalFieldData *localFieldData;
|
||||
Location deathWarp;
|
||||
u16 deathSpawn;
|
||||
|
||||
switch (*state) {
|
||||
case STATE_BLACKOUT_TASK_INIT:
|
||||
localFieldData = Save_LocalFieldData_Get(fieldSystem->saveData);
|
||||
deathSpawn = LocalFieldData_GetBlackoutSpawn(localFieldData);
|
||||
GetDeathWarpData(deathSpawn, &deathWarp);
|
||||
GetSpecialSpawnWarpData(deathSpawn, LocalFieldData_GetSpecialSpawnWarpPtr(localFieldData));
|
||||
sub_020537A8(taskManager, &deathWarp);
|
||||
FieldSystem_ClearFollowingTrainer(fieldSystem);
|
||||
HealParty(SaveArray_Party_Get(fieldSystem->saveData));
|
||||
(*state)++;
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_SOUND_FADE:
|
||||
GF_SndStartFadeOutBGM(0, 20);
|
||||
(*state)++;
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_SOUND_FADE_WAIT:
|
||||
if (GF_SndGetFadeTimer() == 0) {
|
||||
sub_02054F14();
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_DRAW:
|
||||
SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN);
|
||||
SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_SUB);
|
||||
Blackout_DrawMessage(fieldSystem, taskManager);
|
||||
(*state)++;
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_RESTORE_OVERWORLD:
|
||||
CallTask_RestoreOverworld(taskManager);
|
||||
(*state)++;
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_QUEUE_SCRIPT:
|
||||
SetBlendBrightness(0, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN | SCREEN_MASK_SUB);
|
||||
if (GetMomSpawnId() == LocalFieldData_GetBlackoutSpawn(Save_LocalFieldData_Get(fieldSystem->saveData))) {
|
||||
QueueScript(taskManager, std_whited_out_to_mom, NULL, NULL);
|
||||
} else {
|
||||
QueueScript(taskManager, std_whited_out_to_pokecenter, NULL, NULL);
|
||||
}
|
||||
(*state)++;
|
||||
break;
|
||||
case STATE_BLACKOUT_TASK_EXIT:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CallTask_Blackout(TaskManager *taskManager) {
|
||||
TaskManager_Call(taskManager, Task_Blackout, NULL);
|
||||
}
|
@ -533,8 +533,8 @@ static void ov78_021E6068(CertificatesApp_Data *data) {
|
||||
|
||||
BufferPlayersName(data->msgFmt, 0, data->profile);
|
||||
StringExpandPlaceholders(data->msgFmt, string, tempString);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, x1, y1, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, x1, y1, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, x1, y1, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, x1, y1, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
String_Delete(tempString);
|
||||
|
||||
u32 msgNum;
|
||||
@ -546,13 +546,13 @@ static void ov78_021E6068(CertificatesApp_Data *data) {
|
||||
msgNum = msg_0004_00005;
|
||||
}
|
||||
ReadMsgDataIntoString(data->msgData, msgNum, string);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, x2, y2, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, x2, y2, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, x2, y2, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, x2, y2, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
if (data->certificateId != CERTIFICATE_SHINY_LEAVES) {
|
||||
ReadMsgDataIntoString(data->msgData, msg_0004_00003, string);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, 138, 144, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, 138, 144, TEXT_SPEED_INSTANT, MakeTextColor(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window1, 0, string, 138, 144, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
AddTextPrinterParameterized2(&data->window2, 0, string, 138, 144, TEXT_SPEED_INSTANT, MAKE_TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
String_Delete(string);
|
||||
|
@ -329,13 +329,13 @@ BOOL ChooseStarterApplication_OvyExec(OVY_MANAGER *ovy, int *state) {
|
||||
if (!IsCameraTranslationFinished(work->cameraTranslation)) {
|
||||
break;
|
||||
}
|
||||
work->subPrinterId = printMsgOnWinEx(work->winTop, work->heapId, TRUE, NARC_msg_msg_0190_bin, msg_0190_00000, MakeTextColor(1, 2, 15), work->textSpeed, &work->strbuf);
|
||||
work->subPrinterId = printMsgOnWinEx(work->winTop, work->heapId, TRUE, NARC_msg_msg_0190_bin, msg_0190_00000, MAKE_TEXT_COLOR(1, 2, 15), work->textSpeed, &work->strbuf);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG1, GF_PLANE_TOGGLE_OFF);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG2, GF_PLANE_TOGGLE_OFF);
|
||||
*state = CHOOSE_STARTER_STATE_WAIT_INIT_MSG;
|
||||
break;
|
||||
case CHOOSE_STARTER_STATE_CONFIRM_MSG:
|
||||
work->subPrinterId = printMsgOnWinEx(work->winTop, work->heapId, TRUE, NARC_msg_msg_0190_bin, msg_0190_00001 + work->curSelection, MakeTextColor(1, 2, 15), work->textSpeed, &work->strbuf);
|
||||
work->subPrinterId = printMsgOnWinEx(work->winTop, work->heapId, TRUE, NARC_msg_msg_0190_bin, msg_0190_00001 + work->curSelection, MAKE_TEXT_COLOR(1, 2, 15), work->textSpeed, &work->strbuf);
|
||||
printMsgOnBottom(work, msg_0190_00008);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG1, GF_PLANE_TOGGLE_ON);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG2, GF_PLANE_TOGGLE_ON);
|
||||
@ -368,7 +368,7 @@ BOOL ChooseStarterApplication_OvyExec(OVY_MANAGER *ovy, int *state) {
|
||||
{
|
||||
String *baseTrans = NULL;
|
||||
printMsgOnWinEx(work->winTop, work->heapId, FALSE, NARC_msg_msg_0190_bin, msg_0190_00004 + work->curSelection,
|
||||
MakeTextColor(1, 2, 15), 0, &baseTrans);
|
||||
MAKE_TEXT_COLOR(1, 2, 15), 0, &baseTrans);
|
||||
String_Delete(baseTrans);
|
||||
}
|
||||
PlayCry(sSpecies[work->curSelection], FALSE);
|
||||
@ -422,7 +422,7 @@ BOOL ChooseStarterApplication_OvyExec(OVY_MANAGER *ovy, int *state) {
|
||||
work->modelAnimState = MODEL_ANM_STATE_BALL_ROCK;
|
||||
{
|
||||
String *sp10 = NULL;
|
||||
printMsgOnWinEx(work->winTop, work->heapId, FALSE, NARC_msg_msg_0190_bin, msg_0190_00004 + work->curSelection, MakeTextColor(1, 2, 15), 0, &sp10);
|
||||
printMsgOnWinEx(work->winTop, work->heapId, FALSE, NARC_msg_msg_0190_bin, msg_0190_00004 + work->curSelection, MAKE_TEXT_COLOR(1, 2, 15), 0, &sp10);
|
||||
String_Delete(sp10);
|
||||
}
|
||||
PlayCry(sSpecies[work->curSelection], 0);
|
||||
@ -1067,7 +1067,7 @@ static u8 printMsgOnWinEx(Window *window, HeapID heapId, BOOL makeFrame, s32 msg
|
||||
|
||||
static void printMsgOnBottom(struct ChooseStarterAppWork *work, int msgId) {
|
||||
String *string = NULL;
|
||||
printMsgOnWinEx(work->winBottom, work->heapId, FALSE, NARC_msg_msg_0190_bin, msgId, MakeTextColor(1, 2, 0), 0, &string);
|
||||
printMsgOnWinEx(work->winBottom, work->heapId, FALSE, NARC_msg_msg_0190_bin, msgId, MAKE_TEXT_COLOR(1, 2, 0), 0, &string);
|
||||
String_Delete(string);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "battle/battle_setup.h"
|
||||
#include "encounter.h"
|
||||
#include "field_black_out.h"
|
||||
#include "blackout.h"
|
||||
#include "field_map_object.h"
|
||||
#include "field_system.h"
|
||||
#include "field_warp_tasks.h"
|
||||
@ -375,7 +375,7 @@ static BOOL Task_WildEncounter(TaskManager *taskManager) {
|
||||
|
||||
if (IsBattleResultWin(encounter->setup->winFlag) == FALSE) {
|
||||
WildEncounter_Delete(encounter);
|
||||
TaskManager_Jump(taskManager, FieldTask_BlackOut, NULL);
|
||||
TaskManager_Jump(taskManager, Task_Blackout, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
#include "field_alph_checks.h"
|
||||
#include "save_local_field_data.h"
|
||||
|
||||
BOOL CheckUseEscapeRopeInAlphChamber(FieldSystem* fieldSystem) {
|
||||
Location* position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
BOOL CheckUseEscapeRopeInAlphChamber(FieldSystem *fieldSystem) {
|
||||
Location *position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
|
||||
if (position->mapId != MAP_D24R0202) {
|
||||
return FALSE;
|
||||
@ -16,8 +16,8 @@ BOOL CheckUseEscapeRopeInAlphChamber(FieldSystem* fieldSystem) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CheckUseFlashInAlphChamber(FieldSystem* fieldSystem) {
|
||||
Location* position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
BOOL CheckUseFlashInAlphChamber(FieldSystem *fieldSystem) {
|
||||
Location *position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
|
||||
if (position->mapId != MAP_D24R0204) {
|
||||
return FALSE;
|
||||
@ -30,8 +30,8 @@ BOOL CheckUseFlashInAlphChamber(FieldSystem* fieldSystem) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CheckUseWaterStoneInAlphChamber(FieldSystem* fieldSystem) {
|
||||
Location* position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
BOOL CheckUseWaterStoneInAlphChamber(FieldSystem *fieldSystem) {
|
||||
Location *position = LocalFieldData_GetCurrentPosition(Save_LocalFieldData_Get(fieldSystem->saveData));
|
||||
|
||||
if (position->mapId != MAP_D24R0206) {
|
||||
return FALSE;
|
||||
|
@ -1,225 +0,0 @@
|
||||
#include "scrcmd.h"
|
||||
#include "gf_gfx_loader.h"
|
||||
#include "unk_0200FA24.h"
|
||||
#include "field_black_out.h"
|
||||
#include "system.h"
|
||||
#include "render_window.h"
|
||||
#include "font.h"
|
||||
#include "text.h"
|
||||
#include "save_local_field_data.h"
|
||||
#include "unk_0203BA5C.h"
|
||||
#include "field_warp_tasks.h"
|
||||
#include "brightness.h"
|
||||
#include "unk_0206793C.h"
|
||||
#include "unk_0200B150.h"
|
||||
#include "unk_02054E00.h"
|
||||
#include "unk_020552A4.h"
|
||||
#include "use_item_on_mon.h"
|
||||
#include "sound.h"
|
||||
#include "msgdata/msg/msg_0203.h"
|
||||
#include "msgdata/msg.naix"
|
||||
|
||||
struct BlackoutScreenWork {
|
||||
int state;
|
||||
FieldSystem *fieldSystem;
|
||||
BgConfig *bgConfig;
|
||||
Window window;
|
||||
MsgData *msgData;
|
||||
MessageFormat *msgFmt;
|
||||
};
|
||||
|
||||
void _InitDisplays(BgConfig *bgConfig);
|
||||
void DrawBlackoutMessage(FieldSystem *fieldSystem, TaskManager *taskManager);
|
||||
BOOL FieldTask_ShowPrintedMessage(TaskManager *taskManager);
|
||||
void _PrintMessage(struct BlackoutScreenWork *work, int msgno, u8 x, u8 y);
|
||||
|
||||
static void _InitDisplays(BgConfig *bgConfig) {
|
||||
{
|
||||
static const struct GraphicsBanks _020FC550 = {
|
||||
GX_VRAM_BG_128_B,
|
||||
GX_VRAM_BGEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_BG_128_C,
|
||||
GX_VRAM_SUB_BGEXTPLTT_NONE,
|
||||
GX_VRAM_OBJ_64_E,
|
||||
GX_VRAM_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_OBJ_16_I,
|
||||
GX_VRAM_SUB_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_TEX_0_A,
|
||||
GX_VRAM_TEXPLTT_01_FG,
|
||||
};
|
||||
GfGfx_SetBanks(&_020FC550);
|
||||
}
|
||||
{
|
||||
static const struct GraphicsModes _020FC524 = {
|
||||
GX_DISPMODE_GRAPHICS,
|
||||
GX_BGMODE_0,
|
||||
GX_BGMODE_0,
|
||||
GX_BG0_AS_2D,
|
||||
};
|
||||
SetBothScreensModesAndDisable(&_020FC524);
|
||||
}
|
||||
{
|
||||
static const BgTemplate _020FC534 = {
|
||||
0, 0, 0x800, 0,
|
||||
GF_BG_SCR_SIZE_256x256, GF_BG_CLR_4BPP, 31, 0, 0, 1, 0, 0, 0
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, 3, &_020FC534, GF_BG_TYPE_TEXT);
|
||||
}
|
||||
GfGfxLoader_GXLoadPal(NARC_graphic_font, 7, GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_13_OFFSET, 0x20, HEAP_ID_FIELD);
|
||||
BG_SetMaskColor(3, RGB_WHITE);
|
||||
}
|
||||
|
||||
static void DrawBlackoutMessage(FieldSystem *fieldSystem, TaskManager *taskManager) {
|
||||
struct BlackoutScreenWork *env;
|
||||
|
||||
env = AllocFromHeap((HeapID)11, sizeof(struct BlackoutScreenWork));
|
||||
GF_ASSERT(env != NULL);
|
||||
memset(env, 0, sizeof(struct BlackoutScreenWork));
|
||||
env->state = 0;
|
||||
env->fieldSystem = fieldSystem;
|
||||
env->bgConfig = BgConfig_Alloc((HeapID)11);
|
||||
sub_0200FBF4(0, RGB_WHITE);
|
||||
sub_0200FBF4(1, RGB_WHITE);
|
||||
sub_0200FBDC(0);
|
||||
sub_0200FBDC(1);
|
||||
_InitDisplays(env->bgConfig);
|
||||
env->msgData = NewMsgDataFromNarc(MSGDATA_LOAD_LAZY, NARC_msgdata_msg, NARC_msg_msg_0203_bin, (HeapID)11);
|
||||
env->msgFmt = MessageFormat_New((HeapID)11);
|
||||
{
|
||||
static const WindowTemplate _020FC51C = {
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
25,
|
||||
15,
|
||||
13,
|
||||
0x001
|
||||
};
|
||||
|
||||
AddWindow(env->bgConfig, &env->window, &_020FC51C);
|
||||
}
|
||||
BufferPlayersName(env->msgFmt, 0, Save_PlayerData_GetProfileAddr(FieldSystem_GetSaveData(fieldSystem)));
|
||||
if (fieldSystem->location->mapId == MAP_T20R0201) {
|
||||
_PrintMessage(env, msg_0203_00004, 0, 0);
|
||||
} else {
|
||||
_PrintMessage(env, msg_0203_00003, 0, 0);
|
||||
}
|
||||
CopyWindowToVram(&env->window);
|
||||
TaskManager_Call(taskManager, FieldTask_ShowPrintedMessage, env);
|
||||
}
|
||||
|
||||
static BOOL FieldTask_ShowPrintedMessage(TaskManager *taskManager) {
|
||||
struct BlackoutScreenWork *work = TaskManager_GetEnvironment(taskManager);
|
||||
switch (work->state) {
|
||||
case 0:
|
||||
BeginNormalPaletteFade(3, 1, 43, RGB_WHITE, 8, 1, (HeapID)32);
|
||||
G2_BlendNone();
|
||||
work->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsPaletteFadeFinished()) {
|
||||
work->state++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (gSystem.newKeys & PAD_BUTTON_A || gSystem.newKeys & PAD_BUTTON_B || gSystem.touchNew != 0) {
|
||||
BeginNormalPaletteFade(0, 0, 0, RGB_BLACK, 8, 1, (HeapID)32);
|
||||
work->state++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (IsPaletteFadeFinished()) {
|
||||
FillWindowPixelBuffer(&work->window, 0);
|
||||
work->state++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
ClearFrameAndWindow2(&work->window, 0);
|
||||
RemoveWindow(&work->window);
|
||||
MessageFormat_Delete(work->msgFmt);
|
||||
DestroyMsgData(work->msgData);
|
||||
FreeBgTilemapBuffer(work->bgConfig, 3);
|
||||
FreeToHeap(work->bgConfig);
|
||||
FreeToHeap(work);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void _PrintMessage(struct BlackoutScreenWork *work, int msgno, u8 x, u8 y) {
|
||||
String *str0 = String_New(1024, (HeapID)11);
|
||||
String *str1 = String_New(1024, (HeapID)11);
|
||||
|
||||
FillWindowPixelBuffer(&work->window, 0);
|
||||
ReadMsgDataIntoString(work->msgData, msgno, str0);
|
||||
StringExpandPlaceholders(work->msgFmt, str1, str0);
|
||||
{
|
||||
u32 width = FontID_String_GetWidthMultiline(0, str1, 0);
|
||||
x = (work->window.width * 8 - width);
|
||||
x /= 2;
|
||||
x -= 4;
|
||||
AddTextPrinterParameterized2(&work->window, 0, str1, x, y, TEXT_SPEED_NOTRANSFER, MakeTextColor(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
String_Delete(str0);
|
||||
String_Delete(str1);
|
||||
}
|
||||
|
||||
BOOL FieldTask_BlackOut(TaskManager *taskManager) {
|
||||
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager);
|
||||
u32 *state = TaskManager_GetStatePtr(taskManager);
|
||||
LocalFieldData *localFieldData;
|
||||
Location deathWarp;
|
||||
u16 deathSpawn;
|
||||
|
||||
switch (*state) {
|
||||
case 0:
|
||||
localFieldData = Save_LocalFieldData_Get(fieldSystem->saveData);
|
||||
deathSpawn = LocalFieldData_GetBlackoutSpawn(localFieldData);
|
||||
GetDeathWarpData(deathSpawn, &deathWarp);
|
||||
GetSpecialSpawnWarpData(deathSpawn, LocalFieldData_GetSpecialSpawnWarpPtr(localFieldData));
|
||||
sub_020537A8(taskManager, &deathWarp);
|
||||
FieldSystem_ClearFollowingTrainer(fieldSystem);
|
||||
HealParty(SaveArray_Party_Get(fieldSystem->saveData));
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
GF_SndStartFadeOutBGM(0, 20);
|
||||
(*state)++;
|
||||
break;
|
||||
case 2:
|
||||
if (GF_SndGetFadeTimer() == 0) {
|
||||
sub_02054F14();
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN);
|
||||
SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_SUB);
|
||||
DrawBlackoutMessage(fieldSystem, taskManager);
|
||||
(*state)++;
|
||||
break;
|
||||
case 4:
|
||||
CallTask_RestoreOverworld(taskManager);
|
||||
(*state)++;
|
||||
break;
|
||||
case 5:
|
||||
SetBlendBrightness(0, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN | SCREEN_MASK_SUB);
|
||||
if (GetMomSpawnId() == LocalFieldData_GetBlackoutSpawn(Save_LocalFieldData_Get(fieldSystem->saveData))) {
|
||||
QueueScript(taskManager, std_whited_out_to_mom, NULL, NULL);
|
||||
} else {
|
||||
QueueScript(taskManager, std_whited_out_to_pokecenter, NULL, NULL);
|
||||
}
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CallFieldTask_BlackOut(TaskManager *taskManager) {
|
||||
TaskManager_Call(taskManager, FieldTask_BlackOut, NULL);
|
||||
}
|
@ -89,6 +89,6 @@ void GfGfx_SwapDisplay(void) {
|
||||
}
|
||||
}
|
||||
|
||||
u32 GfGfx_EngineBGetPlanes(void) {
|
||||
u32 GfGfx_EngineAGetPlanes(void) {
|
||||
return sEngineAPlanes;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ struct ListMenu *ListMenuInit(const struct ListMenuTemplate *template, u16 curso
|
||||
}
|
||||
ListMenuCursorSetColor(
|
||||
list->cursor,
|
||||
MakeTextColor(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue)
|
||||
MAKE_TEXT_COLOR(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue)
|
||||
);
|
||||
FillWindowPixelBuffer(list->template.window, list->template.fillValue);
|
||||
ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed);
|
||||
@ -178,9 +178,9 @@ s32 ListMenuGetTemplateField(struct ListMenu *list, enum ListMenuAttr attr) {
|
||||
static void ListMenuPrint(struct ListMenu *list, String *str, u8 x, u8 y) {
|
||||
if (str != NULL) {
|
||||
if (list->overrideEnabled) {
|
||||
AddTextPrinterParameterized3(list->template.window, list->fontId, str, x, y, 0xFF, MakeTextColor(list->cursorPal, list->cursorShadowPal, list->fillValue), list->lettersSpacing, 0, NULL);
|
||||
AddTextPrinterParameterized3(list->template.window, list->fontId, str, x, y, 0xFF, MAKE_TEXT_COLOR(list->cursorPal, list->cursorShadowPal, list->fillValue), list->lettersSpacing, 0, NULL);
|
||||
} else {
|
||||
AddTextPrinterParameterized3(list->template.window, list->template.fontId, str, x, y, 0xFF, MakeTextColor(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue), list->template.lettersSpacing, 0, NULL);
|
||||
AddTextPrinterParameterized3(list->template.window, list->template.fontId, str, x, y, 0xFF, MAKE_TEXT_COLOR(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue), list->template.lettersSpacing, 0, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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);
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "sys_vars.h"
|
||||
#include "map_header.h"
|
||||
#include "unk_02054E00.h"
|
||||
#include "field_black_out.h"
|
||||
#include "blackout.h"
|
||||
#include "battle/battle_setup.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "field_map_object.h"
|
||||
@ -197,7 +197,7 @@ BOOL ScrCmd_EncounterMusic(ScriptContext *ctx) {
|
||||
}
|
||||
|
||||
BOOL ScrCmd_WhiteOut(ScriptContext *ctx) {
|
||||
CallFieldTask_BlackOut(ctx->taskman);
|
||||
CallTask_Blackout(ctx->taskman);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@
|
||||
#include "unk_0205AC88.h"
|
||||
#include "unk_02058AEC.h"
|
||||
#include "unk_0205B3DC.h"
|
||||
#include "field_black_out.h"
|
||||
#include "blackout.h"
|
||||
#include "use_item_on_mon.h"
|
||||
#include "unk_02058034.h"
|
||||
#include "unk_02056D7C.h"
|
||||
@ -787,7 +787,7 @@ BOOL ScrCmd_DirectionSignpost(ScriptContext* ctx) {
|
||||
ReadMsgDataIntoString(ctx->msgdata, msg_no, *tmp_str);
|
||||
StringExpandPlaceholders(*msg_fmt, *unk1, *tmp_str);
|
||||
Window* window = ov01_021F3D80(fieldSystem->unk68);
|
||||
AddTextPrinterParameterized2(window, 1, *unk1, 0, 0, 0, MakeTextColor(2, 10, 15), NULL);
|
||||
AddTextPrinterParameterized2(window, 1, *unk1, 0, 0, 0, MAKE_TEXT_COLOR(2, 10, 15), NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -846,7 +846,7 @@ BOOL ScrCmd_TrainerTips(ScriptContext* ctx) {
|
||||
|
||||
Window* window = ov01_021F3D80(fieldSystem->unk68);
|
||||
u8 text_speed = Options_GetTextFrameDelay(Save_PlayerData_GetOptionsAddr(fieldSystem->saveData));
|
||||
*printer_id_ptr = AddTextPrinterParameterized2(window, 1, *unk, 0, 0, text_speed, MakeTextColor(2, 10, 15), NULL);
|
||||
*printer_id_ptr = AddTextPrinterParameterized2(window, 1, *unk, 0, 0, text_speed, MAKE_TEXT_COLOR(2, 10, 15), NULL);
|
||||
|
||||
ctx->data[0] = result_var_id;
|
||||
SetupNativeScript(ctx, sub_02041520);
|
||||
@ -2901,7 +2901,7 @@ BOOL ScrCmd_289(ScriptContext *ctx) {
|
||||
}
|
||||
|
||||
BOOL ScrCmd_OverworldWhiteOut(ScriptContext *ctx) {
|
||||
CallFieldTask_BlackOut(ctx->taskman);
|
||||
CallTask_Blackout(ctx->taskman);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user