Some mystery gift functions

This commit is contained in:
pikalaxalt 2016-06-07 08:08:51 -04:00
parent d7a01e92e9
commit b0e7d04ccf
4 changed files with 115 additions and 168 deletions

View File

@ -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

View File

@ -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]

View File

@ -1,4 +1,4 @@
Function2c642: ; 2c642 (b:4642)
PrepMysteryGiftDataToSend: ; 2c642 (b:4642)
ld de, wMysteryGiftStaging
ld a, $1
ld [de], a

View File

@ -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