diff --git a/asm/include/overlay_03.inc b/asm/include/overlay_03.inc index e34299204..59e385587 100644 --- a/asm/include/overlay_03.inc +++ b/asm/include/overlay_03.inc @@ -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 diff --git a/asm/include/overlay_74_thumb.inc b/asm/include/overlay_74_thumb.inc index bc1ef2b77..dcd1748ca 100644 --- a/asm/include/overlay_74_thumb.inc +++ b/asm/include/overlay_74_thumb.inc @@ -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 diff --git a/asm/include/scrcmd_11.inc b/asm/include/scrcmd_11.inc index 13b581ea2..872e6a388 100644 --- a/asm/include/scrcmd_11.inc +++ b/asm/include/scrcmd_11.inc @@ -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 diff --git a/asm/include/unk_0202DBA8.inc b/asm/include/unk_0202DBA8.inc index 8ad339c81..7381052f9 100644 --- a/asm/include/unk_0202DBA8.inc +++ b/asm/include/unk_0202DBA8.inc @@ -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 diff --git a/asm/overlay_03.s b/asm/overlay_03.s index 311054f42..9bdadd240 100644 --- a/asm/overlay_03.s +++ b/asm/overlay_03.s @@ -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] diff --git a/asm/overlay_74_thumb.s b/asm/overlay_74_thumb.s index 3c2a4d51e..a7cff2f58 100644 --- a/asm/overlay_74_thumb.s +++ b/asm/overlay_74_thumb.s @@ -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 diff --git a/asm/scrcmd_11.s b/asm/scrcmd_11.s index 9507ef108..555d9453f 100644 --- a/asm/scrcmd_11.s +++ b/asm/scrcmd_11.s @@ -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 diff --git a/asm/unk_0202DBA8.s b/asm/unk_0202DBA8.s deleted file mode 100644 index e8617c5f6..000000000 --- a/asm/unk_0202DBA8.s +++ /dev/null @@ -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 diff --git a/include/blackout.h b/include/blackout.h new file mode 100644 index 000000000..2a61d8ffd --- /dev/null +++ b/include/blackout.h @@ -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 diff --git a/include/field_alph_checks.h b/include/field_alph_checks.h index fc5926d63..0c33f1d8a 100644 --- a/include/field_alph_checks.h +++ b/include/field_alph_checks.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 diff --git a/include/field_black_out.h b/include/field_black_out.h deleted file mode 100644 index 7d7a3aeec..000000000 --- a/include/field_black_out.h +++ /dev/null @@ -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 diff --git a/include/gf_gfx_planes.h b/include/gf_gfx_planes.h index 35b258117..072010524 100644 --- a/include/gf_gfx_planes.h +++ b/include/gf_gfx_planes.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 diff --git a/include/mystery_gift.h b/include/mystery_gift.h index c1540b6f3..861b9340f 100644 --- a/include/mystery_gift.h +++ b/include/mystery_gift.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 diff --git a/include/save_arrays.h b/include/save_arrays.h index 49bdc4d48..2ba9cfb87 100644 --- a/include/save_arrays.h +++ b/include/save_arrays.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); diff --git a/include/text.h b/include/text.h index 5eeb41869..9bf1ac87b 100644 --- a/include/text.h +++ b/include/text.h @@ -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 diff --git a/main.lsf b/main.lsf index 1a31af576..d9a58f6f7 100644 --- a/main.lsf +++ b/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 diff --git a/src/berry_pots_app.c b/src/berry_pots_app.c index c24bdcdf6..8b8695f13 100644 --- a/src/berry_pots_app.c +++ b/src/berry_pots_app.c @@ -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]); } diff --git a/src/blackout.c b/src/blackout.c new file mode 100644 index 000000000..18e2f5825 --- /dev/null +++ b/src/blackout.c @@ -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); +} diff --git a/src/certificates_app.c b/src/certificates_app.c index 3eea536c5..239f52647 100644 --- a/src/certificates_app.c +++ b/src/certificates_app.c @@ -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); diff --git a/src/choose_starter_app.c b/src/choose_starter_app.c index 437e815b1..180b6827d 100644 --- a/src/choose_starter_app.c +++ b/src/choose_starter_app.c @@ -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); } diff --git a/src/encounter.c b/src/encounter.c index d6a0364a4..4081650cc 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -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; } diff --git a/src/field_alph_checks.c b/src/field_alph_checks.c index 534dc2617..47062f2ef 100644 --- a/src/field_alph_checks.c +++ b/src/field_alph_checks.c @@ -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; diff --git a/src/field_black_out.c b/src/field_black_out.c deleted file mode 100644 index 1fe3cbdbc..000000000 --- a/src/field_black_out.c +++ /dev/null @@ -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); -} diff --git a/src/gf_gfx_planes.c b/src/gf_gfx_planes.c index 810575602..2a23d0656 100644 --- a/src/gf_gfx_planes.c +++ b/src/gf_gfx_planes.c @@ -89,6 +89,6 @@ void GfGfx_SwapDisplay(void) { } } -u32 GfGfx_EngineBGetPlanes(void) { +u32 GfGfx_EngineAGetPlanes(void) { return sEngineAPlanes; } diff --git a/src/list_menu.c b/src/list_menu.c index e6230a627..829c12b8d 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -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); } } } diff --git a/src/mystery_gift.c b/src/mystery_gift.c new file mode 100644 index 000000000..042c9f939 --- /dev/null +++ b/src/mystery_gift.c @@ -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); +} diff --git a/src/save_arrays.c b/src/save_arrays.c index 498a568a9..01c696904 100644 --- a/src/save_arrays.c +++ b/src/save_arrays.c @@ -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); } diff --git a/src/scrcmd_battle.c b/src/scrcmd_battle.c index 951e36c6d..38aced70e 100644 --- a/src/scrcmd_battle.c +++ b/src/scrcmd_battle.c @@ -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; } diff --git a/src/scrcmd_c.c b/src/scrcmd_c.c index e3d89927f..6c61928c3 100644 --- a/src/scrcmd_c.c +++ b/src/scrcmd_c.c @@ -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; }