diff options
-rw-r--r-- | battle/core.asm | 102 | ||||
-rwxr-xr-x | engine/mysterygift.asm | 170 | ||||
-rwxr-xr-x | engine/mysterygift2.asm | 2 | ||||
-rw-r--r-- | hram.asm | 9 |
4 files changed, 115 insertions, 168 deletions
diff --git a/battle/core.asm b/battle/core.asm index 1abecba4c..ee362be41 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -116,8 +116,6 @@ DoBattle: ; 3c000 jp BattleMenu ; 3c0e5 - - WildFled_EnemyFled_LinkBattleCanceled: ; 3c0e5 call Call_LoadTempTileMapToTileMap ld a, [wBattleResult] @@ -160,7 +158,6 @@ WildFled_EnemyFled_LinkBattleCanceled: ; 3c0e5 ret ; 3c12f - BattleTurn: ; 3c12f .loop call MobileFn_3c1bf @@ -252,7 +249,6 @@ MobileFn_3c1bf: mobile ret ; 3c1d6 - HandleBetweenTurnEffects: ; 3c1d6 ld a, [hLinkPlayerNumber] cp $1 @@ -769,7 +765,6 @@ HandleEncore: ; 3c4df jp StdBattleTextBox ; 3c543 - TryEnemyFlee: ; 3c543 ld a, [wBattleMode] dec a @@ -861,7 +856,6 @@ AlwaysFleeMons: ; 3c5b1 db -1 ; 3c5b4 - CompareMovePriority: ; 3c5b4 ; Compare the priority of the player and enemy's moves. ; Return carry if the player goes first, or z if they match. @@ -915,7 +909,6 @@ MoveEffectPriorities: ; 3c5df db -1 ; 3c5ec - GetMoveEffect: ; 3c5ec ld a, b dec a @@ -928,7 +921,6 @@ GetMoveEffect: ; 3c5ec ret ; 3c5fe - Battle_EnemyFirst: ; 3c5fe call LoadTileMapToTempTileMap call TryEnemyFlee @@ -1695,7 +1687,6 @@ HandleSafeguard: ; 3cafb ld hl, BattleText_SafeguardFaded jp StdBattleTextBox - HandleScreens: ; 3cb36 ld a, [hLinkPlayerNumber] cp 1 @@ -1739,7 +1730,6 @@ HandleScreens: ; 3cb36 db "Enemy@" ; 3cb80 - .LightScreenTick: ; 3cb80 ld a, [de] dec a @@ -1878,7 +1868,6 @@ SubtractHPFromUser: ; 3cc3f jp UpdateHPBarBattleHuds ; 3cc45 - SubtractHP: ; 3cc45 ld hl, BattleMonHP ld a, [hBattleTurn] @@ -1925,7 +1914,6 @@ GetSixteenthMaxHP: ; 3cc76 ret ; 3cc83 - GetEighthMaxHP: ; 3cc83 ; output: bc call GetQuarterMaxHP @@ -1941,7 +1929,6 @@ GetEighthMaxHP: ; 3cc83 ret ; 3cc8e - GetQuarterMaxHP: ; 3cc8e ; output: bc call GetMaxHP @@ -1962,7 +1949,6 @@ GetQuarterMaxHP: ; 3cc8e ret ; 3cc9f - GetHalfMaxHP: ; 3cc9f ; output: bc call GetMaxHP @@ -1980,7 +1966,6 @@ GetHalfMaxHP: ; 3cc9f ret ; 3ccac - GetMaxHP: ; 3ccac ; output: bc, Buffer1-2 @@ -2036,7 +2021,6 @@ CheckUserHasEnoughHP: ; 3ccde ret ; 3ccef - RestoreHP ; 3ccef ld hl, EnemyMonMaxHP ld a, [hBattleTurn] @@ -2349,8 +2333,6 @@ IsAnyMonHoldingExpShare: ; 3ceaa ret ; 3ceec - - StopDangerSound: ; 3ceec xor a ld [Danger], a @@ -2622,7 +2604,6 @@ WinTrainerBattle: ; 3cfa4 dw SentAllToMomText ; 3d0b1 - .CheckMaxedOutMomMoney: ; 3d0b1 ld hl, wMomsMoney + 2 ld a, [hld] @@ -2705,8 +2686,6 @@ PlayVictoryMusic: ; 3d0ea ret ; 3d123 - - ; These functions check if the current opponent is a gym leader or one of a ; few other special trainers. @@ -2760,7 +2739,6 @@ KantoGymLeaders: db BLUE db -1 - HandlePlayerMonFaint: ; 3d14e call FaintYourPokemon ld hl, EnemyMonHP @@ -2961,7 +2939,6 @@ PlayerPartyMonEntrance: ; 3d2b3 jp SpikesDamage ; 3d2e0 - CheckMobileBattleError: ; 3d2e0 ld a, [wLinkMode] cp LINK_MOBILE @@ -3060,7 +3037,6 @@ ForcePickPartyMonInBattle: ; 3d362 jr .pick ; 3d375 - PickSwitchMonInBattle: ; 3d375 .pick call PickPartyMonInBattle @@ -3085,7 +3061,6 @@ ForcePickSwitchMonInBattle: ; 3d380 ret ; 3d38e - LostBattle: ; 3d38e ld a, 1 ld [BattleEnded], a @@ -3182,7 +3157,6 @@ LostBattle: ; 3d38e ret ; 3d432 - EnemyMonFaintedAnimation: ; 3d432 hlcoord 12, 5 decoord 12, 6 @@ -3250,7 +3224,6 @@ MonFaintedAnimation: ; 3d444 db " @" ; 3d490 - SlideBattlePicOut: ; 3d490 ld [hMapObjectIndexBuffer], a ld c, a @@ -3297,7 +3270,6 @@ SlideBattlePicOut: ; 3d490 ret ; 3d4c3 - ForceEnemySwitch: ; 3d4c3 call ResetEnemyBattleVars ld a, [wEnemySwitchMonIndex] @@ -3313,7 +3285,6 @@ ForceEnemySwitch: ; 3d4c3 ret ; 3d4e1 - EnemySwitch: ; 3d4e1 call CheckWhetherToAskSwitch jr nc, EnemySwitch_SetMode @@ -3846,7 +3817,6 @@ CheckPlayerPartyForFitPkmn: ; 3d873 ret ; 3d887 - CheckIfCurPartyMonIsFitToFight: ; 3d887 ld a, [CurPartyMon] ld hl, PartyMon1HP @@ -3878,7 +3848,6 @@ CheckIfCurPartyMonIsFitToFight: ; 3d887 ret ; 3d8b3 - TryToRunAwayFromBattle: ; 3d8b3 ; Run away from battle, with or without item ld a, [BattleType] @@ -4068,7 +4037,6 @@ TryToRunAwayFromBattle: ; 3d8b3 ret ; 3da0d - InitBattleMon: ; 3da0d ld a, MON_SPECIES call GetPartyParamLocation @@ -4159,7 +4127,6 @@ ResetPlayerStatLevels: ; 3dab1 ret ; 3dabd - InitEnemyMon: ; 3dabd ld a, [CurPartyMon] ld hl, OTPartyMon1Species @@ -4213,7 +4180,6 @@ InitEnemyMon: ; 3dabd ret ; 3db32 - SwitchPlayerMon: ; 3db32 call ClearSprites ld a, [CurBattleMon] @@ -4234,7 +4200,6 @@ SwitchPlayerMon: ; 3db32 ret ; 3db5f - SendOutPlayerMon: ; 3db5f ld hl, BattleMonDVs predef GetUnownLetter @@ -4580,7 +4545,6 @@ UseOpponentItem: jp StdBattleTextBox ; 3ddc8 - ItemRecoveryAnim: ; 3ddc8 push hl push de @@ -4665,7 +4629,6 @@ UseHeldStatusHealingItem: ; 3dde9 db $ff ; 3de51 - UseConfusionHealingItem: ; 3de51 ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar @@ -4790,7 +4753,6 @@ HandleStatBoostingHeldItems: ; 3de97 db $ff ; 3df12 - GetPartymonItem: ; 3df12 ld hl, PartyMon1Item ld a, [CurBattleMon] @@ -4824,8 +4786,6 @@ UpdateBattleHUDs: ; 3df2c ret ; 3df48 - - UpdatePlayerHUD:: ; 3df48 push hl push de @@ -5383,35 +5343,42 @@ BattleMenuPKMN_Loop: Battle_StatsScreen: ; 3e308 call DisableLCD + ld hl, VTiles2 tile $31 ld de, VTiles0 - ld bc, $0110 + ld bc, $11 tiles call CopyBytes + ld hl, VTiles2 ld de, VTiles0 tile $11 ld bc, $31 tiles call CopyBytes + call EnableLCD + call ClearSprites call LowVolume xor a ; PARTYMON ld [MonType], a callba BattleStatsScreenInit call MaxVolume + call DisableLCD + ld hl, VTiles0 ld de, VTiles2 tile $31 ld bc, $11 tiles call CopyBytes + ld hl, VTiles0 tile $11 ld de, VTiles2 ld bc, $31 tiles call CopyBytes + call EnableLCD ret ; 3e358 - TryPlayerSwitch: ; 3e358 ld a, [CurBattleMon] ld d, a @@ -5566,7 +5533,6 @@ PassedBattleMonEntrance: ; 3e459 jp SpikesDamage ; 3e489 - BattleMenu_Run: ; 3e489 call Call_LoadTempTileMapToTileMap ld a, $3 @@ -5583,7 +5549,6 @@ BattleMenu_Run: ; 3e489 jp BattleMenu ; 3e4a8 - CheckAmuletCoin: ; 3e4a8 ld a, [BattleMonItem] ld b, a @@ -5990,7 +5955,6 @@ MoveInfoBox: ; 3e6c8 db "TYPE/@" ; 3e75f - .PrintPP: ; 3e75f hlcoord 5, 11 ld a, [wLinkMode] ; What's the point of this check? @@ -6060,8 +6024,6 @@ CheckPlayerHasUsableMoves: ; 3e786 ret ; 3e7c1 - - ParseEnemyAction: ; 3e7c1 ld a, [wEnemyIsSwitching] and a @@ -6242,7 +6204,6 @@ LinkBattleSendReceiveAction: ; 3e8e4 ret ; 3e8eb - LoadEnemyMon: ; 3e8eb ; Initialize enemy monster parameters ; To do this we pull the species from TempEnemyMonSpecies @@ -6275,7 +6236,6 @@ LoadEnemyMon: ; 3e8eb ; Grab the BaseData for this species call GetBaseData - ; Let's get the item: ; Is the item predetermined? @@ -6290,7 +6250,6 @@ LoadEnemyMon: ; 3e8eb ld a, [hl] jr .UpdateItem - .WildItem: ; In a wild battle, we pull from the item slots in BaseData @@ -6320,11 +6279,9 @@ LoadEnemyMon: ; 3e8eb jr nc, .UpdateItem ld a, [BaseItems+1] - .UpdateItem: ld [EnemyMonItem], a - ; Initialize DVs ; If we're in a trainer battle, DVs are predetermined @@ -6346,7 +6303,6 @@ LoadEnemyMon: ; 3e8eb ld [de], a jp .Happiness - .InitDVs: ; Trainer DVs @@ -6359,7 +6315,6 @@ LoadEnemyMon: ; 3e8eb dec a jr nz, .UpdateDVs - ; Wild DVs ; Here's where the fun starts @@ -6402,7 +6357,6 @@ LoadEnemyMon: ; 3e8eb ; We're done with DVs jr .UpdateDVs - .NotRoaming: ; Register a contains BattleType @@ -6429,16 +6383,13 @@ LoadEnemyMon: ; 3e8eb ld [hli], a ld [hl], c - ; We've still got more to do if we're dealing with a wild monster ld a, [wBattleMode] dec a jr nz, .Happiness - ; Species-specfic: - ; Unown ld a, [TempEnemyMonSpecies] cp a, UNOWN @@ -6452,7 +6403,6 @@ LoadEnemyMon: ; 3e8eb call CheckUnownLetter jr c, .GenerateDVs ; try again - .Magikarp: ; Skimming this part recommended @@ -6513,7 +6463,6 @@ LoadEnemyMon: ; 3e8eb cp a, 1024 >> 8 jr c, .GenerateDVs ; try again - ; Finally done with DVs .Happiness: @@ -6588,7 +6537,6 @@ LoadEnemyMon: ; 3e8eb ld [hl], a jr .Moves - .OpponentParty: ; Get HP from the party struct ld hl, (OTPartyMon1HP + 1) @@ -6608,7 +6556,6 @@ LoadEnemyMon: ; 3e8eb ld a, [hl] ; OTPartyMonStatus ld [EnemyMonStatus], a - .Moves: ld hl, BaseType1 ld de, EnemyMonType1 @@ -6718,7 +6665,6 @@ LoadEnemyMon: ; 3e8eb ret ; 3eb38 - CheckSleepingTreeMon: ; 3eb38 ; Return carry if species is in the list ; for the current time of day @@ -6779,7 +6725,6 @@ CheckSleepingTreeMon: ; 3eb38 db -1 ; end ; 3eb75 - CheckUnownLetter: ; 3eb75 ; Return carry if the Unown letter hasn't been unlocked yet @@ -6848,7 +6793,6 @@ CheckUnownLetter: ; 3eb75 ; 3ebc7 - SwapBattlerLevels: ; 3ebc7 ; unreferenced push bc @@ -6924,7 +6868,6 @@ BattleWinSlideInEnemyTrainerFrontpic: ; 3ebd8 ret ; 3ec2c - ApplyStatusEffectOnPlayerStats: ; 3ec2c ld a, 1 jr ApplyStatusEffectOnStats @@ -7143,7 +7086,6 @@ ApplyStatLevelMultiplier: ; 3ecb7 db 4, 1 ; 400% ; 3ed45 - BadgeStatBoosts: ; 3ed45 ; Raise BattleMon stats depending on which badges have been obtained. @@ -7202,7 +7144,6 @@ BadgeStatBoosts: ; 3ed45 ret ; 3ed7c - BoostStat: ; 3ed7c ; Raise stat at hl by 1/8. @@ -7235,7 +7176,6 @@ BoostStat: ; 3ed7c ret ; 3ed9f - _LoadBattleFontsHPBar: ; 3ed9f callab LoadBattleFontsHPBar ret @@ -7246,7 +7186,6 @@ _LoadHPBar: ; 3eda6 ret ; 3edad - LoadHPExpBarGFX: ; unreferenced ld de, EnemyHPBarBorderGFX ld hl, VTiles2 tile $6c @@ -7262,7 +7201,6 @@ LoadHPExpBarGFX: ; unreferenced jp Get2bpp ; 3edd1 - EmptyBattleTextBox: ; 3edd1 ld hl, .empty jp BattleTextBox @@ -7270,7 +7208,6 @@ EmptyBattleTextBox: ; 3edd1 db "@" ; 3edd8 - _BattleRandom:: ; 3edd8 ; If the normal RNG is used in a link battle it'll desync. ; To circumvent this a shared PRNG is used instead. @@ -7340,7 +7277,6 @@ _BattleRandom:: ; 3edd8 ret ; 3ee0f - Call_PlayBattleAnim_OnlyIfVisible: ; 3ee0f ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar @@ -7373,7 +7309,6 @@ FinishBattleAnim: ; 3ee27 ret ; 3ee3b - GiveExperiencePoints: ; 3ee3b ; Give experience. ; Don't give experience if linked or in the Battle Tower. @@ -7832,7 +7767,6 @@ TextJump_StringBuffer2ExpPoints: ; 3f131 db "@" ; 3f136 - AnimateExpBar: ; 3f136 push bc @@ -8019,8 +7953,6 @@ AnimateExpBar: ; 3f136 ld [hBGMapMode], a ret - - SendOutPkmnText: ; 3f26d ld a, [wLinkMode] and a @@ -8083,7 +8015,6 @@ SendOutPkmnText: ; 3f26d jp BattleTextBox ; 3f2d1 - JumpText_GoPkmn: ; 3f2d1 text_jump Text_GoPkmn start_asm @@ -8197,7 +8128,6 @@ TextJump_ComeBack: ; 3f35b db "@" ; 3f360 - HandleSafariAngerEatingStatus: ; unreferenced ld hl, wSafariMonEating ld a, [hl] @@ -8230,7 +8160,6 @@ HandleSafariAngerEatingStatus: ; unreferenced jp StdBattleTextBox ; 3f390 - FillInExpBar: ; 3f390 push hl call CalcExpBar @@ -8447,7 +8376,6 @@ GetFrontpic_DoAnim: ; 3f4b4 ret ; 3f4c1 - StartBattle: ; 3f4c1 ; This check prevents you from entering a battle without any Pokemon. ; Those using walk-through-walls to bypass getting a Pokemon experience @@ -8467,14 +8395,12 @@ StartBattle: ; 3f4c1 ret ; 3f4d9 - _DoBattle: ; 3f4d9 ; unreferenced call DoBattle ret ; 3f4dd - BattleIntro: ; 3f4dd callba MobileFn_106050 ; mobile call LoadTrainerOrWildMonPic @@ -8702,7 +8628,6 @@ Function3f662: ; 3f662 ret ; 3f69e - ExitBattle: ; 3f69e call .HandleEndOfBattle call CleanUpBattleRAM @@ -8881,7 +8806,6 @@ DetermineMobileBattleResult: ; 3f77c db " DRAW@" ; 3f80f - .Mobile_InvalidBattle: ; 3f80f hlcoord 6, 8 ld de, .Invalid @@ -8896,14 +8820,12 @@ DetermineMobileBattleResult: ; 3f77c db "INVALID BATTLE@" ; 3f830 - IsMobileBattle2: ; 3f830 ld a, [wLinkMode] cp LINK_MOBILE ret ; 3f836 - DisplayLinkRecord: ; 3f836 ld a, BANK(sLinkBattleStats) call GetSRAMBank @@ -8925,7 +8847,6 @@ DisplayLinkRecord: ; 3f836 ret ; 3f85f - ReadAndPrintLinkBattleRecord: ; 3f85f call ClearTileMap call ClearSprites @@ -9060,7 +8981,6 @@ ReadAndPrintLinkBattleRecord: ; 3f85f db "TOTAL WIN LOSE DRAW@" ; 3f998 - BattleEnd_HandleRoamMons: ; 3f998 ld a, [BattleType] cp BATTLETYPE_ROAMING @@ -9168,7 +9088,6 @@ GetRoamMonSpecies: ; 3fa31 ret ; 3fa42 - AddLastMobileBattleToLinkRecord: ; 3fa42 ld hl, OTPlayerID ld de, StringBuffer1 @@ -9449,7 +9368,6 @@ InitBattleDisplay: ; 3fb6c ret ; 3fbff - GetTrainerBackpic: ; 3fbff ; Load the player character's backpic (6x6) into VRAM starting from VTiles2 tile $31. @@ -9484,7 +9402,6 @@ GetTrainerBackpic: ; 3fbff ret ; 3fc30 - CopyBackpic: ; 3fc30 ld a, [rSVBK] push af @@ -9543,7 +9460,6 @@ CopyBackpic: ; 3fc30 ret ; 3fc8b - BattleStartMessage: ; 3fc8b ld a, [wBattleMode] dec a diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm index a7b182624..9f5302506 100755 --- a/engine/mysterygift.asm +++ b/engine/mysterygift.asm @@ -2,13 +2,13 @@ DoMysteryGift: ; 1048ba (41:48ba) call ClearTileMap call ClearSprites call WaitBGMap - call Function105153 + call InitMysteryGiftLayout hlcoord 3, 8 ld de, .String_PressAToLink_BToCancel call PlaceString call WaitBGMap - callba Function2c642 - call Function1050fb + callba PrepMysteryGiftDataToSend + call MysteryGift_ClearTrainerData ld a, $2 ld [wca01], a ld a, $14 @@ -239,14 +239,16 @@ Function104a95: ; 104a95 (41:4a95) di callba ClearChannels call Function104d5e + .loop2 call Function104d96 call Function104ddd - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $10 jp z, Function104bd0 cp $6c jr nz, .loop2 + ld a, [hPrintNum9] cp $2 jr z, Function104b22 @@ -256,7 +258,8 @@ Function104a95: ; 104a95 (41:4a95) jr nz, .ly_loop call Function104b49 jp nz, Function104bd0 - jr asm_104b0a + jr Function104b0a + ; Delay frame .ly_loop ld a, [rLY] cp $90 @@ -264,12 +267,15 @@ Function104a95: ; 104a95 (41:4a95) ld c, rRP % $100 ld a, $c0 ld [$ff00+c], a - ld b, $f0 + ld b, 240 ; This might have been intended as a 4-second timeout buffer. + ; However, it is reset with each frame. .loop3 push bc - call Function105038 + call MysteryGift_ReadJoypad + ld b, $2 ld c, rRP % $100 + ; Delay frame .ly_loop2 ld a, [$ff00+c] and b @@ -284,24 +290,25 @@ Function104a95: ; 104a95 (41:4a95) ld a, [rLY] cp $90 jr c, .ly_loop3 + ld a, b pop bc dec b - jr z, .loop2 + jr z, .loop2 ; we never jump here or a jr nz, .loop2 - ld a, [hMoneyTemp + 1] - bit 1, a + ; Check if we've pressed the B button + ld a, [hMGJoypadReleased] + bit B_BUTTON_F, a jr z, .loop3 ld a, $10 - ld [hPrintNum10], a + ld [hMGStatusFlags], a jp Function104bd0 Function104b04: ; 104b04 (41:4b04) call Function104b40 jp nz, Function104bd0 - -asm_104b0a: ; 104b0a (41:4b0a) +Function104b0a: ; 104b0a (41:4b0a) call Function104d38 jp nz, Function104bd0 call Function104b88 @@ -331,7 +338,7 @@ Function104b40: ; 104b40 (41:4b40) Function104b49: ; 104b49 (41:4b49) call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz ld a, [hPrintNum1] @@ -346,7 +353,7 @@ Function104b49: ; 104b49 (41:4b49) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz call Function104d43 @@ -357,7 +364,7 @@ Function104b49: ; 104b49 (41:4b49) call Function104d56 ret nz call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret @@ -369,7 +376,7 @@ Function104b88: ; 104b88 (41:4b88) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz call Function104d43 @@ -379,7 +386,7 @@ Function104b88: ; 104b88 (41:4b88) call Function104d56 ret nz call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz ld a, [hPrintNum1] @@ -393,29 +400,29 @@ Function104b88: ; 104b88 (41:4b88) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret Function104bd0: ; 104bd0 (41:4bd0) nop - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $10 - jr z, .asm_104c18 + jr z, .quit cp $6c - jr nz, .asm_104c18 + jr nz, .quit ld hl, wca01 dec [hl] - jr z, .asm_104c18 + jr z, .quit ld hl, wMysteryGiftTrainerData ld de, wMysteryGiftPartnerData ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData call CopyBytes ld a, [wMysteryGiftTrainerData] cp $3 - jr nc, .asm_104c18 + jr nc, .quit callba StagePartyDataForMysteryGift - call Function1050fb + call MysteryGift_ClearTrainerData ld a, $26 ld [wca02], a ld a, [hPrintNum9] @@ -424,12 +431,14 @@ Function104bd0: ; 104bd0 (41:4bd0) call Function104d43 jr nz, Function104bd0 jp Function104b04 + .asm_104c10 call Function104d38 jr nz, Function104bd0 jp Function104b22 -.asm_104c18 - ld a, [hPrintNum10] + +.quit + ld a, [hMGStatusFlags] push af call Function104da0 xor a @@ -449,7 +458,7 @@ Function104c2d: ; 104c2d (41:4c2d) .asm_104c37 call Function104d96 call Function104ddd - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $10 jp z, Function104d1c cp $6c @@ -485,7 +494,7 @@ Function104c8a: ; 104c8a (41:4c8a) call Function104d56 ret nz call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz ld a, [hPrintNum1] @@ -500,7 +509,7 @@ Function104c8a: ; 104c8a (41:4c8a) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz call Function104d43 @@ -511,7 +520,7 @@ Function104c8a: ; 104c8a (41:4c8a) call Function104d56 ret nz call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret @@ -523,7 +532,7 @@ Function104cd2: ; 104cd2 (41:4cd2) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz call Function104d43 @@ -533,7 +542,7 @@ Function104cd2: ; 104cd2 (41:4cd2) call Function104d56 ret nz call Function105033 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret nz ld a, [hPrintNum1] @@ -548,13 +557,13 @@ Function104cd2: ; 104cd2 (41:4cd2) call Function104d4e ret nz call Function10502e - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret Function104d1c: ; 104d1c (41:4d1c) nop - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] push af call Function104da0 xor a @@ -569,33 +578,33 @@ Function104d1c: ; 104d1c (41:4d1c) Function104d32: ; 104d32 (41:4d32) ld a, $80 - ld [hPrintNum10], a + ld [hMGStatusFlags], a and a ret Function104d38: ; 104d38 (41:4d38) call Function104d96 call Function104e46 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret Function104d43: ; 104d43 (41:4d43) call Function104d96 call Function104dfe - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret Function104d4e: ; 104d4e (41:4d4e) call Function104e93 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret Function104d56: ; 104d56 (41:4d56) call Function104f57 - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] cp $6c ret @@ -704,19 +713,19 @@ Function104ddd: ; 104ddd (41:4ddd) ld a, $1 ld [hPrintNum9], a .loop - call Function105038 + call MysteryGift_ReadJoypad ld b, $2 ld c, rRP % $100 - ld a, [hMoneyTemp + 1] - bit 1, a + ld a, [hMGJoypadReleased] + bit B_BUTTON_F, a jr z, .next ld a, $10 - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret .next bit 0, a - jr nz, asm_104e3a + jr nz, Function104e3a ld a, [$ff00+c] and b jr nz, .loop @@ -735,7 +744,7 @@ Function104dfe: ; 104dfe (41:4dfe) call Function104da9 jp z, Function104f42 ld a, $6c - ld [hPrintNum10], a + ld [hMGStatusFlags], a ld d, $3d call Function104dd1 ld d, $5 @@ -748,17 +757,17 @@ Function104dfe: ; 104dfe (41:4dfe) call Function104dd1 ret -asm_104e3a: ; 104e3a (41:4e3a) +Function104e3a: ; 104e3a (41:4e3a) + ; Wait a random amount of time call Random ld e, a and $f ld d, a -.asm_104e41 +.loop dec de ld a, d or e - jr nz, .asm_104e41 - + jr nz, .loop Function104e46: ; 104e46 (41:4e46) ld a, $2 ld [hPrintNum9], a @@ -788,13 +797,13 @@ Function104e46: ; 104e46 (41:4e46) ld d, $3d call Function104dd1 ld a, $6c - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret Function104e8c: ; 104e8c (41:4e8c) ld [rRP], a ld a, $ff - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret Function104e93: ; 104e93 (41:4e93) @@ -824,7 +833,7 @@ Function104e93: ; 104e93 (41:4e93) ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand) ld b, $2 call Function104ed6 - ld hl, hPrintNum10 + ld hl, hMGStatusFlags ld b, $1 call Function104faf ld a, [hPrintNum2] @@ -902,21 +911,21 @@ Function104ed6: ; 104ed6 (41:4ed6) ret Function104f42: ; 104f42 (41:4f42) - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] or $2 - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret Function104f49: ; 104f49 (41:4f49) - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] or $1 - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret Function104f50: ; 104f50 (41:4f50) - ld a, [hPrintNum10] + ld a, [hMGStatusFlags] or $80 - ld [hPrintNum10], a + ld [hMGStatusFlags], a ret Function104f57: ; 104f57 (41:4f57) @@ -960,7 +969,7 @@ Function104f57: ; 104f57 (41:4f57) push de ld d, $3d call Function104dd1 - ld hl, hPrintNum10 + ld hl, hMGStatusFlags ld b, $1 call Function104ed6 pop de @@ -986,7 +995,7 @@ Function104faf: ; 104faf (41:4faf) cpl ld b, a xor a - ld [hMoneyTemp + 2], a + ld [hMGJoypadPressed + 2], a call Function104d86 .asm_104fd2 inc b @@ -1009,10 +1018,10 @@ Function104faf: ; 104faf (41:4faf) bit 1, a jr nz, .asm_104fe5 .asm_104fed - ld a, [hMoneyTemp + 2] + ld a, [hMGJoypadPressed + 2] ld d, a ld a, [rTIMA] - ld [hMoneyTemp + 2], a + ld [hMGJoypadPressed + 2], a sub d cp $12 jr c, .asm_104ffd @@ -1058,31 +1067,48 @@ Function105033: ; 105033 (41:5033) ld b, $0 jp Function104f57 -Function105038: ; 105038 (41:5038) - ld a, $20 +MysteryGift_ReadJoypad: ; 105038 (41:5038) +; We can only get four inputs at a time. +; We take d-pad first for no particular reason. + ld a, R_DPAD ld [rJOYP], a +; Read twice to give the request time to take. ld a, [rJOYP] ld a, [rJOYP] + +; The Joypad register output is in the lo nybble (inversed). +; We make the hi nybble of our new container d-pad input. cpl and $f swap a + +; We'll keep this in b for now. ld b, a - ld a, $10 + +; Buttons make 8 total inputs (A, B, Select, Start). +; We can fit this into one byte. + ld a, R_BUTTONS ld [rJOYP], a +; Wait for input to stabilize. rept 6 ld a, [rJOYP] endr +; Buttons take the lo nybble. cpl and $f or b ld c, a - ld a, [hMoneyTemp] +; To get the delta we xor the last frame's input with the new one. + ld a, [hMGJoypadPressed] xor c +; Released this frame: and c - ld [hMoneyTemp + 1], a + ld [hMGJoypadReleased], a +; Pressed this frame: ld a, c - ld [hMoneyTemp], a + ld [hMGJoypadPressed], a ld a, $30 +; Reset the joypad register since we're done with it. ld [rJOYP], a ret @@ -1179,7 +1205,7 @@ RestoreMysteryGift: ; 1050ea (41:50ea) ld [de], a jp CloseSRAM -Function1050fb: ; 1050fb (41:50fb) +MysteryGift_ClearTrainerData: ; 1050fb (41:50fb) ld hl, wMysteryGiftTrainerData xor a ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData @@ -1247,7 +1273,7 @@ StagePartyDataForMysteryGift: ; 10510b (41:510b) ld [wca00], a jp CloseSRAM -Function105153: ; 105153 (41:5153) +InitMysteryGiftLayout: ; 105153 (41:5153) call ClearBGPalettes call DisableLCD ld hl, MysteryGiftGFX @@ -1398,7 +1424,7 @@ Function105688: ; 105688 (41:5688) call PlaceString call WaitBGMap call Function10578c - call Function1050fb + call MysteryGift_ClearTrainerData ld a, $24 ld [wca02], a ld a, [rIE] diff --git a/engine/mysterygift2.asm b/engine/mysterygift2.asm index 4fad773e1..4048ea533 100755 --- a/engine/mysterygift2.asm +++ b/engine/mysterygift2.asm @@ -1,4 +1,4 @@ -Function2c642: ; 2c642 (b:4642) +PrepMysteryGiftDataToSend: ; 2c642 (b:4642) ld de, wMysteryGiftStaging ld a, $1 ld [de], a @@ -69,6 +69,8 @@ hPrintNum8 EQU $ffba hPrintNum9 EQU $ffbb hPrintNum10 EQU $ffbc +hMGStatusFlags EQU $ffbc + hUsedSpriteIndex EQU $ffbd hUsedSpriteTile EQU $ffbe hFFBF EQU $ffbf @@ -77,9 +79,12 @@ hFFC1 EQU $ffc1 hFFC2 EQU $ffc2 hMoneyTemp EQU $ffc3 +hMGJoypadPressed EQU $ffc3 +hMGJoypadReleased EQU $ffc4 + hFFC6 EQU $ffc6 -hLYOverrideStart EQU $ffc7 -hLYOverrideEnd EQU $ffc8 +hLYOverrideStart EQU $ffc7 +hLYOverrideEnd EQU $ffc8 hMobileReceive EQU $ffc9 hFFCA EQU $ffca hLinkPlayerNumber EQU $ffcb |