diff --git a/.gitattributes b/.gitattributes index 9a558ac743..5fee44669a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -21,3 +21,5 @@ Makefile text eol=lf *.h linguist-language=C *.inc linguist-language=Assembly + +*.narc binary diff=hex diff --git a/asm/include/overlay_101.inc b/asm/include/overlay_101.inc deleted file mode 100644 index ff0c7c55db..0000000000 --- a/asm/include/overlay_101.inc +++ /dev/null @@ -1,354 +0,0 @@ -#include -#pragma once -.public TextPrinter_SetDownArrowBaseTile -.public TextFlags_SetCanABSpeedUpPrint -.public TextFlags_SetCanTouchSpeedUpPrint -.public TextFlags_SetAlternateDownArrow -.public TextFlags_GetIsTouchSpeedingUpPrint -.public TextFlags_SetFastForwardTouchButtonHitbox -.public TextFlags_UnsetFastForwardTouchButtonHitbox -.public FontID_Alloc -.public FontID_Release -.public FontID_String_GetWidth -.public PaletteData_LoadFromOpenNarc -.public PaletteData_PushTransparentBuffers -.public PaletteData_SetAutoTransparent -.public PaletteData_BlendPalette -.public SndRadio_StartSeq -.public SndRadio_StopSeq -.public SndRadio_CountPlayingSeq -.public GF_GetCurrentPlayingBGM -.public Sound_SetSceneAndPlayBGM -.public PlayBGM -.public StopBGM -.public GF_SndStartFadeOutBGM -.public GF_SndGetFadeTimer -.public PlaySE -.public IsSEPlaying -.public PlayFanfare -.public IsFanfarePlaying -.public UnloadOverlayByID -.public HandleLoadOverlay -.public OverlayManager_CreateAndGetData -.public OverlayManager_GetData -.public OverlayManager_FreeData -.public OverlayManager_GetArgs -.public NARC_New -.public NARC_Delete -.public GfGfxLoader_GetScrnDataFromOpenNarc -.public G2dRenderer_SetSubSurfaceCoords -.public SetBlendBrightness -.public NewMsgDataFromNarc -.public DestroyMsgData -.public ReadMsgDataIntoString -.public NewString_ReadMsgData -.public MessageFormat_New_Custom -.public MessageFormat_Delete -.public BufferString -.public BufferPlayersName -.public BufferSpeciesName -.public BufferBoxMonNickname -.public BufferIntegerAsString -.public BufferItemName -.public BufferLandmarkName -.public BufferTrainerClassName -.public BufferECWord -.public BufferSafariZoneAreaName -.public StringExpandPlaceholders -.public SpriteSystem_GetRenderer -.public thunk_Sprite_Delete -.public SpriteSystem_CreateSpriteFromResourceHeader -.public SpriteManager_FindPlttResourceProxy -.public thunk_Sprite_SetPriority -.public thunk_Sprite_SetDrawPriority -.public Sprite_SetPositionXY -.public Sprite_GetPositionXY -.public SpriteManager_GetSpriteList -.public BeginNormalPaletteFade -.public IsPaletteFadeFinished -.public sub_0200FBDC -.public sub_0200FBF4 -.public sub_02013534 -.public sub_020135AC -.public sub_020136B4 -.public TextOBJ_SetSpritesDrawFlag -.public sub_02013820 -.public TextOBJ_SetPaletteNum -.public sub_02013910 -.public sub_02013938 -.public sub_02013948 -.public TextOBJ_Create -.public TextOBJ_Destroy -.public TextOBJ_CopyFromBGWindow -.public GF_RTC_CopyDateTime -.public GF_RTC_CopyDate -.public GF_RTC_GetTimeOfDayWildParam -.public GF_RTC_GetTimeOfDayByHour -.public GF_RTC_GetTimeOfDayWildParamByHour -.public ListMenuItems_New -.public ListMenuItems_Delete -.public ListMenuItems_AppendFromMsgData -.public TouchscreenListMenuSpawner_Create -.public TouchscreenListMenuSpawner_Destroy -.public TouchscreenListMenu_Create -.public TouchscreenListMenu_CreateWithAlignment -.public TouchscreenListMenu_CreateWithCallback -.public TouchscreenListMenu_WasLastInputTouch -.public TouchscreenListMenu_Destroy -.public TouchscreenListMenu_HandleInput -.public Main_SetVBlankIntrCB -.public HBlankInterruptDisable -.public Heap_Create -.public Heap_Destroy -.public Heap_Alloc -.public Heap_AllocAtEnd -.public Heap_Free -.public BgConfig_Alloc -.public SetBothScreensModesAndDisable -.public InitBgFromTemplateEx -.public InitBgFromTemplate -.public SetBgControlParam -.public FreeBgTilemapBuffer -.public SetBgPriority -.public ToggleBgLayer -.public BgSetPosTextAndCommit -.public SetBgAffine -.public BgCommitTilemapBufferToVram -.public BG_ClearCharDataRange -.public BG_LoadBlankPltt -.public CopyToBgTilemapRect -.public FillBgTilemapRect -.public BgClearTilemapBufferAndCommit -.public InitWindow -.public AddWindowParameterized -.public AddTextWindowTopLeftCorner -.public RemoveWindow -.public CopyWindowToVram -.public ScheduleWindowCopyToVram -.public ClearWindowTilemapAndCopyToVram -.public ClearWindowTilemapAndScheduleTransfer -.public FillWindowPixelBuffer -.public FillWindowPixelBufferText_AssumeTileSize32 -.public FillWindowPixelRect -.public ScrollWindow -.public ScheduleBgTilemapBufferTransfer -.public DoesPixelAtScreenXYMatchPtrVal -.public LCRandom -.public MTRandom -.public TextPrinterCheckActive -.public AddTextPrinterParameterizedWithColor -.public sub_020210BC -.public sub_02021148 -.public sub_02021238 -.public sub_02021AC8 -.public sub_02021B5C -.public GfGfx_DisableEngineAPlanes -.public GfGfx_EngineATogglePlanes -.public GfGfx_DisableEngineBPlanes -.public GfGfx_EngineBTogglePlanes -.public Sprite_SetAffineScale -.public Sprite_SetDrawFlag -.public Sprite_SetAnimActiveFlag -.public Sprite_SetAffineOverwriteMode -.public Sprite_SetAnimCtrlSeq -.public Sprite_ResetAnimCtrlState -.public Sprite_UpdateAnim -.public Sprite_SetAnimationFrame -.public Sprite_SetPriority -.public TouchscreenHitbox_FindRectAtTouchNew -.public TouchscreenHitbox_TouchNewIsIn -.public System_GetTouchHeld -.public System_GetTouchNew -.public TouchscreenHitbox_FindHitboxAtPoint -.public TouchscreenHitbox_PointIsIn -.public GF_AssertFail -.public String_New -.public String_Delete -.public String_SetEmpty -.public String_CountLines -.public String_GetLineN -.public String_RadioAddStatic -.public SaveArray_PCStorage_Get -.public Save_SysInfo_RTC_Get -.public Save_PlayerData_GetProfile -.public Save_PlayerData_GetOptionsAddr -.public Save_PlayerData_GetIGTAddr -.public PlayerProfile_GetTrainerGender -.public PlayerProfile_TestBadgeFlag -.public PlayerProfile_CountBadges -.public Save_Daycare_GetMonX -.public DaycareMon_GetBoxMon -.public Save_Daycare_HasEgg -.public Save_Daycare_Get -.public Pokedex_CountNationalDexOwned -.public Pokedex_CountNationalDexSeen -.public Pokedex_CountJohtoDexOwned -.public Pokedex_CountJohtoDexSeen -.public Pokedex_NationalDexIsComplete -.public Pokedex_JohtoDexIsComplete -.public Pokedex_CountNationalOwned_ExcludeMythical -.public Pokedex_CountJohtoOwned_ExcludeMythical -.public Pokedex_CheckMonCaughtFlag -.public Pokedex_GetNatDexFlag -.public Save_Pokedex_Get -.public Options_GetTextFrameDelay -.public Roamers_GetRand -.public Save_Roamers_Get -.public RoamerSave_OutbreakActive -.public GetRoamerIsActiveByIndex -.public Roamers_GetRoamMonStats -.public GetRoamerData -.public SaveData_Pokegear_Get -.public SaveData_GetPhoneCallPersistentState -.public sub_0202EDF4 -.public Pokegear_GetMapUnlockLevel -.public Pokegear_GetBackgroundStyle -.public Pokegear_SetBackgroundStyle -.public sub_0202EE98 -.public sub_0202EEA4 -.public sub_0202EEA8 -.public Pokegear_SetRadioCursorCoords -.public Pokegear_GetRadioCursorCoords -.public SavePokegear_FindEmptyPhonebookSlot -.public SavePokegear_AllocAndCopyPhonebook -.public SavePokegear_SetPhonebookFromBuffer -.public PhoneCallPersistentState_PhoneRematches_SetSeeking -.public PhoneCallPersistentState_PhoneRematches_IsSeeking -.public PhoneCallPersistentState_PhoneRematches_GiftItemIdSet -.public PhoneCallPersistentState_PhoneRematches_GiftItemIdGet -.public PhoneCallPersistentState_MomSavings_BalanceAction -.public PhoneCallPersistentState_MomGiftQueue_IsFull -.public PhoneCallPersistentState_BlackBeltKenji_SetActiveFlag -.public PhoneCallPersistentState_BlackBeltKenji_GetActiveFlag -.public PhoneCallPersistentState_BlackBeltKenji_GetWaitDays -.public PhoneCallPersistentState_SafariZoneArrangement_AllocAndGet -.public sub_0202F3DC -.public sub_0202F400 -.public sub_0202F4E8 -.public sub_0202F500 -.public sub_0202F514 -.public sub_0202F53C -.public Save_SafariZone_Get -.public SafariZone_IncObjectUnlockLevel -.public sub_0202F784 -.public Save_ApricornBox_Get -.public ApricornBox_GetKurtQuantity -.public ApricornBox_GetKurtBall -.public MapMatrix_MapData_New -.public MapMatrix_MapData_Free -.public MapHeader_HasWildEncounters -.public MapHeader_GetMapSec -.public MapHeader_GetMomCallIntroParam -.public MapHeader_IsInKanto -.public MapHeader_CanPlacePhoneCalls -.public MapHeader_CanReceivePhoneCalls -.public MapHeader_CanReceiveRadioSignal -.public WildEncounters_ReadFromNarc -.public LocalFieldData_GetMusicIdAddr -.public LocalFieldData_GetPlayer -.public Save_LocalFieldData_Get -.public sub_0203E354 -.public Save_VarsFlags_Get -.public Save_VarsFlags_CheckFlagInArray -.public Save_VarsFlags_SetFlagInArray -.public Save_VarsFlags_ClearFlagInArray -.public GetOakJohtoDexRating -.public GetOakNationalDexRating -.public PlayerSaveData_GetState -.public CheckGameClearFlag -.public Save_VarsFlags_MomsSavingsFlagAction -.public Save_VarsFlags_MomsSavingsFlagCheck -.public Save_VarsFlags_CheckBugContestFlag -.public Save_VarsFlags_FlypointFlagAction -.public Save_VarsFlags_IsInRocketTakeover -.public Save_VarsFlags_GetVar4057 -.public Save_VarsFlags_SetVar4057 -.public Save_VarsFlags_GetBuenasPasswordSet -.public MapID_GetLandmarkName -.public DaycareMon_CalcLevelGrowth -.public Save_Daycare_CalcCompatibility -.public GetBoxMonData -.public TrainerData_ReadTrData -.public TrainerData_ReadTrPoke -.public PCStorage_GetActiveBox -.public PCStorage_CountEmptySpotsInAllBoxes -.public PCStorage_GetBoxName -.public Bag_HasItem -.public Save_Bag_Get -.public BgConfig_LoadAssetFromOpenNarc -.public PhoneBookTrainerGetRematchInfo -.public AllocAndReadPhoneBook -.public FreePhoneBook -.public GetPhoneMessageGmm -.public sub_02095FF8 -.public GetSwarmInfoFromRand -.public FX_Div -.public FX_Inv -.public GX_SetGraphicsMode -.public G2x_SetBlendAlpha_ -.public G2x_SetBlendBrightness_ -.public MI_CpuFill8 -.public memset -.public _fadd -.public _ffix -.public _fflt -.public _fsub -.public _s32_div_f -.public _u32_div_f -.public gSystem -.public PokegearApp_HandleInputModeChangeToButtons -.public PokegearApp_HandleTouchInput_SwitchApps -.public PokegearApp_HandleKeyInput_SwitchApps -.public ov100_021E5C50 -.public ov100_021E5C80 -.public Pokegear_ClearAppBgLayers -.public Pokegear_RunFadeLayers123 -.public PokegearApp_AppIdToButtonIndex -.public PokegearApp_LoadSkinGraphics -.public PokegearApp_SetGraphicsBanks -.public PokegearApp_VBlankCB -.public PokegearApp_CreateSpriteSystem -.public PokegearApp_DestroySpriteSystem -.public PokegearApp_CreateSpriteManager -.public PokegearApp_DestroySpriteManager -.public ov100_021E6A58 -.public Pokegear_CreateObjectsManager -.public ov100_021E6E58 -.public ov100_021E6E84 -.public ov100_021E6EC4 -.public ov100_021E6EF4 -.public ov100_021E6F34 -.public PokegearCursorManager_AddButtons -.public PokegearCursorManager_RemoveCursor -.public PokegearCursorManager_SetCursorSpritesDrawState -.public PokegearCursorManager_SetSpecIndexAndCursorPos -.public PokegearCursorManager_GetCursorPos -.public PokegearCursorManager_GetSpecCursorPos -.public PokegearCursorManager_MoveActiveCursor -.public PokegearCursorManager_SetActiveCursorPosition -.public PokegearCursorManager_SetCursorSpritesAnimateFlag -.public PokegearMap_Init -.public PokegearMap_Main -.public PokegearMap_Exit -.public TownMap_Init -.public TownMap_Main -.public TownMap_Exit -.public PokegearConfigure_Init -.public PokegearConfigure_Main -.public PokegearConfigure_Exit -.public PokegearPhone_Init -.public PokegearPhone_Main -.public PokegearPhone_Exit -.public PokegearRadio_Init -.public PokegearRadio_Main -.public PokegearRadio_Exit -.public ov101_021F8A94 -.public ov101_021F8A9C -.public ov101_021F8AA4 -.public ov101_021F8AD0 -.public ov101_021F8B3C -.public ov101_021F8B4C -.public ov101_021F8B60 -.public gPhoneCallScriptDef -.public ov101_021F962C -.public ov101_021F968C diff --git a/asm/pokegear_app_configure.s b/asm/pokegear_app_configure.s deleted file mode 100644 index 312933870a..0000000000 --- a/asm/pokegear_app_configure.s +++ /dev/null @@ -1,2081 +0,0 @@ -#include "constants/species.h" -#include "constants/sndseq.h" -#include "constants/maps.h" -#include "constants/items.h" -#include "constants/phone_contacts.h" -#include "constants/flags.h" -#include "msgdata/msg/msg_0271.h" -#include "msgdata/msg/msg_0416.h" -#include "msgdata/msg/msg_0411.h" -#include "msgdata/msg/msg_0640.h" -#include "msgdata/msg/msg_0664.h" - .include "asm/macros.inc" - .include "overlay_101.inc" - .include "global.inc" - - .text - - thumb_func_start PokegearConfigure_Init -PokegearConfigure_Init: ; 0x021EE8E8 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl OverlayManager_GetArgs - mov r2, #2 - add r5, r0, #0 - mov r0, #3 - mov r1, #0x5b - lsl r2, r2, #0x10 - bl Heap_Create - add r0, r4, #0 - mov r1, #0x4c - mov r2, #0x5b - bl OverlayManager_CreateAndGetData - add r4, r0, #0 - mov r1, #0 - mov r2, #0x4c - bl memset - str r5, [r4, #0xc] - mov r0, #0x5b - str r0, [r4] - add r0, r4, #0 - bl ov101_021EE9D0 - mov r0, #1 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end PokegearConfigure_Init - - thumb_func_start PokegearConfigure_Main -PokegearConfigure_Main: ; 0x021EE924 - push {r4, lr} - add r4, r1, #0 - bl OverlayManager_GetData - ldr r1, [r4] - cmp r1, #9 - bhi _021EE99E - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021EE93E: ; jump table - .short _021EE952 - _021EE93E - 2 ; case 0 - .short _021EE95A - _021EE93E - 2 ; case 1 - .short _021EE962 - _021EE93E - 2 ; case 2 - .short _021EE96A - _021EE93E - 2 ; case 3 - .short _021EE972 - _021EE93E - 2 ; case 4 - .short _021EE97A - _021EE93E - 2 ; case 5 - .short _021EE982 - _021EE93E - 2 ; case 6 - .short _021EE98A - _021EE93E - 2 ; case 7 - .short _021EE992 - _021EE93E - 2 ; case 8 - .short _021EE99A - _021EE93E - 2 ; case 9 -_021EE952: - bl ov101_021EEA4C - str r0, [r4] - b _021EE99E -_021EE95A: - bl ov101_021EEA70 - str r0, [r4] - b _021EE99E -_021EE962: - bl ov101_021EEAC4 - str r0, [r4] - b _021EE99E -_021EE96A: - bl ov101_021EEAD8 - str r0, [r4] - b _021EE99E -_021EE972: - bl ov101_021EEAE0 - str r0, [r4] - b _021EE99E -_021EE97A: - bl ov101_021EEAF4 - str r0, [r4] - b _021EE99E -_021EE982: - bl ov101_021EEBA4 - str r0, [r4] - b _021EE99E -_021EE98A: - bl ov101_021EEC04 - str r0, [r4] - b _021EE99E -_021EE992: - bl ov101_021EEC8C - str r0, [r4] - b _021EE99E -_021EE99A: - mov r0, #1 - pop {r4, pc} -_021EE99E: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end PokegearConfigure_Main - - thumb_func_start PokegearConfigure_Exit -PokegearConfigure_Exit: ; 0x021EE9A4 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl OverlayManager_GetData - add r4, r0, #0 - bl ov101_021EEA2C - ldr r2, [r4, #0xc] - mov r0, #0x80 - ldrb r1, [r2, #5] - orr r0, r1 - strb r0, [r2, #5] - ldr r4, [r4] - add r0, r5, #0 - bl OverlayManager_FreeData - add r0, r4, #0 - bl Heap_Destroy - mov r0, #1 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end PokegearConfigure_Exit - - thumb_func_start ov101_021EE9D0 -ov101_021EE9D0: ; 0x021EE9D0 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - ldr r1, _021EEA20 ; =ov101_021EF4B0 - str r4, [r0, #0x64] - ldr r0, [r4, #0xc] - str r1, [r0, #0x5c] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x28] - bl Pokegear_GetBackgroundStyle - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x19 - ldrh r2, [r4, #0x12] - ldr r1, _021EEA24 ; =0xFFFF01FF - lsr r0, r0, #0x10 - and r1, r2 - orr r0, r1 - strh r0, [r4, #0x12] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x28] - bl sub_0202EE98 - ldrh r1, [r4, #0x12] - ldr r2, _021EEA28 ; =0xFFFFFE00 - add r3, r1, #0 - lsr r1, r2, #0x17 - and r3, r2 - and r0, r1 - orr r0, r3 - strh r0, [r4, #0x12] - ldrh r0, [r4, #0x12] - add r1, r0, #0 - and r1, r2 - mov r0, #0xff - orr r0, r1 - strh r0, [r4, #0x12] - pop {r4, pc} - nop -_021EEA20: .word ov101_021EF4B0 -_021EEA24: .word 0xFFFF01FF -_021EEA28: .word 0xFFFFFE00 - thumb_func_end ov101_021EE9D0 - - thumb_func_start ov101_021EEA2C -ov101_021EEA2C: ; 0x021EEA2C - push {r4, lr} - add r4, r0, #0 - ldrh r1, [r4, #0x12] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x10 - ldr r0, [r0, #0x28] - lsr r1, r1, #0x19 - bl Pokegear_SetBackgroundStyle - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x5c] - ldr r0, [r4, #0xc] - str r1, [r0, #0x60] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EEA2C - - thumb_func_start ov101_021EEA4C -ov101_021EEA4C: ; 0x021EEA4C - push {r4, lr} - add r4, r0, #0 - bl ov101_021EED44 - cmp r0, #0 - bne _021EEA5C - mov r0, #0 - pop {r4, pc} -_021EEA5C: - ldr r0, [r4, #0xc] - ldrb r0, [r0, #5] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - beq _021EEA6A - mov r0, #7 - pop {r4, pc} -_021EEA6A: - mov r0, #5 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EEA4C - - thumb_func_start ov101_021EEA70 -ov101_021EEA70: ; 0x021EEA70 - push {r4, lr} - add r4, r0, #0 - bl ov101_021EF7D4 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021EEA9A - ldr r0, [r4, #0xc] - bl PokegearApp_HandleInputModeChangeToButtons - ldr r0, [r4, #0xc] - ldrb r1, [r0, #6] - cmp r1, #1 - bne _021EEA94 - bl PokegearApp_HandleKeyInput_SwitchApps - b _021EEA9A -_021EEA94: - add r0, r4, #0 - bl ov101_021EF6E4 -_021EEA9A: - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - beq _021EEAC0 - cmp r0, #4 - beq _021EEAAC - cmp r0, #8 - beq _021EEAB4 - b _021EEAB8 -_021EEAAC: - ldr r1, [r4, #0xc] - str r0, [r1, #0x1c] - mov r0, #6 - pop {r4, pc} -_021EEAB4: - mov r0, #3 - pop {r4, pc} -_021EEAB8: - ldr r1, [r4, #0xc] - str r0, [r1, #0x1c] - mov r0, #8 - pop {r4, pc} -_021EEAC0: - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021EEA70 - - thumb_func_start ov101_021EEAC4 -ov101_021EEAC4: ; 0x021EEAC4 - push {r3, lr} - bl ov101_021EED98 - cmp r0, #0 - beq _021EEAD2 - mov r0, #9 - pop {r3, pc} -_021EEAD2: - mov r0, #2 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov101_021EEAC4 - - thumb_func_start ov101_021EEAD8 -ov101_021EEAD8: ; 0x021EEAD8 - ldr r3, _021EEADC ; =ov101_021EEDC4 - bx r3 - .balign 4, 0 -_021EEADC: .word ov101_021EEDC4 - thumb_func_end ov101_021EEAD8 - - thumb_func_start ov101_021EEAE0 -ov101_021EEAE0: ; 0x021EEAE0 - push {r3, lr} - bl ov101_021EEE80 - cmp r0, #0 - beq _021EEAEE - mov r0, #1 - pop {r3, pc} -_021EEAEE: - mov r0, #4 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov101_021EEAE0 - - thumb_func_start ov101_021EEAF4 -ov101_021EEAF4: ; 0x021EEAF4 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021EEB06 - cmp r0, #1 - beq _021EEB8A - b _021EEB9C -_021EEB06: - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r5] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #0 - add r3, r0, #0 - bl BeginNormalPaletteFade - mov r4, #0 - mov r6, #1 -_021EEB20: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - add r1, r6, #0 - bl ToggleBgLayer - add r4, r4, #1 - cmp r4, #8 - blt _021EEB20 - ldr r0, [r5, #0xc] - mov r1, #1 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldr r0, [r5, #0xc] - add r2, r1, #0 - ldr r0, [r0, #0x78] - mov r3, #0xe0 - bl PaletteData_BlendPalette - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x78] - mov r2, #0x40 - mov r3, #0xc0 - bl PaletteData_BlendPalette - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x78] - bl PaletteData_PushTransparentBuffers - ldr r0, [r5, #0xc] - mov r1, #0 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - mov r0, #0x10 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - mov r0, #0x10 - mov r1, #1 - bl GfGfx_EngineBTogglePlanes - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EEB9C -_021EEB8A: - bl IsPaletteFadeFinished - cmp r0, #0 - beq _021EEB9C - mov r0, #0 - str r0, [r5, #4] - add sp, #0xc - mov r0, #1 - pop {r3, r4, r5, r6, pc} -_021EEB9C: - mov r0, #5 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov101_021EEAF4 - - thumb_func_start ov101_021EEBA4 -ov101_021EEBA4: ; 0x021EEBA4 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021EEBB6 - cmp r0, #1 - beq _021EEBD6 - b _021EEBFC -_021EEBB6: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r5] - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl BeginNormalPaletteFade - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EEBFC -_021EEBD6: - bl IsPaletteFadeFinished - cmp r0, #0 - beq _021EEBFC - mov r4, #0 - add r6, r4, #0 -_021EEBE2: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - add r1, r6, #0 - bl ToggleBgLayer - add r4, r4, #1 - cmp r4, #8 - blt _021EEBE2 - mov r0, #0 - str r0, [r5, #4] - add sp, #0xc - mov r0, #2 - pop {r3, r4, r5, r6, pc} -_021EEBFC: - mov r0, #6 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov101_021EEBA4 - - thumb_func_start ov101_021EEC04 -ov101_021EEC04: ; 0x021EEC04 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021EEC18 - cmp r0, #1 - beq _021EEC5E - cmp r0, #2 - beq _021EEC72 - b _021EEC88 -_021EEC18: - ldr r0, [r5, #0xc] - mov r1, #1 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - mov r0, #0 - mov r1, #0xe - mov r2, #1 - bl SetBlendBrightness - mov r6, #1 - mov r4, #0 - add r7, r6, #0 -_021EEC32: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r6, #0 - bl ToggleBgLayer - add r0, r4, #5 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r7, #0 - bl ToggleBgLayer - add r4, r4, #1 - cmp r4, #3 - blt _021EEC32 - ldr r0, [r5, #0xc] - mov r1, #0 - strb r1, [r0, #9] - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EEC88 -_021EEC5E: - ldr r0, [r5, #0xc] - mov r1, #0 - bl Pokegear_RunFadeLayers123 - cmp r0, #0 - beq _021EEC88 - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EEC88 -_021EEC72: - ldr r0, [r5, #0xc] - mov r1, #0 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - ldr r0, [r5, #0xc] - mov r1, #0 - strb r1, [r0, #9] - str r1, [r5, #4] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021EEC88: - mov r0, #7 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021EEC04 - - thumb_func_start ov101_021EEC8C -ov101_021EEC8C: ; 0x021EEC8C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021EECA2 - cmp r0, #1 - beq _021EECBA - cmp r0, #2 - beq _021EECCE - b _021EED3C -_021EECA2: - ldr r0, [r5, #0xc] - mov r1, #1 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - ldr r0, [r5, #0xc] - mov r1, #0 - strb r1, [r0, #9] - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EED3C -_021EECBA: - ldr r0, [r5, #0xc] - mov r1, #1 - bl Pokegear_RunFadeLayers123 - cmp r0, #0 - beq _021EED3C - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] - b _021EED3C -_021EECCE: - mov r0, #0x10 - mov r1, #0 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r5, #0xc] - add r2, r1, #0 - ldr r0, [r0, #0x78] - mov r3, #0xe0 - bl PaletteData_BlendPalette - mov r0, #0x10 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x78] - mov r2, #0x40 - mov r3, #0xc0 - bl PaletteData_BlendPalette - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x78] - bl PaletteData_PushTransparentBuffers - mov r4, #0 - add r6, r4, #0 - add r7, r4, #0 -_021EED06: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r6, #0 - bl ToggleBgLayer - add r0, r4, #5 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r7, #0 - bl ToggleBgLayer - add r4, r4, #1 - cmp r4, #3 - blt _021EED06 - ldr r0, [r5, #0xc] - mov r1, #0 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - ldr r0, [r5, #0xc] - mov r1, #0 - strb r1, [r0, #9] - add sp, #8 - str r1, [r5, #4] - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_021EED3C: - mov r0, #8 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov101_021EEC8C - - thumb_func_start ov101_021EED44 -ov101_021EED44: ; 0x021EED44 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #8] - cmp r1, #0 - beq _021EED54 - cmp r1, #1 - beq _021EED6E - b _021EED8C -_021EED54: - bl ov101_021EEF0C - add r0, r4, #0 - bl ov101_021EEFE8 - add r0, r4, #0 - bl ov101_021EF00C - add r0, r4, #0 - mov r1, #1 - bl ov101_021EF26C - b _021EED8C -_021EED6E: - bl ov101_021EF03C - add r0, r4, #0 - bl ov101_021EF0E0 - add r0, r4, #0 - bl ov101_021EF130 - add r0, r4, #0 - bl ov101_021EF17C - mov r0, #0 - str r0, [r4, #8] - mov r0, #1 - pop {r4, pc} -_021EED8C: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EED44 - - thumb_func_start ov101_021EED98 -ov101_021EED98: ; 0x021EED98 - push {r4, lr} - add r4, r0, #0 - bl ov101_021EF16C - add r0, r4, #0 - bl ov101_021EF120 - add r0, r4, #0 - bl ov101_021EF0C8 - add r0, r4, #0 - bl ov101_021EF028 - add r0, r4, #0 - bl ov101_021EEFFC - add r0, r4, #0 - bl ov101_021EEFDC - mov r0, #1 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EED98 - - thumb_func_start ov101_021EEDC4 -ov101_021EEDC4: ; 0x021EEDC4 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x40] - bl TouchscreenListMenu_HandleInput - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - cmp r4, r0 - beq _021EEE0A - ldr r0, [r5, #0x40] - bl TouchscreenListMenu_WasLastInputTouch - ldr r1, [r5, #0xc] - str r0, [r1, #0xc] - ldr r0, [r5, #0x40] - bl TouchscreenListMenu_Destroy - mov r1, #0 - add r0, r5, #0 - add r2, r1, #0 - bl ov101_021EF5A4 - ldr r0, [r5, #0xc] - ldr r1, _021EEE10 ; =0x0000FFFF - ldr r0, [r0, #0x7c] - mov r2, #1 - bl PokegearCursorManager_SetCursorSpritesAnimateFlag - cmp r4, #0 - bne _021EEE06 - mov r0, #4 - pop {r3, r4, r5, pc} -_021EEE06: - mov r0, #1 - pop {r3, r4, r5, pc} -_021EEE0A: - mov r0, #3 - pop {r3, r4, r5, pc} - nop -_021EEE10: .word 0x0000FFFF - thumb_func_end ov101_021EEDC4 - - thumb_func_start ov101_021EEE14 -ov101_021EEE14: ; 0x021EEE14 - push {r4, lr} - add r4, r0, #0 - bl ov101_021EF260 - ldrh r1, [r4, #0x12] - ldr r0, _021EEE7C ; =0xFFFF01FF - and r1, r0 - ldrb r0, [r4, #0x11] - lsl r0, r0, #0x19 - lsr r0, r0, #0x10 - orr r0, r1 - strh r0, [r4, #0x12] - ldrh r0, [r4, #0x12] - lsl r0, r0, #0x10 - lsr r1, r0, #0x19 - ldr r0, [r4, #0xc] - strb r1, [r0, #8] - ldrh r1, [r4, #0x12] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x10 - lsr r1, r1, #0x19 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl PokegearApp_LoadSkinGraphics - ldrh r1, [r4, #0x12] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x10 - add r0, #0x94 - lsr r1, r1, #0x19 - lsl r1, r1, #0x18 - ldr r0, [r0] - lsr r1, r1, #0x18 - bl ov100_021E6A58 - add r0, r4, #0 - bl ov101_021EF1D8 - add r0, r4, #0 - mov r1, #0 - bl ov101_021EF26C - add r0, r4, #0 - bl ov101_021EF414 - ldrh r1, [r4, #0x12] - add r0, r4, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x19 - bl ov101_021EF384 - pop {r4, pc} - .balign 4, 0 -_021EEE7C: .word 0xFFFF01FF - thumb_func_end ov101_021EEE14 - - thumb_func_start ov101_021EEE80 -ov101_021EEE80: ; 0x021EEE80 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #3 - bhi _021EEF00 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021EEE98: ; jump table - .short _021EEEA0 - _021EEE98 - 2 ; case 0 - .short _021EEEB8 - _021EEE98 - 2 ; case 1 - .short _021EEECE - _021EEE98 - 2 ; case 2 - .short _021EEEE8 - _021EEE98 - 2 ; case 3 -_021EEEA0: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r1, [r4] - mov r3, #0 - str r1, [sp, #8] - mov r1, #4 - add r2, r1, #0 - bl BeginNormalPaletteFade - b _021EEF00 -_021EEEB8: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _021EEEC6 - add sp, #0xc - mov r0, #0 - pop {r3, r4, pc} -_021EEEC6: - add r0, r4, #0 - bl ov101_021EEE14 - b _021EEF00 -_021EEECE: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - mov r1, #3 - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - mov r3, #0 - bl BeginNormalPaletteFade - b _021EEF00 -_021EEEE8: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _021EEEF6 - add sp, #0xc - mov r0, #0 - pop {r3, r4, pc} -_021EEEF6: - mov r0, #0 - str r0, [r4, #8] - add sp, #0xc - mov r0, #1 - pop {r3, r4, pc} -_021EEF00: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end ov101_021EEE80 - - thumb_func_start ov101_021EEF0C -ov101_021EEF0C: ; 0x021EEF0C - push {r4, r5, r6, r7, lr} - sub sp, #0xac - mov r1, #0 - add r5, r0, #0 - mov r0, #1 - add r2, r1, #0 - bl GX_SetGraphicsMode - ldr r4, _021EEFD8 ; =ov101_021F8254 - add r3, sp, #4 - mov r2, #0x15 -_021EEF22: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021EEF22 - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #1 - ldr r0, [r0, #0x74] - add r2, sp, #4 - bl InitBgFromTemplateEx - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x74] - add r2, sp, #0x20 - bl InitBgFromTemplateEx - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #3 - ldr r0, [r0, #0x74] - add r2, sp, #0x3c - bl InitBgFromTemplateEx - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #5 - ldr r0, [r0, #0x74] - add r2, sp, #0x58 - bl InitBgFromTemplateEx - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #6 - ldr r0, [r0, #0x74] - add r2, sp, #0x74 - bl InitBgFromTemplateEx - mov r3, #0 - str r3, [sp] - ldr r0, [r5, #0xc] - mov r1, #7 - ldr r0, [r0, #0x74] - add r2, sp, #0x90 - bl InitBgFromTemplateEx - mov r4, #0 - mov r6, #0x20 - add r7, r4, #0 -_021EEF90: - ldr r0, [r5, #0xc] - add r1, r4, #1 - lsl r1, r1, #0x18 - ldr r0, [r0, #0x74] - lsr r1, r1, #0x18 - bl BgClearTilemapBufferAndCommit - add r0, r4, #1 - lsl r0, r0, #0x18 - ldr r3, [r5] - lsr r0, r0, #0x18 - add r1, r6, #0 - add r2, r7, #0 - bl BG_ClearCharDataRange - ldr r0, [r5, #0xc] - add r1, r4, #5 - lsl r1, r1, #0x18 - ldr r0, [r0, #0x74] - lsr r1, r1, #0x18 - bl BgClearTilemapBufferAndCommit - add r0, r4, #5 - lsl r0, r0, #0x18 - ldr r3, [r5] - lsr r0, r0, #0x18 - mov r1, #0x20 - mov r2, #0 - bl BG_ClearCharDataRange - add r4, r4, #1 - cmp r4, #3 - blt _021EEF90 - add sp, #0xac - pop {r4, r5, r6, r7, pc} - nop -_021EEFD8: .word ov101_021F8254 - thumb_func_end ov101_021EEF0C - - thumb_func_start ov101_021EEFDC -ov101_021EEFDC: ; 0x021EEFDC - ldr r3, _021EEFE4 ; =Pokegear_ClearAppBgLayers - ldr r0, [r0, #0xc] - bx r3 - nop -_021EEFE4: .word Pokegear_ClearAppBgLayers - thumb_func_end ov101_021EEFDC - - thumb_func_start ov101_021EEFE8 -ov101_021EEFE8: ; 0x021EEFE8 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - mov r0, #4 - bl FontID_Alloc - add r0, r4, #0 - bl ov101_021EF1D8 - pop {r4, pc} - thumb_func_end ov101_021EEFE8 - - thumb_func_start ov101_021EEFFC -ov101_021EEFFC: ; 0x021EEFFC - push {r3, lr} - bl ov101_021EF260 - mov r0, #4 - bl FontID_Release - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov101_021EEFFC - - thumb_func_start ov101_021EF00C -ov101_021EF00C: ; 0x021EF00C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - mov r1, #0 - bl PokegearApp_CreateSpriteManager - ldr r1, [r4, #0xc] - ldr r0, [r4] - ldr r1, [r1, #0x78] - bl TouchscreenListMenuSpawner_Create - str r0, [r4, #0x38] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EF00C - - thumb_func_start ov101_021EF028 -ov101_021EF028: ; 0x021EF028 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x38] - bl TouchscreenListMenuSpawner_Destroy - ldr r0, [r4, #0xc] - bl PokegearApp_DestroySpriteManager - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EF028 - - thumb_func_start ov101_021EF03C -ov101_021EF03C: ; 0x021EF03C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r4, _021EF0C4 ; =ov101_021F82FC - mov r7, #0 - add r5, r6, #0 -_021EF046: - ldr r1, [r6, #0xc] - add r2, r4, #0 - add r0, r1, #0 - add r0, #0x8c - add r1, #0x90 - ldr r0, [r0] - ldr r1, [r1] - bl SpriteSystem_CreateSpriteFromResourceHeader - str r0, [r5, #0x14] - mov r1, #1 - bl thunk_Sprite_SetPriority - ldr r0, [r5, #0x14] - mov r1, #0 - bl Sprite_SetDrawFlag - ldr r0, [r5, #0x14] - mov r1, #1 - bl Sprite_SetAnimActiveFlag - add r7, r7, #1 - add r4, #0x28 - add r5, r5, #4 - cmp r7, #4 - ble _021EF046 - add r4, r6, #0 - ldr r7, _021EF0C4 ; =ov101_021F82FC - mov r5, #5 - add r4, #0x14 -_021EF082: - ldr r1, [r6, #0xc] - sub r3, r5, #5 - add r0, r1, #0 - add r0, #0x8c - add r1, #0x90 - mov r2, #0x28 - mul r2, r3 - ldr r0, [r0] - ldr r1, [r1] - add r2, r7, r2 - bl SpriteSystem_CreateSpriteFromResourceHeader - str r0, [r4, #0x14] - mov r1, #1 - bl thunk_Sprite_SetPriority - ldr r0, [r4, #0x14] - mov r1, #0 - bl thunk_Sprite_SetDrawPriority - ldr r0, [r4, #0x14] - mov r1, #0 - bl Sprite_SetDrawFlag - ldr r0, [r4, #0x14] - mov r1, #0 - bl Sprite_SetAnimActiveFlag - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #8 - ble _021EF082 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021EF0C4: .word ov101_021F82FC - thumb_func_end ov101_021EF03C - - thumb_func_start ov101_021EF0C8 -ov101_021EF0C8: ; 0x021EF0C8 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 -_021EF0CE: - ldr r0, [r5, #0x14] - bl thunk_Sprite_Delete - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #9 - blt _021EF0CE - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov101_021EF0C8 - - thumb_func_start ov101_021EF0E0 -ov101_021EF0E0: ; 0x021EF0E0 - push {r4, lr} - sub sp, #0x18 - mov r3, #0 - add r4, r0, #0 - str r3, [sp] - ldr r0, [r4] - ldr r1, _021EF11C ; =ov101_021F820C - str r0, [sp, #4] - ldr r0, [r4, #0x14] - mov r2, #6 - str r0, [sp, #8] - ldr r0, [r4, #0x18] - str r0, [sp, #0xc] - ldr r0, [r4, #0x1c] - str r0, [sp, #0x10] - ldr r0, [r4, #0x20] - str r0, [sp, #0x14] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_AddButtons - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - mov r2, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - add sp, #0x18 - pop {r4, pc} - nop -_021EF11C: .word ov101_021F820C - thumb_func_end ov101_021EF0E0 - - thumb_func_start ov101_021EF120 -ov101_021EF120: ; 0x021EF120 - ldr r0, [r0, #0xc] - ldr r3, _021EF12C ; =PokegearCursorManager_RemoveCursor - ldr r0, [r0, #0x7c] - mov r1, #1 - bx r3 - nop -_021EF12C: .word PokegearCursorManager_RemoveCursor - thumb_func_end ov101_021EF120 - - thumb_func_start ov101_021EF130 -ov101_021EF130: ; 0x021EF130 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r1, [r5] - mov r0, #2 - bl ListMenuItems_New - str r0, [r5, #0x3c] - mov r1, #0x1b - add r2, r1, #0 - ldr r3, [r5] - mov r0, #0 - add r2, #0xf3 - bl NewMsgDataFromNarc - add r6, r0, #0 - mov r4, #0 -_021EF150: - ldr r0, [r5, #0x3c] - add r1, r6, #0 - add r2, r4, #0 - add r3, r4, #0 - bl ListMenuItems_AppendFromMsgData - add r4, r4, #1 - cmp r4, #2 - blt _021EF150 - add r0, r6, #0 - bl DestroyMsgData - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov101_021EF130 - - thumb_func_start ov101_021EF16C -ov101_021EF16C: ; 0x021EF16C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x3c] - bl ListMenuItems_Delete - mov r0, #0 - str r0, [r4, #0x3c] - pop {r4, pc} - thumb_func_end ov101_021EF16C - - thumb_func_start ov101_021EF17C -ov101_021EF17C: ; 0x021EF17C - push {r4, lr} - add r4, r0, #0 - bl ov101_021EF414 - ldr r1, [r4, #0xc] - ldrb r0, [r1, #6] - cmp r0, #1 - ldr r0, [r1, #0x7c] - bne _021EF1B6 - mov r1, #0 - mov r2, #1 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - mov r2, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - bl PokegearApp_AppIdToButtonIndex - add r2, r0, #0 - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_SetSpecIndexAndCursorPos - pop {r4, pc} -_021EF1B6: - mov r1, #0 - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - mov r2, #0 - bl PokegearCursorManager_SetSpecIndexAndCursorPos - pop {r4, pc} - thumb_func_end ov101_021EF17C - - thumb_func_start ov101_021EF1D8 -ov101_021EF1D8: ; 0x021EF1D8 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - ldr r1, [r5] - mov r0, #0x91 - bl NARC_New - add r4, r0, #0 - ldrh r0, [r5, #0x12] - add r2, r4, #0 - mov r3, #0x91 - lsl r0, r0, #0x10 - lsr r0, r0, #0x19 - add r0, #0xa - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [r5, #0xc] - ldr r1, [r5] - ldr r0, [r0, #0x74] - bl BgConfig_LoadAssetFromOpenNarc - ldrh r0, [r5, #0x12] - add r2, r4, #0 - mov r3, #0x91 - lsl r0, r0, #0x10 - lsr r0, r0, #0x19 - add r0, #0x10 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [r5, #0xc] - ldr r1, [r5] - ldr r0, [r0, #0x74] - bl BgConfig_LoadAssetFromOpenNarc - ldr r0, [r5] - add r3, r5, #0 - str r0, [sp] - ldrh r1, [r5, #0x12] - add r0, r4, #0 - mov r2, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x19 - add r1, #0x16 - add r3, #0x48 - bl GfGfxLoader_GetScrnDataFromOpenNarc - str r0, [r5, #0x44] - add r0, r4, #0 - bl NARC_Delete - ldr r0, [r5, #0xc] - mov r1, #3 - ldr r0, [r0, #0x74] - bl ScheduleBgTilemapBufferTransfer - add sp, #0x14 - pop {r4, r5, pc} - thumb_func_end ov101_021EF1D8 - - thumb_func_start ov101_021EF260 -ov101_021EF260: ; 0x021EF260 - ldr r3, _021EF268 ; =Heap_Free - ldr r0, [r0, #0x44] - bx r3 - nop -_021EF268: .word Heap_Free - thumb_func_end ov101_021EF260 - - thumb_func_start ov101_021EF26C -ov101_021EF26C: ; 0x021EF26C - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r1, #0 - ldr r1, [r5] - mov r0, #0x91 - bl NARC_New - add r4, r0, #0 - mov r1, #0 - mov r0, #7 - str r1, [sp] - lsl r0, r0, #6 - str r0, [sp, #4] - str r1, [sp, #8] - str r1, [sp, #0xc] - ldrh r2, [r5, #0x12] - ldr r0, [r5, #0xc] - ldr r3, [r5] - lsl r2, r2, #0x10 - lsr r2, r2, #0x19 - ldr r0, [r0, #0x78] - add r1, r4, #0 - add r2, r2, #4 - bl PaletteData_LoadFromOpenNarc - mov r0, #1 - str r0, [sp] - mov r0, #6 - lsl r0, r0, #6 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldrh r2, [r5, #0x12] - ldr r0, [r5, #0xc] - ldr r3, [r5] - lsl r2, r2, #0x10 - lsr r2, r2, #0x19 - ldr r0, [r0, #0x78] - add r1, r4, #0 - add r2, r2, #4 - bl PaletteData_LoadFromOpenNarc - cmp r6, #0 - beq _021EF304 - mov r0, #2 - str r0, [sp] - mov r0, #0x16 - lsl r0, r0, #4 - str r0, [sp, #4] - mov r0, #0x40 - str r0, [sp, #8] - mov r2, #0 - str r2, [sp, #0xc] - ldr r0, [r5, #0xc] - ldr r3, [r5] - ldr r0, [r0, #0x78] - add r1, r4, #0 - bl PaletteData_LoadFromOpenNarc - mov r0, #3 - str r0, [sp] - mov r0, #0x16 - lsl r0, r0, #4 - str r0, [sp, #4] - mov r0, #0x40 - str r0, [sp, #8] - mov r2, #0 - str r2, [sp, #0xc] - ldr r0, [r5, #0xc] - ldr r3, [r5] - ldr r0, [r0, #0x78] - add r1, r4, #0 - bl PaletteData_LoadFromOpenNarc -_021EF304: - ldr r0, [r5, #0xc] - mov r1, #1 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - cmp r6, #0 - beq _021EF33E - mov r0, #0x10 - mov r1, #0 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r5, #0xc] - add r2, r1, #0 - ldr r0, [r0, #0x78] - mov r3, #0xe0 - bl PaletteData_BlendPalette - mov r0, #0x10 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x78] - mov r2, #0x40 - mov r3, #0xc0 - bl PaletteData_BlendPalette - b _021EF366 -_021EF33E: - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldr r0, [r5, #0xc] - mov r3, #1 - ldr r0, [r0, #0x78] - add r2, r1, #0 - lsl r3, r3, #8 - bl PaletteData_BlendPalette - mov r2, #0 - str r2, [sp] - str r2, [sp, #4] - ldr r0, [r5, #0xc] - mov r1, #2 - add r3, r1, #0 - ldr r0, [r0, #0x78] - add r3, #0xfe - bl PaletteData_BlendPalette -_021EF366: - ldr r0, [r5, #0xc] - ldr r0, [r0, #0x78] - bl PaletteData_PushTransparentBuffers - ldr r0, [r5, #0xc] - mov r1, #0 - ldr r0, [r0, #0x78] - bl PaletteData_SetAutoTransparent - add r0, r4, #0 - bl NARC_Delete - add sp, #0x10 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov101_021EF26C - - thumb_func_start ov101_021EF384 -ov101_021EF384: ; 0x021EF384 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r5, r0, #0 - add r6, r1, #0 - ldrh r1, [r5, #0x12] - ldr r0, _021EF410 ; =0xFFFF01FF - and r1, r0 - lsl r0, r6, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x19 - lsr r0, r0, #0x10 - orr r0, r1 - strh r0, [r5, #0x12] - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x74] - bl BgClearTilemapBufferAndCommit - add r0, r6, #0 - mov r1, #3 - ldr r4, [r5, #0x48] - bl _s32_div_f - add r7, r1, #0 - add r0, r6, #0 - mov r1, #3 - bl _s32_div_f - add r3, r0, #0 - mov r0, #9 - str r0, [sp] - mov r0, #7 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0xc - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldrh r0, [r4] - mov r2, #0xa - mul r2, r7 - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - str r0, [sp, #0x14] - ldrh r0, [r4, #2] - lsl r4, r3, #3 - add r3, r3, r4 - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - str r0, [sp, #0x18] - ldr r0, [r5, #0xc] - add r2, r2, #2 - add r3, r3, #2 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x74] - mov r1, #2 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl CopyToBgTilemapRect - ldr r0, [r5, #0xc] - mov r1, #2 - ldr r0, [r0, #0x74] - bl ScheduleBgTilemapBufferTransfer - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_021EF410: .word 0xFFFF01FF - thumb_func_end ov101_021EF384 - - thumb_func_start ov101_021EF414 -ov101_021EF414: ; 0x021EF414 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r7, r0, #0 - mov r4, #1 - mov r6, #0 -_021EF41E: - ldrh r0, [r7, #0x12] - lsl r0, r0, #0x17 - lsr r0, r0, #0x17 - tst r0, r4 - beq _021EF42A - b _021EF48A -_021EF42A: - add r0, r6, #0 - mov r1, #3 - ldr r5, [r7, #0x48] - bl _s32_div_f - str r1, [sp, #0x1c] - add r0, r6, #0 - mov r1, #3 - bl _s32_div_f - mov ip, r0 - mov r0, #6 - str r0, [sp] - mov r0, #5 - str r0, [sp, #4] - add r0, r5, #0 - add r0, #0xc - str r0, [sp, #8] - mov r0, #6 - str r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - ldrh r0, [r5] - ldr r3, [sp, #0x1c] - mov r2, #0xa - mul r2, r3 - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - str r0, [sp, #0x14] - ldrh r0, [r5, #2] - mov r3, ip - lsl r5, r3, #3 - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - mov r3, ip - str r0, [sp, #0x18] - ldr r0, [r7, #0xc] - add r3, r3, r5 - add r2, r2, #3 - add r3, r3, #3 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x74] - mov r1, #3 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl CopyToBgTilemapRect -_021EF48A: - lsl r0, r4, #0x11 - add r6, r6, #1 - lsr r4, r0, #0x10 - cmp r6, #6 - blt _021EF41E - ldr r0, [r7, #0xc] - mov r1, #3 - ldr r0, [r0, #0x74] - bl ScheduleBgTilemapBufferTransfer - ldrh r1, [r7, #0x12] - add r0, r7, #0 - lsl r1, r1, #0x10 - lsr r1, r1, #0x19 - bl ov101_021EF384 - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov101_021EF414 - - thumb_func_start ov101_021EF4B0 -ov101_021EF4B0: ; 0x021EF4B0 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - mov r2, #0xff - bl PokegearCursorManager_SetSpecIndexAndCursorPos - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov101_021EF4B0 - - thumb_func_start ov101_021EF4DC -ov101_021EF4DC: ; 0x021EF4DC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - mov r1, #0 - strb r1, [r0, #6] - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - mov r2, #0xff - bl PokegearCursorManager_SetSpecIndexAndCursorPos - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #1 - ldr r0, [r0, #0x7c] - add r2, r1, #0 - bl PokegearCursorManager_SetCursorSpritesDrawState - pop {r4, pc} - thumb_func_end ov101_021EF4DC - - thumb_func_start ov101_021EF50C -ov101_021EF50C: ; 0x021EF50C - push {r4, r5, r6, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0x10 - mov r1, #0 - mov r2, #0x18 - strb r4, [r5, #0x11] - bl MI_CpuFill8 - ldr r2, _021EF590 ; =ov101_021F83C4 - add r0, sp, #0x10 - ldrh r3, [r2] - ldr r6, _021EF594 ; =ov101_021F83D0 - add r1, sp, #0x10 - strh r3, [r0] - ldrh r3, [r2, #2] - strh r3, [r0, #2] - ldrh r3, [r2, #4] - strh r3, [r0, #4] - ldrh r3, [r2, #6] - strh r3, [r0, #6] - ldrh r3, [r2, #8] - ldrh r2, [r2, #0xa] - strh r3, [r0, #8] - strh r2, [r0, #0xa] - ldr r2, [r5, #0x3c] - str r2, [sp, #0x1c] - ldr r2, [r5, #0xc] - ldr r2, [r2, #0x74] - str r2, [sp, #0x20] - mov r2, #2 - strb r2, [r0, #0x14] - lsl r0, r4, #1 - add r3, r4, r0 - ldr r0, _021EF598 ; =ov101_021F83D0 + 1 - ldrb r0, [r0, r3] - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, _021EF59C ; =ov101_021F83D0 + 2 - ldrb r0, [r0, r3] - ldrb r3, [r6, r3] - str r0, [sp, #0xc] - ldr r2, [r5, #0xc] - ldr r0, [r5, #0x38] - ldr r2, [r2, #0xc] - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - bl TouchscreenListMenu_CreateWithAlignment - str r0, [r5, #0x40] - add r0, r5, #0 - add r1, r4, #0 - mov r2, #1 - bl ov101_021EF5A4 - ldr r0, [r5, #0xc] - ldr r1, _021EF5A0 ; =0x0000FFFF - ldr r0, [r0, #0x7c] - mov r2, #0 - bl PokegearCursorManager_SetCursorSpritesAnimateFlag - add sp, #0x28 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021EF590: .word ov101_021F83C4 -_021EF594: .word ov101_021F83D0 -_021EF598: .word ov101_021F83D0 + 1 -_021EF59C: .word ov101_021F83D0 + 2 -_021EF5A0: .word 0x0000FFFF - thumb_func_end ov101_021EF50C - - thumb_func_start ov101_021EF5A4 -ov101_021EF5A4: ; 0x021EF5A4 - push {r4, r5, r6, lr} - add r4, r1, #0 - cmp r2, #0 - beq _021EF680 - ldr r1, _021EF6B8 ; =0x04000048 - mov r3, #0x3f - ldrh r2, [r1] - mov r5, #0x1f - bic r2, r3 - orr r2, r5 - strh r2, [r1] - ldrh r6, [r1] - ldr r2, _021EF6BC ; =0xFFFFC0FF - and r6, r2 - lsl r2, r5, #8 - orr r2, r6 - strh r2, [r1] - ldrh r2, [r1, #2] - bic r2, r3 - add r3, r2, #0 - orr r3, r5 - mov r2, #0x20 - orr r2, r3 - strh r2, [r1, #2] - ldr r6, [r0, #0x40] - add r0, r6, #0 - add r0, #0x28 - ldrb r0, [r0] - lsl r5, r0, #3 - add r0, r6, #0 - add r6, #0x26 - ldrb r6, [r6] - add r0, #0x29 - ldrb r0, [r0] - add r6, r6, #2 - lsl r6, r6, #3 - lsl r3, r0, #3 - lsl r2, r5, #8 - mov r0, #0xff - add r5, r5, r6 - lsl r0, r0, #8 - lsl r5, r5, #0x18 - and r2, r0 - lsr r5, r5, #0x18 - orr r5, r2 - add r2, r1, #0 - sub r2, #8 - strh r5, [r2] - lsl r2, r3, #8 - add r3, #0x38 - and r2, r0 - lsl r0, r3, #0x18 - lsr r0, r0, #0x18 - orr r2, r0 - sub r0, r1, #4 - strh r2, [r0] - add r0, r4, #0 - mov r1, #3 - bl _s32_div_f - mov r0, #0x50 - add r2, r1, #0 - mul r2, r0 - add r0, r2, #0 - add r0, #0x18 - lsl r1, r0, #8 - mov r0, #0xff - lsl r0, r0, #8 - add r2, #0x48 - and r1, r0 - lsl r0, r2, #0x18 - lsr r0, r0, #0x18 - orr r1, r0 - ldr r0, _021EF6C0 ; =0x04000042 - strh r1, [r0] - add r0, r4, #0 - mov r1, #3 - bl _s32_div_f - mov r1, #0x48 - add r2, r0, #0 - mul r2, r1 - add r0, r2, #0 - add r0, #0x18 - lsl r1, r0, #8 - mov r0, #0xff - lsl r0, r0, #8 - add r2, #0x40 - and r1, r0 - lsl r0, r2, #0x18 - lsr r0, r0, #0x18 - orr r1, r0 - ldr r0, _021EF6C4 ; =0x04000046 - add r3, r0, #0 - strh r1, [r0] - sub r3, #0x46 - ldr r2, [r3] - ldr r1, _021EF6C8 ; =0xFFFF1FFF - add r0, #0xa - and r2, r1 - mov r1, #6 - lsl r1, r1, #0xc - orr r1, r2 - str r1, [r3] - mov r1, #0x1f - add r2, r1, #0 - sub r2, #0x27 - bl G2x_SetBlendBrightness_ - pop {r4, r5, r6, pc} -_021EF680: - ldr r0, _021EF6B8 ; =0x04000048 - mov r2, #0x3f - ldrh r1, [r0] - bic r1, r2 - strh r1, [r0] - ldrh r3, [r0] - ldr r1, _021EF6BC ; =0xFFFFC0FF - and r1, r3 - strh r1, [r0] - ldrh r1, [r0, #2] - add r3, r0, #0 - sub r3, #0x48 - bic r1, r2 - strh r1, [r0, #2] - ldr r2, [r3] - ldr r1, _021EF6C8 ; =0xFFFF1FFF - add r0, #8 - and r1, r2 - str r1, [r3] - mov r1, #0x1f - mov r2, #0 - bl G2x_SetBlendBrightness_ - ldr r0, _021EF6CC ; =0x04000050 - mov r1, #0 - strh r1, [r0] - pop {r4, r5, r6, pc} - nop -_021EF6B8: .word 0x04000048 -_021EF6BC: .word 0xFFFFC0FF -_021EF6C0: .word 0x04000042 -_021EF6C4: .word 0x04000046 -_021EF6C8: .word 0xFFFF1FFF -_021EF6CC: .word 0x04000050 - thumb_func_end ov101_021EF5A4 - - thumb_func_start ov101_021EF6D0 -ov101_021EF6D0: ; 0x021EF6D0 - mov r2, #1 - ldrh r0, [r0, #0x12] - lsl r2, r1 - lsl r1, r2, #0x10 - lsl r0, r0, #0x17 - lsr r1, r1, #0x10 - lsr r0, r0, #0x17 - and r0, r1 - bx lr - .balign 4, 0 - thumb_func_end ov101_021EF6D0 - - thumb_func_start ov101_021EF6E4 -ov101_021EF6E4: ; 0x021EF6E4 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, _021EF7C8 ; =gSystem - mov r2, #2 - ldr r0, [r0, #0x48] - add r1, r0, #0 - tst r1, r2 - beq _021EF730 - ldr r0, [r4, #0xc] - mov r1, #1 - strb r1, [r0, #6] - ldr r0, [r4, #0xc] - mov r2, #0 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - mov r2, #1 - bl PokegearCursorManager_SetCursorSpritesDrawState - ldr r0, [r4, #0xc] - bl PokegearApp_AppIdToButtonIndex - add r2, r0, #0 - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_SetSpecIndexAndCursorPos - mov r0, #0x25 - lsl r0, r0, #6 - bl PlaySE - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_021EF730: - mov r1, #1 - add r3, r0, #0 - tst r3, r1 - beq _021EF766 - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_GetCursorPos - add r5, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - bl ov101_021EF6D0 - cmp r0, #0 - bne _021EF754 - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_021EF754: - add r0, r4, #0 - add r1, r5, #0 - bl ov101_021EF50C - ldr r0, _021EF7CC ; =0x00000941 - bl PlaySE - mov r0, #8 - pop {r3, r4, r5, pc} -_021EF766: - mov r3, #0x20 - tst r3, r0 - beq _021EF77E - ldr r0, [r4, #0xc] - mov r1, #0 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_MoveActiveCursor - ldr r0, _021EF7D0 ; =0x0000093F - bl PlaySE - b _021EF7C2 -_021EF77E: - mov r3, #0x10 - tst r3, r0 - beq _021EF794 - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_MoveActiveCursor - ldr r0, _021EF7D0 ; =0x0000093F - bl PlaySE - b _021EF7C2 -_021EF794: - mov r1, #0x40 - tst r1, r0 - beq _021EF7AC - ldr r0, [r4, #0xc] - add r1, r2, #0 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_MoveActiveCursor - ldr r0, _021EF7D0 ; =0x0000093F - bl PlaySE - b _021EF7C2 -_021EF7AC: - mov r1, #0x80 - tst r0, r1 - beq _021EF7C2 - ldr r0, [r4, #0xc] - mov r1, #3 - ldr r0, [r0, #0x7c] - bl PokegearCursorManager_MoveActiveCursor - ldr r0, _021EF7D0 ; =0x0000093F - bl PlaySE -_021EF7C2: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021EF7C8: .word gSystem -_021EF7CC: .word 0x00000941 -_021EF7D0: .word 0x0000093F - thumb_func_end ov101_021EF6E4 - - thumb_func_start ov101_021EF7D4 -ov101_021EF7D4: ; 0x021EF7D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl PokegearApp_HandleTouchInput_SwitchApps - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _021EF83C - ldr r0, _021EF840 ; =ov101_021F83E4 - bl TouchscreenHitbox_FindRectAtTouchNew - add r4, r0, #0 - mov r0, #0 - mvn r0, r0 - cmp r4, r0 - beq _021EF83C - lsl r1, r4, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - bl ov101_021EF6D0 - cmp r0, #0 - bne _021EF80A - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_021EF80A: - ldr r0, [r5, #0xc] - ldrb r0, [r0, #6] - cmp r0, #1 - bne _021EF818 - add r0, r5, #0 - bl ov101_021EF4DC -_021EF818: - ldr r0, [r5, #0xc] - lsl r1, r4, #0x18 - ldr r0, [r0, #0x7c] - lsr r1, r1, #0x18 - bl PokegearCursorManager_SetActiveCursorPosition - lsl r1, r4, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - bl ov101_021EF50C - ldr r0, _021EF844 ; =0x00000941 - bl PlaySE - ldr r0, [r5, #0xc] - mov r1, #1 - str r1, [r0, #0xc] - mov r0, #8 -_021EF83C: - pop {r3, r4, r5, pc} - nop -_021EF840: .word ov101_021F83E4 -_021EF844: .word 0x00000941 - thumb_func_end ov101_021EF7D4 - - .rodata - - -ov101_021F820C: ; 0x021F820C - .byte 0x00, 0x00, 0x02, 0x01 - .byte 0x03, 0x03, 0x30, 0x2C, 0xEA, 0x16, 0xEE, 0x12, 0x01, 0x00, 0x00, 0x02, 0x04, 0x04, 0x80, 0x2C - .byte 0xEA, 0x16, 0xEE, 0x12, 0x02, 0x00, 0x01, 0x00, 0x05, 0x05, 0xD0, 0x2C, 0xEA, 0x16, 0xEE, 0x12 - .byte 0x03, 0x00, 0x05, 0x04, 0x00, 0x00, 0x30, 0x74, 0xEA, 0x16, 0xEE, 0x12, 0x04, 0x00, 0x03, 0x05 - .byte 0x01, 0x01, 0x80, 0x74, 0xEA, 0x16, 0xEE, 0x12, 0x05, 0x00, 0x04, 0x03, 0x02, 0x02, 0xD0, 0x74 - .byte 0xEA, 0x16, 0xEE, 0x12 - -ov101_021F8254: ; 0x021F8254 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x1D, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00 - .byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov101_021F82FC: ; 0x021F82FC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov101_021F83C4: ; 0x021F83C4 - .short 0x0003 - .short 0x0A01 - .short 0x0101 - .short 0x001C - .short 0x0001 - .short 0x0040 - -ov101_021F83D0: ; 0x021F83D0 - .byte 0x0A, 0x02, 0x00 - .byte 0x14, 0x02, 0x00 - .byte 0x16, 0x02, 0x02 - .byte 0x0A, 0x0B, 0x00 - .byte 0x14, 0x0B, 0x00 - .byte 0x16, 0x0B, 0x02 - - .balign 4, 0 -ov101_021F83E4: ; 0x021F83E4 - .byte 0x18, 0x40, 0x18, 0x48 - .byte 0x18, 0x40, 0x68, 0x98 - .byte 0x18, 0x40, 0xB8, 0xE8 - .byte 0x60, 0x88, 0x18, 0x48 - .byte 0x60, 0x88, 0x68, 0x98 - .byte 0x60, 0x88, 0xB8, 0xE8 - .byte 0xFF, 0x00, 0x00, 0x00 diff --git a/files/.gitignore b/files/.gitignore index d5490bbe3a..ddebc07f72 100644 --- a/files/.gitignore +++ b/files/.gitignore @@ -40,6 +40,9 @@ a/1/3/8 a/1/4/1 a/1/4/3 a/1/4/4 +a/1/4/5 +a/1/4/6 +a/1/4/7 a/1/5/0 a/1/5/2 a/1/6/3 diff --git a/files/a/1/4/5 b/files/a/1/4/5 deleted file mode 100644 index 1af971bb2c..0000000000 Binary files a/files/a/1/4/5 and /dev/null differ diff --git a/files/a/1/4/6 b/files/a/1/4/6 deleted file mode 100644 index 48ffc3e42d..0000000000 Binary files a/files/a/1/4/6 and /dev/null differ diff --git a/files/a/1/4/7 b/files/a/1/4/7 deleted file mode 100644 index 8529dbc33b..0000000000 Binary files a/files/a/1/4/7 and /dev/null differ diff --git a/files/application/pokegear/configure/pgconf_gra.mk b/files/application/pokegear/configure/pgconf_gra.mk new file mode 100644 index 0000000000..b717bc3d16 --- /dev/null +++ b/files/application/pokegear/configure/pgconf_gra.mk @@ -0,0 +1,52 @@ +PGCONF_GRA_DIR := files/application/pokegear/configure/pgconf_gra +PGCONF_GRA_NARC := $(PGCONF_GRA_DIR).narc + +PGCONF_GRA_FILES := \ + pgconf_gra_00000000.NCLR \ + pgconf_gra_00000001.NCGR \ + pgconf_gra_00000002.NCER \ + pgconf_gra_00000003.NANR \ + pgconf_gra_00000004.NCLR \ + pgconf_gra_00000005.NCLR \ + pgconf_gra_00000006.NCLR \ + pgconf_gra_00000007.NCLR \ + pgconf_gra_00000008.NCLR \ + pgconf_gra_00000009.NCLR \ + pgconf_gra_00000010.NCGR \ + pgconf_gra_00000011.NCGR \ + pgconf_gra_00000012.NCGR \ + pgconf_gra_00000013.NCGR \ + pgconf_gra_00000014.NCGR \ + pgconf_gra_00000015.NCGR \ + pgconf_gra_00000016.NSCR \ + pgconf_gra_00000017.NSCR \ + pgconf_gra_00000018.NSCR \ + pgconf_gra_00000019.NSCR \ + pgconf_gra_00000020.NSCR \ + pgconf_gra_00000021.NSCR \ + pgconf_gra_00000022.NSCR \ + pgconf_gra_00000023.NSCR \ + pgconf_gra_00000024.NSCR \ + pgconf_gra_00000025.NSCR \ + pgconf_gra_00000026.NSCR \ + pgconf_gra_00000027.NSCR + +$(PGCONF_GRA_NARC): $(addprefix $(PGCONF_GRA_DIR)/,$(PGCONF_GRA_FILES)) + $(KNARC) -p $@ -d $(PGCONF_GRA_DIR) -i + +CLOBBER_SIZE_VERSION101_NCGR_FILES += \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000001.NCGR + +VERSION101_SOPC_NCGR_FILES += \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000010.NCGR \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000011.NCGR \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000012.NCGR \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000013.NCGR \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000014.NCGR \ + $(PGCONF_GRA_DIR)/pgconf_gra_00000015.NCGR \ + +clean-pgconf-gra: + $(RM) $(PGCONF_GRA_NARC) + +.PHONY: clean-pgconf-gra +clean-filesystem: clean-pgconf-gra diff --git a/files/application/pokegear/configure/pgconf_gra/.gitignore b/files/application/pokegear/configure/pgconf_gra/.gitignore new file mode 100644 index 0000000000..3e346f2856 --- /dev/null +++ b/files/application/pokegear/configure/pgconf_gra/.gitignore @@ -0,0 +1,2 @@ +*.NCGR +!*.NCLR diff --git a/files/application/pokegear/configure/pgconf_gra/.knarcignore b/files/application/pokegear/configure/pgconf_gra/.knarcignore new file mode 100644 index 0000000000..da511757cd --- /dev/null +++ b/files/application/pokegear/configure/pgconf_gra/.knarcignore @@ -0,0 +1,2 @@ +*.png +*.json diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000000.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000000.NCLR new file mode 100644 index 0000000000..b465afa3a0 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000000.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000001.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000001.png new file mode 100644 index 0000000000..9337ef5b03 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000001.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000002.NCER b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000002.NCER new file mode 100644 index 0000000000..d41dc9a504 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000002.NCER differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000003.NANR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000003.NANR new file mode 100644 index 0000000000..b91ece4d86 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000003.NANR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000004.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000004.NCLR new file mode 100644 index 0000000000..af62fcdc1f Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000004.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000005.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000005.NCLR new file mode 100644 index 0000000000..8575be6f54 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000005.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000006.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000006.NCLR new file mode 100644 index 0000000000..1672b50a3a Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000006.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000007.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000007.NCLR new file mode 100644 index 0000000000..8ab323b82c Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000007.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000008.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000008.NCLR new file mode 100644 index 0000000000..552ea9192b Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000008.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000009.NCLR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000009.NCLR new file mode 100644 index 0000000000..bea5829a9a Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000009.NCLR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000010.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000010.png new file mode 100644 index 0000000000..5fb9838cc3 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000010.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000011.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000011.png new file mode 100644 index 0000000000..7a5d848d82 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000011.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000012.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000012.png new file mode 100644 index 0000000000..c6783e407a Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000012.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000013.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000013.png new file mode 100644 index 0000000000..e96b6dd255 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000013.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000014.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000014.png new file mode 100644 index 0000000000..edd19acc2d Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000014.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000015.png b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000015.png new file mode 100644 index 0000000000..ac1fd5c707 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000015.png differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000016.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000016.NSCR new file mode 100644 index 0000000000..8d76d8a281 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000016.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000017.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000017.NSCR new file mode 100644 index 0000000000..0a81e53f87 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000017.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000018.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000018.NSCR new file mode 100644 index 0000000000..7365e786d9 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000018.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000019.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000019.NSCR new file mode 100644 index 0000000000..9a1ba26f7d Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000019.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000020.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000020.NSCR new file mode 100644 index 0000000000..d7e634e57d Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000020.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000021.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000021.NSCR new file mode 100644 index 0000000000..21a08a422c Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000021.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000022.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000022.NSCR new file mode 100644 index 0000000000..2fd55aac99 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000022.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000023.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000023.NSCR new file mode 100644 index 0000000000..2fd55aac99 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000023.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000024.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000024.NSCR new file mode 100644 index 0000000000..fc3c33dbe5 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000024.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000025.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000025.NSCR new file mode 100644 index 0000000000..fb49ee47aa Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000025.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000026.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000026.NSCR new file mode 100644 index 0000000000..2fd55aac99 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000026.NSCR differ diff --git a/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000027.NSCR b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000027.NSCR new file mode 100644 index 0000000000..e07ae65c13 Binary files /dev/null and b/files/application/pokegear/configure/pgconf_gra/pgconf_gra_00000027.NSCR differ diff --git a/files/application/pokegear/pgear_gra.mk b/files/application/pokegear/pgear_gra.mk index 2fbdadf30c..099ccbc422 100644 --- a/files/application/pokegear/pgear_gra.mk +++ b/files/application/pokegear/pgear_gra.mk @@ -66,6 +66,28 @@ PGEAR_GRA_FILES := \ $(PGEAR_GRA_NARC): $(addprefix $(PGEAR_GRA_DIR)/,$(PGEAR_GRA_FILES)) $(KNARC) -p $@ -d $(PGEAR_GRA_DIR) -i +CLOBBER_SIZE_VERSION101_NCGR_FILES += \ + $(PGEAR_GRA_DIR)/pgear_gra_00000006.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000007.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000008.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000009.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000010.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000011.NCGR + +VERSION101_SOPC_NCGR_FILES += \ + $(PGEAR_GRA_DIR)/pgear_gra_00000036.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000037.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000038.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000039.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000040.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000041.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000048.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000049.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000050.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000051.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000052.NCGR \ + $(PGEAR_GRA_DIR)/pgear_gra_00000053.NCGR + clean-pgear-gra: $(RM) $(PGEAR_GRA_NARC) diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000006.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000006.NCGR deleted file mode 100644 index 6cae3f27ef..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000006.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000006.png b/files/application/pokegear/pgear_gra/pgear_gra_00000006.png new file mode 100644 index 0000000000..c6dfd8b394 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000006.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000007.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000007.NCGR deleted file mode 100644 index e1bb701633..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000007.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000007.png b/files/application/pokegear/pgear_gra/pgear_gra_00000007.png new file mode 100644 index 0000000000..d652e78d8c Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000007.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000008.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000008.NCGR deleted file mode 100644 index c63147e8d4..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000008.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000008.png b/files/application/pokegear/pgear_gra/pgear_gra_00000008.png new file mode 100644 index 0000000000..6e56d2ced7 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000008.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000009.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000009.NCGR deleted file mode 100644 index 4d128d3203..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000009.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000009.png b/files/application/pokegear/pgear_gra/pgear_gra_00000009.png new file mode 100644 index 0000000000..3e6f81d192 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000009.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000010.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000010.NCGR deleted file mode 100644 index df0d630885..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000010.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000010.png b/files/application/pokegear/pgear_gra/pgear_gra_00000010.png new file mode 100644 index 0000000000..267a8ed326 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000010.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000011.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000011.NCGR deleted file mode 100644 index a5edb2e196..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000011.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000011.png b/files/application/pokegear/pgear_gra/pgear_gra_00000011.png new file mode 100644 index 0000000000..a76307c8ee Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000011.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000036.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000036.NCGR deleted file mode 100644 index 8ee74abdcb..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000036.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000036.png b/files/application/pokegear/pgear_gra/pgear_gra_00000036.png new file mode 100644 index 0000000000..163a4fa068 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000036.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000037.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000037.NCGR deleted file mode 100644 index 8ee74abdcb..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000037.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000037.png b/files/application/pokegear/pgear_gra/pgear_gra_00000037.png new file mode 100644 index 0000000000..e4949c7986 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000037.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000038.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000038.NCGR deleted file mode 100644 index 7bdeccc399..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000038.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000038.png b/files/application/pokegear/pgear_gra/pgear_gra_00000038.png new file mode 100644 index 0000000000..1a7164c789 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000038.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000039.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000039.NCGR deleted file mode 100644 index 4d318a481b..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000039.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000039.png b/files/application/pokegear/pgear_gra/pgear_gra_00000039.png new file mode 100644 index 0000000000..1b44a9c0f7 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000039.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000040.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000040.NCGR deleted file mode 100644 index c1daa634ea..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000040.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000040.png b/files/application/pokegear/pgear_gra/pgear_gra_00000040.png new file mode 100644 index 0000000000..b96f839fb7 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000040.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000041.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000041.NCGR deleted file mode 100644 index 65cdfa0248..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000041.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000041.png b/files/application/pokegear/pgear_gra/pgear_gra_00000041.png new file mode 100644 index 0000000000..1a357fd96b Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000041.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000048.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000048.NCGR deleted file mode 100644 index 6fd51ed90c..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000048.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000048.png b/files/application/pokegear/pgear_gra/pgear_gra_00000048.png new file mode 100644 index 0000000000..0b33041050 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000048.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000049.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000049.NCGR deleted file mode 100644 index 6fd51ed90c..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000049.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000049.png b/files/application/pokegear/pgear_gra/pgear_gra_00000049.png new file mode 100644 index 0000000000..2f2e09633f Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000049.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000050.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000050.NCGR deleted file mode 100644 index 1c9810c877..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000050.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000050.png b/files/application/pokegear/pgear_gra/pgear_gra_00000050.png new file mode 100644 index 0000000000..a6ea810610 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000050.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000051.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000051.NCGR deleted file mode 100644 index 5f8dbf036b..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000051.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000051.png b/files/application/pokegear/pgear_gra/pgear_gra_00000051.png new file mode 100644 index 0000000000..486b79c7dc Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000051.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000052.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000052.NCGR deleted file mode 100644 index dfe77a559c..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000052.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000052.png b/files/application/pokegear/pgear_gra/pgear_gra_00000052.png new file mode 100644 index 0000000000..d17483c27b Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000052.png differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000053.NCGR b/files/application/pokegear/pgear_gra/pgear_gra_00000053.NCGR deleted file mode 100644 index 0e9c103f0b..0000000000 Binary files a/files/application/pokegear/pgear_gra/pgear_gra_00000053.NCGR and /dev/null differ diff --git a/files/application/pokegear/pgear_gra/pgear_gra_00000053.png b/files/application/pokegear/pgear_gra/pgear_gra_00000053.png new file mode 100644 index 0000000000..4a2fefec37 Binary files /dev/null and b/files/application/pokegear/pgear_gra/pgear_gra_00000053.png differ diff --git a/files/application/pokegear/phone/pgphone_gra.mk b/files/application/pokegear/phone/pgphone_gra.mk new file mode 100644 index 0000000000..57a94f067a --- /dev/null +++ b/files/application/pokegear/phone/pgphone_gra.mk @@ -0,0 +1,88 @@ +PGPHONE_GRA_DIR := files/application/pokegear/phone/pgphone_gra +PGPHONE_GRA_NARC := $(PGPHONE_GRA_DIR).narc + +PGPHONE_GRA_FILES := \ + pgphone_gra_00000000.NCLR \ + pgphone_gra_00000001.NCGR \ + pgphone_gra_00000002.NCER \ + pgphone_gra_00000003.NANR \ + pgphone_gra_00000004.NCLR \ + pgphone_gra_00000005.NCLR \ + pgphone_gra_00000006.NCLR \ + pgphone_gra_00000007.NCLR \ + pgphone_gra_00000008.NCLR \ + pgphone_gra_00000009.NCLR \ + pgphone_gra_00000010.NCLR \ + pgphone_gra_00000011.NCLR \ + pgphone_gra_00000012.NCLR \ + pgphone_gra_00000013.NCLR \ + pgphone_gra_00000014.NCLR \ + pgphone_gra_00000015.NCLR \ + pgphone_gra_00000016.NCGR \ + pgphone_gra_00000017.NCGR \ + pgphone_gra_00000018.NCGR \ + pgphone_gra_00000019.NCGR \ + pgphone_gra_00000020.NCGR \ + pgphone_gra_00000021.NCGR \ + pgphone_gra_00000022.NSCR \ + pgphone_gra_00000023.NSCR \ + pgphone_gra_00000024.NSCR \ + pgphone_gra_00000025.NSCR \ + pgphone_gra_00000026.NSCR \ + pgphone_gra_00000027.NSCR \ + pgphone_gra_00000028.NCGR \ + pgphone_gra_00000029.NCGR \ + pgphone_gra_00000030.NCGR \ + pgphone_gra_00000031.NCGR \ + pgphone_gra_00000032.NCGR \ + pgphone_gra_00000033.NCGR \ + pgphone_gra_00000034.NSCR \ + pgphone_gra_00000035.NSCR \ + pgphone_gra_00000036.NSCR \ + pgphone_gra_00000037.NSCR \ + pgphone_gra_00000038.NSCR \ + pgphone_gra_00000039.NSCR \ + pgphone_gra_00000040.NCGR \ + pgphone_gra_00000041.NCGR \ + pgphone_gra_00000042.NCGR \ + pgphone_gra_00000043.NCGR \ + pgphone_gra_00000044.NCGR \ + pgphone_gra_00000045.NCGR \ + pgphone_gra_00000046.NSCR \ + pgphone_gra_00000047.NSCR \ + pgphone_gra_00000048.NSCR \ + pgphone_gra_00000049.NSCR \ + pgphone_gra_00000050.NSCR \ + pgphone_gra_00000051.NSCR + +$(PGPHONE_GRA_NARC): $(addprefix $(PGPHONE_GRA_DIR)/,$(PGPHONE_GRA_FILES)) + $(KNARC) -p $@ -d $(PGPHONE_GRA_DIR) -i + +CLOBBER_SIZE_VERSION101_NCGR_FILES += \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000001.NCGR + +VERSION101_SOPC_NCGR_FILES += \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000016.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000017.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000018.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000019.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000020.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000021.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000028.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000029.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000030.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000031.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000032.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000033.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000040.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000041.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000042.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000043.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000044.NCGR \ + $(PGPHONE_GRA_DIR)/pgphone_gra_00000045.NCGR + +clean-pgphone-gra: + $(RM) $(PGPHONE_GRA_NARC) + +.PHONY: clean-pgphone-gra +clean-filesystem: clean-pgphone-gra diff --git a/files/application/pokegear/phone/pgphone_gra/.gitignore b/files/application/pokegear/phone/pgphone_gra/.gitignore new file mode 100644 index 0000000000..3e346f2856 --- /dev/null +++ b/files/application/pokegear/phone/pgphone_gra/.gitignore @@ -0,0 +1,2 @@ +*.NCGR +!*.NCLR diff --git a/files/application/pokegear/phone/pgphone_gra/.knarcignore b/files/application/pokegear/phone/pgphone_gra/.knarcignore new file mode 100644 index 0000000000..da511757cd --- /dev/null +++ b/files/application/pokegear/phone/pgphone_gra/.knarcignore @@ -0,0 +1,2 @@ +*.png +*.json diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000000.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000000.NCLR new file mode 100644 index 0000000000..d5e4016949 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000000.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000001.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000001.png new file mode 100644 index 0000000000..6bd4bf393a Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000001.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000002.NCER b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000002.NCER new file mode 100644 index 0000000000..dc0985835a Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000002.NCER differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000003.NANR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000003.NANR new file mode 100644 index 0000000000..b891e8bdaf Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000003.NANR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000004.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000004.NCLR new file mode 100644 index 0000000000..932d99a855 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000004.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000005.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000005.NCLR new file mode 100644 index 0000000000..cbb0a0143e Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000005.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000006.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000006.NCLR new file mode 100644 index 0000000000..f7c90b999d Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000006.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000007.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000007.NCLR new file mode 100644 index 0000000000..fa66077b1d Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000007.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000008.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000008.NCLR new file mode 100644 index 0000000000..8e17a4b54d Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000008.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000009.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000009.NCLR new file mode 100644 index 0000000000..93f02a4dab Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000009.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000010.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000010.NCLR new file mode 100644 index 0000000000..85b29945c3 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000010.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000011.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000011.NCLR new file mode 100644 index 0000000000..6dad5e3690 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000011.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000012.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000012.NCLR new file mode 100644 index 0000000000..53234211c4 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000012.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000013.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000013.NCLR new file mode 100644 index 0000000000..884b4e4595 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000013.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000014.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000014.NCLR new file mode 100644 index 0000000000..a81dd78e16 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000014.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000015.NCLR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000015.NCLR new file mode 100644 index 0000000000..015c1cdd04 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000015.NCLR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000016.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000016.png new file mode 100644 index 0000000000..f1c86ec62e Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000016.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000017.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000017.png new file mode 100644 index 0000000000..ec879e5300 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000017.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000018.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000018.png new file mode 100644 index 0000000000..9cdf9b37ac Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000018.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000019.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000019.png new file mode 100644 index 0000000000..908f2d81e0 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000019.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000020.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000020.png new file mode 100644 index 0000000000..ec52bfb635 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000020.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000021.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000021.png new file mode 100644 index 0000000000..19d76e6409 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000021.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000022.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000022.NSCR new file mode 100644 index 0000000000..46641999f7 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000022.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000023.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000023.NSCR new file mode 100644 index 0000000000..55f6b39a33 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000023.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000024.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000024.NSCR new file mode 100644 index 0000000000..b16213861a Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000024.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000025.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000025.NSCR new file mode 100644 index 0000000000..ec7594f6aa Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000025.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000026.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000026.NSCR new file mode 100644 index 0000000000..7f73c95a2a Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000026.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000027.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000027.NSCR new file mode 100644 index 0000000000..7f4072d826 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000027.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000028.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000028.png new file mode 100644 index 0000000000..24857c0254 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000028.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000029.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000029.png new file mode 100644 index 0000000000..ece99072a4 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000029.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000030.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000030.png new file mode 100644 index 0000000000..03a6a8c11d Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000030.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000031.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000031.png new file mode 100644 index 0000000000..dcc2acc66b Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000031.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000032.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000032.png new file mode 100644 index 0000000000..8b5f137902 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000032.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000033.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000033.png new file mode 100644 index 0000000000..b5ee0cc1d1 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000033.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000034.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000034.NSCR new file mode 100644 index 0000000000..ba15280bdc Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000034.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000035.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000035.NSCR new file mode 100644 index 0000000000..ba15280bdc Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000035.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000036.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000036.NSCR new file mode 100644 index 0000000000..bb5d830071 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000036.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000037.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000037.NSCR new file mode 100644 index 0000000000..1fd60b3282 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000037.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000038.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000038.NSCR new file mode 100644 index 0000000000..6088e84595 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000038.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000039.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000039.NSCR new file mode 100644 index 0000000000..c4f3c00d60 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000039.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000040.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000040.png new file mode 100644 index 0000000000..f0e181cc0b Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000040.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000041.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000041.png new file mode 100644 index 0000000000..30face54f2 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000041.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000042.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000042.png new file mode 100644 index 0000000000..97be2e98f6 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000042.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000043.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000043.png new file mode 100644 index 0000000000..fb52a4772e Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000043.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000044.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000044.png new file mode 100644 index 0000000000..3b0e5f1646 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000044.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000045.png b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000045.png new file mode 100644 index 0000000000..6fdbbc36fa Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000045.png differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000046.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000046.NSCR new file mode 100644 index 0000000000..7faaf3ea22 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000046.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000047.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000047.NSCR new file mode 100644 index 0000000000..155a30e292 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000047.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000048.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000048.NSCR new file mode 100644 index 0000000000..155a30e292 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000048.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000049.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000049.NSCR new file mode 100644 index 0000000000..155a30e292 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000049.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000050.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000050.NSCR new file mode 100644 index 0000000000..155a30e292 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000050.NSCR differ diff --git a/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000051.NSCR b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000051.NSCR new file mode 100644 index 0000000000..155a30e292 Binary files /dev/null and b/files/application/pokegear/phone/pgphone_gra/pgphone_gra_00000051.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra.mk b/files/application/pokegear/radio/pgradio_gra.mk new file mode 100644 index 0000000000..46196d52bd --- /dev/null +++ b/files/application/pokegear/radio/pgradio_gra.mk @@ -0,0 +1,76 @@ +PGRADIO_GRA_DIR := files/application/pokegear/radio/pgradio_gra +PGRADIO_GRA_NARC := $(PGRADIO_GRA_DIR).narc + +PGRADIO_GRA_FILES := \ + pgradio_gra_00000000.NCLR \ + pgradio_gra_00000001.NCGR \ + pgradio_gra_00000002.NCER \ + pgradio_gra_00000003.NANR \ + pgradio_gra_00000004.NCLR \ + pgradio_gra_00000005.NCLR \ + pgradio_gra_00000006.NCLR \ + pgradio_gra_00000007.NCLR \ + pgradio_gra_00000008.NCLR \ + pgradio_gra_00000009.NCLR \ + pgradio_gra_00000010.NCLR \ + pgradio_gra_00000011.NCLR \ + pgradio_gra_00000012.NCLR \ + pgradio_gra_00000013.NCLR \ + pgradio_gra_00000014.NCLR \ + pgradio_gra_00000015.NCLR \ + pgradio_gra_00000016.NCGR \ + pgradio_gra_00000017.NCGR \ + pgradio_gra_00000018.NCGR \ + pgradio_gra_00000019.NCGR \ + pgradio_gra_00000020.NCGR \ + pgradio_gra_00000021.NCGR \ + pgradio_gra_00000022.NSCR \ + pgradio_gra_00000023.NSCR \ + pgradio_gra_00000024.NSCR \ + pgradio_gra_00000025.NSCR \ + pgradio_gra_00000026.NSCR \ + pgradio_gra_00000027.NSCR \ + pgradio_gra_00000028.NSCR \ + pgradio_gra_00000029.NSCR \ + pgradio_gra_00000030.NSCR \ + pgradio_gra_00000031.NSCR \ + pgradio_gra_00000032.NSCR \ + pgradio_gra_00000033.NSCR \ + pgradio_gra_00000034.NCGR \ + pgradio_gra_00000035.NCGR \ + pgradio_gra_00000036.NCGR \ + pgradio_gra_00000037.NCGR \ + pgradio_gra_00000038.NCGR \ + pgradio_gra_00000039.NCGR \ + pgradio_gra_00000040.NSCR \ + pgradio_gra_00000041.NSCR \ + pgradio_gra_00000042.NSCR \ + pgradio_gra_00000043.NSCR \ + pgradio_gra_00000044.NSCR \ + pgradio_gra_00000045.NSCR + +$(PGRADIO_GRA_NARC): $(addprefix $(PGRADIO_GRA_DIR)/,$(PGRADIO_GRA_FILES)) + $(KNARC) -p $@ -d $(PGRADIO_GRA_DIR) -i + +CLOBBER_SIZE_VERSION101_NCGR_FILES += \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000001.NCGR + +VERSION101_SOPC_NCGR_FILES += \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000016.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000017.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000018.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000019.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000020.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000021.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000034.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000035.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000036.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000037.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000038.NCGR \ + $(PGRADIO_GRA_DIR)/pgradio_gra_00000039.NCGR + +clean-pgradio-gra: + $(RM) $(PGRADIO_GRA_NARC) + +.PHONY: clean-pgradio-gra +clean-filesystem: clean-pgradio-gra diff --git a/files/application/pokegear/radio/pgradio_gra/.gitignore b/files/application/pokegear/radio/pgradio_gra/.gitignore new file mode 100644 index 0000000000..3e346f2856 --- /dev/null +++ b/files/application/pokegear/radio/pgradio_gra/.gitignore @@ -0,0 +1,2 @@ +*.NCGR +!*.NCLR diff --git a/files/application/pokegear/radio/pgradio_gra/.knarcignore b/files/application/pokegear/radio/pgradio_gra/.knarcignore new file mode 100644 index 0000000000..da511757cd --- /dev/null +++ b/files/application/pokegear/radio/pgradio_gra/.knarcignore @@ -0,0 +1,2 @@ +*.png +*.json diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000000.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000000.NCLR new file mode 100644 index 0000000000..c1cc0180fe Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000000.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000001.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000001.png new file mode 100644 index 0000000000..2b1cd418bd Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000001.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000002.NCER b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000002.NCER new file mode 100644 index 0000000000..ac781538e2 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000002.NCER differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000003.NANR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000003.NANR new file mode 100644 index 0000000000..ceec2fcf57 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000003.NANR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000004.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000004.NCLR new file mode 100644 index 0000000000..4e508f42b4 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000004.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000005.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000005.NCLR new file mode 100644 index 0000000000..8d390bd0d2 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000005.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000006.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000006.NCLR new file mode 100644 index 0000000000..86c4e7d9fd Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000006.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000007.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000007.NCLR new file mode 100644 index 0000000000..5f1bbf738c Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000007.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000008.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000008.NCLR new file mode 100644 index 0000000000..45af0a7689 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000008.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000009.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000009.NCLR new file mode 100644 index 0000000000..850b06af66 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000009.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000010.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000010.NCLR new file mode 100644 index 0000000000..d6553a890c Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000010.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000011.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000011.NCLR new file mode 100644 index 0000000000..8a2565841e Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000011.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000012.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000012.NCLR new file mode 100644 index 0000000000..1a0ae2a3c3 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000012.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000013.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000013.NCLR new file mode 100644 index 0000000000..282bd21129 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000013.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000014.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000014.NCLR new file mode 100644 index 0000000000..a9e6ea41a9 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000014.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000015.NCLR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000015.NCLR new file mode 100644 index 0000000000..10c7a0e8b7 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000015.NCLR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000016.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000016.png new file mode 100644 index 0000000000..ef00033cb6 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000016.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000017.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000017.png new file mode 100644 index 0000000000..16cac60b9e Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000017.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000018.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000018.png new file mode 100644 index 0000000000..8be50c8140 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000018.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000019.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000019.png new file mode 100644 index 0000000000..02a5c56f53 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000019.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000020.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000020.png new file mode 100644 index 0000000000..5d150d28f7 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000020.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000021.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000021.png new file mode 100644 index 0000000000..57bd046444 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000021.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000022.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000022.NSCR new file mode 100644 index 0000000000..6db2a24f36 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000022.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000023.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000023.NSCR new file mode 100644 index 0000000000..6db2a24f36 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000023.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000024.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000024.NSCR new file mode 100644 index 0000000000..cafa129c25 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000024.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000025.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000025.NSCR new file mode 100644 index 0000000000..bb0da81077 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000025.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000026.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000026.NSCR new file mode 100644 index 0000000000..4135e68a18 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000026.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000027.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000027.NSCR new file mode 100644 index 0000000000..8cdd8ca118 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000027.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000028.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000028.NSCR new file mode 100644 index 0000000000..503834d00a Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000028.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000029.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000029.NSCR new file mode 100644 index 0000000000..503834d00a Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000029.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000030.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000030.NSCR new file mode 100644 index 0000000000..503834d00a Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000030.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000031.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000031.NSCR new file mode 100644 index 0000000000..893a8812ac Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000031.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000032.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000032.NSCR new file mode 100644 index 0000000000..503834d00a Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000032.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000033.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000033.NSCR new file mode 100644 index 0000000000..b9e3ece5e4 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000033.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000034.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000034.png new file mode 100644 index 0000000000..fe62406ef4 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000034.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000035.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000035.png new file mode 100644 index 0000000000..1a6b8c3fcf Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000035.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000036.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000036.png new file mode 100644 index 0000000000..c5d7b9e87b Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000036.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000037.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000037.png new file mode 100644 index 0000000000..202a12e6c5 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000037.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000038.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000038.png new file mode 100644 index 0000000000..c944b091b2 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000038.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000039.png b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000039.png new file mode 100644 index 0000000000..443ee440db Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000039.png differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000040.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000040.NSCR new file mode 100644 index 0000000000..702892ec0c Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000040.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000041.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000041.NSCR new file mode 100644 index 0000000000..2fa625f654 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000041.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000042.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000042.NSCR new file mode 100644 index 0000000000..329d8b7957 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000042.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000043.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000043.NSCR new file mode 100644 index 0000000000..e0e81e8b53 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000043.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000044.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000044.NSCR new file mode 100644 index 0000000000..368de0bd0f Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000044.NSCR differ diff --git a/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000045.NSCR b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000045.NSCR new file mode 100644 index 0000000000..698d987565 Binary files /dev/null and b/files/application/pokegear/radio/pgradio_gra/pgradio_gra_00000045.NSCR differ diff --git a/files/data/resdat/resdat_00000036.json b/files/data/resdat/resdat_00000036.json index 33233cf4aa..4957e4b363 100644 --- a/files/data/resdat/resdat_00000036.json +++ b/files/data/resdat/resdat_00000036.json @@ -2,7 +2,7 @@ "kind": "anim", "graphics": [ { - "narc": "NARC_a_1_4_7", + "narc": "NARC_application_pokegear_radio_pgradio_gra", "file": 3, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000037.json b/files/data/resdat/resdat_00000037.json index 982493b07b..df62141a5e 100644 --- a/files/data/resdat/resdat_00000037.json +++ b/files/data/resdat/resdat_00000037.json @@ -2,7 +2,7 @@ "kind": "cell", "graphics": [ { - "narc": "NARC_a_1_4_7", + "narc": "NARC_application_pokegear_radio_pgradio_gra", "file": 2, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000038.json b/files/data/resdat/resdat_00000038.json index 50b59fee42..f02e161092 100644 --- a/files/data/resdat/resdat_00000038.json +++ b/files/data/resdat/resdat_00000038.json @@ -2,7 +2,7 @@ "kind": "char", "graphics": [ { - "narc": "NARC_a_1_4_7", + "narc": "NARC_application_pokegear_radio_pgradio_gra", "file": 1, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000039.json b/files/data/resdat/resdat_00000039.json index 2337f38b91..cada994482 100644 --- a/files/data/resdat/resdat_00000039.json +++ b/files/data/resdat/resdat_00000039.json @@ -2,7 +2,7 @@ "kind": "pltt", "graphics": [ { - "narc": "NARC_a_1_4_7", + "narc": "NARC_application_pokegear_radio_pgradio_gra", "file": 0, "compressed": false, "id": 0, @@ -12,7 +12,7 @@ ] }, { - "narc": "NARC_a_1_4_7", + "narc": "NARC_application_pokegear_radio_pgradio_gra", "file": 0, "compressed": false, "id": 1, diff --git a/files/data/resdat/resdat_00000040.json b/files/data/resdat/resdat_00000040.json index 52f3c1d8e6..42b4903449 100644 --- a/files/data/resdat/resdat_00000040.json +++ b/files/data/resdat/resdat_00000040.json @@ -2,7 +2,7 @@ "kind": "anim", "graphics": [ { - "narc": "NARC_a_1_4_5", + "narc": "NARC_application_pokegear_configure_pgconf_gra", "file": 3, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000041.json b/files/data/resdat/resdat_00000041.json index 2730c9c6e3..d7f2deb0d9 100644 --- a/files/data/resdat/resdat_00000041.json +++ b/files/data/resdat/resdat_00000041.json @@ -2,7 +2,7 @@ "kind": "cell", "graphics": [ { - "narc": "NARC_a_1_4_5", + "narc": "NARC_application_pokegear_configure_pgconf_gra", "file": 2, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000042.json b/files/data/resdat/resdat_00000042.json index 997184607b..eac61a14d9 100644 --- a/files/data/resdat/resdat_00000042.json +++ b/files/data/resdat/resdat_00000042.json @@ -2,7 +2,7 @@ "kind": "char", "graphics": [ { - "narc": "NARC_a_1_4_5", + "narc": "NARC_application_pokegear_configure_pgconf_gra", "file": 1, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000043.json b/files/data/resdat/resdat_00000043.json index 9fb64a9b69..b3e3230203 100644 --- a/files/data/resdat/resdat_00000043.json +++ b/files/data/resdat/resdat_00000043.json @@ -2,7 +2,7 @@ "kind": "pltt", "graphics": [ { - "narc": "NARC_a_1_4_5", + "narc": "NARC_application_pokegear_configure_pgconf_gra", "file": 0, "compressed": false, "id": 0, @@ -12,7 +12,7 @@ ] }, { - "narc": "NARC_a_1_4_5", + "narc": "NARC_application_pokegear_configure_pgconf_gra", "file": 0, "compressed": false, "id": 1, diff --git a/files/data/resdat/resdat_00000044.json b/files/data/resdat/resdat_00000044.json index 700c034ff2..95cf82392d 100644 --- a/files/data/resdat/resdat_00000044.json +++ b/files/data/resdat/resdat_00000044.json @@ -2,7 +2,7 @@ "kind": "anim", "graphics": [ { - "narc": "NARC_a_1_4_6", + "narc": "NARC_application_pokegear_phone_pgphone_gra", "file": 3, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000045.json b/files/data/resdat/resdat_00000045.json index 66b33a4b31..150fbd7265 100644 --- a/files/data/resdat/resdat_00000045.json +++ b/files/data/resdat/resdat_00000045.json @@ -2,7 +2,7 @@ "kind": "cell", "graphics": [ { - "narc": "NARC_a_1_4_6", + "narc": "NARC_application_pokegear_phone_pgphone_gra", "file": 2, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000046.json b/files/data/resdat/resdat_00000046.json index c9093e5442..1d9831b534 100644 --- a/files/data/resdat/resdat_00000046.json +++ b/files/data/resdat/resdat_00000046.json @@ -2,7 +2,7 @@ "kind": "char", "graphics": [ { - "narc": "NARC_a_1_4_6", + "narc": "NARC_application_pokegear_phone_pgphone_gra", "file": 1, "compressed": false, "id": 0, diff --git a/files/data/resdat/resdat_00000047.json b/files/data/resdat/resdat_00000047.json index 9472a59997..8f31a86e00 100644 --- a/files/data/resdat/resdat_00000047.json +++ b/files/data/resdat/resdat_00000047.json @@ -2,7 +2,7 @@ "kind": "pltt", "graphics": [ { - "narc": "NARC_a_1_4_6", + "narc": "NARC_application_pokegear_phone_pgphone_gra", "file": 0, "compressed": false, "id": 0, @@ -12,7 +12,7 @@ ] }, { - "narc": "NARC_a_1_4_6", + "narc": "NARC_application_pokegear_phone_pgphone_gra", "file": 0, "compressed": false, "id": 1, diff --git a/filesystem.mk b/filesystem.mk index b2364f2b3b..60a931bdde 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -437,6 +437,9 @@ $(eval $(call arc_strip_name,files/poketool/johtozukan.narc,files/a/1/3/8)) $(eval $(call arc_strip_name,files/fielddata/tsurepoke/tp_param.narc,files/a/1/4/1)) $(eval $(call arc_strip_name,files/application/pokegear/pgear_gra.narc,files/a/1/4/3)) $(eval $(call arc_strip_name,files/application/pokegear/map/pgmap_gra.narc,files/a/1/4/4)) +$(eval $(call arc_strip_name,files/application/pokegear/configure/pgconf_gra.narc,files/a/1/4/5)) +$(eval $(call arc_strip_name,files/application/pokegear/phone/pgphone_gra.narc,files/a/1/4/6)) +$(eval $(call arc_strip_name,files/application/pokegear/radio/pgradio_gra.narc,files/a/1/4/7)) $(eval $(call arc_strip_name,files/fielddata/graphic/preview_graphic/preview_graphic.narc,files/a/1/5/0)) $(eval $(call arc_strip_name,files/system/touch_subwindow.narc,files/a/1/5/2)) $(eval $(call arc_strip_name,files/data/gs_areawindow.narc,files/a/1/6/3)) @@ -510,6 +513,9 @@ include files/fielddata/tsurepoke/tp_param.mk include files/application/choose_starter/choose_starter.mk include files/application/pokegear/pgear_gra.mk include files/application/pokegear/map/pgmap_gra.mk +include files/application/pokegear/configure/pgconf_gra.mk +include files/application/pokegear/phone/pgphone_gra.mk +include files/application/pokegear/radio/pgradio_gra.mk include files/arc/ppark.mk include files/application/record/record.mk include files/application/voltorb_flip.mk diff --git a/include/application/pokegear/configure/pokegear_configure_internal.h b/include/application/pokegear/configure/pokegear_configure_internal.h new file mode 100644 index 0000000000..5ff3139ab7 --- /dev/null +++ b/include/application/pokegear/configure/pokegear_configure_internal.h @@ -0,0 +1,57 @@ +#ifndef GUARD_POKEHEARTGOLD_APPLICATION_POKEGEAR_CONFIGURE_POKEGEAR_CONFIGURE_INTERNAL_H +#define GUARD_POKEHEARTGOLD_APPLICATION_POKEGEAR_CONFIGURE_POKEGEAR_CONFIGURE_INTERNAL_H + +#include "application/pokegear/pokegear_internal.h" + +#include "touchscreen_list_menu.h" + +enum PokegearConfigureMainState { + PGCONF_MAIN_STATE_LOAD, + PGCONF_MAIN_STATE_HANDLE_INPUT, + PGCONF_MAIN_STATE_UNLOAD, + PGCONF_MAIN_STATE_CONTEXT_MENU, + PGCONF_MAIN_STATE_SWAP_SKINS, + PGCONF_MAIN_STATE_FADE_IN, + PGCONF_MAIN_STATE_FADE_OUT, + PGCONF_MAIN_STATE_FADE_IN_APP, + PGCONF_MAIN_STATE_FADE_OUT_APP, + PGCONF_MAIN_STATE_QUIT, +}; + +typedef struct PokegearConfigureAppData { + enum HeapID heapId; // 0x00 + int state; // 0x04 + int substate; // 0x08 + PokegearAppData *pokegear; // 0x0C + u8 unk_10; // 0x10 unused + u8 selectedSkin; // 0x11 + u16 unlockedSkins : 9; // 0x12 + u16 skin : 7; // 0x12 + Sprite *sprites[9]; // 0x14 + TouchscreenListMenuSpawner *contextMenuSpawner; // 0x38 + LISTMENUITEM *contextMenuItems; // 0x3C + TouchscreenListMenu *contextMenu; // 0x40 + void *scrnDataRaw; // 0x44 + NNSG2dScreenData *scrnData; // 0x48 +} PokegearConfigureAppData; // size: 0x4C + +BOOL PokegearConfigure_LoadGFX(PokegearConfigureAppData *configureApp); +BOOL PokegearConfigure_UnloadGFX(PokegearConfigureAppData *configureApp); +int PokegearConfigure_ContextMenu(PokegearConfigureAppData *configureApp); +BOOL PokegearConfigure_SwapSkins(PokegearConfigureAppData *configureApp); + +void PokegearConfigure_LoadGraphics_Internal(PokegearConfigureAppData *configureApp); +void PokegearConfigure_UnloadGraphics_Internal(PokegearConfigureAppData *configureApp); +void PokegearConfigure_LoadPalettes(PokegearConfigureAppData *configureApp, BOOL isInit); +void PokegearConfigure_SetNewSkin(PokegearConfigureAppData *configureApp, int skin); +void PokegearConfigure_DrawUnlockedSkinsButtons(PokegearConfigureAppData *configureApp); + +void PokegearConfigure_OnReselectApp(void *appData); +void PokegearConfigure_SetAppCursorActive(PokegearConfigureAppData *configureApp); +void PokegearConfigure_SpawnContextMenu(PokegearConfigureAppData *configureApp, u8 a1); +void PokegearConfigure_ToggleButtonFocusState(PokegearConfigureAppData *configureApp, int skin, int selected); + +int PokegearConfigure_HandleKeyInput(PokegearConfigureAppData *configureApp); +int PokegearConfigure_HandleTouchInput(PokegearConfigureAppData *configureApp); + +#endif // GUARD_POKEHEARTGOLD_APPLICATION_POKEGEAR_CONFIGURE_POKEGEAR_CONFIGURE_INTERNAL_H diff --git a/include/application/pokegear/map/pokegear_map_internal.h b/include/application/pokegear/map/pokegear_map_internal.h index cb41dadf93..a01fdd84f8 100644 --- a/include/application/pokegear/map/pokegear_map_internal.h +++ b/include/application/pokegear/map/pokegear_map_internal.h @@ -320,8 +320,8 @@ void ov101_021EB38C(PokegearMapAppData *mapApp, int button, int state); void PokegearMap_SpawnFlyContextMenu(PokegearMapAppData *mapApp, u32 x); void PokegearMap_PrintLandmarkNameAndFlavorText(PokegearMapAppData *mapApp, int mapID); -int ov101_021EB568(PokegearMapAppData *mapApp); -int ov101_021EB5DC(PokegearMapAppData *mapApp, BOOL *pRetIsTouch); +int PokegearMap_HandleKeyInput(PokegearMapAppData *mapApp); +int PokegearMap_HandleTouchInput(PokegearMapAppData *mapApp, BOOL *pRetIsTouch); int FlyMap_HandleKeyInput(PokegearMapAppData *mapApp); int FlyMap_HandleTouchInput_NotDragging(PokegearMapAppData *mapApp, BOOL *pRetIsTouch); int FlyMap_HandleTouchInput_DraggingMap(PokegearMapAppData *mapApp); diff --git a/include/application/pokegear/phone/phone_internal.h b/include/application/pokegear/phone/phone_internal.h index 8d2308f5a1..67a2aa2193 100644 --- a/include/application/pokegear/phone/phone_internal.h +++ b/include/application/pokegear/phone/phone_internal.h @@ -254,7 +254,7 @@ struct PokegearPhoneAppData { int subsubtaskState; // 0x008 PokegearAppData *pokegear; // 0x00C u8 menuInputStateBak; // 0x010 - u8 backgroundStyle; // 0x011 + u8 skin; // 0x011 MsgData *msgData; // 0x014 MessageFormat *msgFormat; // 0x018 String *msgFormatBuf; // 0x01C diff --git a/include/application/pokegear/pokegear_internal.h b/include/application/pokegear/pokegear_internal.h index a00fbd867c..addb1c9a0a 100644 --- a/include/application/pokegear/pokegear_internal.h +++ b/include/application/pokegear/pokegear_internal.h @@ -117,19 +117,19 @@ typedef struct PokegearObjectsManager { PokegearManagedObject *objects; } PokegearObjectsManager; -typedef struct PokegearApp_UnkSub094 { +typedef struct PokegearUIManager { enum HeapID heapID; - int unk_004; + int mode; u16 unk_008; // unused - u16 unk_00A; - u16 unk_00C; - u16 unk_00E; + u16 plttCount; + u16 spriteCount; + u16 vramType; SpriteList *spriteList; G2dRenderer renderer; u8 filler_13C[4]; GF_2DGfxResMan *resourceManagers[4]; GF_2DGfxResObjList *spriteResources[4]; -} PokegearApp_UnkSub094; // size: 0x160 +} PokegearUIManager; // size: 0x160 typedef struct PokegearAppData PokegearAppData; struct PokegearAppData { @@ -139,7 +139,7 @@ struct PokegearAppData { u8 isSwitchApp : 1; // 0x005 u8 cursorInAppSwitchZone; // 0x006 u8 needClockUpdate; // 0x007 - u8 backgroundStyle; // 0x008 + u8 skin; // 0x008 u8 fadeCounter; // 0x009 MenuInputState menuInputState; // 0x00C MenuInputState menuInputStateBak; // 0x010 @@ -168,7 +168,7 @@ struct PokegearAppData { RTCTime time; // 0x080 SpriteSystem *spriteSystem; // 0x08C SpriteManager *spriteManager; // 0x090 - PokegearApp_UnkSub094 *unk_094; // 0x094 + PokegearUIManager *uiManager; // 0x094 ManagedSprite *uiSprites[11]; // 0x098 u16 *unk_0C4; // 0x0C4 NNSG2dScreenData *unk_0C8; // 0x0C8 @@ -198,7 +198,7 @@ BOOL Pokegear_RunFadeLayers123(PokegearAppData *pokegearApp, int a1); u8 PokegearApp_AppIdToButtonIndex(PokegearAppData *pokegearApp); BOOL PokegearApp_LoadGFX(PokegearAppData *pokegearApp); BOOL PokegearApp_UnloadGFX(PokegearAppData *pokegearApp); -void PokegearApp_LoadSkinGraphics(PokegearAppData *pokegearApp, int skin); +void PokegearApp_LoadSkinGraphics(PokegearAppData *pokegearApp, u8 skin); void PokegearApp_SetGraphicsBanks(void); void PokegearApp_VBlankCB(void *cb_args); @@ -209,11 +209,12 @@ void PokegearApp_CreateSpriteManager(PokegearAppData *pokegearApp, int spriteSet void PokegearApp_DestroySpriteManager(PokegearAppData *pokegearApp); void PokegearApp_DrawSprites(PokegearAppData *pokegearApp); -PokegearApp_UnkSub094 *ov100_021E69F8(enum HeapID heapID, u16 a1, u16 a2, u16 a3, u16 a4, int a5); -void ov100_021E6A3C(PokegearApp_UnkSub094 *a0); -void ov100_021E6AB0(PokegearApp_UnkSub094 *a0); -ManagedSprite *ov100_021E6AC0(PokegearApp_UnkSub094 *a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7, int a8); -void ov100_021E6C44(ManagedSprite *a0); +PokegearUIManager *PokegearUIManager_Create(enum HeapID heapID, u16 spriteCount, u16 resCount, u16 skin, u16 vramType, int mode); +void PokegearUIManager_Delete(PokegearUIManager *uiManager); +void PokegearUIManager_LoadSkinGfx(PokegearUIManager *uiManager, u8 a1); +void PokegearUIManager_AnimateSprites(PokegearUIManager *uiManager); +ManagedSprite *PokegearUIManager_CreateSprite(PokegearUIManager *uiManager, u8 x, u8 y, u8 z, u8 priority, u8 drawPriority, u8 index, u8 seq, int isBottomScreen); +void PokegearUIManager_DeleteSprite(ManagedSprite *managedSprite); PokegearObjectsManager *PokegearObjectsManager_Create(int count, enum HeapID heapID); void PokegearObjectsManager_Release(PokegearObjectsManager *mgr); diff --git a/include/application/pokegear/radio/radio_internal.h b/include/application/pokegear/radio/radio_internal.h index a3a24b6cc9..90884e74fd 100644 --- a/include/application/pokegear/radio/radio_internal.h +++ b/include/application/pokegear/radio/radio_internal.h @@ -81,7 +81,7 @@ typedef struct PokegearRadioAppData { u8 unk_24_0 : 1; // 0x24 unused u8 isDraggingCursor : 4; // 0x24 u8 selectedButton : 3; // 0x24 - u8 backgroundStyle; // 0x25 + u8 skin; // 0x25 u8 stationSelection : 4; // 0x26 u8 signalStrength : 2; // 0x26 u8 stationActive : 2; // 0x26 diff --git a/include/filesystem_files_def.h b/include/filesystem_files_def.h index 7dd6cd2fc4..482d4ffd2d 100644 --- a/include/filesystem_files_def.h +++ b/include/filesystem_files_def.h @@ -149,9 +149,9 @@ typedef enum NarcId { NARC_a_1_4_2 = 142, NARC_application_pokegear_pgear_gra = 143, NARC_application_pokegear_map_pgmap_gra = 144, - NARC_a_1_4_5 = 145, - NARC_a_1_4_6 = 146, - NARC_a_1_4_7 = 147, + NARC_application_pokegear_configure_pgconf_gra = 145, + NARC_application_pokegear_phone_pgphone_gra = 146, + NARC_application_pokegear_radio_pgradio_gra = 147, NARC_a_1_4_8 = 148, NARC_a_1_4_9 = 149, NARC_a_1_5_0 = 150, diff --git a/include/launch_application.h b/include/launch_application.h index e1dc03b0ed..5c11172c32 100644 --- a/include/launch_application.h +++ b/include/launch_application.h @@ -3,6 +3,7 @@ #include "battle/battle_setup.h" #include "credits/credits.h" +#include "pokeathlon/pokeathlon.h" #include "voltorb_flip/voltorb_flip.h" #include "alph_puzzle.h" @@ -31,7 +32,6 @@ #include "overlay_73.h" #include "overlay_86.h" #include "overlay_87.h" -#include "pokeathlon/pokeathlon.h" #include "overlay_99.h" #include "overlay_trainer_card.h" #include "party_menu.h" diff --git a/include/pokemon_types_def.h b/include/pokemon_types_def.h index d532fc2146..245e1b1d8f 100644 --- a/include/pokemon_types_def.h +++ b/include/pokemon_types_def.h @@ -84,20 +84,20 @@ typedef struct { /* 0x0C */ u8 movePPUps[MAX_MON_MOVES]; /* 0x10 */ u32 hpIV : 5; - u32 atkIV : 5; - u32 defIV : 5; - u32 speedIV : 5; - u32 spAtkIV : 5; - u32 spDefIV : 5; - u32 isEgg : 1; - u32 hasNickname : 1; + u32 atkIV : 5; + u32 defIV : 5; + u32 speedIV : 5; + u32 spAtkIV : 5; + u32 spDefIV : 5; + u32 isEgg : 1; + u32 hasNickname : 1; /* 0x14 */ u32 ribbonsGBA; //!< A bitmask of ribbons introduced in Generation 3. Cool, Beauty, Cute, Smart, Tough, Champion, Winning, Victory, Artist, Effort, Marine, Land, Sky, Country, National, Earth and World Ribbons. /* 0x18 */ u8 fatefulEncounter : 1; - u8 gender : 2; - u8 form : 5; + u8 gender : 2; + u8 form : 5; /* 0x19 */ u8 HGSS_shinyLeaves : 6; - u8 unused1 : 2; + u8 unused1 : 2; /* 0x1A */ u16 unused2; /* 0x1C */ u16 EggLocation_PtHGSS; @@ -136,7 +136,7 @@ typedef struct { /* 0x1A */ u8 pokerus; /* 0x1B */ u8 pokeball; /* 0x1C */ u8 metLevel : 7; - u8 otGender : 1; + u8 otGender : 1; /* 0x1D */ u8 metTerrain; /* 0x1E */ u8 HGSS_Pokeball; /* 0x1F */ s8 mood; @@ -155,9 +155,9 @@ typedef union { typedef struct BoxPokemon { /* 0x000 */ u32 personality; /* 0x004 */ u16 partyDecrypted : 1; - u16 boxDecrypted : 1; - u16 checksumFailed : 1; - u16 unused : 13; + u16 boxDecrypted : 1; + u16 checksumFailed : 1; + u16 unused : 13; /* 0x006 */ u16 checksum; /* 0x008 */ PokemonDataBlock dataBlocks[4]; } BoxPokemon; @@ -198,15 +198,15 @@ typedef struct Mail { */ typedef struct PartyPokemon { /* 0x088 */ u32 status; // slp:3, psn:1, brn:1, frz:1, prz:1, tox:1, ... - /* 0x08C */ u8 level; //!< The Pokemon's current level, as computed from its total EXP value and its species' level curve. + /* 0x08C */ u8 level; //!< The Pokemon's current level, as computed from its total EXP value and its species' level curve. /* 0x08D */ u8 ballCapsuleID; //!< The ID of the ball capsule attached to the Pokemon. - /* 0x08E */ u16 hp; //!< The Pokemon's current HP. - /* 0x090 */ u16 maxHP; //!< The Pokemon's maximum HP. - /* 0x092 */ u16 atk; //!< The Pokemon's Attack stat. - /* 0x094 */ u16 def; //!< The Pokemon's Defense stat. - /* 0x096 */ u16 speed; //!< The Pokemon's Speed stat. - /* 0x098 */ u16 spatk; //!< The Pokemon's Special Attack stat. - /* 0x09A */ u16 spdef; //!< The Pokemon's Special Defense stat. + /* 0x08E */ u16 hp; //!< The Pokemon's current HP. + /* 0x090 */ u16 maxHP; //!< The Pokemon's maximum HP. + /* 0x092 */ u16 atk; //!< The Pokemon's Attack stat. + /* 0x094 */ u16 def; //!< The Pokemon's Defense stat. + /* 0x096 */ u16 speed; //!< The Pokemon's Speed stat. + /* 0x098 */ u16 spatk; //!< The Pokemon's Special Attack stat. + /* 0x09A */ u16 spdef; //!< The Pokemon's Special Defense stat. /* 0x09C */ Mail mail; /* 0x0D4 */ CAPSULE sealCoords; // seal coords } PartyPokemon; @@ -219,8 +219,8 @@ typedef struct { struct UnkPokemonStruct_02072A98 { /* 0x00 */ u32 personality; /* 0x04 */ u16 partyDecrypted : 1; - u16 boxDecrypted : 1; - u16 checksumFailed : 1; + u16 boxDecrypted : 1; + u16 checksumFailed : 1; /* 0x06 */ u16 species; /* 0x08 */ u16 heldItem; /* 0x0C */ u32 otID; @@ -237,16 +237,16 @@ struct UnkPokemonStruct_02072A98 { /* 0x24 */ u8 moveCurrentPPs[MAX_MON_MOVES]; /* 0x28 */ u8 movePPUps[MAX_MON_MOVES]; /* 0x2C */ u32 hpIV : 5; - u32 atkIV : 5; - u32 defIV : 5; - u32 speedIV : 5; - u32 spAtkIV : 5; - u32 spDefIV : 5; - u32 isEgg : 1; - u32 hasNickname : 1; + u32 atkIV : 5; + u32 defIV : 5; + u32 speedIV : 5; + u32 spAtkIV : 5; + u32 spDefIV : 5; + u32 isEgg : 1; + u32 hasNickname : 1; /* 0x30 */ u8 fatefulEncounter : 1; - u8 gender : 2; - u8 form : 5; + u8 gender : 2; + u8 form : 5; /* 0x32 */ u16 nickname[POKEMON_NAME_LENGTH + 1]; /* 0x48 */ u16 otName[PLAYER_NAME_LENGTH + 1]; /* 0x58 */ u8 pokeball; diff --git a/include/save_pokegear.h b/include/save_pokegear.h index 9d6bb8832d..38540ba02f 100644 --- a/include/save_pokegear.h +++ b/include/save_pokegear.h @@ -43,9 +43,9 @@ typedef struct SavePokegear { u8 unk_1; u8 unk_2; u8 unk_3; - u32 unk_4_0 : 9; + u32 unlockedSkins : 9; u32 unk_4_9 : 9; - u32 backgroundStyle : 7; + u32 skin : 7; u32 registeredCards : 2; // mapUnlockLevel // 0: only Johto @@ -69,9 +69,9 @@ void SavePokegear_RegisterCard(SavePokegear *pokegear, int card); u8 Pokegear_GetRegisteredCardsArray(SavePokegear *pokegear); void Pokegear_SetMapUnlockLevel(SavePokegear *pokegear, u8 mapUnlockMenu); u8 Pokegear_GetMapUnlockLevel(SavePokegear *pokegear); -u32 Pokegear_GetBackgroundStyle(SavePokegear *pokegear); -void Pokegear_SetBackgroundStyle(SavePokegear *pokegear, u32 a1); -u16 sub_0202EE98(SavePokegear *pokegear); +u32 Pokegear_GetSkin(SavePokegear *pokegear); +void Pokegear_SetSkin(SavePokegear *pokegear, u32 skin); +u16 Pokegear_GetUnlockedSkins(SavePokegear *pokegear); BOOL sub_0202EEA4(SavePokegear *pokegear); void sub_0202EEA8(SavePokegear *pokegear, u8 a1); void Pokegear_SetRadioCursorCoords(SavePokegear *pokegear, u8 x, u8 y); diff --git a/include/touchscreen_list_menu.h b/include/touchscreen_list_menu.h index 138c98d86e..16abe4d1d9 100644 --- a/include/touchscreen_list_menu.h +++ b/include/touchscreen_list_menu.h @@ -7,6 +7,12 @@ #include "palette.h" #include "touchscreen.h" +enum TouchscreenListMenuTextAlignment { + TSMENU_ALIGN_LEFT, + TSMENU_ALIGN_CENTER, + TSMENU_ALIGN_RIGHT, +}; + typedef struct TouchscreenListMenuTemplate { u8 wrapAround : 1; u8 centered : 7; @@ -63,7 +69,7 @@ struct TouchscreenListMenu { TouchscreenListMenuSpawner *TouchscreenListMenuSpawner_Create(enum HeapID heapID, PaletteData *paletteData); void TouchscreenListMenuSpawner_Destroy(TouchscreenListMenuSpawner *spawner); TouchscreenListMenu *TouchscreenListMenu_Create(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection); -TouchscreenListMenu *TouchscreenListMenu_CreateWithAlignment(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, int alignment); +TouchscreenListMenu *TouchscreenListMenu_CreateWithAlignment(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, enum TouchscreenListMenuTextAlignment alignment); TouchscreenListMenu *TouchscreenListMenu_CreateWithCallback(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent); u8 TouchscreenListMenu_WasLastInputTouch(TouchscreenListMenu *menu); void TouchscreenListMenu_Destroy(TouchscreenListMenu *menu); diff --git a/main.lsf b/main.lsf index dfe1738126..88681e5bc4 100644 --- a/main.lsf +++ b/main.lsf @@ -1133,6 +1133,7 @@ Overlay pokegear Object src/application/pokegear/main/overlay_100_021E5900.o Object src/application/pokegear/main/pokegear_main.o Object src/application/pokegear/main/overlay_100_021E6914.o + Object src/application/pokegear/main/pokegear_cursor.o } Overlay pokegear_app { @@ -1145,7 +1146,10 @@ Overlay pokegear_app Object src/application/pokegear/map/overlay_101_021ED498.o Object src/application/pokegear/map/fly_map.o Object src/application/pokegear/map/overlay_101_021EDCE0.o - Object asm/pokegear_app_configure.o + Object src/application/pokegear/configure/pokegear_configure.o + Object src/application/pokegear/configure/overlay_101_021EED44.o + Object src/application/pokegear/configure/overlay_101_021EF1D8.o + Object src/application/pokegear/configure/overlay_101_021EF6D0.o Object src/application/pokegear/phone/pokegear_phone.o Object src/application/pokegear/phone/overlay_101_021EFD20.o Object src/application/pokegear/phone/overlay_101_021F017C.o diff --git a/src/application/pokegear/configure/overlay_101_021EED44.c b/src/application/pokegear/configure/overlay_101_021EED44.c new file mode 100644 index 0000000000..b5d80e0e6e --- /dev/null +++ b/src/application/pokegear/configure/overlay_101_021EED44.c @@ -0,0 +1,387 @@ +#include "application/pokegear/configure/pokegear_configure_internal.h" +#include "msgdata/msg.naix" +#include "msgdata/msg/msg_0270.h" + +#include "font.h" +#include "unk_0200FA24.h" + +static void PokegearConfigure_LoadAndSetSkin(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_InitBGs(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_UnloadBGs(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_LoadGraphics(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_UnloadGraphics(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_CreateSpriteManager(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_DestroySpriteManager(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_CreateSprites(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_DeleteSprites(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_CreateCursor(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_RemoveCursor(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_LoadContextMenuText(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_UnloadContextMenuText(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_SetInitialCursorState(PokegearConfigureAppData *configureApp); + +static const UnmanagedSpriteTemplate sSpriteTemplates[5] = { + { + .resourceSet = 0, + .x = 0, + .y = 0, + .z = 0, + .animation = 0, + .drawPriority = 1, + .pal = 6, + .vram = NNS_G2D_VRAM_TYPE_2DMAIN, + .paletteMode = 0, + .unk_1C = 0, + .unk_20 = 0, + .unk_24 = 0, + }, + { + .resourceSet = 0, + .x = 0, + .y = 0, + .z = 0, + .animation = 1, + .drawPriority = 1, + .pal = 6, + .vram = NNS_G2D_VRAM_TYPE_2DMAIN, + .paletteMode = 0, + .unk_1C = 0, + .unk_20 = 0, + .unk_24 = 0, + }, + { + .resourceSet = 0, + .x = 0, + .y = 0, + .z = 0, + .animation = 2, + .drawPriority = 1, + .pal = 6, + .vram = NNS_G2D_VRAM_TYPE_2DMAIN, + .paletteMode = 0, + .unk_1C = 0, + .unk_20 = 0, + .unk_24 = 0, + }, + { + .resourceSet = 0, + .x = 0, + .y = 0, + .z = 0, + .animation = 3, + .drawPriority = 1, + .pal = 6, + .vram = NNS_G2D_VRAM_TYPE_2DMAIN, + .paletteMode = 0, + .unk_1C = 0, + .unk_20 = 0, + .unk_24 = 0, + }, + { + .resourceSet = 0, + .x = 0, + .y = 0, + .z = 0, + .animation = 8, + .drawPriority = 1, + .pal = 4, + .vram = NNS_G2D_VRAM_TYPE_2DMAIN, + .paletteMode = 0, + .unk_1C = 0, + .unk_20 = 0, + .unk_24 = 0, + }, +}; + +static const PokegearCursorGrid sCursorButtons[6] = { + { 0, 2, 1, 3, 3, 48, 44, -22, 22, -18, 18 }, + { 1, 0, 2, 4, 4, 128, 44, -22, 22, -18, 18 }, + { 2, 1, 0, 5, 5, 208, 44, -22, 22, -18, 18 }, + { 3, 5, 4, 0, 0, 48, 116, -22, 22, -18, 18 }, + { 4, 3, 5, 1, 1, 128, 116, -22, 22, -18, 18 }, + { 5, 4, 3, 2, 2, 208, 116, -22, 22, -18, 18 }, +}; + +BOOL PokegearConfigure_LoadGFX(PokegearConfigureAppData *configureApp) { + switch (configureApp->substate) { + case 0: + PokegearConfigure_InitBGs(configureApp); + PokegearConfigure_LoadGraphics(configureApp); + PokegearConfigure_CreateSpriteManager(configureApp); + PokegearConfigure_LoadPalettes(configureApp, TRUE); + break; + case 1: + PokegearConfigure_CreateSprites(configureApp); + PokegearConfigure_CreateCursor(configureApp); + PokegearConfigure_LoadContextMenuText(configureApp); + PokegearConfigure_SetInitialCursorState(configureApp); + configureApp->substate = 0; + return TRUE; + } + ++configureApp->substate; + return FALSE; +} + +BOOL PokegearConfigure_UnloadGFX(PokegearConfigureAppData *configureApp) { + PokegearConfigure_UnloadContextMenuText(configureApp); + PokegearConfigure_RemoveCursor(configureApp); + PokegearConfigure_DeleteSprites(configureApp); + PokegearConfigure_DestroySpriteManager(configureApp); + PokegearConfigure_UnloadGraphics(configureApp); + PokegearConfigure_UnloadBGs(configureApp); + return TRUE; +} + +int PokegearConfigure_ContextMenu(PokegearConfigureAppData *configureApp) { + int input; + + input = TouchscreenListMenu_HandleInput(configureApp->contextMenu); + if (input != LIST_NOTHING_CHOSEN) { + configureApp->pokegear->menuInputState = (MenuInputState)TouchscreenListMenu_WasLastInputTouch(configureApp->contextMenu); + TouchscreenListMenu_Destroy(configureApp->contextMenu); + PokegearConfigure_ToggleButtonFocusState(configureApp, 0, FALSE); + PokegearCursorManager_SetCursorSpritesAnimateFlag(configureApp->pokegear->cursorManager, 0xFFFF, TRUE); + if (input == 0) { + return PGCONF_MAIN_STATE_SWAP_SKINS; + } else { + return PGCONF_MAIN_STATE_HANDLE_INPUT; + } + } + + return PGCONF_MAIN_STATE_CONTEXT_MENU; +} + +static void PokegearConfigure_LoadAndSetSkin(PokegearConfigureAppData *configureApp) { + PokegearConfigure_UnloadGraphics_Internal(configureApp); + configureApp->skin = configureApp->selectedSkin; + configureApp->pokegear->skin = configureApp->skin; + PokegearApp_LoadSkinGraphics(configureApp->pokegear, configureApp->skin); + PokegearUIManager_LoadSkinGfx(configureApp->pokegear->uiManager, configureApp->skin); + PokegearConfigure_LoadGraphics_Internal(configureApp); + PokegearConfigure_LoadPalettes(configureApp, FALSE); + PokegearConfigure_DrawUnlockedSkinsButtons(configureApp); + PokegearConfigure_SetNewSkin(configureApp, configureApp->skin); +} + +BOOL PokegearConfigure_SwapSkins(PokegearConfigureAppData *configureApp) { + switch (configureApp->substate) { + case 0: + BeginNormalPaletteFade(1, 4, 4, RGB_BLACK, 6, 1, configureApp->heapId); + break; + case 1: + if (!IsPaletteFadeFinished()) { + return FALSE; + } + PokegearConfigure_LoadAndSetSkin(configureApp); + break; + case 2: + BeginNormalPaletteFade(2, 3, 3, RGB_BLACK, 6, 1, configureApp->heapId); + break; + case 3: + if (!IsPaletteFadeFinished()) { + return FALSE; + } + configureApp->substate = 0; + return TRUE; + } + + ++configureApp->substate; + return FALSE; +} + +static void PokegearConfigure_InitBGs(PokegearConfigureAppData *configureApp) { + int i; + GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); + + { + BgTemplate bgTemplates[6] = { + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xf000, + .charBase = GX_BG_CHARBASE_0x10000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xe800, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 2, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xe000, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 3, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xf000, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 0, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xe800, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + { + .x = 0, + .y = 0, + .bufferSize = GF_BG_BUF_SIZE_256x256_4BPP, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0xe000, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 2, + .areaOver = GX_BG_AREAOVER_XLU, + .mosaic = 0, + }, + }; + + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplates[0], GF_BG_TYPE_TEXT, FALSE); + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplates[1], GF_BG_TYPE_TEXT, FALSE); + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplates[2], GF_BG_TYPE_TEXT, FALSE); + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_SUB_1, &bgTemplates[3], GF_BG_TYPE_TEXT, FALSE); + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_SUB_2, &bgTemplates[4], GF_BG_TYPE_TEXT, FALSE); + InitBgFromTemplateEx(configureApp->pokegear->bgConfig, GF_BG_LYR_SUB_3, &bgTemplates[5], GF_BG_TYPE_TEXT, FALSE); + } + + for (i = 0; i < 3; ++i) { + BgClearTilemapBufferAndCommit(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_1 + i); + BG_ClearCharDataRange(GF_BG_LYR_MAIN_1 + i, 0x20, 0, configureApp->heapId); + BgClearTilemapBufferAndCommit(configureApp->pokegear->bgConfig, GF_BG_LYR_SUB_1 + i); + BG_ClearCharDataRange(GF_BG_LYR_SUB_1 + i, 0x20, 0, configureApp->heapId); + } +} + +static void PokegearConfigure_UnloadBGs(PokegearConfigureAppData *configureApp) { + Pokegear_ClearAppBgLayers(configureApp->pokegear); +} + +static void PokegearConfigure_LoadGraphics(PokegearConfigureAppData *configureApp) { + FontID_Alloc(4, configureApp->heapId); + PokegearConfigure_LoadGraphics_Internal(configureApp); +} + +static void PokegearConfigure_UnloadGraphics(PokegearConfigureAppData *configureApp) { + PokegearConfigure_UnloadGraphics_Internal(configureApp); + FontID_Release(4); +} + +static void PokegearConfigure_CreateSpriteManager(PokegearConfigureAppData *configureApp) { + PokegearApp_CreateSpriteManager(configureApp->pokegear, GEAR_APP_CONFIGURE); + configureApp->contextMenuSpawner = TouchscreenListMenuSpawner_Create(configureApp->heapId, configureApp->pokegear->plttData); +} + +static void PokegearConfigure_DestroySpriteManager(PokegearConfigureAppData *configureApp) { + TouchscreenListMenuSpawner_Destroy(configureApp->contextMenuSpawner); + PokegearApp_DestroySpriteManager(configureApp->pokegear); +} + +static void PokegearConfigure_CreateSprites(PokegearConfigureAppData *configureApp) { + int i; + + for (i = 0; i <= 4; ++i) { + configureApp->sprites[i] = SpriteSystem_CreateSpriteFromResourceHeader(configureApp->pokegear->spriteSystem, configureApp->pokegear->spriteManager, &sSpriteTemplates[i]); + thunk_Sprite_SetPriority(configureApp->sprites[i], 1); + Sprite_SetDrawFlag(configureApp->sprites[i], FALSE); + Sprite_SetAnimActiveFlag(configureApp->sprites[i], TRUE); + } + for (i = 5; i <= 8; ++i) { + configureApp->sprites[i] = SpriteSystem_CreateSpriteFromResourceHeader(configureApp->pokegear->spriteSystem, configureApp->pokegear->spriteManager, &sSpriteTemplates[i - 5]); + thunk_Sprite_SetPriority(configureApp->sprites[i], 1); + thunk_Sprite_SetDrawPriority(configureApp->sprites[i], 0); + Sprite_SetDrawFlag(configureApp->sprites[i], FALSE); + Sprite_SetAnimActiveFlag(configureApp->sprites[i], FALSE); + } +} + +static void PokegearConfigure_DeleteSprites(PokegearConfigureAppData *configureApp) { + int i; + + for (i = 0; i < 9; ++i) { + thunk_Sprite_Delete(configureApp->sprites[i]); + } +} + +static void PokegearConfigure_CreateCursor(PokegearConfigureAppData *configureApp) { + PokegearCursorManager_AddButtons(configureApp->pokegear->cursorManager, sCursorButtons, NELEMS(sCursorButtons), 0, FALSE, configureApp->heapId, configureApp->sprites[0], configureApp->sprites[1], configureApp->sprites[2], configureApp->sprites[3]); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, FALSE); +} + +static void PokegearConfigure_RemoveCursor(PokegearConfigureAppData *configureApp) { + PokegearCursorManager_RemoveCursor(configureApp->pokegear->cursorManager, 1); +} + +static void PokegearConfigure_LoadContextMenuText(PokegearConfigureAppData *configureApp) { + MsgData *msgData; + int i; + + configureApp->contextMenuItems = ListMenuItems_New(2, configureApp->heapId); + msgData = NewMsgDataFromNarc(MSGDATA_LOAD_DIRECT, NARC_msgdata_msg, NARC_msg_msg_0270_bin, configureApp->heapId); + for (i = 0; i < 2; ++i) { + ListMenuItems_AppendFromMsgData(configureApp->contextMenuItems, msgData, msg_0270_00000 + i, i); + } + DestroyMsgData(msgData); +} + +static void PokegearConfigure_UnloadContextMenuText(PokegearConfigureAppData *configureApp) { + ListMenuItems_Delete(configureApp->contextMenuItems); + configureApp->contextMenuItems = NULL; +} + +static void PokegearConfigure_SetInitialCursorState(PokegearConfigureAppData *configureApp) { + PokegearConfigure_DrawUnlockedSkinsButtons(configureApp); + if (configureApp->pokegear->cursorInAppSwitchZone == TRUE) { + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 0, TRUE); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, FALSE); + PokegearCursorManager_SetSpecIndexAndCursorPos(configureApp->pokegear->cursorManager, 0, PokegearApp_AppIdToButtonIndex(configureApp->pokegear)); + } else { + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 0, FALSE); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, TRUE); + PokegearCursorManager_SetSpecIndexAndCursorPos(configureApp->pokegear->cursorManager, 1, 0); + } +} diff --git a/src/application/pokegear/configure/overlay_101_021EF1D8.c b/src/application/pokegear/configure/overlay_101_021EF1D8.c new file mode 100644 index 0000000000..73719e2b3d --- /dev/null +++ b/src/application/pokegear/configure/overlay_101_021EF1D8.c @@ -0,0 +1,150 @@ +#include "application/pokegear/configure/pgconf_gra.naix" +#include "application/pokegear/configure/pokegear_configure_internal.h" + +#include "gf_gfx_loader.h" +#include "unk_0208805C.h" + +typedef struct PokegearConfigureContextMenuParam { + u8 x; + u8 y; + u8 alignment; +} PokegearConfigureContextMenuParam; + +static const TouchscreenListMenuTemplate sContextMenuTemplate = { + .wrapAround = TRUE, + .centered = TRUE, + .xOffset = 0, + .bgId = GF_BG_LYR_MAIN_1, + .plttOffset = 10, + .unk4 = 1, + .unk5 = 1, + .baseTile = 28, + .charOffset = 1, + .unkA = 64, +}; + +static const PokegearConfigureContextMenuParam sContextMenuParam[] = { + { 10, 2, TSMENU_ALIGN_LEFT }, + { 20, 2, TSMENU_ALIGN_LEFT }, + { 22, 2, TSMENU_ALIGN_RIGHT }, + { 10, 11, TSMENU_ALIGN_LEFT }, + { 20, 11, TSMENU_ALIGN_LEFT }, + { 22, 11, TSMENU_ALIGN_RIGHT }, +}; + +void PokegearConfigure_LoadGraphics_Internal(PokegearConfigureAppData *configureApp) { + NARC *narc; + + narc = NARC_New(NARC_application_pokegear_configure_pgconf_gra, configureApp->heapId); + BgConfig_LoadAssetFromOpenNarc(configureApp->pokegear->bgConfig, configureApp->heapId, narc, NARC_application_pokegear_configure_pgconf_gra, NARC_pgconf_gra_pgconf_gra_00000010_NCGR + configureApp->skin, GF_BG_LYR_MAIN_3, GF_BG_GFX_TYPE_CHAR, 0, 0); + BgConfig_LoadAssetFromOpenNarc(configureApp->pokegear->bgConfig, configureApp->heapId, narc, NARC_application_pokegear_configure_pgconf_gra, NARC_pgconf_gra_pgconf_gra_00000016_NSCR + configureApp->skin, GF_BG_LYR_MAIN_3, GF_BG_GFX_TYPE_SCRN, 0, 0); + configureApp->scrnDataRaw = GfGfxLoader_GetScrnDataFromOpenNarc(narc, NARC_pgconf_gra_pgconf_gra_00000022_NSCR + configureApp->skin, FALSE, &configureApp->scrnData, configureApp->heapId); + NARC_Delete(narc); + ScheduleBgTilemapBufferTransfer(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_3); +} + +void PokegearConfigure_UnloadGraphics_Internal(PokegearConfigureAppData *configureApp) { + Heap_Free(configureApp->scrnDataRaw); +} + +void PokegearConfigure_LoadPalettes(PokegearConfigureAppData *configureApp, BOOL isInit) { + NARC *narc; + + narc = NARC_New(NARC_application_pokegear_configure_pgconf_gra, configureApp->heapId); + PaletteData_LoadFromOpenNarc(configureApp->pokegear->plttData, narc, NARC_pgconf_gra_pgconf_gra_00000004_NCLR + configureApp->skin, configureApp->heapId, PLTTBUF_MAIN_BG, 0x1C0, 0, 0); + PaletteData_LoadFromOpenNarc(configureApp->pokegear->plttData, narc, NARC_pgconf_gra_pgconf_gra_00000004_NCLR + configureApp->skin, configureApp->heapId, PLTTBUF_SUB_BG, 0x180, 0, 0); + if (isInit) { + PaletteData_LoadFromOpenNarc(configureApp->pokegear->plttData, narc, NARC_pgconf_gra_pgconf_gra_00000000_NCLR, configureApp->heapId, PLTTBUF_MAIN_OBJ, 0x160, 0x40, 0); + PaletteData_LoadFromOpenNarc(configureApp->pokegear->plttData, narc, NARC_pgconf_gra_pgconf_gra_00000000_NCLR, configureApp->heapId, PLTTBUF_SUB_OBJ, 0x160, 0x40, 0); + } + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, TRUE); + if (isInit) { + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0xE0, 16, 0); + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0x40, 0xC0, 16, 0); + } else { + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0x100, 0, 0); + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0, 0x100, 0, 0); + } + PaletteData_PushTransparentBuffers(configureApp->pokegear->plttData); + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, FALSE); + NARC_Delete(narc); +} + +void PokegearConfigure_SetNewSkin(PokegearConfigureAppData *configureApp, int skin) { + configureApp->skin = skin; + BgClearTilemapBufferAndCommit(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2); + CopyToBgTilemapRect(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2, 10 * (skin % 3) + 2, 9 * (skin / 3) + 2, 9, 7, configureApp->scrnData->rawData, 0, 0, configureApp->scrnData->screenWidth / 8, configureApp->scrnData->screenHeight / 8); + ScheduleBgTilemapBufferTransfer(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2); +} + +void PokegearConfigure_DrawUnlockedSkinsButtons(PokegearConfigureAppData *configureApp) { + int i; + u16 mask = 1; + + for (i = 0; i < 6; ++i) { + if (configureApp->unlockedSkins & mask) { + mask <<= 1; + continue; + } + CopyToBgTilemapRect(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_3, 10 * (i % 3) + 3, 9 * (i / 3) + 3, 6, 5, configureApp->scrnData->rawData, 6, 0, configureApp->scrnData->screenWidth / 8, configureApp->scrnData->screenHeight / 8); + mask <<= 1; + } + ScheduleBgTilemapBufferTransfer(configureApp->pokegear->bgConfig, GF_BG_LYR_MAIN_3); + PokegearConfigure_SetNewSkin(configureApp, configureApp->skin); +} + +void PokegearConfigure_OnReselectApp(void *appData) { + PokegearConfigureAppData *configureApp = appData; + + PokegearCursorManager_SetSpecIndexAndCursorPos(configureApp->pokegear->cursorManager, 1, 0xFF); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 0, FALSE); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, TRUE); +} + +void PokegearConfigure_SetAppCursorActive(PokegearConfigureAppData *configureApp) { + configureApp->pokegear->cursorInAppSwitchZone = FALSE; + PokegearCursorManager_SetSpecIndexAndCursorPos(configureApp->pokegear->cursorManager, 1, 0xFF); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 0, FALSE); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, TRUE); +} + +void PokegearConfigure_SpawnContextMenu(PokegearConfigureAppData *configureApp, u8 skin) { + TouchscreenListMenuHeader header; + + configureApp->selectedSkin = skin; + MI_CpuClear8(&header, sizeof(TouchscreenListMenuHeader)); + header.template = sContextMenuTemplate; + header.listMenuItems = configureApp->contextMenuItems; + header.bgConfig = configureApp->pokegear->bgConfig; + header.numWindows = 2; + configureApp->contextMenu = TouchscreenListMenu_CreateWithAlignment(configureApp->contextMenuSpawner, &header, configureApp->pokegear->menuInputState, sContextMenuParam[skin].x, sContextMenuParam[skin].y, 0, 0, (enum TouchscreenListMenuTextAlignment)sContextMenuParam[skin].alignment); + PokegearConfigure_ToggleButtonFocusState(configureApp, skin, TRUE); + PokegearCursorManager_SetCursorSpritesAnimateFlag(configureApp->pokegear->cursorManager, 0xFFFF, FALSE); +} + +void PokegearConfigure_ToggleButtonFocusState(PokegearConfigureAppData *configureApp, int skin, BOOL selected) { + int x; + int y; + int width; + + if (selected) { + G2_SetWnd0InsidePlane(31, FALSE); + G2_SetWnd1InsidePlane(31, FALSE); + G2_SetWndOutsidePlane(31, TRUE); + + x = configureApp->contextMenu->x * 8; + y = configureApp->contextMenu->y * 8; + width = (configureApp->contextMenu->width + 2) * 8; + G2_SetWnd0Position(x, y, x + width, y + 56); + G2_SetWnd1Position(24 + (skin % 3) * 80, 24 + (skin / 3) * 72, 72 + (skin % 3) * 80, 64 + (skin / 3) * 72); + GX_SetVisibleWnd(GX_WNDMASK_W0 | GX_WNDMASK_W1); + G2_SetBlendBrightness(GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ, -8); + } else { + G2_SetWnd0InsidePlane(GX_WND_PLANEMASK_NONE, FALSE); + G2_SetWnd1InsidePlane(GX_WND_PLANEMASK_NONE, FALSE); + G2_SetWndOutsidePlane(GX_WND_PLANEMASK_NONE, FALSE); + GX_SetVisibleWnd(GX_WNDMASK_NONE); + G2_SetBlendBrightness(GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ, 0); + G2_BlendNone(); + } +} diff --git a/src/application/pokegear/configure/overlay_101_021EF6D0.c b/src/application/pokegear/configure/overlay_101_021EF6D0.c new file mode 100644 index 0000000000..555a391706 --- /dev/null +++ b/src/application/pokegear/configure/overlay_101_021EF6D0.c @@ -0,0 +1,81 @@ +#include "application/pokegear/configure/pokegear_configure_internal.h" + +#include "unk_02005D10.h" + +static BOOL PokegearConfigure_IsSkinUnlocked(PokegearConfigureAppData *configureApp, u8 skin); + +static const TouchscreenHitbox sTouchscreenHitboxes[] = { + { .rect = { 24, 64, 24, 72 } }, + { .rect = { 24, 64, 104, 152 } }, + { .rect = { 24, 64, 184, 232 } }, + { .rect = { 96, 136, 24, 72 } }, + { .rect = { 96, 136, 104, 152 } }, + { .rect = { 96, 136, 184, 232 } }, + { .rect = { TOUCHSCREEN_RECTLIST_END } }, +}; + +static BOOL PokegearConfigure_IsSkinUnlocked(PokegearConfigureAppData *configureApp, u8 skin) { + u16 mask = 1; + mask <<= skin; + return configureApp->unlockedSkins & mask; +} + +int PokegearConfigure_HandleKeyInput(PokegearConfigureAppData *configureApp) { + u8 input; + + if (gSystem.newKeys & PAD_BUTTON_B) { + configureApp->pokegear->cursorInAppSwitchZone = TRUE; + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 1, FALSE); + PokegearCursorManager_SetCursorSpritesDrawState(configureApp->pokegear->cursorManager, 0, TRUE); + PokegearCursorManager_SetSpecIndexAndCursorPos(configureApp->pokegear->cursorManager, 0, PokegearApp_AppIdToButtonIndex(configureApp->pokegear)); + PlaySE(SEQ_SE_GS_GEARCANCEL); + return -1; + } + if (gSystem.newKeys & PAD_BUTTON_A) { + input = PokegearCursorManager_GetCursorPos(configureApp->pokegear->cursorManager); + if (!PokegearConfigure_IsSkinUnlocked(configureApp, input)) { + return TOUCH_MENU_NO_INPUT; + } + PokegearConfigure_SpawnContextMenu(configureApp, input); + PlaySE(SEQ_SE_GS_GEARDECIDE); + return GEAR_RETURN_8; + } + if (gSystem.newKeys & PAD_KEY_LEFT) { + PokegearCursorManager_MoveActiveCursor(configureApp->pokegear->cursorManager, 0); + PlaySE(SEQ_SE_GS_GEARCURSOR); + } else if (gSystem.newKeys & PAD_KEY_RIGHT) { + PokegearCursorManager_MoveActiveCursor(configureApp->pokegear->cursorManager, 1); + PlaySE(SEQ_SE_GS_GEARCURSOR); + } else if (gSystem.newKeys & PAD_KEY_UP) { + PokegearCursorManager_MoveActiveCursor(configureApp->pokegear->cursorManager, 2); + PlaySE(SEQ_SE_GS_GEARCURSOR); + } else if (gSystem.newKeys & PAD_KEY_DOWN) { + PokegearCursorManager_MoveActiveCursor(configureApp->pokegear->cursorManager, 3); + PlaySE(SEQ_SE_GS_GEARCURSOR); + } + return TOUCH_MENU_NO_INPUT; +} + +int PokegearConfigure_HandleTouchInput(PokegearConfigureAppData *configureApp) { + int input; + + input = PokegearApp_HandleTouchInput_SwitchApps(configureApp->pokegear); + if (input != TOUCH_MENU_NO_INPUT) { + return input; + } + input = TouchscreenHitbox_FindRectAtTouchNew(sTouchscreenHitboxes); + if (input != TOUCH_MENU_NO_INPUT) { + if (!PokegearConfigure_IsSkinUnlocked(configureApp, input)) { + return TOUCH_MENU_NO_INPUT; + } + if (configureApp->pokegear->cursorInAppSwitchZone == TRUE) { + PokegearConfigure_SetAppCursorActive(configureApp); + } + PokegearCursorManager_SetActiveCursorPosition(configureApp->pokegear->cursorManager, input); + PokegearConfigure_SpawnContextMenu(configureApp, input); + PlaySE(SEQ_SE_GS_GEARDECIDE); + configureApp->pokegear->menuInputState = MENU_INPUT_STATE_TOUCH; + return GEAR_RETURN_8; + } + return TOUCH_MENU_NO_INPUT; +} diff --git a/src/application/pokegear/configure/pokegear_configure.c b/src/application/pokegear/configure/pokegear_configure.c new file mode 100644 index 0000000000..24c9dd1304 --- /dev/null +++ b/src/application/pokegear/configure/pokegear_configure.c @@ -0,0 +1,259 @@ +#include "application/pokegear/configure/pokegear_configure_internal.h" + +#include "brightness.h" +#include "pokegear_apps.h" +#include "unk_0200FA24.h" + +static void PokegearConfigure_InitInternal(PokegearConfigureAppData *configureApp); +static void PokegearConfigure_ExitInternal(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_LoadGFX(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_HandleInput(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_UnloadGFX(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_ContextMenu(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_SwapSkins(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_FadeIn(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_FadeOut(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_FadeInApp(PokegearConfigureAppData *configureApp); +static int PokegearConfigure_MainTask_FadeOutApp(PokegearConfigureAppData *configureApp); + +BOOL PokegearConfigure_Init(OverlayManager *man, int *state) { + PokegearAppData *pokegearApp; + PokegearConfigureAppData *configureApp; + + pokegearApp = OverlayManager_GetArgs(man); + Heap_Create(HEAP_ID_3, HEAP_ID_POKEGEAR_APP, 0x20000); + configureApp = OverlayManager_CreateAndGetData(man, sizeof(PokegearConfigureAppData), HEAP_ID_POKEGEAR_APP); + memset(configureApp, 0, sizeof(PokegearConfigureAppData)); + configureApp->pokegear = pokegearApp; + configureApp->heapId = HEAP_ID_POKEGEAR_APP; + PokegearConfigure_InitInternal(configureApp); + return TRUE; +} + +BOOL PokegearConfigure_Main(OverlayManager *man, int *state) { + PokegearConfigureAppData *configureApp; + + configureApp = OverlayManager_GetData(man); + switch (*state) { + case PGCONF_MAIN_STATE_LOAD: + *state = PokegearConfigure_MainTask_LoadGFX(configureApp); + break; + case PGCONF_MAIN_STATE_HANDLE_INPUT: + *state = PokegearConfigure_MainTask_HandleInput(configureApp); + break; + case PGCONF_MAIN_STATE_UNLOAD: + *state = PokegearConfigure_MainTask_UnloadGFX(configureApp); + break; + case PGCONF_MAIN_STATE_CONTEXT_MENU: + *state = PokegearConfigure_MainTask_ContextMenu(configureApp); + break; + case PGCONF_MAIN_STATE_SWAP_SKINS: + *state = PokegearConfigure_MainTask_SwapSkins(configureApp); + break; + case PGCONF_MAIN_STATE_FADE_IN: + *state = PokegearConfigure_MainTask_FadeIn(configureApp); + break; + case PGCONF_MAIN_STATE_FADE_OUT: + *state = PokegearConfigure_MainTask_FadeOut(configureApp); + break; + case PGCONF_MAIN_STATE_FADE_IN_APP: + *state = PokegearConfigure_MainTask_FadeInApp(configureApp); + break; + case PGCONF_MAIN_STATE_FADE_OUT_APP: + *state = PokegearConfigure_MainTask_FadeOutApp(configureApp); + break; + case PGCONF_MAIN_STATE_QUIT: + return TRUE; + } + + return FALSE; +} + +BOOL PokegearConfigure_Exit(OverlayManager *man, int *state) { + PokegearConfigureAppData *configureApp; + enum HeapID heapID; + + configureApp = OverlayManager_GetData(man); + PokegearConfigure_ExitInternal(configureApp); + configureApp->pokegear->isSwitchApp = TRUE; + heapID = configureApp->heapId; + OverlayManager_FreeData(man); + Heap_Destroy(heapID); + return TRUE; +} + +static void PokegearConfigure_InitInternal(PokegearConfigureAppData *configureApp) { + configureApp->pokegear->childAppdata = configureApp; + configureApp->pokegear->reselectAppCB = PokegearConfigure_OnReselectApp; + configureApp->skin = Pokegear_GetSkin(configureApp->pokegear->savePokegear); + configureApp->unlockedSkins = Pokegear_GetUnlockedSkins(configureApp->pokegear->savePokegear); + configureApp->unlockedSkins = 0xFF; // the ability to unlock skins was likely removed late in development, and dev was lazy +} + +static void PokegearConfigure_ExitInternal(PokegearConfigureAppData *configureApp) { + Pokegear_SetSkin(configureApp->pokegear->savePokegear, configureApp->skin); + configureApp->pokegear->reselectAppCB = NULL; + configureApp->pokegear->deselectAppCB = NULL; +} + +static int PokegearConfigure_MainTask_LoadGFX(PokegearConfigureAppData *configureApp) { + if (!PokegearConfigure_LoadGFX(configureApp)) { + return FALSE; + } + if (configureApp->pokegear->isSwitchApp) { + return PGCONF_MAIN_STATE_FADE_IN_APP; + } else { + return PGCONF_MAIN_STATE_FADE_IN; + } +} + +static int PokegearConfigure_MainTask_HandleInput(PokegearConfigureAppData *configureApp) { + int input; + + input = PokegearConfigure_HandleTouchInput(configureApp); + if (input == -1) { + PokegearApp_HandleInputModeChangeToButtons(configureApp->pokegear); + if (configureApp->pokegear->cursorInAppSwitchZone == TRUE) { + input = PokegearApp_HandleKeyInput_SwitchApps(configureApp->pokegear); + } else { + input = PokegearConfigure_HandleKeyInput(configureApp); + } + } + switch (input) { + case TOUCH_MENU_NO_INPUT: + break; + case GEAR_RETURN_4: + configureApp->pokegear->appReturnCode = input; + return PGCONF_MAIN_STATE_FADE_OUT; + case GEAR_RETURN_8: + return PGCONF_MAIN_STATE_CONTEXT_MENU; + default: + configureApp->pokegear->appReturnCode = input; + return PGCONF_MAIN_STATE_FADE_OUT_APP; + } + + return PGCONF_MAIN_STATE_HANDLE_INPUT; +} + +static int PokegearConfigure_MainTask_UnloadGFX(PokegearConfigureAppData *configureApp) { + if (PokegearConfigure_UnloadGFX(configureApp)) { + return PGCONF_MAIN_STATE_QUIT; + } + + return PGCONF_MAIN_STATE_UNLOAD; +} + +static int PokegearConfigure_MainTask_ContextMenu(PokegearConfigureAppData *configureApp) { + return PokegearConfigure_ContextMenu(configureApp); +} + +static int PokegearConfigure_MainTask_SwapSkins(PokegearConfigureAppData *configureApp) { + if (PokegearConfigure_SwapSkins(configureApp)) { + return PGCONF_MAIN_STATE_HANDLE_INPUT; + } + + return PGCONF_MAIN_STATE_SWAP_SKINS; +} + +static int PokegearConfigure_MainTask_FadeIn(PokegearConfigureAppData *configureApp) { + switch (configureApp->state) { + case 0: + BeginNormalPaletteFade(0, 1, 1, RGB_BLACK, 6, 1, configureApp->heapId); + for (int i = 0; i < 8; ++i) { + ToggleBgLayer(i, TRUE); + } + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, TRUE); + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0xE0, 0, RGB_BLACK); + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0x40, 0xC0, 0, RGB_BLACK); + PaletteData_PushTransparentBuffers(configureApp->pokegear->plttData); + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, FALSE); + GfGfx_EngineATogglePlanes(GX_PLANEMASK_OBJ, TRUE); + GfGfx_EngineBTogglePlanes(GX_PLANEMASK_OBJ, TRUE); + ++configureApp->state; + break; + case 1: + if (IsPaletteFadeFinished()) { + configureApp->state = 0; + return PGCONF_MAIN_STATE_HANDLE_INPUT; + } + break; + } + + return PGCONF_MAIN_STATE_FADE_IN; +} + +static int PokegearConfigure_MainTask_FadeOut(PokegearConfigureAppData *configureApp) { + switch (configureApp->state) { + case 0: + BeginNormalPaletteFade(0, 0, 0, RGB_BLACK, 6, 1, configureApp->heapId); + ++configureApp->state; + break; + case 1: + if (IsPaletteFadeFinished()) { + for (int i = 0; i < 8; ++i) { + ToggleBgLayer(i, FALSE); + } + configureApp->state = 0; + return PGCONF_MAIN_STATE_UNLOAD; + } + break; + } + + return PGCONF_MAIN_STATE_FADE_OUT; +} + +static int PokegearConfigure_MainTask_FadeInApp(PokegearConfigureAppData *configureApp) { + switch (configureApp->state) { + case 0: + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, TRUE); + SetBlendBrightness(0, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3), SCREEN_MASK_MAIN); + for (int i = 0; i < 3; ++i) { + ToggleBgLayer(i + GF_BG_LYR_MAIN_1, TRUE); + ToggleBgLayer(i + GF_BG_LYR_SUB_1, TRUE); + } + configureApp->pokegear->fadeCounter = 0; + ++configureApp->state; + break; + case 1: + if (Pokegear_RunFadeLayers123(configureApp->pokegear, 0)) { + ++configureApp->state; + } + break; + case 2: + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, FALSE); + configureApp->pokegear->fadeCounter = 0; + configureApp->state = 0; + return PGCONF_MAIN_STATE_HANDLE_INPUT; + } + + return PGCONF_MAIN_STATE_FADE_IN_APP; +} + +static int PokegearConfigure_MainTask_FadeOutApp(PokegearConfigureAppData *configureApp) { + switch (configureApp->state) { + case 0: + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, TRUE); + configureApp->pokegear->fadeCounter = 0; + ++configureApp->state; + break; + case 1: + if (Pokegear_RunFadeLayers123(configureApp->pokegear, 1)) { + ++configureApp->state; + } + break; + case 2: + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0xE0, 16, RGB_BLACK); + PaletteData_BlendPalette(configureApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0x40, 0xC0, 16, RGB_BLACK); + PaletteData_PushTransparentBuffers(configureApp->pokegear->plttData); + for (int i = 0; i < 3; ++i) { + ToggleBgLayer(i + GF_BG_LYR_MAIN_1, FALSE); + ToggleBgLayer(i + GF_BG_LYR_SUB_1, FALSE); + } + PaletteData_SetAutoTransparent(configureApp->pokegear->plttData, FALSE); + configureApp->pokegear->fadeCounter = 0; + configureApp->state = 0; + return PGCONF_MAIN_STATE_UNLOAD; + } + + return PGCONF_MAIN_STATE_FADE_OUT_APP; +} diff --git a/src/application/pokegear/main/overlay_100_021E5900.c b/src/application/pokegear/main/overlay_100_021E5900.c index 75d389e532..769c6db02f 100644 --- a/src/application/pokegear/main/overlay_100_021E5900.c +++ b/src/application/pokegear/main/overlay_100_021E5900.c @@ -266,7 +266,7 @@ BOOL PokegearApp_UnloadGFX(PokegearAppData *pokegearApp) { return TRUE; } -void PokegearApp_LoadSkinGraphics(PokegearAppData *pokegearApp, int skinIdx) { +void PokegearApp_LoadSkinGraphics(PokegearAppData *pokegearApp, u8 skinIdx) { NARC *narc = NARC_New(NARC_application_pokegear_pgear_gra, pokegearApp->heapID); BgConfig_LoadAssetFromOpenNarc(pokegearApp->bgConfig, pokegearApp->heapID, narc, NARC_application_pokegear_pgear_gra, skinIdx + NARC_pgear_gra_pgear_gra_00000048_NCGR, GF_BG_LYR_MAIN_0, GF_BG_GFX_TYPE_CHAR, 0, 0); BgConfig_LoadAssetFromOpenNarc(pokegearApp->bgConfig, pokegearApp->heapID, narc, NARC_application_pokegear_pgear_gra, skinIdx + NARC_pgear_gra_pgear_gra_00000036_NCGR, GF_BG_LYR_SUB_0, GF_BG_GFX_TYPE_CHAR, 0, 0); @@ -378,7 +378,7 @@ static void PokegearApp_InitPaletteData(PokegearAppData *pokegearApp) { PaletteData_AllocBuffers(pokegearApp->plttData, PLTTBUF_SUB_BG, 0x200, pokegearApp->heapID); PaletteData_AllocBuffers(pokegearApp->plttData, PLTTBUF_SUB_OBJ, 0x200, pokegearApp->heapID); pokegearApp->unk_0C4 = Heap_Alloc(pokegearApp->heapID, GetNarcMemberSizeByIdPair(NARC_application_pokegear_pgear_gra, NARC_pgear_gra_pgear_gra_00000054_NSCR)); - PokegearApp_LoadSkinGraphics(pokegearApp, pokegearApp->backgroundStyle); + PokegearApp_LoadSkinGraphics(pokegearApp, pokegearApp->skin); NARC_Delete(narc); // was never actually used } @@ -394,17 +394,17 @@ static void PokegearApp_FreePaletteData(PokegearAppData *pokegearApp) { static void PokegearApp_LoadGraphics(PokegearAppData *pokegearApp) { PokegearApp_CreateSpriteSystem(pokegearApp); - pokegearApp->unk_094 = ov100_021E69F8(pokegearApp->heapID, 11, 1, pokegearApp->backgroundStyle, 3, 2); + pokegearApp->uiManager = PokegearUIManager_Create(pokegearApp->heapID, 11, 1, pokegearApp->skin, NNS_G2D_VRAM_TYPE_2DBOTH, 2); for (int i = 0; i < 4; ++i) { - pokegearApp->uiSprites[i] = ov100_021E6AC0(pokegearApp->unk_094, 0x40, 0x40, 0, 0, 0, i, i + 4, 0); + pokegearApp->uiSprites[i] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 64, 64, 0, 0, 0, i, i + 4, 0); } - pokegearApp->uiSprites[4] = ov100_021E6AC0(pokegearApp->unk_094, 0xAD, 0x30, 0, 0, 0, 4, 2, 1); - pokegearApp->uiSprites[5] = ov100_021E6AC0(pokegearApp->unk_094, 0x46, 0x2E, 0, 0, 0, 5, 0, 1); - pokegearApp->uiSprites[6] = ov100_021E6AC0(pokegearApp->unk_094, 0x56, 0x2E, 0, 0, 0, 6, 0, 1); - pokegearApp->uiSprites[7] = ov100_021E6AC0(pokegearApp->unk_094, 0x6E, 0x2E, 0, 0, 0, 7, 0, 1); - pokegearApp->uiSprites[8] = ov100_021E6AC0(pokegearApp->unk_094, 0x7E, 0x2E, 0, 0, 0, 8, 0, 1); - pokegearApp->uiSprites[9] = ov100_021E6AC0(pokegearApp->unk_094, 0x62, 0x2E, 0, 0, 0, 9, 1, 1); - pokegearApp->uiSprites[10] = ov100_021E6AC0(pokegearApp->unk_094, 0xC5, 0x30, 0, 0, 0, 10, 3, 1); + pokegearApp->uiSprites[4] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 173, 48, 0, 0, 0, 4, 2, 1); + pokegearApp->uiSprites[5] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 70, 46, 0, 0, 0, 5, 0, 1); + pokegearApp->uiSprites[6] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 86, 46, 0, 0, 0, 6, 0, 1); + pokegearApp->uiSprites[7] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 110, 46, 0, 0, 0, 7, 0, 1); + pokegearApp->uiSprites[8] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 126, 46, 0, 0, 0, 8, 0, 1); + pokegearApp->uiSprites[9] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 98, 46, 0, 0, 0, 9, 1, 1); + pokegearApp->uiSprites[10] = PokegearUIManager_CreateSprite(pokegearApp->uiManager, 197, 48, 0, 0, 0, 10, 3, 1); PokegearApp_UpdateClockSprites(pokegearApp, TRUE); ManagedSprite_SetAnimateFlag(pokegearApp->uiSprites[9], TRUE); @@ -425,9 +425,9 @@ static void PokegearApp_LoadGraphics(PokegearAppData *pokegearApp) { static void PokegearApp_UnloadGraphics(PokegearAppData *pokegearApp) { for (int i = 0; i < 11; ++i) { ManagedSprite_SetDrawFlag(pokegearApp->uiSprites[i], FALSE); - ov100_021E6C44(pokegearApp->uiSprites[i]); + PokegearUIManager_DeleteSprite(pokegearApp->uiSprites[i]); } - ov100_021E6A3C(pokegearApp->unk_094); + PokegearUIManager_Delete(pokegearApp->uiManager); PokegearApp_DestroySpriteSystem(pokegearApp); } diff --git a/src/application/pokegear/main/overlay_100_021E6914.c b/src/application/pokegear/main/overlay_100_021E6914.c index 43f86cdb88..811e0a6ed5 100644 --- a/src/application/pokegear/main/overlay_100_021E6914.c +++ b/src/application/pokegear/main/overlay_100_021E6914.c @@ -1,3 +1,4 @@ +#include "application/pokegear/pgear_gra.naix" #include "application/pokegear/pokegear_internal.h" #include "data/resdat.naix" @@ -13,17 +14,9 @@ typedef struct PokegearObjResSpec { const u16 *resIdList; } PokegearObjResSpec; -void ov100_021E6A58(PokegearApp_UnkSub094 *a0, int a1); -void ov100_021E6C4C(PokegearApp_UnkSub094 *a0, u16 a1); -void ov100_021E6CF4(PokegearApp_UnkSub094 *a0); -void ov100_021E6D34(PokegearApp_UnkSub094 *a0, u16 a1); - -u16 PokegearCursorManager_GetFreeCursorSlot(PokegearCursorManager *cursorManager); -void PokegearCursorManager_UpdateCursorSpritePosition(PokegearCursorManager *cursorManager, u16 index); -void PokegearCursorManager_UpdateActiveCursorPosition(PokegearCursorManager *cursorManager, u8 move); -u8 PokegearCursorManager_SetCursorPosition(PokegearCursorManager *cursorManager, u16 index, u8 newIndex); - -extern const u8 ov100_021E764C[]; +static void PokegearUIManager_LoadInitialGfx(PokegearUIManager *uiManager, u16 skin); +static void PokegearUIManager_UnloadSprites(PokegearUIManager *uiManager); +static void PokegearUIManager_LoadInitialSkinGfx(PokegearUIManager *uiManager, u16 skin); static const OamManagerParam sOamManagerParam = { .fromOBJmain = 0x00, @@ -128,65 +121,65 @@ void PokegearApp_DrawSprites(PokegearAppData *pokegearApp) { } } -// functions for PokegearApp_UnkSub094 +// functions for PokegearUIManager -PokegearApp_UnkSub094 *ov100_021E69F8(enum HeapID heapID, u16 a1, u16 a2, u16 a3, u16 a4, int a5) { - PokegearApp_UnkSub094 *ret = Heap_Alloc(heapID, sizeof(PokegearApp_UnkSub094)); - MI_CpuClear8(ret, sizeof(PokegearApp_UnkSub094)); +PokegearUIManager *PokegearUIManager_Create(enum HeapID heapID, u16 spriteCount, u16 resCount, u16 skin, u16 vramType, int mode) { + PokegearUIManager *ret = Heap_Alloc(heapID, sizeof(PokegearUIManager)); + MI_CpuClear8(ret, sizeof(PokegearUIManager)); ret->heapID = heapID; - if (a2 > 4) { - ret->unk_00A = 4; + if (resCount > 4) { + ret->plttCount = 4; } else { - ret->unk_00A = a2; + ret->plttCount = resCount; } - ret->unk_00C = a1; - ret->unk_00E = a4; - ret->unk_004 = a5; - ov100_021E6C4C(ret, a3); + ret->spriteCount = spriteCount; + ret->vramType = vramType; + ret->mode = mode; + PokegearUIManager_LoadInitialGfx(ret, skin); return ret; } -void ov100_021E6A3C(PokegearApp_UnkSub094 *a0) { - ov100_021E6CF4(a0); - MI_CpuClear8(a0, sizeof(PokegearApp_UnkSub094)); - Heap_Free(a0); +void PokegearUIManager_Delete(PokegearUIManager *uiManager) { + PokegearUIManager_UnloadSprites(uiManager); + MI_CpuClear8(uiManager, sizeof(PokegearUIManager)); + Heap_Free(uiManager); } -void ov100_021E6A58(PokegearApp_UnkSub094 *a0, int a1) { +void PokegearUIManager_LoadSkinGfx(PokegearUIManager *uiManager, u8 skin) { SpriteResource *obj; - obj = a0->spriteResources[GF_GFX_RES_TYPE_CHAR]->obj[0]; - ReplaceCharResObjFromNarc(a0->resourceManagers[GF_GFX_RES_TYPE_CHAR], obj, NARC_application_pokegear_pgear_gra, a1 + 6, FALSE, a0->heapID); + obj = uiManager->spriteResources[GF_GFX_RES_TYPE_CHAR]->obj[0]; + ReplaceCharResObjFromNarc(uiManager->resourceManagers[GF_GFX_RES_TYPE_CHAR], obj, NARC_application_pokegear_pgear_gra, skin + NARC_pgear_gra_pgear_gra_00000006_NCGR, FALSE, uiManager->heapID); sub_0200AE8C(obj); - obj = a0->spriteResources[GF_GFX_RES_TYPE_PLTT]->obj[0]; - ReplacePlttResObjFromNarc(a0->resourceManagers[GF_GFX_RES_TYPE_PLTT], obj, NARC_application_pokegear_pgear_gra, a1, FALSE, a0->heapID); + obj = uiManager->spriteResources[GF_GFX_RES_TYPE_PLTT]->obj[0]; + ReplacePlttResObjFromNarc(uiManager->resourceManagers[GF_GFX_RES_TYPE_PLTT], obj, NARC_application_pokegear_pgear_gra, skin + NARC_pgear_gra_pgear_gra_00000000_NCLR, FALSE, uiManager->heapID); sub_0200B084(obj); } -void ov100_021E6AB0(PokegearApp_UnkSub094 *a0) { - if (a0->spriteList != NULL) { - SpriteList_RenderAndAnimateSprites(a0->spriteList); +void PokegearUIManager_AnimateSprites(PokegearUIManager *uiManager) { + if (uiManager->spriteList != NULL) { + SpriteList_RenderAndAnimateSprites(uiManager->spriteList); } } -ManagedSprite *ov100_021E6AC0(PokegearApp_UnkSub094 *a0, u8 x, u8 y, u8 z, u8 priority, u8 drawPriority, u8 unused, u8 seq, int isBottomScreen) { +ManagedSprite *PokegearUIManager_CreateSprite(PokegearUIManager *uiManager, u8 x, u8 y, u8 z, u8 priority, u8 drawPriority, u8 index, u8 seq, int isBottomScreen) { NNS_G2D_VRAM_TYPE vramType; ManagedSprite *ret; SpriteTemplate spriteTemplate; - static const u8 ov100_021E770C[] = { 2, 2, 2, 3, 1, 1, 1, 1 }; + static const u8 sPlttOverrides[] = { 2, 2, 2, 3, 1, 1, 1, 1 }; - ret = Heap_Alloc(a0->heapID, sizeof(ManagedSprite)); + ret = Heap_Alloc(uiManager->heapID, sizeof(ManagedSprite)); MI_CpuClear8(ret, sizeof(ManagedSprite)); - ret->spriteResourceHeaderList = Heap_Alloc(a0->heapID, sizeof(SpriteResourceHeaderList)); - ret->spriteResourceHeaderList->headers = Heap_Alloc(a0->heapID, sizeof(SpriteResourcesHeader)); + ret->spriteResourceHeaderList = Heap_Alloc(uiManager->heapID, sizeof(SpriteResourceHeaderList)); + ret->spriteResourceHeaderList->headers = Heap_Alloc(uiManager->heapID, sizeof(SpriteResourcesHeader)); // ret->spriteResourceHeaderList->num = 1; ret->spriteResourcesHeader = ret->spriteResourceHeaderList->headers; vramType = isBottomScreen == 0 ? NNS_G2D_VRAM_TYPE_2DMAIN : NNS_G2D_VRAM_TYPE_2DSUB; - CreateSpriteResourcesHeader(ret->spriteResourcesHeader, 0xE000, 0xE000, 0xE000, 0xE000, -1, -1, 0, priority, a0->resourceManagers[GF_GFX_RES_TYPE_CHAR], a0->resourceManagers[GF_GFX_RES_TYPE_PLTT], a0->resourceManagers[GF_GFX_RES_TYPE_CELL], a0->resourceManagers[GF_GFX_RES_TYPE_ANIM], NULL, NULL); + CreateSpriteResourcesHeader(ret->spriteResourcesHeader, 0xE000, 0xE000, 0xE000, 0xE000, -1, -1, 0, priority, uiManager->resourceManagers[GF_GFX_RES_TYPE_CHAR], uiManager->resourceManagers[GF_GFX_RES_TYPE_PLTT], uiManager->resourceManagers[GF_GFX_RES_TYPE_CELL], uiManager->resourceManagers[GF_GFX_RES_TYPE_ANIM], NULL, NULL); - spriteTemplate.spriteList = a0->spriteList; + spriteTemplate.spriteList = uiManager->spriteList; spriteTemplate.header = ret->spriteResourcesHeader; SetVecFx32(spriteTemplate.position, FX32_CONST(x), FX32_CONST(y), FX32_CONST(z)); if (vramType == NNS_G2D_VRAM_TYPE_2DSUB) { @@ -196,55 +189,55 @@ ManagedSprite *ov100_021E6AC0(PokegearApp_UnkSub094 *a0, u8 x, u8 y, u8 z, u8 pr spriteTemplate.rotation = 0; spriteTemplate.drawPriority = drawPriority; spriteTemplate.whichScreen = vramType; - spriteTemplate.heapID = a0->heapID; + spriteTemplate.heapID = uiManager->heapID; ret->sprite = Sprite_CreateAffine(&spriteTemplate); - SpriteResource *obj = a0->spriteResources[GF_GFX_RES_TYPE_PLTT]->obj[0]; + SpriteResource *obj = uiManager->spriteResources[GF_GFX_RES_TYPE_PLTT]->obj[0]; if (ret->sprite != NULL) { int seq_copy = seq; Sprite_SetAnimCtrlSeq(ret->sprite, seq_copy); - Sprite_SetPaletteOverride(ret->sprite, ov100_021E770C[seq_copy] + SpriteTransfer_GetPlttOffset(obj, vramType)); + Sprite_SetPaletteOverride(ret->sprite, sPlttOverrides[seq_copy] + SpriteTransfer_GetPlttOffset(obj, vramType)); } else { GF_ASSERT(FALSE); } return ret; } -void ov100_021E6C44(ManagedSprite *managedSprite) { +void PokegearUIManager_DeleteSprite(ManagedSprite *managedSprite) { Sprite_DeleteAndFreeResources(managedSprite); } -void ov100_021E6C4C(PokegearApp_UnkSub094 *a0, u16 a1) { - u8 spC[4] = { 1, 1, 1, 1 }; +static void PokegearUIManager_LoadInitialGfx(PokegearUIManager *uiManager, u16 skin) { + u8 resCounts[4] = { 1, 1, 1, 1 }; - a0->spriteList = G2dRenderer_Init(a0->unk_00C, &a0->renderer, a0->heapID); - spC[1] = a0->unk_00A; + uiManager->spriteList = G2dRenderer_Init(uiManager->spriteCount, &uiManager->renderer, uiManager->heapID); + resCounts[GF_GFX_RES_TYPE_PLTT] = uiManager->plttCount; for (u32 i = 0; i < 4; ++i) { - a0->resourceManagers[i] = Create2DGfxResObjMan(spC[i], (GfGfxResType)i, a0->heapID); - a0->spriteResources[i] = Create2DGfxResObjList(spC[i], a0->heapID); - for (u32 j = 0; j < a0->spriteResources[i]->max; ++j) { - a0->spriteResources[i]->obj[j] = NULL; + uiManager->resourceManagers[i] = Create2DGfxResObjMan(resCounts[i], (GfGfxResType)i, uiManager->heapID); + uiManager->spriteResources[i] = Create2DGfxResObjList(resCounts[i], uiManager->heapID); + for (u32 j = 0; j < uiManager->spriteResources[i]->max; ++j) { + uiManager->spriteResources[i]->obj[j] = NULL; } } - ov100_021E6D34(a0, a1); + PokegearUIManager_LoadInitialSkinGfx(uiManager, skin); } -void ov100_021E6CF4(PokegearApp_UnkSub094 *a0) { - SpriteList_Delete(a0->spriteList); - sub_0200AED4(a0->spriteResources[GF_GFX_RES_TYPE_CHAR]); - sub_0200B0CC(a0->spriteResources[GF_GFX_RES_TYPE_PLTT]); +static void PokegearUIManager_UnloadSprites(PokegearUIManager *auiManager) { + SpriteList_Delete(auiManager->spriteList); + sub_0200AED4(auiManager->spriteResources[GF_GFX_RES_TYPE_CHAR]); + sub_0200B0CC(auiManager->spriteResources[GF_GFX_RES_TYPE_PLTT]); for (u32 i = 0; i < 4; ++i) { - Delete2DGfxResObjList(a0->spriteResources[i]); - Destroy2DGfxResObjMan(a0->resourceManagers[i]); + Delete2DGfxResObjList(auiManager->spriteResources[i]); + Destroy2DGfxResObjMan(auiManager->resourceManagers[i]); } } -void ov100_021E6D34(PokegearApp_UnkSub094 *a0, u16 a1) { +static void PokegearUIManager_LoadInitialSkinGfx(PokegearUIManager *uiManager, u16 skin) { GF_2DGfxResObjList *objList; - objList = a0->spriteResources[GF_GFX_RES_TYPE_CHAR]; - objList->obj[0] = AddCharResObjFromNarc(a0->resourceManagers[GF_GFX_RES_TYPE_CHAR], NARC_application_pokegear_pgear_gra, a1 + 6, FALSE, 0xE000, (NNS_G2D_VRAM_TYPE)a0->unk_00E, a0->heapID); + objList = uiManager->spriteResources[GF_GFX_RES_TYPE_CHAR]; + objList->obj[0] = AddCharResObjFromNarc(uiManager->resourceManagers[GF_GFX_RES_TYPE_CHAR], NARC_application_pokegear_pgear_gra, skin + NARC_pgear_gra_pgear_gra_00000006_NCGR, FALSE, 0xE000, (NNS_G2D_VRAM_TYPE)uiManager->vramType, uiManager->heapID); GF_ASSERT(objList->obj[0] != NULL); - switch (a0->unk_004) { + switch (uiManager->mode) { case 1: sub_0200ADA4(objList->obj[0]); break; @@ -258,13 +251,13 @@ void ov100_021E6D34(PokegearApp_UnkSub094 *a0, u16 a1) { } for (int i = 0; i < 2; ++i) { - objList = a0->spriteResources[GF_GFX_RES_TYPE_CELL + i]; - objList->obj[0] = AddCellOrAnimResObjFromNarc(a0->resourceManagers[GF_GFX_RES_TYPE_CELL + i], NARC_application_pokegear_pgear_gra, 12 + i, FALSE, 0xE000, (GfGfxResType)(GF_GFX_RES_TYPE_CELL + i), a0->heapID); + objList = uiManager->spriteResources[GF_GFX_RES_TYPE_CELL + i]; + objList->obj[0] = AddCellOrAnimResObjFromNarc(uiManager->resourceManagers[GF_GFX_RES_TYPE_CELL + i], NARC_application_pokegear_pgear_gra, i + NARC_pgear_gra_pgear_gra_00000012_NCER, FALSE, 0xE000, (GfGfxResType)(GF_GFX_RES_TYPE_CELL + i), uiManager->heapID); GF_ASSERT(objList->obj[0] != NULL); } - objList = a0->spriteResources[GF_GFX_RES_TYPE_PLTT]; - objList->obj[0] = AddPlttResObjFromNarc(a0->resourceManagers[GF_GFX_RES_TYPE_PLTT], NARC_application_pokegear_pgear_gra, a1, FALSE, 0xE000, (NNS_G2D_VRAM_TYPE)a0->unk_00E, 4, a0->heapID); + objList = uiManager->spriteResources[GF_GFX_RES_TYPE_PLTT]; + objList->obj[0] = AddPlttResObjFromNarc(uiManager->resourceManagers[GF_GFX_RES_TYPE_PLTT], NARC_application_pokegear_pgear_gra, skin + NARC_pgear_gra_pgear_gra_00000000_NCLR, FALSE, 0xE000, (NNS_G2D_VRAM_TYPE)uiManager->vramType, 4, uiManager->heapID); GF_ASSERT(objList->obj[0] != NULL); sub_0200B00C(objList->obj[0]); } @@ -330,248 +323,3 @@ void PokegearObjectsManager_DeleteSpritesFromIndexToEnd(PokegearObjectsManager * MI_CpuClear8(mgr->objects + firstIndex, clearCount * sizeof(PokegearManagedObject)); mgr->num -= clearCount; } - -// functions for PokegearAppSwitchCursor - -PokegearCursorManager *PokegearCursorManager_Alloc(int count, enum HeapID heapID) { - PokegearCursorManager *ret = (PokegearCursorManager *)Heap_Alloc(heapID, sizeof(PokegearCursorManager)); - MI_CpuClear8(ret, sizeof(PokegearCursorManager)); - ret->count = count; - ret->cursors = Heap_Alloc(heapID, count * sizeof(PokegearCursor)); - MI_CpuClear8(ret->cursors, count * sizeof(PokegearCursor)); - return ret; -} - -void PokegearCursorManager_Free(PokegearCursorManager *cursorManager) { - for (int i = 0; i < cursorManager->count; ++i) { - if (cursorManager->cursors[i].active && cursorManager->cursors[i].grid != NULL) { - PokegearCursorManager_RemoveCursor(cursorManager, i); - } - } - MI_CpuClear8(cursorManager->cursors, cursorManager->count * sizeof(PokegearCursor)); - Heap_Free(cursorManager->cursors); - MI_CpuClear8(cursorManager, sizeof(PokegearCursorManager)); - Heap_Free(cursorManager); -} - -u16 PokegearCursorManager_AddButtons(PokegearCursorManager *cursorManager, const PokegearCursorGrid *buttonSpec, u8 numSpecs, u8 cursorPos, BOOL managedSprites, enum HeapID heapID, void *cursorSprite1, void *cursorSprite2, void *cursorSprite3, void *cursorSprite4) { - u16 index = PokegearCursorManager_GetFreeCursorSlot(cursorManager); - if (index == 0xFFFF) { - return 0xFFFF; - } - - PokegearCursor *button = &cursorManager->cursors[index]; - button->active = TRUE; - button->buttonsAre4Tiles = TRUE; - button->count = numSpecs; - button->lastIndex = button->count - 1; - button->grid = Heap_Alloc(heapID, button->count * sizeof(PokegearCursorGrid)); - MI_CpuCopy8(buttonSpec, button->grid, button->count * sizeof(PokegearCursorGrid)); - if (cursorPos >= button->count) { - button->cursorPos = 0; - } else { - button->cursorPos = cursorPos; - } - button->buttonsAreManagedSprite = managedSprites; - button->cursorSprites[0].raw = cursorSprite1; - button->cursorSprites[1].raw = cursorSprite2; - button->cursorSprites[2].raw = cursorSprite3; - button->cursorSprites[3].raw = cursorSprite4; - return index; -} - -BOOL PokegearCursorManager_RemoveCursor(PokegearCursorManager *cursorManager, u16 cursorIndex) { - if (cursorIndex >= cursorManager->count || !cursorManager->cursors[cursorIndex].active) { - return FALSE; - } - if (cursorManager->activeCursorIndex == cursorIndex) { - cursorManager->activeCursorIndex = 0xFFFF; - cursorManager->lastCursor = NULL; - } - MI_CpuClear8(cursorManager->cursors[cursorIndex].grid, cursorManager->cursors[cursorIndex].count * sizeof(PokegearCursorGrid)); - Heap_Free(cursorManager->cursors[cursorIndex].grid); - MI_CpuClear8(&cursorManager->cursors[cursorIndex], sizeof(PokegearCursor)); - return FALSE; -} - -u16 PokegearCursorManager_GetFreeCursorSlot(PokegearCursorManager *cursorManager) { - for (u16 i = 0; i < cursorManager->count; ++i) { - if (!cursorManager->cursors[i].active) { - return i; - } - } - - return 0xFFFF; -} - -u16 PokegearCursorManager_SetCursorSpritesDrawState(PokegearCursorManager *cursorManager, u16 index, BOOL draw) { - PokegearCursor *button; - if (index == 0xFFFF) { - button = cursorManager->lastCursor; - } else if (index >= cursorManager->count || (button = &cursorManager->cursors[index], !button->active)) { - return 0xFFFF; - } - if (!button->buttonsAreManagedSprite) { - thunk_Sprite_SetDrawFlag(button->cursorSprites[0].unmanaged, draw); - if (button->buttonsAre4Tiles == TRUE) { - thunk_Sprite_SetDrawFlag(button->cursorSprites[1].unmanaged, draw); - thunk_Sprite_SetDrawFlag(button->cursorSprites[2].unmanaged, draw); - thunk_Sprite_SetDrawFlag(button->cursorSprites[3].unmanaged, draw); - } - } else { - ManagedSprite_SetDrawFlag(button->cursorSprites[0].managed, draw); - if (button->buttonsAre4Tiles == TRUE) { - ManagedSprite_SetDrawFlag(button->cursorSprites[1].managed, draw); - ManagedSprite_SetDrawFlag(button->cursorSprites[2].managed, draw); - ManagedSprite_SetDrawFlag(button->cursorSprites[3].managed, draw); - } - } - return index; -} - -void PokegearCursorManager_UpdateCursorSpritePosition(PokegearCursorManager *cursorManager, u16 index) { - PokegearCursor *buttons; - if (index == 0xFFFF) { - buttons = cursorManager->lastCursor; - } else if (index >= cursorManager->count) { - return; - } else { - buttons = &cursorManager->cursors[index]; - } - - PokegearCursorGrid *spec = &buttons->grid[buttons->cursorPos]; - if (!buttons->buttonsAreManagedSprite) { - if (!buttons->buttonsAre4Tiles) { - Sprite_SetPositionXY(buttons->cursorSprites[0].unmanaged, spec->x, spec->y); - } else { - Sprite_SetPositionXY(buttons->cursorSprites[0].unmanaged, spec->x + spec->leftOffset, spec->y + spec->topOffset); - Sprite_SetPositionXY(buttons->cursorSprites[1].unmanaged, spec->x + spec->leftOffset, spec->y + spec->bottomOffset); - Sprite_SetPositionXY(buttons->cursorSprites[2].unmanaged, spec->x + spec->rightOffset, spec->y + spec->topOffset); - Sprite_SetPositionXY(buttons->cursorSprites[3].unmanaged, spec->x + spec->rightOffset, spec->y + spec->bottomOffset); - } - } else { - if (!buttons->buttonsAre4Tiles) { - ManagedSprite_SetPositionXY(buttons->cursorSprites[0].managed, spec->x, spec->y); - } else { - ManagedSprite_SetPositionXY(buttons->cursorSprites[0].managed, spec->x + spec->leftOffset, spec->y + spec->topOffset); - ManagedSprite_SetPositionXY(buttons->cursorSprites[1].managed, spec->x + spec->leftOffset, spec->y + spec->bottomOffset); - ManagedSprite_SetPositionXY(buttons->cursorSprites[2].managed, spec->x + spec->rightOffset, spec->y + spec->topOffset); - ManagedSprite_SetPositionXY(buttons->cursorSprites[3].managed, spec->x + spec->rightOffset, spec->y + spec->bottomOffset); - } - } -} - -u16 PokegearCursorManager_SetSpecIndexAndCursorPos(PokegearCursorManager *cursorManager, u16 index, u8 cursorPos) { - if (index >= cursorManager->count) { - return 0xFFFF; - } - cursorManager->lastCursor = &cursorManager->cursors[index]; - cursorManager->activeCursorIndex = index; - if (cursorPos != 0xFF) { - if (cursorPos >= cursorManager->cursors[index].count) { - cursorManager->cursors[index].cursorPos = 0; - } else { - cursorManager->cursors[index].cursorPos = cursorPos; - } - } - PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, 0xFFFF); - return index; -} - -u8 PokegearCursorManager_GetCursorPos(PokegearCursorManager *cursorManager) { - return cursorManager->lastCursor->cursorPos; -} - -u8 PokegearCursorManager_GetSpecCursorPos(PokegearCursorManager *cursorManager, u16 index) { - if (index == 0xFFFF) { - return cursorManager->lastCursor->cursorPos; - } else if (index >= cursorManager->count || !cursorManager->cursors[index].active) { - return 0; - } else { - return cursorManager->cursors[index].cursorPos; - } -} - -void PokegearCursorManager_UpdateActiveCursorPosition(PokegearCursorManager *cursorManager, u8 move) { - if (cursorManager->lastCursor != NULL) { - PokegearCursorGrid *spec = &cursorManager->lastCursor->grid[cursorManager->lastCursor->cursorPos]; - u8 newIndex; - switch (move) { - case 1: - newIndex = spec->buttonRight; - break; - case 2: - newIndex = spec->buttonUp; - break; - case 3: - newIndex = spec->buttonDown; - break; - case 0: - default: - newIndex = spec->buttonLeft; - break; - } - if (newIndex <= cursorManager->lastCursor->lastIndex) { - cursorManager->lastCursor->cursorPos = newIndex; - } - } -} - -u8 PokegearCursorManager_MoveActiveCursor(PokegearCursorManager *cursorManager, u8 move) { - PokegearCursorManager_UpdateActiveCursorPosition(cursorManager, move); - PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, 0xFFFF); - return cursorManager->lastCursor->cursorPos; -} - -u8 PokegearCursorManager_SetActiveCursorPosition(PokegearCursorManager *cursorManager, u8 newIndex) { - return PokegearCursorManager_SetCursorPosition(cursorManager, cursorManager->activeCursorIndex, newIndex); -} - -u8 PokegearCursorManager_SetCursorPosition(PokegearCursorManager *cursorManager, u16 index, u8 newIndex) { - PokegearCursor *button; - if (index == 0xFFFF) { - button = cursorManager->lastCursor; - index = cursorManager->activeCursorIndex; - } else if (index >= cursorManager->count || (button = &cursorManager->cursors[index], !button->active)) { - return 0; - } - if (button->lastIndex < newIndex) { - button->cursorPos = 0; - } else { - button->cursorPos = newIndex; - } - PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, index); - return button->cursorPos; -} - -void PokegearCursorManager_SetCursorSpritesAnimateFlag(PokegearCursorManager *cursorManager, u16 index, BOOL active) { - if (index == 0xFFFF) { - index = cursorManager->activeCursorIndex; - } - if (index < cursorManager->count) { - PokegearCursor *button = &cursorManager->cursors[index]; - if (button->active) { - if (!button->buttonsAreManagedSprite) { - if (!button->buttonsAre4Tiles) { - Sprite_ResetAnimCtrlState(button->cursorSprites[0].unmanaged); - thunk_Sprite_SetAnimationFlag(button->cursorSprites[0].unmanaged, active); - } else { - for (int i = 0; i < 4; ++i) { - Sprite_ResetAnimCtrlState(button->cursorSprites[i].unmanaged); - thunk_Sprite_SetAnimationFlag(button->cursorSprites[i].unmanaged, active); - } - } - } else { - if (!button->buttonsAre4Tiles) { - ManagedSprite_ResetSpriteAnimCtrlState(button->cursorSprites[0].managed); - ManagedSprite_SetAnimateFlag(button->cursorSprites[0].managed, active); - } else { - for (int i = 0; i < 4; ++i) { - ManagedSprite_ResetSpriteAnimCtrlState(button->cursorSprites[i].managed); - ManagedSprite_SetAnimateFlag(button->cursorSprites[i].managed, active); - } - } - } - } - } -} diff --git a/src/application/pokegear/main/pokegear_cursor.c b/src/application/pokegear/main/pokegear_cursor.c new file mode 100644 index 0000000000..a092139f37 --- /dev/null +++ b/src/application/pokegear/main/pokegear_cursor.c @@ -0,0 +1,249 @@ +#include "application/pokegear/pokegear_internal.h" + +static u16 PokegearCursorManager_GetFreeCursorSlot(PokegearCursorManager *cursorManager); +static void PokegearCursorManager_UpdateCursorSpritePosition(PokegearCursorManager *cursorManager, u16 index); +static void PokegearCursorManager_UpdateActiveCursorPosition(PokegearCursorManager *cursorManager, u8 move); +static u8 PokegearCursorManager_SetCursorPosition(PokegearCursorManager *cursorManager, u16 index, u8 newIndex); + +PokegearCursorManager *PokegearCursorManager_Alloc(int count, enum HeapID heapID) { + PokegearCursorManager *ret = (PokegearCursorManager *)Heap_Alloc(heapID, sizeof(PokegearCursorManager)); + MI_CpuClear8(ret, sizeof(PokegearCursorManager)); + ret->count = count; + ret->cursors = Heap_Alloc(heapID, count * sizeof(PokegearCursor)); + MI_CpuClear8(ret->cursors, count * sizeof(PokegearCursor)); + return ret; +} + +void PokegearCursorManager_Free(PokegearCursorManager *cursorManager) { + for (int i = 0; i < cursorManager->count; ++i) { + if (cursorManager->cursors[i].active && cursorManager->cursors[i].grid != NULL) { + PokegearCursorManager_RemoveCursor(cursorManager, i); + } + } + MI_CpuClear8(cursorManager->cursors, cursorManager->count * sizeof(PokegearCursor)); + Heap_Free(cursorManager->cursors); + MI_CpuClear8(cursorManager, sizeof(PokegearCursorManager)); + Heap_Free(cursorManager); +} + +u16 PokegearCursorManager_AddButtons(PokegearCursorManager *cursorManager, const PokegearCursorGrid *buttonSpec, u8 numSpecs, u8 cursorPos, BOOL managedSprites, enum HeapID heapID, void *cursorSprite1, void *cursorSprite2, void *cursorSprite3, void *cursorSprite4) { + u16 index = PokegearCursorManager_GetFreeCursorSlot(cursorManager); + if (index == 0xFFFF) { + return 0xFFFF; + } + + PokegearCursor *button = &cursorManager->cursors[index]; + button->active = TRUE; + button->buttonsAre4Tiles = TRUE; + button->count = numSpecs; + button->lastIndex = button->count - 1; + button->grid = Heap_Alloc(heapID, button->count * sizeof(PokegearCursorGrid)); + MI_CpuCopy8(buttonSpec, button->grid, button->count * sizeof(PokegearCursorGrid)); + if (cursorPos >= button->count) { + button->cursorPos = 0; + } else { + button->cursorPos = cursorPos; + } + button->buttonsAreManagedSprite = managedSprites; + button->cursorSprites[0].raw = cursorSprite1; + button->cursorSprites[1].raw = cursorSprite2; + button->cursorSprites[2].raw = cursorSprite3; + button->cursorSprites[3].raw = cursorSprite4; + return index; +} + +BOOL PokegearCursorManager_RemoveCursor(PokegearCursorManager *cursorManager, u16 cursorIndex) { + if (cursorIndex >= cursorManager->count || !cursorManager->cursors[cursorIndex].active) { + return FALSE; + } + if (cursorManager->activeCursorIndex == cursorIndex) { + cursorManager->activeCursorIndex = 0xFFFF; + cursorManager->lastCursor = NULL; + } + MI_CpuClear8(cursorManager->cursors[cursorIndex].grid, cursorManager->cursors[cursorIndex].count * sizeof(PokegearCursorGrid)); + Heap_Free(cursorManager->cursors[cursorIndex].grid); + MI_CpuClear8(&cursorManager->cursors[cursorIndex], sizeof(PokegearCursor)); + return FALSE; +} + +static u16 PokegearCursorManager_GetFreeCursorSlot(PokegearCursorManager *cursorManager) { + for (u16 i = 0; i < cursorManager->count; ++i) { + if (!cursorManager->cursors[i].active) { + return i; + } + } + + return 0xFFFF; +} + +u16 PokegearCursorManager_SetCursorSpritesDrawState(PokegearCursorManager *cursorManager, u16 index, BOOL draw) { + PokegearCursor *button; + if (index == 0xFFFF) { + button = cursorManager->lastCursor; + } else if (index >= cursorManager->count || (button = &cursorManager->cursors[index], !button->active)) { + return 0xFFFF; + } + if (!button->buttonsAreManagedSprite) { + thunk_Sprite_SetDrawFlag(button->cursorSprites[0].unmanaged, draw); + if (button->buttonsAre4Tiles == TRUE) { + thunk_Sprite_SetDrawFlag(button->cursorSprites[1].unmanaged, draw); + thunk_Sprite_SetDrawFlag(button->cursorSprites[2].unmanaged, draw); + thunk_Sprite_SetDrawFlag(button->cursorSprites[3].unmanaged, draw); + } + } else { + ManagedSprite_SetDrawFlag(button->cursorSprites[0].managed, draw); + if (button->buttonsAre4Tiles == TRUE) { + ManagedSprite_SetDrawFlag(button->cursorSprites[1].managed, draw); + ManagedSprite_SetDrawFlag(button->cursorSprites[2].managed, draw); + ManagedSprite_SetDrawFlag(button->cursorSprites[3].managed, draw); + } + } + return index; +} + +static void PokegearCursorManager_UpdateCursorSpritePosition(PokegearCursorManager *cursorManager, u16 index) { + PokegearCursor *buttons; + if (index == 0xFFFF) { + buttons = cursorManager->lastCursor; + } else if (index >= cursorManager->count) { + return; + } else { + buttons = &cursorManager->cursors[index]; + } + + PokegearCursorGrid *spec = &buttons->grid[buttons->cursorPos]; + if (!buttons->buttonsAreManagedSprite) { + if (!buttons->buttonsAre4Tiles) { + Sprite_SetPositionXY(buttons->cursorSprites[0].unmanaged, spec->x, spec->y); + } else { + Sprite_SetPositionXY(buttons->cursorSprites[0].unmanaged, spec->x + spec->leftOffset, spec->y + spec->topOffset); + Sprite_SetPositionXY(buttons->cursorSprites[1].unmanaged, spec->x + spec->leftOffset, spec->y + spec->bottomOffset); + Sprite_SetPositionXY(buttons->cursorSprites[2].unmanaged, spec->x + spec->rightOffset, spec->y + spec->topOffset); + Sprite_SetPositionXY(buttons->cursorSprites[3].unmanaged, spec->x + spec->rightOffset, spec->y + spec->bottomOffset); + } + } else { + if (!buttons->buttonsAre4Tiles) { + ManagedSprite_SetPositionXY(buttons->cursorSprites[0].managed, spec->x, spec->y); + } else { + ManagedSprite_SetPositionXY(buttons->cursorSprites[0].managed, spec->x + spec->leftOffset, spec->y + spec->topOffset); + ManagedSprite_SetPositionXY(buttons->cursorSprites[1].managed, spec->x + spec->leftOffset, spec->y + spec->bottomOffset); + ManagedSprite_SetPositionXY(buttons->cursorSprites[2].managed, spec->x + spec->rightOffset, spec->y + spec->topOffset); + ManagedSprite_SetPositionXY(buttons->cursorSprites[3].managed, spec->x + spec->rightOffset, spec->y + spec->bottomOffset); + } + } +} + +u16 PokegearCursorManager_SetSpecIndexAndCursorPos(PokegearCursorManager *cursorManager, u16 index, u8 cursorPos) { + if (index >= cursorManager->count) { + return 0xFFFF; + } + cursorManager->lastCursor = &cursorManager->cursors[index]; + cursorManager->activeCursorIndex = index; + if (cursorPos != 0xFF) { + if (cursorPos >= cursorManager->cursors[index].count) { + cursorManager->cursors[index].cursorPos = 0; + } else { + cursorManager->cursors[index].cursorPos = cursorPos; + } + } + PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, 0xFFFF); + return index; +} + +u8 PokegearCursorManager_GetCursorPos(PokegearCursorManager *cursorManager) { + return cursorManager->lastCursor->cursorPos; +} + +u8 PokegearCursorManager_GetSpecCursorPos(PokegearCursorManager *cursorManager, u16 index) { + if (index == 0xFFFF) { + return cursorManager->lastCursor->cursorPos; + } else if (index >= cursorManager->count || !cursorManager->cursors[index].active) { + return 0; + } else { + return cursorManager->cursors[index].cursorPos; + } +} + +static void PokegearCursorManager_UpdateActiveCursorPosition(PokegearCursorManager *cursorManager, u8 move) { + if (cursorManager->lastCursor != NULL) { + PokegearCursorGrid *spec = &cursorManager->lastCursor->grid[cursorManager->lastCursor->cursorPos]; + u8 newIndex; + switch (move) { + case 1: + newIndex = spec->buttonRight; + break; + case 2: + newIndex = spec->buttonUp; + break; + case 3: + newIndex = spec->buttonDown; + break; + case 0: + default: + newIndex = spec->buttonLeft; + break; + } + if (newIndex <= cursorManager->lastCursor->lastIndex) { + cursorManager->lastCursor->cursorPos = newIndex; + } + } +} + +u8 PokegearCursorManager_MoveActiveCursor(PokegearCursorManager *cursorManager, u8 move) { + PokegearCursorManager_UpdateActiveCursorPosition(cursorManager, move); + PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, 0xFFFF); + return cursorManager->lastCursor->cursorPos; +} + +u8 PokegearCursorManager_SetActiveCursorPosition(PokegearCursorManager *cursorManager, u8 newIndex) { + return PokegearCursorManager_SetCursorPosition(cursorManager, cursorManager->activeCursorIndex, newIndex); +} + +static u8 PokegearCursorManager_SetCursorPosition(PokegearCursorManager *cursorManager, u16 index, u8 newIndex) { + PokegearCursor *button; + if (index == 0xFFFF) { + button = cursorManager->lastCursor; + index = cursorManager->activeCursorIndex; + } else if (index >= cursorManager->count || (button = &cursorManager->cursors[index], !button->active)) { + return 0; + } + if (button->lastIndex < newIndex) { + button->cursorPos = 0; + } else { + button->cursorPos = newIndex; + } + PokegearCursorManager_UpdateCursorSpritePosition(cursorManager, index); + return button->cursorPos; +} + +void PokegearCursorManager_SetCursorSpritesAnimateFlag(PokegearCursorManager *cursorManager, u16 index, BOOL active) { + if (index == 0xFFFF) { + index = cursorManager->activeCursorIndex; + } + if (index < cursorManager->count) { + PokegearCursor *button = &cursorManager->cursors[index]; + if (button->active) { + if (!button->buttonsAreManagedSprite) { + if (!button->buttonsAre4Tiles) { + Sprite_ResetAnimCtrlState(button->cursorSprites[0].unmanaged); + thunk_Sprite_SetAnimationFlag(button->cursorSprites[0].unmanaged, active); + } else { + for (int i = 0; i < 4; ++i) { + Sprite_ResetAnimCtrlState(button->cursorSprites[i].unmanaged); + thunk_Sprite_SetAnimationFlag(button->cursorSprites[i].unmanaged, active); + } + } + } else { + if (!button->buttonsAre4Tiles) { + ManagedSprite_ResetSpriteAnimCtrlState(button->cursorSprites[0].managed); + ManagedSprite_SetAnimateFlag(button->cursorSprites[0].managed, active); + } else { + for (int i = 0; i < 4; ++i) { + ManagedSprite_ResetSpriteAnimCtrlState(button->cursorSprites[i].managed); + ManagedSprite_SetAnimateFlag(button->cursorSprites[i].managed, active); + } + } + } + } + } +} diff --git a/src/application/pokegear/main/pokegear_main.c b/src/application/pokegear/main/pokegear_main.c index acd0a2f2a3..e39fe79d1a 100644 --- a/src/application/pokegear/main/pokegear_main.c +++ b/src/application/pokegear/main/pokegear_main.c @@ -68,7 +68,7 @@ BOOL Pokegear_Init(OverlayManager *man, int *state) { pokegearApp->profile = Save_PlayerData_GetProfile(pokegearApp->args->saveData); pokegearApp->registeredCards = Pokegear_GetRegisteredCardsArray(pokegearApp->savePokegear); pokegearApp->menuInputState = MenuInputStateMgr_GetState(pokegearApp->args->menuInputStatePtr); - pokegearApp->backgroundStyle = Pokegear_GetBackgroundStyle(pokegearApp->savePokegear); + pokegearApp->skin = Pokegear_GetSkin(pokegearApp->savePokegear); switch (pokegearApp->args->isScriptedLaunch) { case 1: // scripted phone call pokegearApp->app = GEAR_APP_PHONE; @@ -167,9 +167,9 @@ void PokegearApp_VBlankCB(void *cb_args) { } if (pokegearApp->spriteSystem != NULL) { - if (pokegearApp->unk_094 != NULL) { + if (pokegearApp->uiManager != NULL) { PokegearApp_UpdateClockSprites(pokegearApp, 0); - ov100_021E6AB0(pokegearApp->unk_094); + PokegearUIManager_AnimateSprites(pokegearApp->uiManager); } PokegearApp_DrawSprites(pokegearApp); SpriteSystem_TransferOam(); diff --git a/src/application/pokegear/map/overlay_101_021E7FF4.c b/src/application/pokegear/map/overlay_101_021E7FF4.c index 8dab5d403c..d0ae69ae77 100644 --- a/src/application/pokegear/map/overlay_101_021E7FF4.c +++ b/src/application/pokegear/map/overlay_101_021E7FF4.c @@ -43,13 +43,13 @@ BOOL PokegearMap_LoadGFX(PokegearMapAppData *mapApp) { PokegearMap_InitBGs(mapApp); break; case 1: - PokegearMap_LoadGraphics(mapApp, mapApp->pokegear->backgroundStyle); + PokegearMap_LoadGraphics(mapApp, mapApp->pokegear->skin); PokegearMap_InitWindows(mapApp); PokegearMap_InitMsg(mapApp); break; case 2: PokegearMap_CreateObjectsManager(mapApp); - PokegearMap_LoadPalettes(mapApp, mapApp->pokegear->backgroundStyle); + PokegearMap_LoadPalettes(mapApp, mapApp->pokegear->skin); PokegearMap_LoadSprites(mapApp); break; case 3: diff --git a/src/application/pokegear/map/overlay_101_021EB568.c b/src/application/pokegear/map/overlay_101_021EB568.c index 54bd2420ac..f75e4ac9a0 100644 --- a/src/application/pokegear/map/overlay_101_021EB568.c +++ b/src/application/pokegear/map/overlay_101_021EB568.c @@ -24,7 +24,7 @@ static void PokegearMap_MarkingsMenu_ReturnToTopLevel(PokegearMapAppData *mapApp static void PokegearMap_MarkingsMenu_DeleteSelected(PokegearMapAppData *mapApp, u8 kind, u8 index); static void ov101_021ED204(PokegearMapAppData *mapApp, u8 slot); -int ov101_021EB568(PokegearMapAppData *mapApp) { +int PokegearMap_HandleKeyInput(PokegearMapAppData *mapApp) { int ret; if ((gSystem.newKeys & PAD_BUTTON_B) && !mapApp->unk_139_2) { @@ -45,7 +45,7 @@ int ov101_021EB568(PokegearMapAppData *mapApp) { return -1; } -int ov101_021EB5DC(PokegearMapAppData *mapApp, BOOL *pRetIsTouch) { +int PokegearMap_HandleTouchInput(PokegearMapAppData *mapApp, BOOL *pRetIsTouch) { int ret = -1; if (!mapApp->unk_139_3) { diff --git a/src/application/pokegear/map/pokegear_map.c b/src/application/pokegear/map/pokegear_map.c index cbc672336f..cd63fe1f4f 100644 --- a/src/application/pokegear/map/pokegear_map.c +++ b/src/application/pokegear/map/pokegear_map.c @@ -19,8 +19,8 @@ FS_EXTERN_OVERLAY(OVY_26); static BOOL IsMapSinjoh(u16 mapID); static BOOL IsMapSSAqua(u16 mapID); -static void ov101_021E78EC(PokegearMapAppData *mapApp); -static void ov101_021E7B54(PokegearMapAppData *mapApp); +static void PokegearMap_InitInternal(PokegearMapAppData *mapApp); +static void PokegearMap_ExitInternal(PokegearMapAppData *mapApp); static int PokegearMap_MainTask_LoadGFX(PokegearMapAppData *mapApp); static int PokegearMap_MainTask_HandleInput(PokegearMapAppData *mapApp); static int PokegearMap_MainTask_UnloadGFX(PokegearMapAppData *mapApp); @@ -47,7 +47,7 @@ BOOL PokegearMap_Init(OverlayManager *man, int *state) { memset(mapApp, 0, sizeof(PokegearMapAppData)); mapApp->pokegear = pokegearApp; mapApp->heapID = HEAP_ID_POKEGEAR_APP; - ov101_021E78EC(mapApp); + PokegearMap_InitInternal(mapApp); mapApp->locationSpecs = sLocationSpecs; mapApp->numLocationSpecs = NELEMS(sLocationSpecs); return TRUE; @@ -101,7 +101,7 @@ BOOL PokegearMap_Exit(OverlayManager *man, int *state) { enum HeapID heapID; PokegearMapAppData *mapApp = OverlayManager_GetData(man); - ov101_021E7B54(mapApp); + PokegearMap_ExitInternal(mapApp); MapMatrix_MapData_Free(mapApp->mapData); if (mapApp->pokegear->appReturnCode != GEAR_RETURN_CANCEL) { mapApp->pokegear->isSwitchApp = TRUE; @@ -151,7 +151,7 @@ static BOOL IsMapSSAqua(u16 mapID) { return FALSE; } -static void ov101_021E78EC(PokegearMapAppData *mapApp) { +static void PokegearMap_InitInternal(PokegearMapAppData *mapApp) { int i; MapMarkingsHeapNode *mapMarkingsHeapNode; RoamerSaveData *roamers; @@ -214,7 +214,7 @@ static void ov101_021E78EC(PokegearMapAppData *mapApp) { } } -static void ov101_021E7B54(PokegearMapAppData *mapApp) { +static void PokegearMap_ExitInternal(PokegearMapAppData *mapApp) { Heap_Free(mapApp->phoneContact); FreePhoneBook(mapApp->phoneBook); mapApp->pokegear->reselectAppCB = NULL; @@ -238,13 +238,13 @@ static int PokegearMap_MainTask_HandleInput(PokegearMapAppData *mapApp) { BOOL isTouch = FALSE; int input; - input = ov101_021EB5DC(mapApp, &isTouch); + input = PokegearMap_HandleTouchInput(mapApp, &isTouch); if (!isTouch) { PokegearApp_HandleInputModeChangeToButtons(mapApp->pokegear); if (mapApp->pokegear->cursorInAppSwitchZone == TRUE) { input = PokegearApp_HandleKeyInput_SwitchApps(mapApp->pokegear); } else { - input = ov101_021EB568(mapApp); + input = PokegearMap_HandleKeyInput(mapApp); } } mapApp->pokegear->appReturnCode = input; diff --git a/src/application/pokegear/phone/overlay_101_021F017C.c b/src/application/pokegear/phone/overlay_101_021F017C.c index 3b443b4f03..320be2869e 100644 --- a/src/application/pokegear/phone/overlay_101_021F017C.c +++ b/src/application/pokegear/phone/overlay_101_021F017C.c @@ -1,5 +1,6 @@ #include "global.h" +#include "application/pokegear/phone/pgphone_gra.naix" #include "application/pokegear/phone/phone_internal.h" #include "msgdata/msg.naix" #include "msgdata/msg/msg_0271.h" @@ -343,11 +344,11 @@ void ov101_021F0260(PokegearPhoneAppData *phoneApp) { void ov101_021F0284(PokegearPhoneAppData *phoneApp) { FontID_Alloc(4, phoneApp->heapID); - NARC *narc = NARC_New(NARC_a_1_4_6, phoneApp->heapID); - BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_a_1_4_6, phoneApp->backgroundStyle + 28, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_CHAR, 0, 0); - BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_a_1_4_6, phoneApp->backgroundStyle + 16, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_CHAR, 0, 0); - BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_a_1_4_6, phoneApp->backgroundStyle + 22, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_SCRN, 0, 0); - phoneApp->pNscrFile = GfGfxLoader_GetScrnDataFromOpenNarc(narc, phoneApp->backgroundStyle + 34, FALSE, &phoneApp->screenData, phoneApp->heapID); + NARC *narc = NARC_New(NARC_application_pokegear_phone_pgphone_gra, phoneApp->heapID); + BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_application_pokegear_phone_pgphone_gra, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000028_NCGR, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_CHAR, 0, 0); + BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_application_pokegear_phone_pgphone_gra, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000016_NCGR, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_CHAR, 0, 0); + BgConfig_LoadAssetFromOpenNarc(phoneApp->pokegear->bgConfig, phoneApp->heapID, narc, NARC_application_pokegear_phone_pgphone_gra, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000022_NSCR, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_SCRN, 0, 0); + phoneApp->pNscrFile = GfGfxLoader_GetScrnDataFromOpenNarc(narc, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000034_NSCR, FALSE, &phoneApp->screenData, phoneApp->heapID); CopyToBgTilemapRect(phoneApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2, 0, 0, 32, 20, phoneApp->screenData->rawData, 0, 0, phoneApp->screenData->screenWidth / 8, phoneApp->screenData->screenHeight / 8); NARC_Delete(narc); ScheduleBgTilemapBufferTransfer(phoneApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2); @@ -360,11 +361,11 @@ void ov101_021F0370(PokegearPhoneAppData *phoneApp) { } void ov101_021F0388(PokegearPhoneAppData *phoneApp) { - NARC *narc = NARC_New(NARC_a_1_4_6, phoneApp->heapID); - PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, phoneApp->backgroundStyle + 10, phoneApp->heapID, PLTTBUF_MAIN_BG, 0x1C0, 0, 0); - PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, phoneApp->backgroundStyle + 4, phoneApp->heapID, PLTTBUF_SUB_BG, 0x180, 0, 0); - PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, 0, phoneApp->heapID, PLTTBUF_MAIN_OBJ, 0x160, 0x40, 0); - PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, 0, phoneApp->heapID, PLTTBUF_SUB_OBJ, 0x160, 0x40, 0); + NARC *narc = NARC_New(NARC_application_pokegear_phone_pgphone_gra, phoneApp->heapID); + PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000010_NCLR, phoneApp->heapID, PLTTBUF_MAIN_BG, 0x1C0, 0, 0); + PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, phoneApp->skin + NARC_pgphone_gra_pgphone_gra_00000004_NCLR, phoneApp->heapID, PLTTBUF_SUB_BG, 0x180, 0, 0); + PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, NARC_pgphone_gra_pgphone_gra_00000000_NCLR, phoneApp->heapID, PLTTBUF_MAIN_OBJ, 0x160, 0x40, 0); + PaletteData_LoadFromOpenNarc(phoneApp->pokegear->plttData, narc, NARC_pgphone_gra_pgphone_gra_00000000_NCLR, phoneApp->heapID, PLTTBUF_SUB_OBJ, 0x160, 0x40, 0); PaletteData_SetAutoTransparent(phoneApp->pokegear->plttData, TRUE); PaletteData_BlendPalette(phoneApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0xE0, 16, RGB_BLACK); PaletteData_BlendPalette(phoneApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0x40, 0xC0, 16, RGB_BLACK); diff --git a/src/application/pokegear/phone/pokegear_phone.c b/src/application/pokegear/phone/pokegear_phone.c index a6d40b18a7..d60024c9e5 100644 --- a/src/application/pokegear/phone/pokegear_phone.c +++ b/src/application/pokegear/phone/pokegear_phone.c @@ -104,7 +104,7 @@ BOOL PokegearPhone_Exit(OverlayManager *man, int *state) { static void PokegearPhone_LoadContactsAndInitFromArgs(PokegearPhoneAppData *phoneApp) { phoneApp->pokegear->childAppdata = phoneApp; phoneApp->pokegear->reselectAppCB = PokegearPhone_OnReselectApp; - phoneApp->backgroundStyle = Pokegear_GetBackgroundStyle(phoneApp->pokegear->savePokegear); + phoneApp->skin = Pokegear_GetSkin(phoneApp->pokegear->savePokegear); phoneApp->saveContacts = SavePokegear_AllocAndCopyPhonebook(phoneApp->pokegear->savePokegear, phoneApp->heapID); phoneApp->numContacts = SavePokegear_FindEmptyPhonebookSlot(phoneApp->pokegear->savePokegear); PokegearPhone_ContactList_CreateLinkedList(phoneApp); diff --git a/src/application/pokegear/radio/overlay_101_021F49F8.c b/src/application/pokegear/radio/overlay_101_021F49F8.c index bf24b04d92..2c66b08da9 100644 --- a/src/application/pokegear/radio/overlay_101_021F49F8.c +++ b/src/application/pokegear/radio/overlay_101_021F49F8.c @@ -2,6 +2,7 @@ #include "constants/radio_station.h" +#include "application/pokegear/radio/pgradio_gra.naix" #include "application/pokegear/radio/radio_internal.h" #include "font.h" @@ -300,13 +301,13 @@ void Radio_UnloadBGs(PokegearRadioAppData *radioApp) { void Radio_LoadGraphics(PokegearRadioAppData *radioApp) { FontID_Alloc(4, radioApp->heapID); - NARC *narc = NARC_New(NARC_a_1_4_7, radioApp->heapID); - BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_a_1_4_7, radioApp->backgroundStyle + 16, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_CHAR, 0, 0); - BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_a_1_4_7, radioApp->backgroundStyle + 34, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_CHAR, 0, 0); - BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_a_1_4_7, radioApp->backgroundStyle + 22, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_SCRN, 0x800, 0); - BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_a_1_4_7, radioApp->backgroundStyle + 28, GF_BG_LYR_MAIN_3, GF_BG_GFX_TYPE_SCRN, 0x800, 0); - BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_a_1_4_7, radioApp->backgroundStyle + 40, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_SCRN, 0x800, 0); - radioApp->pNSCR = GfGfxLoader_GetScrnDataFromOpenNarc(narc, radioApp->backgroundStyle + 22, FALSE, &radioApp->screenData, radioApp->heapID); + NARC *narc = NARC_New(NARC_application_pokegear_radio_pgradio_gra, radioApp->heapID); + BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_application_pokegear_radio_pgradio_gra, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000016_NCGR, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_CHAR, 0, 0); + BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_application_pokegear_radio_pgradio_gra, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000034_NCGR, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_CHAR, 0, 0); + BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_application_pokegear_radio_pgradio_gra, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000022_NSCR, GF_BG_LYR_MAIN_2, GF_BG_GFX_TYPE_SCRN, 0x800, 0); + BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_application_pokegear_radio_pgradio_gra, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000028_NSCR, GF_BG_LYR_MAIN_3, GF_BG_GFX_TYPE_SCRN, 0x800, 0); + BgConfig_LoadAssetFromOpenNarc(radioApp->pokegear->bgConfig, radioApp->heapID, narc, NARC_application_pokegear_radio_pgradio_gra, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000040_NSCR, GF_BG_LYR_SUB_3, GF_BG_GFX_TYPE_SCRN, 0x800, 0); + radioApp->pNSCR = GfGfxLoader_GetScrnDataFromOpenNarc(narc, radioApp->skin + 22, FALSE, &radioApp->screenData, radioApp->heapID); NARC_Delete(narc); ScheduleBgTilemapBufferTransfer(radioApp->pokegear->bgConfig, GF_BG_LYR_MAIN_2); ScheduleBgTilemapBufferTransfer(radioApp->pokegear->bgConfig, GF_BG_LYR_SUB_3); @@ -318,12 +319,12 @@ void Radio_UnloadGraphics(PokegearRadioAppData *radioApp) { } void Radio_LoadPalettes(PokegearRadioAppData *radioApp) { - NARC *narc = NARC_New(NARC_a_1_4_7, radioApp->heapID); + NARC *narc = NARC_New(NARC_application_pokegear_radio_pgradio_gra, radioApp->heapID); - PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, radioApp->backgroundStyle + 10, radioApp->heapID, PLTTBUF_MAIN_BG, 0x1C0, 0, 0); - PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, radioApp->backgroundStyle + 4, radioApp->heapID, PLTTBUF_SUB_BG, 0x180, 0, 0); - PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, 0, radioApp->heapID, PLTTBUF_MAIN_OBJ, 0x180, 0x40, 0); - PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, 0, radioApp->heapID, PLTTBUF_SUB_OBJ, 0x180, 0x40, 0); + PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000010_NCLR, radioApp->heapID, PLTTBUF_MAIN_BG, 0x1C0, 0, 0); + PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, radioApp->skin + NARC_pgradio_gra_pgradio_gra_00000004_NCLR, radioApp->heapID, PLTTBUF_SUB_BG, 0x180, 0, 0); + PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, NARC_pgradio_gra_pgradio_gra_00000000_NCLR, radioApp->heapID, PLTTBUF_MAIN_OBJ, 0x180, 0x40, 0); + PaletteData_LoadFromOpenNarc(radioApp->pokegear->plttData, narc, NARC_pgradio_gra_pgradio_gra_00000000_NCLR, radioApp->heapID, PLTTBUF_SUB_OBJ, 0x180, 0x40, 0); PaletteData_SetAutoTransparent(radioApp->pokegear->plttData, TRUE); PaletteData_BlendPalette(radioApp->pokegear->plttData, PLTTBUF_MAIN_BG, 0, 0xE0, 16, RGB_BLACK); PaletteData_BlendPalette(radioApp->pokegear->plttData, PLTTBUF_MAIN_OBJ, 0x40, 0xC0, 16, RGB_BLACK); diff --git a/src/application/pokegear/radio/pokegear_radio.c b/src/application/pokegear/radio/pokegear_radio.c index 16f1aedab6..c15c7ccb2c 100644 --- a/src/application/pokegear/radio/pokegear_radio.c +++ b/src/application/pokegear/radio/pokegear_radio.c @@ -83,7 +83,7 @@ void Radio_Load(PokegearRadioAppData *radioApp) { radioApp->pokegear->childAppdata = radioApp; radioApp->pokegear->reselectAppCB = Radio_OnReselectApp; radioApp->pokegear->deselectAppCB = Radio_UnknownCB; - radioApp->backgroundStyle = Pokegear_GetBackgroundStyle(radioApp->pokegear->savePokegear); + radioApp->skin = Pokegear_GetSkin(radioApp->pokegear->savePokegear); Pokegear_GetRadioCursorCoords(radioApp->pokegear->savePokegear, &radioApp->cursorX, &radioApp->cursorY); radioApp->selectedButton = 3; radioApp->stationSelection = Radio_GetAvailableChannels(radioApp); diff --git a/src/encounter.c b/src/encounter.c index b9ed492268..13ea7a4794 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -11,6 +11,7 @@ #include "frontier/overlay_80.h" #include "blackout.h" +#include "catching_show.h" #include "field_system.h" #include "field_warp_tasks.h" #include "game_clear.h" @@ -20,7 +21,6 @@ #include "map_object.h" #include "overlay_02.h" #include "overlay_03.h" -#include "catching_show.h" #include "pokedex_util.h" #include "save_arrays.h" #include "save_local_field_data.h" diff --git a/src/get_egg.c b/src/get_egg.c index 398d566ac3..7e36998b01 100644 --- a/src/get_egg.c +++ b/src/get_egg.c @@ -819,16 +819,16 @@ static u8 Save_Daycare_CalcCompatibilityInternal(Daycare *dayCare) { } static const u16 sEggCycleSpecialDates[] = { - 112, // Jan 1st, New Years - 214, // Feb 14th, Valentine's Day - 303, // March 3rd - 401, // April 1st, April Fools - 501, // May 1st, Emerald US release date - 611, // June 11th - 707, // July 7th - 821, // August 21st - 907, // September 7th - 928, // September 28th, Diamond/Pearl JP release date + 112, // Jan 1st, New Years + 214, // Feb 14th, Valentine's Day + 303, // March 3rd + 401, // April 1st, April Fools + 501, // May 1st, Emerald US release date + 611, // June 11th + 707, // July 7th + 821, // August 21st + 907, // September 7th + 928, // September 28th, Diamond/Pearl JP release date 1031, // October 31st, Halloween 1121, // November 21st, Ruby/Sapphire JP release date 1214, // December 14th, Crystal JP release date diff --git a/src/launch_application.c b/src/launch_application.c index ac784a25d4..a0bf1642c0 100644 --- a/src/launch_application.c +++ b/src/launch_application.c @@ -7,6 +7,7 @@ #include "application/pokegear/pokegear_main.h" #include "application/view_rankings.h" #include "battle/battle_022378C0.h" +#include "pokeathlon/pokeathlon.h" #include "alph_puzzle.h" #include "bag_view.h" @@ -52,7 +53,6 @@ #include "overlay_73.h" #include "overlay_86.h" #include "overlay_87.h" -#include "pokeathlon/pokeathlon.h" #include "overlay_99.h" #include "overlay_manager.h" #include "overlay_trainer_card.h" diff --git a/src/save_pokegear.c b/src/save_pokegear.c index ae98ccc7c0..1f1412e590 100644 --- a/src/save_pokegear.c +++ b/src/save_pokegear.c @@ -28,7 +28,7 @@ PhoneCallPersistentState *SaveData_GetPhoneCallPersistentState(SaveData *saveDat static void SavePokegear_Init_Internal(SavePokegear *pokegear) { MI_CpuClear8(pokegear, sizeof(SavePokegear)); pokegear->lastUsedApp = 3; - pokegear->backgroundStyle = 0; + pokegear->skin = 0; pokegear->unk_1 = 0; pokegear->unk_3 = 128; pokegear->unk_2 = pokegear->unk_3; @@ -82,16 +82,16 @@ u8 Pokegear_GetMapUnlockLevel(SavePokegear *pokegear) { return pokegear->mapUnlockLevel; } -u32 Pokegear_GetBackgroundStyle(SavePokegear *pokegear) { - return pokegear->backgroundStyle; +u32 Pokegear_GetSkin(SavePokegear *pokegear) { + return pokegear->skin; } -void Pokegear_SetBackgroundStyle(SavePokegear *pokegear, u32 newStyle) { - pokegear->backgroundStyle = newStyle; +void Pokegear_SetSkin(SavePokegear *pokegear, u32 skin) { + pokegear->skin = skin; } -u16 sub_0202EE98(SavePokegear *pokegear) { - return pokegear->unk_4_0; +u16 Pokegear_GetUnlockedSkins(SavePokegear *pokegear) { + return pokegear->unlockedSkins; } BOOL sub_0202EEA4(SavePokegear *pokegear) { diff --git a/src/scrcmd_12.c b/src/scrcmd_12.c index 299aeb2780..d683a073a8 100644 --- a/src/scrcmd_12.c +++ b/src/scrcmd_12.c @@ -1,5 +1,5 @@ -#include "field_system.h" #include "catching_show.h" +#include "field_system.h" #include "pokedex.h" #include "save_arrays.h" #include "save_pokegear.h" diff --git a/src/touchscreen_list_menu.c b/src/touchscreen_list_menu.c index b5c2c5207d..5856557f89 100644 --- a/src/touchscreen_list_menu.c +++ b/src/touchscreen_list_menu.c @@ -13,7 +13,7 @@ #include "text.h" #include "unk_02005D10.h" -static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent, int alignment); +static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent, enum TouchscreenListMenuTextAlignment alignment); static void TouchscreenListMenuSpawner_ScheduleLoadGraphicsToVram(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, PaletteData *paletteData, enum HeapID heapID); static void Task_LoadTouchscreenListMenuGraphicsToVram(SysTask *task, void *taskData); static u8 TouchscreenListMenu_GetItemsTextMaxWidth(LISTMENUITEM *listMenuItem, u8 num, FontID fontId, u8 margin); @@ -48,7 +48,7 @@ void TouchscreenListMenuSpawner_Destroy(TouchscreenListMenuSpawner *spawner) { Heap_Free(spawner); } -static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent, int alignment) { +static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent, enum TouchscreenListMenuTextAlignment alignment) { TouchscreenListMenu *ret = Heap_Alloc(spawner->heapID, sizeof(TouchscreenListMenu)); MI_CpuClear8(ret, sizeof(TouchscreenListMenu)); MI_CpuCopy8(header, &ret->header, sizeof(TouchscreenListMenuHeader)); @@ -72,10 +72,10 @@ static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMe switch (alignment) { default: GF_ASSERT(FALSE); - case 0: + case TSMENU_ALIGN_LEFT: ret->x = x; break; - case 1: + case TSMENU_ALIGN_CENTER: ret->width = (ret->width + 1) & ~1; if (x - (ret->width + 2) / 2 < 0) { ret->x = 0; @@ -83,7 +83,7 @@ static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMe ret->x = x - (ret->width + 2) / 2; } break; - case 2: + case TSMENU_ALIGN_RIGHT: if (x - (ret->width + 2) < 0) { ret->x = 0; } else { @@ -102,15 +102,15 @@ static TouchscreenListMenu *TouchscreenListMenu_CreateInternal(TouchscreenListMe } TouchscreenListMenu *TouchscreenListMenu_Create(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection) { - return TouchscreenListMenu_CreateInternal(spawner, header, isTouch, x, y, width, selection, NULL, NULL, FALSE, 0); + return TouchscreenListMenu_CreateInternal(spawner, header, isTouch, x, y, width, selection, NULL, NULL, FALSE, TSMENU_ALIGN_LEFT); } -TouchscreenListMenu *TouchscreenListMenu_CreateWithAlignment(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, int alignment) { +TouchscreenListMenu *TouchscreenListMenu_CreateWithAlignment(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, enum TouchscreenListMenuTextAlignment alignment) { return TouchscreenListMenu_CreateInternal(spawner, header, isTouch, x, y, width, selection, NULL, NULL, FALSE, alignment); } TouchscreenListMenu *TouchscreenListMenu_CreateWithCallback(TouchscreenListMenuSpawner *spawner, TouchscreenListMenuHeader *header, u8 isTouch, u8 x, u8 y, u8 width, u8 selection, TouchscreenListMenuCallback callback, void *callbackArg, BOOL silent) { - return TouchscreenListMenu_CreateInternal(spawner, header, isTouch, x, y, width, selection, callback, callbackArg, silent, 0); + return TouchscreenListMenu_CreateInternal(spawner, header, isTouch, x, y, width, selection, callback, callbackArg, silent, TSMENU_ALIGN_LEFT); } u8 TouchscreenListMenu_WasLastInputTouch(TouchscreenListMenu *menu) { diff --git a/src/trainer_memo.c b/src/trainer_memo.c index 492e9ef5a9..8229892ed5 100644 --- a/src/trainer_memo.c +++ b/src/trainer_memo.c @@ -663,12 +663,12 @@ static MetCondition MonMetCondition(Pokemon *mon, BOOL isMine) { } if ((GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_LINK_TRADE))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_DAY_CARE_COUPLE))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_TRAVELING_MAN))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_RILEY))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_CYNTHIA))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_MR_POKEMON))) - || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_PRIMO)))) { + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_DAY_CARE_COUPLE))) + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_TRAVELING_MAN))) + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_RILEY))) + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_CYNTHIA))) + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_MR_POKEMON))) + || (GetMonData(mon, MON_DATA_EGG_LOCATION, NULL) == sub_02017FE4(MAPSECTYPE_GIFT, MAPLOC(METLOC_PRIMO)))) { if (isMine == TRUE) { return MET_CONDITION_EGG_HATCHED_GIFT; } diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp index fd304bb444..67aa477550 100644 --- a/tools/jsonproc/jsonproc.cpp +++ b/tools/jsonproc/jsonproc.cpp @@ -213,13 +213,13 @@ int main(int argc, char *argv[]) int num = args.at(0)->get(); int ndigits = args.at(1)->get(); int format = args.at(2)->get(); - char buf[ndigits + 1]; + std::string buf; + buf.reserve(ndigits); bool printing_zeros = (format == 2); int pow10 = 1; for (int i = 1; i < ndigits; i++) { pow10 *= 10; } - char *ptr = buf; while (pow10 > 0) { div_t div_result = div(num, pow10); num = div_result.rem; @@ -231,17 +231,16 @@ int main(int argc, char *argv[]) printing_zeros = true; } else { if (format == 1) { - *ptr++ = ' '; + buf.push_back(' '); } continue; } } if (div_result.quot != 0 || printing_zeros) { - *ptr++ = '0' + div_result.quot; + buf.push_back('0' + div_result.quot); } } - *ptr = 0; - return string{buf}; + return buf; }); env.add_void_callback("error", 1, [](Arguments& args) {