diff --git a/audio/sfx.asm b/audio/sfx.asm index b56b6a2aa..0c65ae5db 100644 --- a/audio/sfx.asm +++ b/audio/sfx.asm @@ -206,8 +206,8 @@ Sfx_Unknown61: ; f0a1f musicheader 1, 8, Sfx_Unknown61_Ch8 ; f0a22 -Sfx_Unknown62: ; f0a22 - musicheader 1, 8, Sfx_Unknown62_Ch8 +Sfx_SwitchPockets: ; f0a22 + musicheader 1, 8, Sfx_SwitchPockets_Ch8 ; f0a25 Sfx_Unknown63: ; f0a25 @@ -5226,7 +5226,7 @@ Sfx_Unknown61_Ch8: ; f2588 endchannel ; f258c -Sfx_Unknown62_Ch8: ; f258c +Sfx_SwitchPockets_Ch8: ; f258c noise __, 5, $c1, $42 endchannel ; f2590 diff --git a/audio/sfx_pointers.asm b/audio/sfx_pointers.asm index c5a2b02bf..270d4f94e 100644 --- a/audio/sfx_pointers.asm +++ b/audio/sfx_pointers.asm @@ -97,7 +97,7 @@ dba Sfx_Unknown5F dba Sfx_Unknown60 dba Sfx_Unknown61 - dba Sfx_Unknown62 + dba Sfx_SwitchPockets dba Sfx_Unknown63 dba Sfx_Burn dba Sfx_TitleScreenEntrance diff --git a/battle/ai/redundant.asm b/battle/ai/redundant.asm new file mode 100755 index 000000000..da71d0ece --- /dev/null +++ b/battle/ai/redundant.asm @@ -0,0 +1,198 @@ +AI_Redundant: ; 2c41a +; Check if move effect c will fail because it's already been used. +; Return z if the move is a good choice. +; Return nz if the move is a bad choice. + ld a, c + ld de, 3 + ld hl, .Moves + call IsInArray + jp nc, .NotRedundant + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.Moves: ; 2c42c + dbw EFFECT_DREAM_EATER, .DreamEater + dbw EFFECT_HEAL, .Heal + dbw EFFECT_LIGHT_SCREEN, .LightScreen + dbw EFFECT_MIST, .Mist + dbw EFFECT_FOCUS_ENERGY, .FocusEnergy + dbw EFFECT_CONFUSE, .Confuse + dbw EFFECT_TRANSFORM, .Transform + dbw EFFECT_REFLECT, .Reflect + dbw EFFECT_SUBSTITUTE, .Substitute + dbw EFFECT_LEECH_SEED, .LeechSeed + dbw EFFECT_DISABLE, .Disable + dbw EFFECT_ENCORE, .Encore + dbw EFFECT_SNORE, .Snore + dbw EFFECT_SLEEP_TALK, .SleepTalk + dbw EFFECT_MEAN_LOOK, .MeanLook + dbw EFFECT_NIGHTMARE, .Nightmare + dbw EFFECT_SPIKES, .Spikes + dbw EFFECT_FORESIGHT, .Foresight + dbw EFFECT_PERISH_SONG, .PerishSong + dbw EFFECT_SANDSTORM, .Sandstorm + dbw EFFECT_ATTRACT, .Attract + dbw EFFECT_SAFEGUARD, .Safeguard + dbw EFFECT_RAIN_DANCE, .RainDance + dbw EFFECT_SUNNY_DAY, .SunnyDay + dbw EFFECT_TELEPORT, .Teleport + dbw EFFECT_MORNING_SUN, .MorningSun + dbw EFFECT_SYNTHESIS, .Synthesis + dbw EFFECT_MOONLIGHT, .Moonlight + dbw EFFECT_SWAGGER, .Swagger + dbw EFFECT_FUTURE_SIGHT, .FutureSight + db -1 + +.LightScreen: ; 2c487 + ld a, [EnemyScreens] + bit SCREENS_LIGHT_SCREEN, a + ret + +.Mist: ; 2c48d + ld a, [EnemySubStatus4] + bit SUBSTATUS_MIST, a + ret + +.FocusEnergy: ; 2c493 + ld a, [EnemySubStatus4] + bit SUBSTATUS_FOCUS_ENERGY, a + ret + +.Confuse: ; 2c499 + ld a, [PlayerSubStatus3] + bit SUBSTATUS_CONFUSED, a + ret nz + ld a, [PlayerScreens] + bit SCREENS_SAFEGUARD, a + ret + +.Transform: ; 2c4a5 + ld a, [EnemySubStatus5] + bit SUBSTATUS_TRANSFORMED, a + ret + +.Reflect: ; 2c4ab + ld a, [EnemyScreens] + bit SCREENS_REFLECT, a + ret + +.Substitute: ; 2c4b1 + ld a, [EnemySubStatus4] + bit SUBSTATUS_SUBSTITUTE, a + ret + +.LeechSeed: ; 2c4b7 + ld a, [PlayerSubStatus4] + bit SUBSTATUS_LEECH_SEED, a + ret + +.Disable: ; 2c4bd + ld a, [PlayerDisableCount] + and a + ret + +.Encore: ; 2c4c2 + ld a, [PlayerSubStatus5] + bit SUBSTATUS_ENCORED, a + ret + +.Snore: +.SleepTalk: ; 2c4c8 + ld a, [EnemyMonStatus] + and SLP + jr z, .Redundant + jr .NotRedundant + +.MeanLook: ; 2c4d1 + ld a, [EnemySubStatus5] + bit SUBSTATUS_CANT_RUN, a + ret + +.Nightmare: ; 2c4d7 + ld a, [BattleMonStatus] + and a + jr z, .Redundant + ld a, [PlayerSubStatus1] + bit SUBSTATUS_NIGHTMARE, a + ret + +.Spikes: ; 2c4e3 + ld a, [PlayerScreens] + bit SCREENS_SPIKES, a + ret + +.Foresight: ; 2c4e9 + ld a, [PlayerSubStatus1] + bit SUBSTATUS_IDENTIFIED, a + ret + +.PerishSong: ; 2c4ef + ld a, [PlayerSubStatus1] + bit SUBSTATUS_PERISH, a + ret + +.Sandstorm: ; 2c4f5 + ld a, [Weather] + cp WEATHER_SANDSTORM + jr z, .Redundant + jr .NotRedundant + +.Attract: ; 2c4fe + callba CheckOppositeGender + jr c, .Redundant + ld a, [PlayerSubStatus1] + bit SUBSTATUS_IN_LOVE, a + ret + +.Safeguard: ; 2c50c + ld a, [EnemyScreens] + bit SCREENS_SAFEGUARD, a + ret + +.RainDance: ; 2c512 + ld a, [Weather] + cp WEATHER_RAIN + jr z, .Redundant + jr .NotRedundant + +.SunnyDay: ; 2c51b + ld a, [Weather] + cp WEATHER_SUN + jr z, .Redundant + jr .NotRedundant + +.DreamEater: ; 2c524 + ld a, [BattleMonStatus] + and SLP + jr z, .Redundant + jr .NotRedundant + +.Swagger: ; 2c52d + ld a, [PlayerSubStatus3] + bit SUBSTATUS_CONFUSED, a + ret + +.FutureSight: ; 2c533 + ld a, [EnemyScreens] + bit 5, a + ret + +.Heal: +.MorningSun: +.Synthesis: +.Moonlight: ; 2c539 + callba AICheckEnemyMaxHP + jr nc, .NotRedundant + +.Teleport: +.Redundant: ; 2c541 + ld a, 1 + and a + ret + +.NotRedundant: ; 2c545 + xor a + ret diff --git a/battle/core.asm b/battle/core.asm index 8fa465018..dd01268f6 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -2412,7 +2412,7 @@ Function3cf4a: ; 3cf4a ld e, HP_BAR_LENGTH_PX call UpdateHPPal call WaitBGMap - callba Function2c012 + callba EnemySwitch_TrainerHud ld a, [wLinkMode] and a jr z, .not_linked @@ -4853,7 +4853,7 @@ DrawPlayerHUD: ; 3df58 lb bc, 5, 11 call ClearBox - callba DrawPlayerExpBar + callba DrawPlayerHUDBorder hlcoord 18, 9 ld [hl], $73 ; vertical bar @@ -4995,7 +4995,7 @@ DrawEnemyHUD: ; 3e043 lb bc, 4, 11 call ClearBox - callba Function2c0c5 + callba DrawEnemyHUDBorder ld a, [TempEnemyMonSpecies] ld [CurSpecies], a @@ -9610,7 +9610,7 @@ BattleStartMessage: ; 3fc8b ld d, $0 ld e, ANIM_MON_NORMAL predef AnimateFrontpic - jr .skip_cry + jr .skip_cry ; cry is played during the animation .cry_no_anim ld a, $0f @@ -9623,7 +9623,7 @@ BattleStartMessage: ; 3fc8b cp BATTLETYPE_FISH jr nz, .NotFishing - callba MobileFn_106086 + callba MobileFn_106086 ; update fishing records? ld hl, HookedPokemonAttackedText jr .PlaceBattleStartText @@ -9639,7 +9639,7 @@ BattleStartMessage: ; 3fc8b .PlaceBattleStartText push hl - callba Function2c000 + callba BattleStart_TrainerHuds pop hl call StdBattleTextBox diff --git a/battle/sliding_intro.asm b/battle/sliding_intro.asm index e139218a5..0611c91d9 100755 --- a/battle/sliding_intro.asm +++ b/battle/sliding_intro.asm @@ -62,7 +62,7 @@ endr ; 4e9d6 .subfunction3: ; 4e9d6 - ld hl, Sprites + 1 + ld hl, Sprites + 1 ; x pixel ld c, $12 ; 18 ld de, $4 .loop3 diff --git a/battle/trainer_huds.asm b/battle/trainer_huds.asm new file mode 100755 index 000000000..0ac043d44 --- /dev/null +++ b/battle/trainer_huds.asm @@ -0,0 +1,275 @@ +wPlaceBallsDirection EQU $d003 +wTrainerHUDTiles EQU $d004 +wPlaceBallsX EQU $cfc4 +wPlaceBallsY EQU $cfc5 +GLOBAL wPlaceBallsDirection, wTrainerHUDTiles, wPlaceBallsX, wPlaceBallsY + +BattleStart_TrainerHuds: ; 2c000 + ld a, $e4 + ld [rOBP0], a + call LoadBallIconGFX + call ShowPlayerMonsRemaining + ld a, [wBattleMode] + dec a + ret z + jp ShowOTTrainerMonsRemaining +; 2c012 + +EnemySwitch_TrainerHud: ; 2c012 + ld a, $e4 + ld [rOBP0], a + call LoadBallIconGFX + jp ShowOTTrainerMonsRemaining +; 2c01c + +ShowPlayerMonsRemaining: ; 2c01c + call DrawPlayerPartyIconHUDBorder + ld hl, PartyMon1HP + ld de, PartyCount + call StageBallTilesData + ; ldpixel wPlaceBallsX, 12, 12 + ld a, 12 * 8 + ld hl, wPlaceBallsX + ld [hli], a + ld [hl], a + ld a, 8 + ld [wPlaceBallsDirection], a + ld hl, Sprites + jp LoadTrainerHudOAM +; 2c03a + +ShowOTTrainerMonsRemaining: ; 2c03a + call DrawEnemyHUDBorder + ld hl, OTPartyMon1HP + ld de, OTPartyCount + call StageBallTilesData + ; ldpixel wPlaceBallsX, 9, 4 + ld hl, wPlaceBallsX + ld a, 9 * 8 + ld [hli], a + ld [hl], 4 * 8 + ld a, -8 + ld [wPlaceBallsDirection], a + ld hl, Sprites + PARTY_LENGTH * 4 + jp LoadTrainerHudOAM +; 2c059 + +StageBallTilesData: ; 2c059 + ld a, [de] + push af + ld de, Buffer1 + ld c, PARTY_LENGTH + ld a, $34 ; empty slot +.loop1 + ld [de], a + inc de + dec c + jr nz, .loop1 + pop af + ld de, Buffer1 +.loop2 + push af + call .GetHUDTile + inc de + pop af + dec a + jr nz, .loop2 + ret +; 2c075 + +.GetHUDTile: ; 2c075 + ld a, [hli] + and a + jr nz, .got_hp + ld a, [hl] + and a + ld b, $33 ; fainted + jr z, .fainted + +.got_hp +rept 3 + dec hl +endr + ld a, [hl] + and a + ld b, $32 ; statused + jr nz, .load + dec b ; normal + jr .load + +.fainted +rept 3 + dec hl +endr + +.load + ld a, b + ld [de], a + ld bc, PARTYMON_STRUCT_LENGTH + MON_HP - MON_STATUS + add hl, bc + ret +; 2c095 + +DrawPlayerHUDBorder: ; 2c095 + ld hl, .tiles + ld de, wTrainerHUDTiles + ld bc, 4 + call CopyBytes + hlcoord 18, 10 + ld de, -1 ; start on right + jr PlaceHUDBorderTiles + +.tiles + db $73 ; right side + db $77 ; bottom right + db $6f ; bottom left + db $76 ; bottom side +; 2c0ad + +DrawPlayerPartyIconHUDBorder: ; 2c0ad + ld hl, .tiles + ld de, wTrainerHUDTiles + ld bc, 4 + call CopyBytes + hlcoord 18, 10 + ld de, -1 ; start on right + jr PlaceHUDBorderTiles + +.tiles + db $73 ; right side + db $5c ; bottom right + db $6f ; bottom left + db $76 ; bottom side +; 2c0c5 + +DrawEnemyHUDBorder: ; 2c0c5 + ld hl, .tiles + ld de, wTrainerHUDTiles + ld bc, 4 + call CopyBytes + hlcoord 1, 2 + ld de, 1 ; start on left + call PlaceHUDBorderTiles + ld a, [wBattleMode] + dec a + ret nz + ld a, [TempEnemyMonSpecies] + dec a + call CheckCaughtMon + ret z + hlcoord 1, 1 + ld [hl], $5d + ret + +.tiles + db $6d ; left side + db $74 ; bottom left + db $78 ; bottom right + db $76 ; bottom side +; 2c0f1 + +PlaceHUDBorderTiles: ; 2c0f1 + ld a, [wTrainerHUDTiles] + ld [hl], a + ld bc, SCREEN_WIDTH + add hl, bc + ld a, [StartFlypoint] + ld [hl], a + ld b, $8 +.loop + add hl, de + ld a, [MovementBuffer] + ld [hl], a + dec b + jr nz, .loop + add hl, de + ld a, [EndFlypoint] + ld [hl], a + ret +; 2c10d + +LinkBattle_TrainerHuds: ; 2c10d + call LoadBallIconGFX + ld hl, PartyMon1HP + ld de, PartyCount + call StageBallTilesData + ld hl, wPlaceBallsX + ld a, 10 * 8 + ld [hli], a + ld [hl], 8 * 8 + ld a, $8 + ld [wPlaceBallsDirection], a + ld hl, Sprites + call LoadTrainerHudOAM + + ld hl, OTPartyMon1HP + ld de, OTPartyCount + call StageBallTilesData + ld hl, wPlaceBallsX + ld a, 10 * 8 + ld [hli], a + ld [hl], 13 * 8 + ld hl, Sprites + PARTY_LENGTH * 4 + jp LoadTrainerHudOAM +; 2c143 + +LoadTrainerHudOAM: ; 2c143 + ld de, Buffer1 + ld c, PARTY_LENGTH +.loop + ld a, [wPlaceBallsY] + ld [hli], a + ld a, [wPlaceBallsX] + ld [hli], a + ld a, [de] + ld [hli], a + ld a, $3 + ld [hli], a + ld a, [wPlaceBallsX] + ld b, a + ld a, [wPlaceBallsDirection] + add b + ld [wPlaceBallsX], a + inc de + dec c + jr nz, .loop + ret +; 2c165 + +LoadBallIconGFX: ; 2c165 + ld de, .gfx + ld hl, VTiles0 tile $31 + lb bc, BANK(LoadBallIconGFX), 4 + call Get2bpp_2 + ret +; 2c172 + +.gfx: ; 2c172 +INCBIN "gfx/battle/balls.2bpp" +; 2c1b2 + +_ShowLinkBattleParticipants: ; 2c1b2 + call ClearBGPalettes + call LoadFontsExtra + hlcoord 2, 3 + ld b, 9 + ld c, 14 + call TextBox + hlcoord 4, 5 + ld de, PlayerName + call PlaceString + hlcoord 4, 10 + ld de, OTPlayerName + call PlaceString + hlcoord 9, 8 + ld a, $69 ; "V" + ld [hli], a + ld [hl], $6a ; "S" + callba LinkBattle_TrainerHuds ; no need to callba + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + ld a, $e4 + ld [rOBP0], a + ret +; 2c1ef diff --git a/constants/sfx_constants.asm b/constants/sfx_constants.asm index 794b9b593..d8567542e 100644 --- a/constants/sfx_constants.asm +++ b/constants/sfx_constants.asm @@ -98,7 +98,7 @@ const SFX_UNKNOWN_5F const SFX_UNKNOWN_60 const SFX_UNKNOWN_61 - const SFX_UNKNOWN_62 + const SFX_SWITCH_POCKETS const SFX_UNKNOWN_63 const SFX_BURN const SFX_TITLE_SCREEN_ENTRANCE diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 508abab33..0c7819ca2 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -41,7 +41,7 @@ MenuData2_0x49d1c: ; 49d1c db $80 ; flags db 0 ; items dw MainMenuItems - dw Function1f79 + dw PlaceMenuStrings dw MainMenuText ; 49d20 diff --git a/engine/mart.asm b/engine/mart.asm index 9d7940a5d..2d8ac0c2c 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -809,9 +809,9 @@ UnknownText_0x15eae: ; 0x15eae SellMenu: ; 15eb3 call DisableSpriteUpdates - callba Function106a5 + callba DepositSellInitPackBuffers .asm_15ebc - callba Function106be + callba DepositSellPack ld a, [wcf66] and a jp z, Function15ece diff --git a/engine/pack.asm b/engine/pack.asm index 0b7d35ece..e755d60c8 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,67 +1,69 @@ +wCurrPocket EQU $cf65 + Pack: ; 10000 ld hl, Options set NO_TEXT_SCROLL, [hl] - call Function1068a + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .done - call Function10026 + call .RunJumptable call DelayFrame jr .loop .done - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options res NO_TEXT_SCROLL, [hl] ret ; 10026 -Function10026: ; 10026 +.RunJumptable: ; 10026 ld a, [wJumptableIndex] - ld hl, Jumptable_10030 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] + ; 10030 +.Jumptable: ; 10030 (4:4030) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 -Jumptable_10030: ; 10030 (4:4030) - dw Function10046 - dw Function10056 - dw Function10067 - dw Function10186 - dw Function10198 - dw Function10094 - dw Function100a6 - dw Function100d3 - dw Function100e8 - dw Function10874 - dw Function1087e - - -Function10046: ; 10046 (4:4046) +.InitGFX: ; 10046 (4:4046) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function10056: ; 10056 (4:4056) +.InitItemsPocket: ; 10056 (4:4056) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10067: ; 10067 (4:4067) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 10067 (4:4067) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -74,22 +76,22 @@ Function10067: ; 10067 (4:4067) ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function10094: ; 10094 (4:4094) +.InitKeyItemsPocket: ; 10094 (4:4094) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100a6: ; 100a6 (4:40a6) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 100a6 (4:40a6) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -102,39 +104,40 @@ Function100a6: ; 100a6 (4:40a6) ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function100d3: ; 100d3 (4:40d3) +.InitTMHMPocket: ; 100d3 (4:40d3) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100e8: ; 100e8 (4:40e8) - callba Function2c76f +.TMHMPocketMenu: ; 100e8 (4:40e8) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_1010a - ld hl, MenuDataHeader_0x1013b - ld de, Jumptable_10153 - jr .asm_10110 -.asm_1010a - ld hl, MenuDataHeader_0x10124 - ld de, Jumptable_10137 -.asm_10110 + jr nz, .use_quit + ld hl, .MenuDataHeader2 + ld de, .Jumptable2 + jr .load_jump + +.use_quit + ld hl, .MenuDataHeader1 + ld de, .Jumptable1 +.load_jump push de call LoadMenuDataHeader call InterpretMenu2 @@ -143,39 +146,41 @@ Function100e8: ; 100e8 (4:40e8) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10124 (4:4124) -MenuDataHeader_0x10124: ; 0x10124 +; 10124 (4:4124) +.MenuDataHeader1: ; 0x10124 db $40 ; flags db 07, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x1012c + dw .MenuData2_1 db 1 ; default option ; 0x1012c -MenuData2_0x1012c: ; 0x1012c +.MenuData2_1: ; 0x1012c db $c0 ; flags db 2 ; items db "USE@" db "QUIT@" ; 0x10137 -Jumptable_10137: ; 10137 - dw Function10159 - dw QuitItemSubmenu +.Jumptable1: ; 10137 + jumptable_start + jumptable .UseItem + jumptable QuitItemSubmenu + ; 1013b -MenuDataHeader_0x1013b: ; 0x1013b +.MenuDataHeader2: ; 0x1013b db $40 ; flags db 05, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10143 + dw .MenuData2_2 db 1 ; default option ; 0x10143 -MenuData2_0x10143: ; 0x10143 +.MenuData2_2: ; 0x10143 db $c0 ; flags db 3 ; items db "USE@" @@ -183,43 +188,43 @@ MenuData2_0x10143: ; 0x10143 db "QUIT@" ; 0x10153 -Jumptable_10153: ; 10153 - dw Function10159 +.Jumptable2: ; 10153 + dw .UseItem dw GiveItem dw QuitItemSubmenu ; 10159 -Function10159: ; 10159 - callba Function2c7bf +.UseItem: ; 10159 + callba AskTeachTMHM ret c - callba Function2c7fb - jr c, .asm_10179 + callba ChooseMonToLearnTMHM + jr c, .declined ld hl, Options ld a, [hl] push af - res 4, [hl] - callba Function2c867 + res NO_TEXT_SCROLL, [hl] + callba TeachTMHM pop af ld [Options], a -.asm_10179 +.declined xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10186: ; 10186 (4:4186) +.InitBallsPocket: ; 10186 (4:4186) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10198: ; 10198 (4:4198) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 10198 (4:4198) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -232,12 +237,12 @@ Function10198: ; 10198 (4:4198) ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function101c5: ; 101c5 (4:41c5) +.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5) callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a @@ -268,32 +273,32 @@ Function101c5: ; 101c5 (4:41c5) .usable ld hl, MenuDataHeader_UsableKeyItem - ld de, Jumptable_1026a + ld de, Jumptable_UseGiveTossRegisterQuit jr .build_menu .selectable_usable ld hl, MenuDataHeader_UsableItem - ld de, Jumptable_10291 + ld de, Jumptable_UseGiveTossQuit jr .build_menu .tossable_selectable ld hl, MenuDataHeader_UnusableItem - ld de, Jumptable_102ac + ld de, Jumptable_UseQuit jr .build_menu .tossable_unselectable ld hl, MenuDataHeader_UnusableKeyItem - ld de, Jumptable_102c7 + ld de, Jumptable_UseRegisterQuit jr .build_menu .unusable ld hl, MenuDataHeader_HoldableKeyItem - ld de, Jumptable_102ea + ld de, Jumptable_GiveTossRegisterQuit jr .build_menu .selectable_unusable ld hl, MenuDataHeader_HoldableItem - ld de, Jumptable_1030b + ld de, Jumptable_GiveTossQuit .build_menu push de call LoadMenuDataHeader @@ -303,10 +308,10 @@ Function101c5: ; 101c5 (4:41c5) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10249 (4:4249) +; 10249 (4:4249) MenuDataHeader_UsableKeyItem: ; 0x10249 db $40 ; flags db 01, 13 ; start coords @@ -325,12 +330,13 @@ MenuDataHeader_UsableKeyItem: ; 0x10249 db "QUIT@" ; 0x1026a -Jumptable_1026a: ; 1026a - dw UseItem - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseGiveTossRegisterQuit: ; 1026a + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 10274 MenuDataHeader_UsableItem: ; 0x10274 @@ -350,11 +356,12 @@ MenuDataHeader_UsableItem: ; 0x10274 db "QUIT@" ; 0x10291 -Jumptable_10291: ; 10291 - dw UseItem - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_UseGiveTossQuit: ; 10291 + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu ; 10299 MenuDataHeader_UnusableItem: ; 0x10299 @@ -372,9 +379,10 @@ MenuDataHeader_UnusableItem: ; 0x10299 db "QUIT@" ; 0x102ac -Jumptable_102ac: ; 102ac - dw UseItem - dw QuitItemSubmenu +Jumptable_UseQuit: ; 102ac + jumptable_start + jumptable UseItem + jumptable QuitItemSubmenu ; 102b0 MenuDataHeader_UnusableKeyItem: ; 0x102b0 @@ -393,10 +401,11 @@ MenuDataHeader_UnusableKeyItem: ; 0x102b0 db "QUIT@" ; 0x102c7 -Jumptable_102c7: ; 102c7 - dw UseItem - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseRegisterQuit: ; 102c7 + jumptable_start + jumptable UseItem + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102cd MenuDataHeader_HoldableKeyItem: ; 0x102cd @@ -416,11 +425,12 @@ MenuDataHeader_HoldableKeyItem: ; 0x102cd db "QUIT@" ; 0x102ea -Jumptable_102ea: ; 102ea - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_GiveTossRegisterQuit: ; 102ea + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102f2 MenuDataHeader_HoldableItem: ; 0x102f2 @@ -439,10 +449,12 @@ MenuDataHeader_HoldableItem: ; 0x102f2 db "QUIT@" ; 0x1030b -Jumptable_1030b: ; 1030b - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_GiveTossQuit: ; 1030b + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu + ; 10311 UseItem: ; 10311 @@ -454,18 +466,19 @@ UseItem: ; 10311 ; 1031f .jumptable: ; 1031f (4:431f) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Current - dw .Party - dw .Field + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Current + jumptable .Party + jumptable .Field ; 1035c .Oak: ; 1032d (4:432d) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Current: ; 10334 (4:4334) @@ -479,28 +492,28 @@ UseItem: ; 10311 call DoItemEffect xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret + .NoPokemon ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret .Field: ; 10355 (4:4355) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak ld a, $a ld [wJumptableIndex], a ret ; 10364 (4:4364) - TossMenu: ; 10364 ld hl, Text_ThrowAwayHowMany - call Function10889 + call Pack_PrintTextNoScroll callba Function24fbf push af call ExitMenu @@ -519,35 +532,35 @@ TossMenu: ; 10364 call TossItem call Pack_GetItemName ld hl, Text_ThrewAway - call Function10889 - + call Pack_PrintTextNoScroll .finish ret ; 1039d Function1039d: ; 1039d - ld a, [wcf65] +; unreferenced + ld a, [wCurrPocket] and a - jr z, .asm_103b2 + jr z, .items dec a - jr z, .asm_103aa + jr z, .balls dec a - jr z, .asm_103ba + jr z, .key ret -.asm_103aa +.balls xor a ld [wBallsPocketCursor], a ld [wBallsPocketScrollPosition], a ret -.asm_103b2 +.items xor a ld [wItemsPocketCursor], a ld [wItemsPocketScrollPosition], a ret -.asm_103ba +.key xor a ld [wKeyItemsPocketCursor], a ld [wKeyItemsPocketScrollPosition], a @@ -558,8 +571,8 @@ RegisterItem: ; 103c2 callba CheckSelectableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_103f6 - ld a, [wcf65] + jr nz, .cant_register + ld a, [wCurrPocket] rrca rrca and $c0 @@ -575,22 +588,22 @@ RegisterItem: ; 103c2 ld de, SFX_FULL_HEAL call WaitPlaySFX ld hl, Text_RegisteredItem - call Function10889 + call Pack_PrintTextNoScroll ret -.asm_103f6 +.cant_register ld hl, Text_CantRegister - call Function10889 + call Pack_PrintTextNoScroll ret ; 103fd GiveItem: ; 103fd ld a, [PartyCount] and a - jp z, Function10486 + jp z, .NoPokemon ld a, [Options] push af - res 4, a + res NO_TEXT_SCROLL, a ld [Options], a ld a, $8 ld [PartyMenuActionText], a @@ -598,55 +611,52 @@ GiveItem: ; 103fd callba LoadPartyMenuGFX callba InitPartyMenuWithCancel callba InitPartyMenuGFX -.asm_10427 +.loop callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call SetPalettes call DelayFrame callba PartyMenuSelect - jr c, .asm_10475 - + jr c, .finish ld a, [CurPartySpecies] cp EGG - jr nz, .asm_10453 - - ld hl, TextJump_AnEGGCantHoldAnItem + jr nz, .give + ld hl, .Egg call PrintText - jr .asm_10427 + jr .loop -.asm_10453 +.give ld a, [wJumptableIndex] push af ld a, [wcf64] push af call GetCurNick ld hl, StringBuffer1 - ld de, wd050 + ld de, wd050_MonNick ld bc, PKMN_NAME_LENGTH call CopyBytes - call Function12bd9 + call TryGiveItemToPartymon pop af ld [wcf64], a pop af ld [wJumptableIndex], a -.asm_10475 +.finish pop af ld [Options], a xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10486: ; 10486 (4:4486) +.NoPokemon: ; 10486 (4:4486) ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret ; 1048d (4:448d) - -TextJump_AnEGGCantHoldAnItem: ; 0x1048d +.Egg: ; 0x1048d ; An EGG can't hold an item. text_jump Text_AnEGGCantHoldAnItem db "@" @@ -656,70 +666,69 @@ QuitItemSubmenu: ; 10492 ret ; 10493 - BattlePack: ; 10493 ld hl, Options - set 4, [hl] - call Function1068a + set NO_TEXT_SCROLL, [hl] + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .end - call Function104b9 + call .RunJumptable call DelayFrame jr .loop .end - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options - res 4, [hl] + res NO_TEXT_SCROLL, [hl] ret ; 104b9 -Function104b9: ; 104b9 +.RunJumptable: ; 104b9 ld a, [wJumptableIndex] - ld hl, Jumptable_104c3 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] + ; 104c3 +.Jumptable: ; 104c3 (4:44c3) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 -Jumptable_104c3: ; 104c3 (4:44c3) - dw Function104d9 - dw Function104e9 - dw Function104fa - dw Function10594 - dw Function105a6 - dw Function10527 - dw Function10539 - dw Function10566 - dw Function10581 - dw Function10874 - dw Function1087e - - -Function104d9: ; 104d9 (4:44d9) +.InitGFX: ; 104d9 (4:44d9) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function104e9: ; 104e9 (4:44e9) +.InitItemsPocket: ; 104e9 (4:44e9) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function104fa: ; 104fa (4:44fa) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 104fa (4:44fa) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -732,22 +741,22 @@ Function104fa: ; 104fa (4:44fa) ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10527: ; 10527 (4:4527) +.InitKeyItemsPocket: ; 10527 (4:4527) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10539: ; 10539 (4:4539) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 10539 (4:4539) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -760,45 +769,45 @@ Function10539: ; 10539 (4:4539) ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10566: ; 10566 (4:4566) +.InitTMHMPocket: ; 10566 (4:4566) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX ld hl, Text_PackEmptyString - call Function10889 - call Function10866 + call Pack_PrintTextNoScroll + call Pack_JumptableNext ret -Function10581: ; 10581 (4:4581) - callba Function2c76f +.TMHMPocketMenu: ; 10581 (4:4581) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c xor a - call Function105dc + call TMHMSubmenu ret -Function10594: ; 10594 (4:4594) +.InitBallsPocket: ; 10594 (4:4594) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function105a6: ; 105a6 (4:45a6) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 105a6 (4:45a6) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -811,21 +820,21 @@ Function105a6: ; 105a6 (4:45a6) ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function105d3: ; 105d3 (4:45d3) +ItemSubmenu: ; 105d3 (4:45d3) callba CheckItemContext ld a, [wItemAttributeParamBuffer] - -Function105dc: ; 105dc (4:45dc) +TMHMSubmenu: ; 105dc (4:45dc) and a jr z, .NoUse ld hl, .UsableMenuDataHeader ld de, .UsableJumptable jr .proceed + .NoUse ld hl, .UnusableMenuDataHeader ld de, .UnusableJumptable @@ -838,10 +847,10 @@ Function105dc: ; 105dc (4:45dc) ret c ld a, [MenuSelection2] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10601 (4:4601) +; 10601 (4:4601) .UsableMenuDataHeader: ; 0x10601 db $40 ; flags db 07, 13 ; start coords @@ -858,8 +867,9 @@ Function105dc: ; 105dc (4:45dc) ; 0x10614 .UsableJumptable: ; 10614 - dw .Use - dw .Quit + jumptable_start + jumptable .Use + jumptable .Quit ; 10618 .UnusableMenuDataHeader: ; 0x10618 @@ -877,7 +887,8 @@ Function105dc: ; 105dc (4:45dc) ; 0x10627 .UnusableJumptable: ; 10627 - dw .Quit + jumptable_start + jumptable .Quit ; 10629 .Use: ; 10629 @@ -888,72 +899,70 @@ Function105dc: ; 105dc (4:45dc) ret .ItemFunctionJumptable: ; 10637 (4:4637) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Unused - dw .BattleField - dw .BattleOnly - + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Unused + jumptable .BattleField + jumptable .BattleOnly .Oak: ; 10645 (4:4645) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Unused: ; 1064c (4:464c) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1066c + jr nz, .ReturnToBattle ret .BattleField: ; 10656 (4:4656) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1067e + jr nz, .quit_run_script xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -.asm_1066c: ; 1066c (4:466c) +.ReturnToBattle: ; 1066c (4:466c) call ClearBGPalettes - jr .asm_1067e + jr .quit_run_script .BattleOnly: ; 10671 (4:4671) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak cp $2 - jr z, .asm_10684 -.asm_1067e: ; 1067e (4:467e) - ld a, $a + jr z, .didnt_use_item +.quit_run_script: ; 1067e (4:467e) + ld a, Pack_QuitRunScriptTableIndex ld [wJumptableIndex], a ret -.asm_10684: ; 10684 (4:4684) +.didnt_use_item: ; 10684 (4:4684) xor a - ld [wd0ec], a + ld [wItemEffectSucceeded], a ret ; 10689 (4:4689) - .Quit: ; 10689 ret ; 1068a - -Function1068a: ; 1068a +InitPackBuffers: ; 1068a xor a ld [wJumptableIndex], a ld a, [wLastPocket] and $3 - ld [wcf65], a + ld [wCurrPocket], a inc a add a dec a @@ -961,50 +970,49 @@ Function1068a: ; 1068a xor a ld [wcf66], a xor a - ld [wd0e3], a + ld [wSwitchItem], a ret ; 106a5 -Function106a5: ; 106a5 +DepositSellInitPackBuffers: ; 106a5 xor a ld [hBGMapMode], a ld [wJumptableIndex], a ld [wcf64], a - ld [wcf65], a + ld [wCurrPocket], a ld [wcf66], a - ld [wd0e3], a - call Function10955 - call Function10a40 + ld [wSwitchItem], a + call Pack_InitGFX + call Pack_InitColors ret ; 106be -Function106be: ; 106be -.asm_106be - call Function106c7 - call Function1076f - jr c, .asm_106be +DepositSellPack: ; 106be +.loop + call .RunJumptable + call DepositSellTutorial_InterpretJoypad + jr c, .loop ret ; 106c7 -Function106c7: ; 106c7 +.RunJumptable: ; 106c7 ld a, [wJumptableIndex] - ld hl, Jumptable_106d1 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] + ; 106d1 - -Jumptable_106d1: ; 106d1 (4:46d1) - dw .ItemsPocket - dw .BallsPocket - dw .KeyItemsPocket - dw .TMHMPocket - - +.Jumptable: ; 106d1 (4:46d1) + jumptable_start + jumptable .ItemsPocket + jumptable .BallsPocket + jumptable .KeyItemsPocket + jumptable .TMHMPocket .ItemsPocket: ; 106d9 (4:46d9) xor a call InitPocket - ld hl, MenuDataHeader_0x10a67 + ld hl, PC_Mart_ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -1020,7 +1028,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) .KeyItemsPocket: ; 106ff (4:46ff) ld a, 2 call InitPocket - ld hl, MenuDataHeader_0x10a97 + ld hl, PC_Mart_KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a @@ -1037,7 +1045,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret @@ -1045,7 +1053,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) .BallsPocket: ; 1073b (4:473b) ld a, 1 call InitPocket - ld hl, MenuDataHeader_0x10ac7 + ld hl, PC_Mart_BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a @@ -1059,61 +1067,60 @@ Jumptable_106d1: ; 106d1 (4:46d1) ret InitPocket: ; 10762 (4:4762) - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX ret - -Function1076f: ; 1076f - ld hl, wcf73 +DepositSellTutorial_InterpretJoypad: ; 1076f + ld hl, wMenuJoypad ld a, [hl] - and $1 - jr nz, .asm_10788 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_1078f + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10795 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_107a8 + and D_RIGHT + jr nz, .d_right scf ret -.asm_10788 - ld a, $1 +.a_button + ld a, TRUE ld [wcf66], a and a ret -.asm_1078f +.b_button xor a ld [wcf66], a and a ret -.asm_10795 +.d_left ld a, [wJumptableIndex] dec a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_107a8 +.d_right ld a, [wJumptableIndex] inc a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf @@ -1121,118 +1128,117 @@ Function1076f: ; 1076f ; 107bb TutorialPack: ; 107bb - call Function106a5 + call DepositSellInitPackBuffers ld a, [InputType] or a jr z, .loop callba _DudeAutoInput_RightA - .loop - call Function107d7 - call Function1076f + call .RunJumptable + call DepositSellTutorial_InterpretJoypad jr c, .loop xor a ld [wcf66], a ret ; 107d7 -Function107d7: ; 107d7 +.RunJumptable: ; 107d7 ld a, [wJumptableIndex] ld hl, .jumptable - call Function1086b + call Pack_GetJumptablePointer jp [hl] + ; 107e1 - .jumptable: ; 107e1 (4:47e1) - dw Function107e9 - dw Function1083b - dw Function10807 - dw Function10826 + jumptable_start + jumptable .Items + jumptable .Balls + jumptable .KeyItems + jumptable .TMHM - -Function107e9: ; 107e9 (4:47e9) +.Items: ; 107e9 (4:47e9) xor a - ld hl, MenuDataHeader_0x107ef - jr Function1085a -; 107ef (4:47ef) + ld hl, .ItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x107ef: ; 0x107ef +; 107ef (4:47ef) +.ItemsMenuDataHeader: ; 0x107ef db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .ItemsMenuData2 db 1 ; default option ; 0x107f7 -.MenuData2: ; 0x107f7 +.ItemsMenuData2: ; 0x107f7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMons + dbw 0, wDudeNumItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10807 -Function10807: ; 10807 (4:4807) +.KeyItems: ; 10807 (4:4807) ld a, 2 - ld hl, MenuDataHeader_0x1080e - jr Function1085a -; 1080e (4:480e) + ld hl, .KeyItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x1080e: ; 0x1080e +; 1080e (4:480e) +.KeyItemsMenuDataHeader: ; 0x1080e db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .KeyItemsMenuData2 db 1 ; default option ; 0x10816 -.MenuData2: ; 0x10816 +.KeyItemsMenuData2: ; 0x10816 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing - dbw 0, OTPartyMon1Exp + 2 + dbw 0, wDudeNumKeyItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10826 -Function10826: ; 10826 (4:4826) +.TMHM: ; 10826 (4:4826) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret -Function1083b: ; 1083b (4:483b) +.Balls: ; 1083b (4:483b) ld a, 1 - ld hl, MenuDataHeader_0x10842 - jr Function1085a -; 10842 (4:4842) + ld hl, .BallsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x10842: ; 0x10842 +; 10842 (4:4842) +.BallsMenuDataHeader: ; 0x10842 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .BallsMenuData2 db 1 ; default option ; 0x1084a -.MenuData2: ; 0x1084a +.BallsMenuData2: ; 0x1084a db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMon1CaughtGender + dbw 0, wDudeNumBalls dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 1085a -Function1085a: ; 1085a (4:485a) +.DisplayPocket: ; 1085a (4:485a) push hl call InitPocket pop hl @@ -1240,12 +1246,12 @@ Function1085a: ; 1085a (4:485a) call HandleScrollingMenu ret -Function10866: ; 10866 (4:4866) +Pack_JumptableNext: ; 10866 (4:4866) ld hl, wJumptableIndex inc [hl] ret -Function1086b: ; 1086b +Pack_GetJumptablePointer: ; 1086b ld e, a ld d, 0 rept 2 @@ -1257,24 +1263,24 @@ endr ret ; 10874 -Function10874: ; 10874 (4:4874) +Pack_QuitNoScript: ; 10874 (4:4874) ld hl, wJumptableIndex set 7, [hl] xor a ld [wcf66], a ret -Function1087e: ; 1087e (4:487e) +Pack_QuitRunScript: ; 1087e (4:487e) ld hl, wJumptableIndex set 7, [hl] - ld a, $1 + ld a, TRUE ld [wcf66], a ret -Function10889: ; 10889 (4:4889) +Pack_PrintTextNoScroll: ; 10889 (4:4889) ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a call PrintText pop af @@ -1283,10 +1289,8 @@ Function10889: ; 10889 (4:4889) WaitBGMap_DrawPackGFX: ; 1089a (4:489a) call WaitBGMap - - DrawPackGFX: ; 1089d - ld a, [wcf65] + ld a, [wCurrPocket] and $3 ld e, a ld d, $0 @@ -1296,7 +1300,6 @@ DrawPackGFX: ; 1089d ld a, [PlayerGender] bit 0, a jr nz, .female - .male_dude ld hl, PackGFXPointers rept 2 @@ -1322,85 +1325,91 @@ PackGFXPointers: ; 108cc dw PackGFX + $f0 * 2 ; 108d4 -Function108d4: ; 108d4 (4:48d4) - ld hl, wcf73 - ld a, [wd0e3] +Pack_InterpretJoypad: ; 108d4 (4:48d4) + ld hl, wMenuJoypad + ld a, [wSwitchItem] and a - jr nz, .asm_10931 + jr nz, .switching_item ld a, [hl] - and $1 - jr nz, .asm_108f8 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_108fa + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10901 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_10912 + and D_RIGHT + jr nz, .d_right ld a, [hl] - and $4 - jr nz, .asm_10923 + and SELECT + jr nz, .select scf ret -.asm_108f8 + +.a_button and a ret -.asm_108fa - ld a, $9 + +.b_button + ld a, Pack_QuitNoScriptTableIndex ld [wJumptableIndex], a scf ret -.asm_10901 + +.d_left ld a, b ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10912 + +.d_right ld a, c ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10923 - callba Function2490c + +.select + callba SwitchItemsInBag ld hl, Text_MoveItemWhere - call Function10889 + call Pack_PrintTextNoScroll scf ret -.asm_10931 + +.switching_item ld a, [hl] - and $5 - jr nz, .asm_1093d + and A_BUTTON | SELECT + jr nz, .place_insert ld a, [hl] - and $2 - jr nz, .asm_1094f + and B_BUTTON + jr nz, .end_switch scf ret -.asm_1093d - callba Function2490c + +.place_insert + callba SwitchItemsInBag ld de, SFX_SWITCH_POKEMON call WaitPlaySFX ld de, SFX_SWITCH_POKEMON call WaitPlaySFX -.asm_1094f +.end_switch xor a - ld [wd0e3], a + ld [wSwitchItem], a scf ret - -Function10955: ; 10955 +Pack_InitGFX: ; 10955 call ClearBGPalettes call ClearTileMap call ClearSprites @@ -1410,18 +1419,15 @@ Function10955: ; 10955 ld bc, $60 tiles ld a, BANK(PackMenuGFX) call FarCopyBytes - ; Background (blue if male, pink if female) hlcoord 0, 1 ld bc, 11 * SCREEN_WIDTH ld a, $24 call ByteFill - ; This is where the items themselves will be listed. hlcoord 5, 1 lb bc, 11, 15 call ClearBox - ; ◀▶ POCKET ▼▲ ITEMS hlcoord 0, 0 ld a, $28 @@ -1431,10 +1437,8 @@ Function10955: ; 10955 inc a dec c jr nz, .loop - call DrawPocketName call PlacePackGFX - ; Place the textbox for displaying the item description hlcoord 0, SCREEN_HEIGHT - 4 - 2 lb bc, 4, SCREEN_WIDTH - 2 @@ -1463,13 +1467,11 @@ PlacePackGFX: ; 109a5 ; 109bb DrawPocketName: ; 109bb - ld a, [wcf65] - + ld a, [wCurrPocket] ; * 15 ld d, a swap a sub d - ld d, 0 ld e, a ld hl, .tilemap @@ -1499,15 +1501,12 @@ DrawPocketName: ; 109bb db $00, $04, $04, $04, $01 ; top border db $06, $07, $08, $09, $0a ; Items db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $15, $16, $17, $18, $19 ; Balls db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $0b, $0c, $0d, $0e, $0f ; Key Items db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $10, $11, $12, $13, $14 ; TM/HM db $02, $05, $05, $05, $03 ; bottom border @@ -1536,25 +1535,24 @@ ClearPocketList: ; 10a36 (4:4a36) call ClearBox ret - -Function10a40: ; 10a40 +Pack_InitColors: ; 10a40 call WaitBGMap - ld b, SCREEN_WIDTH + ld b, SCGB_14 call GetSGBLayout call SetPalettes call DelayFrame ret ; 10a4f -MenuDataHeader_0x10a4f: ; 0x10a4f +ItemsPocketMenuDataHeader: ; 0x10a4f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a57 + dw .MenuData2 db 1 ; default option ; 0x10a57 -MenuData2_0x10a57: ; 0x10a57 +.MenuData2: ; 0x10a57 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1564,15 +1562,15 @@ MenuData2_0x10a57: ; 0x10a57 dba UpdateItemDescription ; 10a67 -MenuDataHeader_0x10a67: ; 0x10a67 +PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a6f + dw .MenuData2 db 1 ; default option ; 0x10a6f -MenuData2_0x10a6f: ; 0x10a6f +.MenuData2: ; 0x10a6f db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1582,15 +1580,15 @@ MenuData2_0x10a6f: ; 0x10a6f dba UpdateItemDescription ; 10a7f -MenuDataHeader_0x10a7f: ; 0x10a7f +KeyItemsPocketMenuDataHeader: ; 0x10a7f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a87 + dw .MenuData2 db 1 ; default option ; 0x10a87 -MenuData2_0x10a87: ; 0x10a87 +.MenuData2: ; 0x10a87 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1600,15 +1598,15 @@ MenuData2_0x10a87: ; 0x10a87 dba UpdateItemDescription ; 10a97 -MenuDataHeader_0x10a97: ; 0x10a97 +PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a9f + dw .MenuData2 db 1 ; default option ; 0x10a9f -MenuData2_0x10a9f: ; 0x10a9f +.MenuData2: ; 0x10a9f db $2e ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1618,15 +1616,15 @@ MenuData2_0x10a9f: ; 0x10a9f dba UpdateItemDescription ; 10aaf -MenuDataHeader_0x10aaf: ; 0x10aaf +BallsPocketMenuDataHeader: ; 0x10aaf db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10ab7 + dw .MenuData2 db 1 ; default option ; 0x10ab7 -MenuData2_0x10ab7: ; 0x10ab7 +.MenuData2: ; 0x10ab7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1636,15 +1634,15 @@ MenuData2_0x10ab7: ; 0x10ab7 dba UpdateItemDescription ; 10ac7 -MenuDataHeader_0x10ac7: ; 0x10ac7 +PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10acf + dw .MenuData2 db 1 ; default option ; 0x10acf -MenuData2_0x10acf: ; 0x10acf +.MenuData2: ; 0x10acf db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1723,6 +1721,5 @@ TextJump_YouCantUseItInABattle: ; 0x10b11 PackMenuGFX: INCBIN "gfx/misc/pack_menu.2bpp" - PackGFX: INCBIN "gfx/misc/pack.2bpp" diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 4cf3f79b6..3a0996da1 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -431,9 +431,9 @@ KrisDepositItemMenu: ; 0x1588b jr c, .asm_158b6 call DisableSpriteUpdates call LoadStandardMenuDataHeader - callba Function106a5 + callba DepositSellInitPackBuffers .asm_1589c - callba Function106be + callba DepositSellPack ld a, [wcf66] and a jr z, .asm_158b3 @@ -629,7 +629,7 @@ Function15985: ; 0x15985 call Function156c7 .asm_159f2 - callba Function2490c + callba SwitchItemsInBag .asm_159f8 jp .asm_15989 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 1a5a7f535..029f287c7 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -795,49 +795,49 @@ GiveTakePartyMonItem: ; 12b60 ; Eggs can't hold items! ld a, [CurPartySpecies] cp EGG - jr z, .asm_12ba6 + jr z, .cancel ld hl, GiveTakeItemMenuData call LoadMenuDataHeader call InterpretMenu2 call ExitMenu - jr c, .asm_12ba6 + jr c, .cancel call GetCurNick ld hl, StringBuffer1 - ld de, wd050 - ld bc, $b + ld de, wd050_MonNick + ld bc, PKMN_NAME_LENGTH call CopyBytes ld a, [MenuSelection2] cp 1 - jr nz, .asm_12ba0 + jr nz, .take call LoadStandardMenuDataHeader call ClearPalettes - call Function12ba9 + call .GiveItem call ClearPalettes call LoadFontsBattleExtra call ExitMenu ld a, 0 ret -.asm_12ba0 +.take call TakePartyItem ld a, 3 ret -.asm_12ba6 +.cancel ld a, 3 ret ; 12ba9 -Function12ba9: ; 12ba9 +.GiveItem: ; 12ba9 - callba Function106a5 + callba DepositSellInitPackBuffers .loop - callba Function106be + callba DepositSellPack ld a, [wcf66] and a @@ -852,7 +852,7 @@ Function12ba9: ; 12ba9 and a jr nz, .next - call Function12bd9 + call TryGiveItemToPartymon jr .quit .next @@ -865,41 +865,41 @@ Function12ba9: ; 12ba9 ; 12bd9 -Function12bd9: ; 12bd9 +TryGiveItemToPartymon: ; 12bd9 call SpeechTextBox call PartyMonItemName call GetPartyItemLocation ld a, [hl] and a - jr z, .asm_12bf4 + jr z, .give_item_to_mon push hl ld d, a callba ItemIsMail pop hl - jr c, .asm_12c01 + jr c, .please_remove_mail ld a, [hl] - jr .asm_12c08 + jr .already_holding_item -.asm_12bf4 +.give_item_to_mon call GiveItemToPokemon ld hl, MadeHoldText call MenuTextBoxBackup call GivePartyItem ret -.asm_12c01 +.please_remove_mail ld hl, PleaseRemoveMailText call MenuTextBoxBackup ret -.asm_12c08 +.already_holding_item ld [wd265], a call GetItemName ld hl, SwitchAlreadyHoldingText call StartMenuYesNo - jr c, .asm_12c4b + jr c, .abort call GiveItemToPokemon ld a, [wd265] @@ -909,7 +909,7 @@ Function12bd9: ; 12bd9 pop af ld [CurItem], a call ReceiveItemFromPokemon - jr nc, .asm_12c3c + jr nc, .bag_full ld hl, TookAndMadeHoldText call MenuTextBoxBackup @@ -918,14 +918,14 @@ Function12bd9: ; 12bd9 call GivePartyItem ret -.asm_12c3c +.bag_full ld a, [wd265] ld [CurItem], a call ReceiveItemFromPokemon ld hl, ItemStorageIsFullText call MenuTextBoxBackup -.asm_12c4b +.abort ret ; 12c4c diff --git a/engine/switch_items.asm b/engine/switch_items.asm new file mode 100755 index 000000000..834648773 --- /dev/null +++ b/engine/switch_items.asm @@ -0,0 +1,274 @@ +SwitchItemsInBag: ; 2490c (9:490c) + ld a, [wSwitchItem] + and a + jr z, .init + ld b, a + ld a, [wCurrPocketCursorPosition] + inc a + cp b + jr z, .trivial + ld a, [wCurrPocketCursorPosition] + call Function24a5c + ld a, [hl] + cp $ff + ret z + ld a, [wSwitchItem] + dec a + ld [wSwitchItem], a + call Function249a7 + jp c, Function249d1 + ld a, [wCurrPocketCursorPosition] + ld c, a + ld a, [wSwitchItem] + cp c + jr c, .asm_2497a + jr .asm_2494a + +.init + ld a, [wCurrPocketCursorPosition] + inc a + ld [wSwitchItem], a + ret + +.trivial + xor a + ld [wSwitchItem], a + ret + +.asm_2494a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wCurrPocketCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call Function24a5c + dec hl + push hl + call Function24a80 + add hl, bc + ld d, h + ld e, l + pop hl + pop bc + call Function24aab + ld a, [wCurrPocketCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +.asm_2497a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wCurrPocketCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call Function24a5c + ld d, h + ld e, l + call Function24a80 + add hl, bc + pop bc + call CopyBytes + ld a, [wCurrPocketCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +Function249a7: ; 249a7 (9:49a7) + ld a, [wSwitchItem] + call Function24a5c + ld d, h + ld e, l + ld a, [wCurrPocketCursorPosition] + call Function24a5c + ld a, [de] + cp [hl] + jr nz, .asm_249cd + ld a, [wCurrPocketCursorPosition] + call Function24a97 + cp 99 + jr z, .asm_249cd + ld a, [wSwitchItem] + call Function24a97 + cp 99 + jr nz, .asm_249cf +.asm_249cd + and a + ret + +.asm_249cf + scf + ret + +Function249d1: ; 249d1 (9:49d1) + ld a, [wSwitchItem] + call Function24a5c + inc hl + push hl + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + ld a, [hl] + pop hl + add [hl] + cp 100 + jr c, .asm_24a01 + sub 99 + push af + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + ld [hl], 99 + ld a, [wSwitchItem] + call Function24a5c + inc hl + pop af + ld [hl], a + xor a + ld [wSwitchItem], a + ret + +.asm_24a01 + push af + ld a, [wCurrPocketCursorPosition] + call Function24a5c + inc hl + pop af + ld [hl], a + ld hl, wMenuData2Addr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wSwitchItem] + cp [hl] + jr nz, .asm_24a25 + dec [hl] + ld a, [wSwitchItem] + call Function24a5c + ld [hl], $ff + xor a + ld [wSwitchItem], a + ret + +.asm_24a25 + dec [hl] + call Function24a80 + push bc + ld a, [wSwitchItem] + call Function24a5c + pop bc + push hl + add hl, bc + pop de +.asm_24a34 + ld a, [hli] + ld [de], a + inc de + cp $ff + jr nz, .asm_24a34 + xor a + ld [wSwitchItem], a + ret + +Function24a40: ; 24a40 (9:4a40) + call Function24a5c + ld de, wd002 + call Function24a80 + call CopyBytes + ret + +Function24a4d: ; 24a4d (9:4a4d) + call Function24a5c + ld d, h + ld e, l + ld hl, wd002 + call Function24a80 + call CopyBytes + ret + +Function24a5c: ; 24a5c (9:4a5c) + push af + call Function24a80 + ld hl, wMenuData2Addr + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + pop af + call AddNTimes + ret + +Function24a6c: ; 24a6c (9:4a6c) + push hl + call Function24a80 + ld a, d + sub e + jr nc, .asm_24a76 + dec a + cpl +.asm_24a76 + ld hl, 0 + call AddNTimes + ld b, h + ld c, l + pop hl + ret + +Function24a80: ; 24a80 (9:4a80) + push hl + ld a, [wcf94] + ld c, a + ld b, 0 + ld hl, Unknown_24a91 +rept 2 + add hl, bc +endr + ld c, [hl] + inc hl + ld b, [hl] + pop hl + ret + +; 24a91 (9:4a91) + +Unknown_24a91: ; 24a91 + dw 0, 1, 2 +; 24a97 + +Function24a97: ; 24a97 (9:4a97) + push af + call Function24a80 + ld a, c + cp $2 + jr nz, .asm_24aa7 + pop af + call Function24a5c + inc hl + ld a, [hl] + ret + +.asm_24aa7 + pop af + ld a, $1 + ret + +Function24aab: ; 24aab (9:4aab) +.loop + ld a, [hld] + ld [de], a + dec de + dec bc + ld a, b + or c + jr nz, .loop + ret diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm new file mode 100755 index 000000000..d9e05fb8c --- /dev/null +++ b/engine/tmhm2.asm @@ -0,0 +1,592 @@ +TMHMPocket: ; 2c76f (b:476f) + ld a, $1 + ld [hInMenu], a + call TMHM_PocketLoop + ld a, $0 + ld [hInMenu], a + ret nc + call Function1bee + call WaitBGMap + ld a, [CurItem] + dec a + ld [ItemCountBuffer], a + ld hl, TMsHMs + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + ld [wItemQuantityBuffer], a + call .ConvertItemToTMHMNumber + scf + ret + +.ConvertItemToTMHMNumber: ; 2c798 (b:4798) + ld a, [CurItem] + ld c, a + callab GetNumberedTMHM + ld a, c + ld [CurItem], a + ret + +ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7) + ld a, [CurItem] + ld c, a + callab GetTMHMNumber + ld a, c + ld [wCurTMHM], a + ret + +GetTMHMItemMove: ; 2c7b6 (b:47b6) + call ConvertCurItemIntoCurTMHM + predef GetTMHMMove + ret + +AskTeachTMHM: ; 2c7bf (b:47bf) + ld hl, Options + ld a, [hl] + push af + res NO_TEXT_SCROLL, [hl] + ld a, [CurItem] + cp TM01 + jr c, .NotTMHM + call GetTMHMItemMove + ld a, [wCurTMHM] + ld [wPutativeTMHMMove], a + call GetMoveName + call CopyName1 + ld hl, Text_BootedTM ; Booted up a TM + ld a, [CurItem] + cp HM01 + jr c, .TM + ld hl, Text_BootedHM ; Booted up an HM +.TM + call PrintText + ld hl, Text_ItContained + call PrintText + call YesNoBox +.NotTMHM + pop bc + ld a, b + ld [Options], a + ret + +ChooseMonToLearnTMHM: ; 2c7fb + ld hl, StringBuffer2 + ld de, wd066 + ld bc, 12 + call CopyBytes + call ClearBGPalettes +ChooseMonToLearnTMHM_NoRefresh: ; 2c80a + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX + ld a, $3 + ld [PartyMenuActionText], a +.loopback + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + callba PartyMenuSelect + push af + ld a, [CurPartySpecies] + cp EGG + pop bc ; now contains the former contents of af + jr z, .egg + push bc + ld hl, wd066 + ld de, StringBuffer2 + ld bc, 12 + call CopyBytes + pop af ; now contains the original contents of af + ret + +.egg + push hl + push de + push bc + push af + ld de, SFX_WRONG + call PlaySFX + call WaitSFX + pop af + pop bc + pop de + pop hl + jr .loopback +; 2c867 + +TeachTMHM: ; 2c867 + predef CanLearnTMHMMove + + push bc + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + pop bc + + ld a, c + and a + jr nz, .compatible + push de + ld de, SFX_WRONG + call PlaySFX + pop de + ld hl, Text_TMHMNotCompatible + call PrintText + jr .nope + +.compatible + callab KnowsMove + jr c, .nope + + predef LearnMove + ld a, b + and a + jr z, .nope + + callba MobileFn_106049 + ld a, [CurItem] + call IsHM + ret c + + ld c, HAPPINESS_LEARNMOVE + callab ChangeHappiness + call ConsumeTM + jr .learned_move + +.nope + and a + ret + +.unused + ld a, 2 + ld [wItemEffectSucceeded], a +.learned_move + scf + ret +; 2c8bf (b:48bf) + +Text_BootedTM: ; 0x2c8bf + ; Booted up a TM. + text_jump UnknownText_0x1c0373 + db "@" +; 0x2c8c4 + +Text_BootedHM: ; 0x2c8c4 + ; Booted up an HM. + text_jump UnknownText_0x1c0384 + db "@" +; 0x2c8c9 + +Text_ItContained: ; 0x2c8c9 + ; It contained @ . Teach @ to a #MON? + text_jump UnknownText_0x1c0396 + db "@" +; 0x2c8ce + +Text_TMHMNotCompatible: ; 0x2c8ce + ; is not compatible with @ . It can't learn @ . + text_jump UnknownText_0x1c03c2 + db "@" +; 0x2c8d3 + +TMHM_PocketLoop: ; 2c8d3 (b:48d3) + xor a + ld [hBGMapMode], a + call TMHM_DisplayPocketItems + ld a, $2 + ld [wcfa1], a + ld a, $7 + ld [wcfa2], a + ld a, $1 + ld [wcfa4], a + ld a, $5 + sub d + inc a + cp $6 + jr nz, .okay + dec a +.okay + ld [wcfa3], a + ld a, $c + ld [wcfa5], a + xor a + ld [wcfa6], a + ld a, $20 + ld [wcfa7], a + ld a, $f3 + ld [wcfa8], a + ld a, [wTMHMPocketCursor] + inc a + ld [MenuSelection2], a + ld a, $1 + ld [wcfaa], a + jr TMHM_ShowTMMoveDescription + +TMHM_JoypadLoop: ; 2c915 (b:4915) + call TMHM_DisplayPocketItems + call Function1bc9 + ld b, a + ld a, [MenuSelection2] + dec a + ld [wTMHMPocketCursor], a + xor a + ld [hBGMapMode], a + ld a, [wcfa6] + bit 7, a + jp nz, TMHM_ScrollPocket + ld a, b + ld [wMenuJoypad], a + bit A_BUTTON_F, a + jp nz, TMHM_ChooseTMorHM + bit B_BUTTON_F, a + jp nz, TMHM_ExitPack + bit D_RIGHT_F, a + jp nz, TMHM_ExitPocket + bit D_LEFT_F, a + jp nz, TMHM_ExitPocket +TMHM_ShowTMMoveDescription: ; 2c946 (b:4946) + call TMHM_CheckHoveringOverCancel + jp nc, TMHM_ExitPocket + hlcoord 0, 12 + ld b, 4 + ld c, SCREEN_WIDTH - 2 + call TextBox + ld a, [CurItem] + cp NUM_TMS + NUM_HMS + 1 + jr nc, TMHM_JoypadLoop + ld [wd265], a + predef GetTMHMMove + ld a, [wd265] + ld [CurSpecies], a + hlcoord 1, 14 + call PrintMoveDesc + jp TMHM_JoypadLoop + +TMHM_ChooseTMorHM: ; 2c974 (b:4974) + call TMHM_PlaySFX_ReadText2 + call CountTMsHMs ; This stores the count to wd265. + ld a, [MenuSelection2] + dec a + ld b, a + ld a, [wTMHMPocketScrollPosition] + add b + ld b, a + ld a, [wd265] + cp b + jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL +TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a) + call TMHM_GetCurrentPocketPosition + ld a, [MenuSelection2] + ld b, a +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .okay + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld a, c +.okay + ld [CurItem], a + cp -1 + ret + +TMHM_ExitPack: ; 2c9a5 (b:49a5) + call TMHM_PlaySFX_ReadText2 +_TMHM_ExitPack: ; 2c9a8 (b:49a8) + ld a, $2 + ld [wMenuJoypad], a + and a + ret + +TMHM_ExitPocket: ; 2c9af (b:49af) + and a + ret + +TMHM_ScrollPocket: ; 2c9b1 (b:49b1) + ld a, b + bit 7, a + jr nz, .skip + ld hl, wTMHMPocketScrollPosition + ld a, [hl] + and a + jp z, TMHM_JoypadLoop + dec [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +.skip + call TMHM_GetCurrentPocketPosition + ld b, 5 +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jp nc, TMHM_JoypadLoop + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld hl, wTMHMPocketScrollPosition + inc [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2) + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jp z, Tutorial_TMHMPocket + + hlcoord 5, 2 + lb bc, 10, 15 + ld a, " " + call ClearBox + call TMHM_GetCurrentPocketPosition + ld d, $5 +.loop2 + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .NotTMHM + ld a, [hli] + and a + jr z, .loop2 + ld b, a + ld a, c + ld [wd265], a + push hl + push de + push bc + call TMHMPocket_GetCurrentLineCoord + push hl + ld a, [wd265] + cp NUM_TMS + 1 + jr nc, .HM + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + jr .okay + +.HM + push af + sub NUM_TMS + ld [wd265], a + ld [hl], "H" + inc hl + ld de, wd265 + lb bc, PRINTNUM_RIGHTALIGN | 1, 2 + call PrintNum + pop af + ld [wd265], a +.okay + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + pop hl + ld bc, 3 + add hl, bc + push hl + call PlaceString + pop hl + pop bc + ld a, c + push bc + cp NUM_TMS + 1 + jr nc, .hm2 + ld bc, SCREEN_WIDTH + 9 + add hl, bc + ld [hl], "×" + inc hl + ld a, "0" ; why are we doing this? + pop bc + push bc + ld a, b + ld [wd265], a + ld de, wd265 + lb bc, 1, 2 + call PrintNum +.hm2 + pop bc + pop de + pop hl + dec d + jr nz, .loop2 + jr .done + +.NotTMHM + call TMHMPocket_GetCurrentLineCoord +rept 3 + inc hl +endr + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de +.done + ret + +TMHMPocket_GetCurrentLineCoord: ; 2ca86 (b:4a86) + hlcoord 5, 0 + ld bc, 2 * SCREEN_WIDTH + ld a, 6 + sub d + ld e, a + ; AddNTimes +.loop + add hl, bc + dec e + jr nz, .loop + ret +; 2ca95 (b:4a95) + +Function2ca95: ; 2ca95 +; unreferenced + pop hl + ld bc, 3 + add hl, bc + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + push hl + call PlaceString + pop hl + ret +; 2caae + +TMHM_String_Cancel: ; 2caae + db "CANCEL@" +; 2cab5 + +TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5) + ld hl, TMsHMs + ld a, [wTMHMPocketScrollPosition] + ld b, a + inc b + ld c, 0 +.loop + inc c + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + dec hl + dec c + ret + +Tutorial_TMHMPocket: ; 2caca (b:4aca) + hlcoord 9, 3 + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de + ret + +TMHM_PlaySFX_ReadText2: ; 2cad6 (b:4ad6) + push de + ld de, SFX_READ_TEXT_2 + call PlaySFX + pop de + ret +; 2cadf (b:4adf) + +Function2cadf: ; 2cadf +; unreferenced + call ConvertCurItemIntoCurTMHM + call .CheckHaveRoomForTMHM + ld hl, .NoRoomText + jr nc, .print + ld hl, .ReceivedText +.print + jp PrintText +; 2caf0 + +.NoRoomText: ; 0x2caf0 + ; You have no room for any more @ S. + text_jump UnknownText_0x1c03fa + db "@" +; 0x2caf5 + +.ReceivedText: ; 0x2caf5 + ; You received @ ! + text_jump UnknownText_0x1c0421 + db "@" +; 0x2cafa + +.CheckHaveRoomForTMHM: ; 2cafa + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + inc a + cp NUM_TMS * 2 + ret nc + ld [hl], a + ret +; 2cb0c + +ConsumeTM: ; 2cb0c (b:4b0c) + call ConvertCurItemIntoCurTMHM + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + and a + ret z + dec a + ld [hl], a + ret nz + ld a, [wTMHMPocketScrollPosition] + and a + ret z + dec a + ld [wTMHMPocketScrollPosition], a + ret + +CountTMsHMs: ; 2cb2a (b:4b2a) + ld b, 0 + ld c, NUM_TMS + NUM_HMS + ld hl, TMsHMs +.loop + ld a, [hli] + and a + jr z, .skip + inc b +.skip + dec c + jr nz, .loop + ld a, b + ld [wd265], a + ret + +PrintMoveDesc: ; 2cb3e + push hl + ld hl, MoveDescriptions + ld a, [CurSpecies] + dec a + ld c, a + ld b, 0 +rept 2 + add hl, bc +endr + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + jp PlaceString +; 2cb52 diff --git a/home/menu.asm b/home/menu.asm index 8c6be5471..26ac505e6 100644 --- a/home/menu.asm +++ b/home/menu.asm @@ -28,7 +28,8 @@ MenuTextBox:: ; 1d4f jp PrintText ; 1d57 -Function1d57:: ; 1d57 +ret_1d57:: ; 1d57 +; unreferenced ret ; 1d58 @@ -423,9 +424,9 @@ Function1f2a:: ; 1f2a ret ; 1f79 -Function1f79:: ; 1f79 +PlaceMenuStrings:: ; 1f79 push de - ld hl, wcf97 + ld hl, wMenuData2PointerTableAddr ld a, [hli] ld h, [hl] ld l, a @@ -441,7 +442,7 @@ Function1f79:: ; 1f79 PlaceNthMenuStrings:: ; 1f8d push de ld a, [MenuSelection] - call Function1fb1 + call GetMenuDataPointerTableEntry rept 2 inc hl endr @@ -454,7 +455,8 @@ endr ; 1f9e Function1f9e:: ; 1f9e - call Function1fb1 +; unreferenced + call GetMenuDataPointerTableEntry rept 2 inc hl endr @@ -466,17 +468,17 @@ endr MenuJumptable:: ; 1fa7 ld a, [MenuSelection] - call Function1fb1 + call GetMenuDataPointerTableEntry ld a, [hli] ld h, [hl] ld l, a jp [hl] ; 1fb1 -Function1fb1:: ; 1fb1 +GetMenuDataPointerTableEntry:: ; 1fb1 ld e, a ld d, $0 - ld hl, wcf97 + ld hl, wMenuData2PointerTableAddr ld a, [hli] ld h, [hl] ld l, a diff --git a/items/item_effects.asm b/items/item_effects.asm index 621125a3b..d6b77a849 100644 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -4,7 +4,7 @@ _DoItemEffect:: ; e722 call GetItemName call CopyName1 ld a, 1 - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ld a, [CurItem] dec a ld hl, ItemEffects @@ -1220,7 +1220,7 @@ SunStone: ; ee0f .DecidedNotToUse xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ret ; ee3d @@ -1293,7 +1293,7 @@ UpdateStatsAfterItem: ; ee8c RareCandy_StatBooster_ExitMenu: ; ee9f xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a jp ClearPalettes ; eea6 @@ -1930,7 +1930,7 @@ StatusHealer_NoEffect: ; f299 (3:7299) StatusHealer_ExitMenu: ; f29e (3:729e) xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a StatusHealer_ClearPalettes: ; f2a2 (3:72a2) call ClearPalettes ret @@ -2233,10 +2233,10 @@ Softboiled_MilkDrinkFunction: ; f3df (3:73df) EscapeRope: ; f44f xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a callba EscapeRopeFunction - ld a, [wPlayerAction] + ld a, [wItemEffectSucceeded] cp 1 call z, UseDisposableItem ret @@ -2298,7 +2298,7 @@ PokeDoll: ; f48f .asm_f4a6 xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ret ; f4ab @@ -2701,7 +2701,7 @@ PPRestoreItem_NoEffect: ; f6dd PPRestoreItem_Cancel: ; f6e0 call ClearPalettes xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ret ; f6e8 @@ -2802,7 +2802,7 @@ BasementKey: ; f74c SacredAsh: ; f753 callba _SacredAsh - ld a, [wPlayerAction] + ld a, [wItemEffectSucceeded] cp $1 ret nz call UseDisposableItem @@ -2973,7 +2973,7 @@ WontHaveAnyEffect_NotUsedMessage: ; f7ca ; Item wasn't used. ld a, $2 - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ret ; f7d6 @@ -2988,7 +2988,7 @@ Ball_BoxIsFullMessage: ; f7dc ; Item wasn't used. ld a, $2 - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a ret ; f7e8 @@ -3018,7 +3018,7 @@ CantGetOnYourBikeMessage: ; f801 CantUseItemMessage: ; f804 ; Item couldn't be used. xor a - ld [wPlayerAction], a + ld [wItemEffectSucceeded], a jp PrintText ; f80b diff --git a/main.asm b/main.asm index 73f168a94..02b5ceba7 100644 --- a/main.asm +++ b/main.asm @@ -1,9 +1,7 @@ INCLUDE "includes.asm" - SECTION "bank1", ROMX, BANK[$1] - PlaceWaitingText:: ; 4000 hlcoord 3, 10 ld b, 1 @@ -55,7 +53,6 @@ PushOAM: ; 403f PushOAMEnd ; 4049 - INCLUDE "engine/map_objects.asm" INCLUDE "engine/intro_menu.asm" @@ -248,7 +245,6 @@ CheckNickErrors:: ; 669f db -1 ; end ; 66de - INCLUDE "engine/math.asm" ItemAttributes: ; 67c1 @@ -256,7 +252,6 @@ INCLUDE "items/item_attributes.asm" ; 6ec1 INCLUDE "engine/npc_movement.asm" - GetFirstPokemonHappiness: ; 718d ld hl, PartyMon1Happiness ld bc, PARTYMON_STRUCT_LENGTH @@ -291,7 +286,6 @@ CheckFirstMonIsEgg: ; 71ac jp CopyPokemonName_Buffer1_Buffer3 ; 71c2 - ChangeHappiness: ; 71c2 ; Perform happiness action c on CurPartyMon @@ -387,7 +381,6 @@ endr db +10, +6, +4 ; Gained a level in the place where it was caught ; 725a - StepHappiness:: ; 725a ; Raise the party's happiness by 1 point every other step cycle. @@ -424,7 +417,6 @@ StepHappiness:: ; 725a ret ; 7282 - DaycareStep:: ; 7282 ld a, [wDaycareMan] @@ -505,7 +497,6 @@ DaycareStep:: ; 7282 ret ; 7305 - SpecialGiveShuckle: ; 7305 ; Adding to the party. @@ -579,7 +570,6 @@ SpecialShuckleNick: db "SHUCKIE@" ; 737e - SpecialReturnShuckle: ; 737e callba SelectMonFromParty jr c, .refused @@ -752,7 +742,6 @@ Predef1: ; 747a ret ; 747b - SECTION "bank2", ROMX, BANK[$2] Function8000: ; 8000 @@ -844,7 +833,6 @@ PlayerSpawn_ConvertCoords: ; 808f ret ; 80a1 - WritePersonXY:: ; 80a1 ld a, b call CheckObjectVisibility @@ -892,7 +880,6 @@ RefreshPlayerCoords: ; 80b8 ret ; 80e7 - CopyObjectStruct:: ; 80e7 call CheckObjectMask and a @@ -1188,7 +1175,6 @@ Function823e: ; 823e ret ; 8286 - CopyTempObjectToObjectStruct: ; 8286 ld a, [wTempObjectCopyMapObjectIndex] ld hl, OBJECT_MAP_OBJECT_INDEX @@ -1390,7 +1376,6 @@ Special_SurfStartStep: ; 8379 slow_step_right ; 839e - FollowNotExact:: ; 839e push bc ld a, c @@ -1703,13 +1688,10 @@ endr sine_wave $100 ; 854b - INCLUDE "engine/predef.asm" - INCLUDE "engine/color.asm" - SECTION "bank3", ROMX, BANK[$3] CheckTime:: ; c000 @@ -1734,10 +1716,8 @@ TimeOfDayTable: ; c012 db -1 ; c01b - INCLUDE "engine/specials.asm" - _PrintNum:: ; c4c7 ; Print c digits of the b-byte value from de to hl. ; Allows 2 to 7 digits. For 1-digit numbers, add @@ -2042,7 +2022,6 @@ _PrintNum:: ; c4c7 ret ; c658 - HealParty: ; c658 xor a ld [CurPartyMon], a @@ -2157,7 +2136,6 @@ AnimateHPBar: ; c6e0 ret ; c6ea - ClearBuffer1: ; c6ea xor a ld hl, Buffer1 @@ -2181,7 +2159,6 @@ FieldMoveJumptable: ; c6f5 ret ; c706 - GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 ld hl, PartyMonNicknames @@ -2197,7 +2174,6 @@ GetPartyNick: ; c706 ret ; c721 - CheckEngineFlag: ; c721 ; Check engine flag de ; Return carry if flag is not set @@ -2231,7 +2207,6 @@ BadgeRequiredText: ; c73d db "@" ; c742 - CheckPartyMove: ; c742 ; Check if a monster in your party has move d. @@ -2277,7 +2252,6 @@ CheckPartyMove: ; c742 ret ; c779 - FieldMoveFailed: ; c779 ld hl, UnknownText_0xc780 call MenuTextBoxBackup @@ -2300,13 +2274,11 @@ CutFunction: ; c785 ret ; c796 - .Jumptable: ; c796 (3:4796) dw .CheckAble dw .DoCut dw .FailCut - .CheckAble: ; c79c (3:479c) ld de, ENGINE_HIVEBADGE call CheckBadge @@ -2570,14 +2542,12 @@ SurfFunction: ; c909 ret ; c91a - .Jumptable: ; c91a (3:491a) dw .TrySurf dw .DoSurf dw .FailSurf dw .AlreadySurfing - .TrySurf: ; c922 (3:4922) ld de, ENGINE_FOGBADGE call CheckBadge @@ -2673,7 +2643,6 @@ AlreadySurfingText: ; c9b3 db "@" ; c9b8 - GetSurfType: ; c9b8 ; Surfing on Pikachu uses an alternate sprite. ; This is done by using a separate movement type. @@ -2692,7 +2661,6 @@ GetSurfType: ; c9b8 ret ; c9cb - CheckDirection: ; c9cb ; Return carry if a tile permission prevents you ; from moving in the direction you're facing. @@ -2725,7 +2693,6 @@ CheckDirection: ; c9cb db FACE_RIGHT ; c9e7 - TrySurfOW:: ; c9e7 ; Checking a tile in the overworld. ; Return carry if surfing is allowed. @@ -2775,7 +2742,6 @@ TrySurfOW:: ; c9e7 ret ; ca2c - AskSurfScript: ; ca2c opentext writetext AskSurfText @@ -2790,7 +2756,6 @@ AskSurfText: ; ca36 db "@" ; Want to SURF? ; ca3b - FlyFunction: ; ca3b call ClearBuffer1 .asm_ca3e @@ -2808,7 +2773,6 @@ FlyFunction: ; ca3b dw .FailFly ; ca52 - .TryFly: ; ca52 ; Fly ld de, ENGINE_STORMBADGE @@ -3015,7 +2979,6 @@ UnknownText_0xcb90: ; 0xcb90 db "@" ; 0xcb95 - EscapeRopeFunction: ; cb95 call ClearBuffer1 ld a, $1 @@ -3568,7 +3531,6 @@ UnknownText_0xce78: ; 0xce78 db "@" ; 0xce7d - HeadbuttFunction: ; ce7d call TryHeadbuttFromMenu and $7f @@ -3661,7 +3623,6 @@ UnknownText_0xcee6: ; 0xcee6 db "@" ; 0xceeb - RockSmashFunction: ; ceeb call TryRockSmashFromMenu and $7f @@ -3783,7 +3744,6 @@ HasRockSmash: ; cf7c ld [ScriptVar], a ret - FishFunction: ; cf8e ld a, e push af @@ -4161,7 +4121,6 @@ UnknownText_0xd181: ; 0xd181 db "@" ; 0xd186 - TryCutOW:: ; d186 ld d, CUT call CheckPartyMove @@ -4221,7 +4180,6 @@ UnknownText_0xd1d0: ; 0xd1d0 db "@" ; 0xd1d5 - _ReceiveItem:: ; d1d5 call DoesHLEqualNumItems jp nz, PutItemInPocket @@ -4268,7 +4226,6 @@ _ReceiveItem:: ; d1d5 jp ReceiveTMHM ; d20d - _TossItem:: ; d20d call DoesHLEqualNumItems jr nz, .remove @@ -4652,8 +4609,6 @@ CheckKeyItems: ; d3b1 ret ; d3c4 - - ReceiveTMHM: ; d3c4 dec c ld b, 0 @@ -4712,8 +4667,6 @@ CheckTMHM: ; d3fb ret ; d407 - - GetTMHMNumber:: ; d407 ; Return the number of a TM/HM by item id c. @@ -4735,7 +4688,6 @@ GetTMHMNumber:: ; d407 ret ; d417 - GetNumberedTMHM: ; d417 ; Return the item id of a TM/HM by number c. @@ -4758,7 +4710,6 @@ GetNumberedTMHM: ; d417 ret ; d427 - _CheckTossableItem:: ; d427 ; Return 1 in wItemAttributeParamBuffer and carry if CurItem can't be removed from the bag. ld a, ITEMATTR_PERMISSIONS @@ -4841,7 +4792,6 @@ ItemAttr_ReturnCarry: ; d47f ret ; d486 - GetItemPrice: ; d486 ; Return the price of CurItem in de. push hl @@ -4857,7 +4807,6 @@ GetItemPrice: ; d486 ret ; d497 - Functiond497:: ; d497 (3:5497) ld a, [wPlayerStepFlags] and a @@ -4928,7 +4877,6 @@ Jumptable_d4f2: ; d4f2 (3:54f2) dw .fail1 dw .fail1 - .fail1: ; d508 (3:5508) ret @@ -5557,7 +5505,6 @@ Functiond839: ; d839 ret ; d88c - TryAddMonToParty: ; d88c ; Check if to copy wild Pkmn or generate new Pkmn ; Whose is it? @@ -5881,7 +5828,6 @@ endr ret ; da6d - FillPP: ; da6d push bc ld b, NUM_MOVES @@ -5997,7 +5943,6 @@ AddTempmonToParty: ; da96 and a ret - SentGetPkmnIntoFromBox: ; db3f ; Sents/Gets Pkmn into/from Box depending on Parameter ; wPokemonWithdrawDepositParameter == 0: get Pkmn into Party @@ -6233,7 +6178,6 @@ CloseSRAM_And_SetCarryFlag: ; dcb1 ret ; dcb6 - Functiondcb6: ; dcb6 ld a, b ld hl, sBoxMons @@ -6299,7 +6243,6 @@ Functiondcb6: ; dcb6 ret ; dd21 - Functiondd21: ; dd21 ld a, [wBreedMon1Species] ld [CurPartySpecies], a @@ -6472,7 +6415,6 @@ Functionde44: ; de44 ld bc, BOXMON_STRUCT_LENGTH jp CopyBytes - SentPkmnIntoBox: ; de6e ; Sents the Pkmn into one of Bills Boxes ; the data comes mainly from 'EnemyMon:' @@ -6601,7 +6543,6 @@ SentPkmnIntoBox: ; de6e ret ; df42 - Functiondf42: ; df42 call CloseSRAM and a @@ -7348,7 +7289,6 @@ Functione3d4: ; e3d4 ret ; e3d9 - TextJump_WasSentToBillsPC: ; 0xe3d9 ; was sent to BILL's PC. text_jump Text_WasSentToBillsPC @@ -7459,7 +7399,7 @@ _BillsPC: ; e3fd db $80 ; flags db 0 ; items dw .items - dw Function1f79 + dw PlaceMenuStrings dw .strings ; 0xe47f @@ -7564,7 +7504,6 @@ Functione512: ; unused db "@" ; 0xe538 - CheckCurPartyMonFainted: ; e538 ld hl, PartyMon1HP ld de, PARTYMON_STRUCT_LENGTH @@ -7595,7 +7534,6 @@ CheckCurPartyMonFainted: ; e538 ret ; e559 - BillsPC_WithdrawMenu: ; e559 (3:6559) call LoadStandardMenuDataHeader callba _WithdrawPKMN @@ -7815,7 +7753,6 @@ Functione6b3: ; e6b3 ret ; e6ce - BugContest_SetCaughtContestMon: ; e6ce ld a, [wContestMon] and a @@ -7858,10 +7795,8 @@ BugContest_SetCaughtContestMon: ; e6ce db "@" ; 0xe722 - INCLUDE "items/item_effects.asm" - GetPokeBallWobble: ; f971 (3:7971) ; Returns whether a Poke Ball will wobble in the catch animation. ; Whether a Pokemon is caught is determined beforehand. @@ -7952,7 +7887,6 @@ WobbleChances: ; f9ba db 255, 255 ; f9ea - KnowsMove: ; f9ea ld a, MON_MOVES call GetPartyParamLocation @@ -7981,7 +7915,6 @@ KnowsMove: ; f9ea db "@" ; 0xfa0b - SECTION "bank4", ROMX, BANK[$4] INCLUDE "engine/pack.asm" @@ -8116,7 +8049,6 @@ SetMemEvent: ; 1364f call EventFlagAction ret - CheckFacingTileForStd:: ; 1365b ; Checks to see if the tile you're facing has a std script associated with it. If so, executes the script and returns carry. ld a, c @@ -8227,10 +8159,8 @@ root set root+1 endr ; 13d96 - SECTION "bank5", ROMX, BANK[$5] - StopRTC: ; Unreferenced??? ld a, SRAM_ENABLE ld [MBC3SRamEnable], a @@ -8257,7 +8187,6 @@ StartRTC: ; 14019 ret ; 14032 - GetTimeOfDay:: ; 14032 ; get time of day based on the current hour ld a, [hHours] ; hour @@ -8300,7 +8229,6 @@ Unknown_1404e: ; Unreferenced db -1, 0 ; 14056 - StageRTCTimeForSave: ; 14056 call UpdateTime ld hl, wRTC @@ -8331,8 +8259,6 @@ SaveRTC: ; 1406a ret ; 14089 - - StartClock:: ; 14089 call GetClock call Function1409b @@ -8400,8 +8326,6 @@ Function140ae: ; 140ae ret ; 140ed - - Function140ed:: ; 140ed call GetClock call FixDays @@ -8584,18 +8508,14 @@ SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1] INCLUDE "tilesets/data_1.asm" - SECTION "Roofs", ROMX, BANK[ROOFS] INCLUDE "tilesets/roofs.asm" - SECTION "Tileset Data 2", ROMX, BANK[TILESETS_2] INCLUDE "tilesets/data_2.asm" - - SECTION "bank8", ROMX, BANK[$8] INCLUDE "engine/clock_reset.asm" @@ -8604,7 +8524,6 @@ SECTION "Tileset Data 3", ROMX, BANK[TILESETS_3] INCLUDE "tilesets/data_3.asm" - SECTION "bank9", ROMX, BANK[$9] StringBufferPointers:: ; 24000 @@ -8761,7 +8680,6 @@ Function243e8:: ; 243e8 ret ; 24423 - Function24423: ; 24423 ld a, [VramState] bit 0, a @@ -8875,7 +8793,6 @@ endr ret ; 244c3 - UpdateItemDescription: ; 0x244c3 ld a, [MenuSelection] ld [CurSpecies], a @@ -9015,7 +8932,6 @@ GetObjectTimeMask: ; 245a7 (9:45a7) xor a ret - Function245af:: ; 245af xor a ld [wcf73], a @@ -9108,7 +9024,6 @@ MenuJoyAction: ; 24609 ret ; 24644 - .a_button: ; 24644 call Function1bee ld a, [MenuSelection2] @@ -9243,12 +9158,12 @@ Function24706: ; 24706 (9:4706) ret ClearObjectStructsa: ; 2471a -; Get the value of (wcf95):(wcf96,wcf97) and store it in wd144. - ld hl, wcf96 +; Get the value of (wMenuData2Bank):(wMenuData2Addr) and store it in wd144. + ld hl, wMenuData2Addr ld a, [hli] ld h, [hl] ld l, a - ld a, [wcf95] + ld a, [wMenuData2Bank] call GetFarByte ld [wd144], a ; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0) @@ -9537,7 +9452,7 @@ Function248d5: ; 248d5 add e ld e, a ld d, $0 - ld hl, wcf96 + ld hl, wMenuData2Addr ld a, [hli] ld h, [hl] ld l, a @@ -9553,12 +9468,12 @@ Function248d5: ; 248d5 .asm_248f2 add hl, de - ld a, [wcf95] + ld a, [wMenuData2Bank] call GetFarByte ld [MenuSelection], a ld [CurItem], a inc hl - ld a, [wcf95] + ld a, [wMenuData2Bank] call GetFarByte ld [wcf75], a pop hl @@ -9566,271 +9481,7 @@ Function248d5: ; 248d5 ret ; 2490c - -Function2490c: ; 2490c (9:490c) - ld a, [wd0e3] - and a - jr z, .asm_2493d - ld b, a - ld a, [wcf77] - inc a - cp b - jr z, .asm_24945 - ld a, [wcf77] - call Function24a5c - ld a, [hl] - cp $ff - ret z - ld a, [wd0e3] - dec a - ld [wd0e3], a - call Function249a7 - jp c, Function249d1 - ld a, [wcf77] - ld c, a - ld a, [wd0e3] - cp c - jr c, .asm_2497a - jr .asm_2494a -.asm_2493d - ld a, [wcf77] - inc a - ld [wd0e3], a - ret -.asm_24945 - xor a - ld [wd0e3], a - ret -.asm_2494a - ld a, [wd0e3] - call Function24a40 - ld a, [wcf77] - ld d, a - ld a, [wd0e3] - ld e, a - call Function24a6c - push bc - ld a, [wd0e3] - call Function24a5c - dec hl - push hl - call Function24a80 - add hl, bc - ld d, h - ld e, l - pop hl - pop bc - call Function24aab - ld a, [wcf77] - call Function24a4d - xor a - ld [wd0e3], a - ret -.asm_2497a - ld a, [wd0e3] - call Function24a40 - ld a, [wcf77] - ld d, a - ld a, [wd0e3] - ld e, a - call Function24a6c - push bc - ld a, [wd0e3] - call Function24a5c - ld d, h - ld e, l - call Function24a80 - add hl, bc - pop bc - call CopyBytes - ld a, [wcf77] - call Function24a4d - xor a - ld [wd0e3], a - ret - -Function249a7: ; 249a7 (9:49a7) - ld a, [wd0e3] - call Function24a5c - ld d, h - ld e, l - ld a, [wcf77] - call Function24a5c - ld a, [de] - cp [hl] - jr nz, .asm_249cd - ld a, [wcf77] - call Function24a97 - cp $63 - jr z, .asm_249cd - ld a, [wd0e3] - call Function24a97 - cp $63 - jr nz, .asm_249cf -.asm_249cd - and a - ret -.asm_249cf - scf - ret - -Function249d1: ; 249d1 (9:49d1) - ld a, [wd0e3] - call Function24a5c - inc hl - push hl - ld a, [wcf77] - call Function24a5c - inc hl - ld a, [hl] - pop hl - add [hl] - cp $64 - jr c, .asm_24a01 - sub $63 - push af - ld a, [wcf77] - call Function24a5c - inc hl - ld [hl], $63 - ld a, [wd0e3] - call Function24a5c - inc hl - pop af - ld [hl], a - xor a - ld [wd0e3], a - ret -.asm_24a01 - push af - ld a, [wcf77] - call Function24a5c - inc hl - pop af - ld [hl], a - ld hl, wcf96 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd0e3] - cp [hl] - jr nz, .asm_24a25 - dec [hl] - ld a, [wd0e3] - call Function24a5c - ld [hl], $ff - xor a - ld [wd0e3], a - ret -.asm_24a25 - dec [hl] - call Function24a80 - push bc - ld a, [wd0e3] - call Function24a5c - pop bc - push hl - add hl, bc - pop de -.asm_24a34 - ld a, [hli] - ld [de], a - inc de - cp $ff - jr nz, .asm_24a34 - xor a - ld [wd0e3], a - ret - -Function24a40: ; 24a40 (9:4a40) - call Function24a5c - ld de, wd002 - call Function24a80 - call CopyBytes - ret - -Function24a4d: ; 24a4d (9:4a4d) - call Function24a5c - ld d, h - ld e, l - ld hl, wd002 - call Function24a80 - call CopyBytes - ret - -Function24a5c: ; 24a5c (9:4a5c) - push af - call Function24a80 - ld hl, wcf96 - ld a, [hli] - ld h, [hl] - ld l, a - inc hl - pop af - call AddNTimes - ret - -Function24a6c: ; 24a6c (9:4a6c) - push hl - call Function24a80 - ld a, d - sub e - jr nc, .asm_24a76 - dec a - cpl -.asm_24a76 - ld hl, 0 - call AddNTimes - ld b, h - ld c, l - pop hl - ret - -Function24a80: ; 24a80 (9:4a80) - push hl - ld a, [wcf94] - ld c, a - ld b, 0 - ld hl, Unknown_24a91 -rept 2 - add hl, bc -endr - ld c, [hl] - inc hl - ld b, [hl] - pop hl - ret -; 24a91 (9:4a91) - -Unknown_24a91: ; 24a91 - dw 0, 1, 2 -; 24a97 - -Function24a97: ; 24a97 (9:4a97) - push af - call Function24a80 - ld a, c - cp $2 - jr nz, .asm_24aa7 - pop af - call Function24a5c - inc hl - ld a, [hl] - ret -.asm_24aa7 - pop af - ld a, $1 - ret - -Function24aab: ; 24aab (9:4aab) - ld a, [hld] - ld [de], a - dec de - dec bc - ld a, b - or c - jr nz, Function24aab - ret +INCLUDE "engine/switch_items.asm" PlaceMenuItemName: ; 0x24ab4 push de @@ -10054,7 +9705,6 @@ String24c5e: ; 24c5e db "LEVEL@" ; 24c64 - FindApricornsInBag: ; 24c64 ; Checks the bag for Apricorns. ld hl, Buffer1 @@ -10114,7 +9764,6 @@ endr db -1 ; 24caf - MonMenuOptionStrings: ; 24caf db "STATS@" db "SWITCH@" @@ -10460,7 +10109,6 @@ MenuData2_0x24edc: ; 24edc db "CANCEL@" ; 24ef2 - LoadBattleMenu: ; 24ef2 ld hl, BattleMenuDataHeader call LoadMenuDataHeader @@ -10473,7 +10121,6 @@ LoadBattleMenu: ; 24ef2 ret ; 24f0b - SafariBattleMenu: ; 24f0b ; untranslated ld hl, MenuDataHeader_0x24f4e @@ -10496,7 +10143,6 @@ Function24f19: ; 24f19 ret ; 24f2c - BattleMenuDataHeader: ; 24f2c db $40 ; flags db 12, 08 ; start coords @@ -10520,7 +10166,6 @@ Strings24f3d: ; 0x24f3d db "RUN@" ; 24f4e - MenuDataHeader_0x24f4e: ; 24f4e db $40 ; flags db 12, 00 ; start coords @@ -10552,7 +10197,6 @@ Function24f7c: ; 24f7c ret ; 24f89 - MenuDataHeader_0x24f89: ; 24f89 db $40 ; flags db 12, 02 ; start coords @@ -10584,7 +10228,6 @@ Function24fb2: ; 24fb2 ret ; 24fbf - Function24fbf: ; 24fbf ld hl, MenuDataHeader_0x250ed call LoadMenuDataHeader @@ -10592,7 +10235,6 @@ Function24fbf: ; 24fbf ret ; 24fc9 - Function24fc9: ; 24fc9 callba GetItemPrice Function24fcf: ; 24fcf @@ -10735,7 +10377,6 @@ Function25072: ; 25072 ret ; 25097 - Function25097: ; 25097 ret ; 25098 @@ -11121,7 +10762,6 @@ PadCoords_de: ; 27092 ret ; 2709e - LevelUpHappinessMod: ; 2709e ld a, [CurPartyMon] ld hl, PartyMon1CaughtLocation @@ -11263,7 +10903,6 @@ Function27a28: ; 27a28 ret ; 27a2d - SECTION "bankA", ROMX, BANK[$A] INCLUDE "engine/link.asm" @@ -11450,7 +11089,6 @@ DetermineLinkBattleResult: ; 2b930 ret ; 2ba1a - ChrisBackpic: ; 2ba1a INCBIN "gfx/misc/player.6x6.2bpp.lz" ; 2bbaa @@ -11459,1158 +11097,25 @@ DudeBackpic: ; 2bbaa INCBIN "gfx/misc/dude.6x6.2bpp.lz" ; 2bcea - SECTION "bankB", ROMX, BANK[$B] -Function2c000: ; 2c000 - ld a, $e4 - ld [rOBP0], a - call Function2c165 - call Function2c01c - ld a, [wBattleMode] - dec a - ret z - jp Function2c03a -; 2c012 - - - -Function2c012: ; 2c012 - ld a, $e4 - ld [rOBP0], a - call Function2c165 - jp Function2c03a -; 2c01c - -Function2c01c: ; 2c01c - call Function2c0ad - ld hl, PartyMon1HP - ld de, PartyCount - call Function2c059 - ld a, $60 - ld hl, wcfc4 - ld [hli], a - ld [hl], a - ld a, $8 - ld [wd003], a - ld hl, Sprites - jp Function2c143 -; 2c03a - - - -Function2c03a: ; 2c03a - call Function2c0c5 - ld hl, OTPartyMon1HP - ld de, OTPartyCount - call Function2c059 - ld hl, wcfc4 - ld a, $48 - ld [hli], a - ld [hl], $20 - ld a, $f8 - ld [wd003], a - ld hl, Sprites + $18 - jp Function2c143 -; 2c059 - - -Function2c059: ; 2c059 - ld a, [de] - push af - ld de, Buffer1 - ld c, $6 - ld a, $34 -.asm_2c062 - ld [de], a - inc de - dec c - jr nz, .asm_2c062 - pop af - ld de, Buffer1 -.asm_2c06b - push af - call Function2c075 - inc de - pop af - dec a - jr nz, .asm_2c06b - ret -; 2c075 - -Function2c075: ; 2c075 - ld a, [hli] - and a - jr nz, .asm_2c07f - ld a, [hl] - and a - ld b, $33 - jr z, .asm_2c08b - -.asm_2c07f -rept 3 - dec hl -endr - ld a, [hl] - and a - ld b, $32 - jr nz, .asm_2c08e - dec b - jr .asm_2c08e - -.asm_2c08b -rept 3 - dec hl -endr - -.asm_2c08e - ld a, b - ld [de], a - ld bc, $32 - add hl, bc - ret -; 2c095 - -DrawPlayerExpBar: ; 2c095 - ld hl, .data_2c0a9 - ld de, wd004 - ld bc, 4 - call CopyBytes - hlcoord 18, 10 - ld de, -1 - jr Function2c0f1 - -.data_2c0a9 - db $73 - db $77 - db $6f - db $76 -; 2c0ad - -Function2c0ad: ; 2c0ad - ld hl, .data_2c0c1 - ld de, wd004 - ld bc, 4 - call CopyBytes - hlcoord 18, 10 - ld de, -1 - jr Function2c0f1 - -.data_2c0c1 - db $73, $5c, $6f, $76 -; 2c0c5 - -Function2c0c5: ; 2c0c5 - ld hl, .data_2c0ed - ld de, wd004 - ld bc, 4 - call CopyBytes - hlcoord 1, 2 - ld de, 1 - call Function2c0f1 - ld a, [wBattleMode] - dec a - ret nz - ld a, [TempEnemyMonSpecies] - dec a - call CheckCaughtMon - ret z - hlcoord 1, 1 - ld [hl], $5d - ret - -.data_2c0ed - db $6d - db $74 - db $78 - db $76 -; 2c0f1 - -Function2c0f1: ; 2c0f1 - ld a, [wd004] - ld [hl], a - ld bc, SCREEN_WIDTH - add hl, bc - ld a, [StartFlypoint] - ld [hl], a - ld b, $8 -.asm_2c0ff - add hl, de - ld a, [MovementBuffer] - ld [hl], a - dec b - jr nz, .asm_2c0ff - add hl, de - ld a, [EndFlypoint] - ld [hl], a - ret -; 2c10d - - -Function2c10d: ; 2c10d - call Function2c165 - ld hl, PartyMon1HP - ld de, PartyCount - call Function2c059 - ld hl, wcfc4 - ld a, $50 - ld [hli], a - ld [hl], $40 - ld a, $8 - ld [wd003], a - ld hl, Sprites - call Function2c143 - ld hl, OTPartyMon1HP - ld de, OTPartyCount - call Function2c059 - ld hl, wcfc4 - ld a, "@" - ld [hli], a - ld [hl], $68 - ld hl, Sprites + $18 - jp Function2c143 -; 2c143 - -Function2c143: ; 2c143 - ld de, Buffer1 - ld c, $6 -.loop - ld a, [wcfc5] - ld [hli], a - ld a, [wcfc4] - ld [hli], a - ld a, [de] - ld [hli], a - ld a, $3 - ld [hli], a - ld a, [wcfc4] - ld b, a - ld a, [wd003] - add b - ld [wcfc4], a - inc de - dec c - jr nz, .loop - ret -; 2c165 - -Function2c165: ; 2c165 - ld de, GFX_2c172 - ld hl, VTiles0 tile $31 - lb bc, BANK(GFX_2c172), 4 - call Get2bpp_2 - ret -; 2c172 - -GFX_2c172: ; 2c172 -INCBIN "gfx/battle/balls.2bpp" -; 2c1b2 - -_ShowLinkBattleParticipants: ; 2c1b2 - call ClearBGPalettes - call LoadFontsExtra - hlcoord 2, 3 - ld b, 9 - ld c, 14 - call TextBox - hlcoord 4, 5 - ld de, PlayerName - call PlaceString - hlcoord 4, 10 - ld de, OTPlayerName - call PlaceString - hlcoord 9, 8 - ld a, $69 - ld [hli], a - ld [hl], $6a - callba Function2c10d ; no need to callba - ld b, SCGB_08 - call GetSGBLayout - call SetPalettes - ld a, $e4 - ld [rOBP0], a - ret -; 2c1ef - +INCLUDE "battle/trainer_huds.asm" TrainerClassNames:: ; 2c1ef - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "RIVAL@" - db "#MON PROF.@" - db "ELITE FOUR@" - db " TRAINER@" - db "ELITE FOUR@" - db "ELITE FOUR@" - db "ELITE FOUR@" - db "CHAMPION@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "SCIENTIST@" - db "LEADER@" - db "YOUNGSTER@" - db "SCHOOLBOY@" - db "BIRD KEEPER@" - db "LASS@" - db "LEADER@" - db "COOLTRAINER@" - db "COOLTRAINER@" - db "BEAUTY@" - db "#MANIAC@" - db "ROCKET@" - db "GENTLEMAN@" - db "SKIER@" - db "TEACHER@" - db "LEADER@" - db "BUG CATCHER@" - db "FISHER@" - db "SWIMMER♂@" - db "SWIMMER♀@" - db "SAILOR@" - db "SUPER NERD@" - db "RIVAL@" - db "GUITARIST@" - db "HIKER@" - db "BIKER@" - db "LEADER@" - db "BURGLAR@" - db "FIREBREATHER@" - db "JUGGLER@" - db "BLACKBELT@" - db "ROCKET@" - db "PSYCHIC@" - db "PICNICKER@" - db "CAMPER@" - db "ROCKET@" - db "SAGE@" - db "MEDIUM@" - db "BOARDER@" - db "#FAN@" - db "KIMONO GIRL@" - db "TWINS@" - db "#FAN@" - db " TRAINER@" - db "LEADER@" - db "OFFICER@" - db "ROCKET@" - db "MYSTICALMAN@" - - - -AI_Redundant: ; 2c41a -; Check if move effect c will fail because it's already been used. -; Return z if the move is a good choice. -; Return nz if the move is a bad choice. - ld a, c - ld de, 3 - ld hl, .Moves - call IsInArray - jp nc, .NotRedundant - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.Moves: ; 2c42c - dbw EFFECT_DREAM_EATER, .DreamEater - dbw EFFECT_HEAL, .Heal - dbw EFFECT_LIGHT_SCREEN, .LightScreen - dbw EFFECT_MIST, .Mist - dbw EFFECT_FOCUS_ENERGY, .FocusEnergy - dbw EFFECT_CONFUSE, .Confuse - dbw EFFECT_TRANSFORM, .Transform - dbw EFFECT_REFLECT, .Reflect - dbw EFFECT_SUBSTITUTE, .Substitute - dbw EFFECT_LEECH_SEED, .LeechSeed - dbw EFFECT_DISABLE, .Disable - dbw EFFECT_ENCORE, .Encore - dbw EFFECT_SNORE, .Snore - dbw EFFECT_SLEEP_TALK, .SleepTalk - dbw EFFECT_MEAN_LOOK, .MeanLook - dbw EFFECT_NIGHTMARE, .Nightmare - dbw EFFECT_SPIKES, .Spikes - dbw EFFECT_FORESIGHT, .Foresight - dbw EFFECT_PERISH_SONG, .PerishSong - dbw EFFECT_SANDSTORM, .Sandstorm - dbw EFFECT_ATTRACT, .Attract - dbw EFFECT_SAFEGUARD, .Safeguard - dbw EFFECT_RAIN_DANCE, .RainDance - dbw EFFECT_SUNNY_DAY, .SunnyDay - dbw EFFECT_TELEPORT, .Teleport - dbw EFFECT_MORNING_SUN, .MorningSun - dbw EFFECT_SYNTHESIS, .Synthesis - dbw EFFECT_MOONLIGHT, .Moonlight - dbw EFFECT_SWAGGER, .Swagger - dbw EFFECT_FUTURE_SIGHT, .FutureSight - db -1 - -.LightScreen: ; 2c487 - ld a, [EnemyScreens] - bit SCREENS_LIGHT_SCREEN, a - ret - -.Mist: ; 2c48d - ld a, [EnemySubStatus4] - bit SUBSTATUS_MIST, a - ret - -.FocusEnergy: ; 2c493 - ld a, [EnemySubStatus4] - bit SUBSTATUS_FOCUS_ENERGY, a - ret - -.Confuse: ; 2c499 - ld a, [PlayerSubStatus3] - bit SUBSTATUS_CONFUSED, a - ret nz - ld a, [PlayerScreens] - bit SCREENS_SAFEGUARD, a - ret - -.Transform: ; 2c4a5 - ld a, [EnemySubStatus5] - bit SUBSTATUS_TRANSFORMED, a - ret - -.Reflect: ; 2c4ab - ld a, [EnemyScreens] - bit SCREENS_REFLECT, a - ret - -.Substitute: ; 2c4b1 - ld a, [EnemySubStatus4] - bit SUBSTATUS_SUBSTITUTE, a - ret - -.LeechSeed: ; 2c4b7 - ld a, [PlayerSubStatus4] - bit SUBSTATUS_LEECH_SEED, a - ret - -.Disable: ; 2c4bd - ld a, [PlayerDisableCount] - and a - ret - -.Encore: ; 2c4c2 - ld a, [PlayerSubStatus5] - bit SUBSTATUS_ENCORED, a - ret - -.Snore: -.SleepTalk: ; 2c4c8 - ld a, [EnemyMonStatus] - and SLP - jr z, .Redundant - jr .NotRedundant - -.MeanLook: ; 2c4d1 - ld a, [EnemySubStatus5] - bit SUBSTATUS_CANT_RUN, a - ret - -.Nightmare: ; 2c4d7 - ld a, [BattleMonStatus] - and a - jr z, .Redundant - ld a, [PlayerSubStatus1] - bit SUBSTATUS_NIGHTMARE, a - ret - -.Spikes: ; 2c4e3 - ld a, [PlayerScreens] - bit SCREENS_SPIKES, a - ret - -.Foresight: ; 2c4e9 - ld a, [PlayerSubStatus1] - bit SUBSTATUS_IDENTIFIED, a - ret - -.PerishSong: ; 2c4ef - ld a, [PlayerSubStatus1] - bit SUBSTATUS_PERISH, a - ret - -.Sandstorm: ; 2c4f5 - ld a, [Weather] - cp WEATHER_SANDSTORM - jr z, .Redundant - jr .NotRedundant - -.Attract: ; 2c4fe - callba CheckOppositeGender - jr c, .Redundant - ld a, [PlayerSubStatus1] - bit SUBSTATUS_IN_LOVE, a - ret - -.Safeguard: ; 2c50c - ld a, [EnemyScreens] - bit SCREENS_SAFEGUARD, a - ret - -.RainDance: ; 2c512 - ld a, [Weather] - cp WEATHER_RAIN - jr z, .Redundant - jr .NotRedundant - -.SunnyDay: ; 2c51b - ld a, [Weather] - cp WEATHER_SUN - jr z, .Redundant - jr .NotRedundant - -.DreamEater: ; 2c524 - ld a, [BattleMonStatus] - and SLP - jr z, .Redundant - jr .NotRedundant - -.Swagger: ; 2c52d - ld a, [PlayerSubStatus3] - bit SUBSTATUS_CONFUSED, a - ret - -.FutureSight: ; 2c533 - ld a, [EnemyScreens] - bit 5, a - ret - -.Heal: -.MorningSun: -.Synthesis: -.Moonlight: ; 2c539 - callba AICheckEnemyMaxHP - jr nc, .NotRedundant - -.Teleport: -.Redundant: ; 2c541 - ld a, 1 - and a - ret - -.NotRedundant: ; 2c545 - xor a - ret +INCLUDE "text/trainer_class_names.asm" +INCLUDE "battle/ai/redundant.asm" INCLUDE "event/move_deleter.asm" INCLUDE "engine/mysterygift2.asm" -Function2c76f: ; 2c76f (b:476f) - ld a, $1 - ld [hInMenu], a - call Function2c8d3 - ld a, $0 - ld [hInMenu], a - ret nc - call Function1bee - call WaitBGMap - ld a, [CurItem] - dec a - ld [wd107], a - ld hl, TMsHMs - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ld [wItemQuantityBuffer], a - call Function2c798 - scf - ret - -Function2c798: ; 2c798 (b:4798) - ld a, [CurItem] - ld c, a - callab GetNumberedTMHM - ld a, c - ld [CurItem], a - ret - -ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7) - ld a, [CurItem] - ld c, a - callab GetTMHMNumber - ld a, c - ld [wCurTMHM], a - ret - -GetTMHMItemMove: ; 2c7b6 (b:47b6) - call ConvertCurItemIntoCurTMHM - predef GetTMHMMove - ret - -Function2c7bf: ; 2c7bf (b:47bf) - ld hl, Options - ld a, [hl] - push af - res 4, [hl] - ld a, [CurItem] - cp TM01 - jr c, .NotTMHM - call GetTMHMItemMove - ld a, [wCurTMHM] - ld [wPutativeTMHMMove], a - call GetMoveName - call CopyName1 - ld hl, UnknownText_0x2c8bf ; Booted up a TM - ld a, [CurItem] - cp HM01 - jr c, .TM - ld hl, UnknownText_0x2c8c4 ; Booted up an HM -.TM - call PrintText - ld hl, UnknownText_0x2c8c9 - call PrintText - call YesNoBox -.NotTMHM - pop bc - ld a, b - ld [Options], a - ret - - -Function2c7fb: ; 2c7fb - ld hl, StringBuffer2 - ld de, wd066 - ld bc, $c - call CopyBytes - call ClearBGPalettes - -Function2c80a: ; 2c80a - callba LoadPartyMenuGFX - callba InitPartyMenuWithCancel - callba InitPartyMenuGFX - ld a, $3 - ld [PartyMenuActionText], a -.loopback - callba WritePartyMenuTilemap - callba PrintPartyMenuText - call WaitBGMap - call SetPalettes - call DelayFrame - callba PartyMenuSelect - push af - ld a, [CurPartySpecies] - cp EGG - pop bc ; now contains the former contents of af - jr z, .egg - push bc - ld hl, wd066 - ld de, StringBuffer2 - ld bc, $c - call CopyBytes - pop af ; now contains the original contents of af - ret - -.egg - push hl - push de - push bc - push af - ld de, SFX_WRONG - call PlaySFX - call WaitSFX - pop af - pop bc - pop de - pop hl - jr .loopback -; 2c867 - -Function2c867: ; 2c867 - predef CanLearnTMHMMove - - push bc - ld a, [CurPartyMon] - ld hl, PartyMonNicknames - call GetNick - pop bc - - ld a, c - and a - jr nz, .compatible - push de - ld de, SFX_WRONG - call PlaySFX - pop de - ld hl, UnknownText_0x2c8ce - call PrintText - jr .nope - -.compatible - callab KnowsMove - jr c, .nope - - predef LearnMove - ld a, b - and a - jr z, .nope - - callba MobileFn_106049 - ld a, [CurItem] - call IsHM - ret c - - ld c, HAPPINESS_LEARNMOVE - callab ChangeHappiness - call Function2cb0c - jr .asm_2c8bd - -.nope - and a - ret - -.asm_2c8b8 - ld a, $2 - ld [wd0ec], a - -.asm_2c8bd - scf - ret -; 2c8bf (b:48bf) - -UnknownText_0x2c8bf: ; 0x2c8bf - ; Booted up a TM. - text_jump UnknownText_0x1c0373 - db "@" -; 0x2c8c4 - -UnknownText_0x2c8c4: ; 0x2c8c4 - ; Booted up an HM. - text_jump UnknownText_0x1c0384 - db "@" -; 0x2c8c9 - -UnknownText_0x2c8c9: ; 0x2c8c9 - ; It contained @ . Teach @ to a #MON? - text_jump UnknownText_0x1c0396 - db "@" -; 0x2c8ce - -UnknownText_0x2c8ce: ; 0x2c8ce - ; is not compatible with @ . It can't learn @ . - text_jump UnknownText_0x1c03c2 - db "@" -; 0x2c8d3 - -Function2c8d3: ; 2c8d3 (b:48d3) - xor a - ld [hBGMapMode], a - call Function2c9e2 - ld a, $2 - ld [wcfa1], a - ld a, $7 - ld [wcfa2], a - ld a, $1 - ld [wcfa4], a - ld a, $5 - sub d - inc a - cp $6 - jr nz, .asm_2c8f1 - dec a -.asm_2c8f1 - ld [wcfa3], a - ld a, $c - ld [wcfa5], a - xor a - ld [wcfa6], a - ld a, $20 - ld [wcfa7], a - ld a, $f3 - ld [wcfa8], a - ld a, [wTMHMPocketCursor] - inc a - ld [MenuSelection2], a - ld a, $1 - ld [wcfaa], a - jr Function2c946 - -Function2c915: ; 2c915 (b:4915) - call Function2c9e2 - call Function1bc9 - ld b, a - ld a, [MenuSelection2] - dec a - ld [wTMHMPocketCursor], a - xor a - ld [hBGMapMode], a - ld a, [wcfa6] - bit 7, a - jp nz, Function2c9b1 - ld a, b - ld [wcf73], a - bit 0, a - jp nz, Function2c974 - bit 1, a - jp nz, Function2c9a5 - bit 4, a - jp nz, Function2c9af - bit 5, a - jp nz, Function2c9af - -Function2c946: ; 2c946 (b:4946) - call Function2c98a - jp nc, Function2c9af - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - ld a, [CurItem] - cp $3a - jr nc, Function2c915 - ld [wd265], a - predef GetTMHMMove - ld a, [wd265] - ld [CurSpecies], a - hlcoord 1, 14 - call PrintMoveDesc - jp Function2c915 - -Function2c974: ; 2c974 (b:4974) - call Function2cad6 - call Function2cb2a - ld a, [MenuSelection2] - dec a - ld b, a - ld a, [wTMHMPocketScrollPosition] - add b - ld b, a - ld a, [wd265] - cp b - jr z, asm_2c9a8 - -Function2c98a: ; 2c98a (b:498a) - call Function2cab5 - ld a, [MenuSelection2] - ld b, a -.asm_2c991 - inc c - ld a, c - cp $3a - jr nc, .asm_2c99f - ld a, [hli] - and a - jr z, .asm_2c991 - dec b - jr nz, .asm_2c991 - ld a, c -.asm_2c99f - ld [CurItem], a - cp $ff - ret - -Function2c9a5: ; 2c9a5 (b:49a5) - call Function2cad6 - -asm_2c9a8: ; 2c9a8 (b:49a8) - ld a, $2 - ld [wcf73], a - and a - ret - -Function2c9af: ; 2c9af (b:49af) - and a - ret - -Function2c9b1: ; 2c9b1 (b:49b1) - ld a, b - bit 7, a - jr nz, .skip - ld hl, wTMHMPocketScrollPosition - ld a, [hl] - and a - jp z, Function2c915 - dec [hl] - call Function2c9e2 - jp Function2c946 - -.skip - call Function2cab5 - ld b, $5 -.loop - inc c - ld a, c - cp NUM_TMS + NUM_HMS + 1 - jp nc, Function2c915 - ld a, [hli] - and a - jr z, .loop - dec b - jr nz, .loop - ld hl, wTMHMPocketScrollPosition - inc [hl] - call Function2c9e2 - jp Function2c946 - -Function2c9e2: ; 2c9e2 (b:49e2) - ld a, [BattleType] - cp BATTLETYPE_TUTORIAL - jp z, Function2caca - - hlcoord 5, 2 - lb bc, 10, 15 - ld a, " " - call ClearBox - call Function2cab5 - ld d, $5 -.loop2 - inc c - ld a, c - cp NUM_TMS + NUM_HMS + 1 - jr nc, .NotTMHM - ld a, [hli] - and a - jr z, .loop2 - ld b, a - ld a, c - ld [wd265], a - push hl - push de - push bc - call Function2ca86 - push hl - ld a, [wd265] - cp NUM_TMS + 1 - jr nc, .HM - ld de, wd265 - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - jr .okay - -.HM - push af - sub NUM_TMS - ld [wd265], a - ld [hl], "H" - inc hl - ld de, wd265 - lb bc, PRINTNUM_RIGHTALIGN | 1, 2 - call PrintNum - pop af - ld [wd265], a -.okay - predef GetTMHMMove - ld a, [wd265] - ld [wPutativeTMHMMove], a - call GetMoveName - pop hl - ld bc, $3 - add hl, bc - push hl - call PlaceString - pop hl - pop bc - ld a, c - push bc - cp NUM_TMS + 1 - jr nc, .hm2 - ld bc, $1d - add hl, bc - ld [hl], $f1 - inc hl - ld a, "0" ; why are we doing this? - pop bc - push bc - ld a, b - ld [wd265], a - ld de, wd265 - lb bc, 1, 2 - call PrintNum -.hm2 - pop bc - pop de - pop hl - dec d - jr nz, .loop2 - jr .done - -.NotTMHM - call Function2ca86 -rept 3 - inc hl -endr - push de - ld de, String_2caae - call PlaceString - pop de -.done - ret - -Function2ca86: ; 2ca86 (b:4a86) - hlcoord 5, 0 - ld bc, $28 - ld a, 6 - sub d - ld e, a -.loop - add hl, bc - dec e - jr nz, .loop - ret -; 2ca95 (b:4a95) - -Function2ca95: ; 2ca95 - pop hl - ld bc, 3 - add hl, bc - predef GetTMHMMove - ld a, [wd265] - ld [wPutativeTMHMMove], a - call GetMoveName - push hl - call PlaceString - pop hl - ret -; 2caae - -String_2caae: ; 2caae - db "CANCEL@" -; 2cab5 - -Function2cab5: ; 2cab5 (b:4ab5) - ld hl, TMsHMs - ld a, [wTMHMPocketScrollPosition] - ld b, a - inc b - ld c, 0 -.loop - inc c - ld a, [hli] - and a - jr z, .loop - dec b - jr nz, .loop - dec hl - dec c - ret - -Function2caca: ; 2caca (b:4aca) - hlcoord 9, 3 - push de - ld de, String_2caae - call PlaceString - pop de - ret - -Function2cad6: ; 2cad6 (b:4ad6) - push de - ld de, SFX_READ_TEXT_2 - call PlaySFX - pop de - ret -; 2cadf (b:4adf) - -Function2cadf: ; 2cadf - call ConvertCurItemIntoCurTMHM - call Function2cafa - ld hl, UnknownText_0x2caf0 - jr nc, .asm_2caed - ld hl, UnknownText_0x2caf5 - -.asm_2caed - jp PrintText -; 2caf0 - -UnknownText_0x2caf0: ; 0x2caf0 - ; You have no room for any more @ S. - text_jump UnknownText_0x1c03fa - db "@" -; 0x2caf5 - -UnknownText_0x2caf5: ; 0x2caf5 - ; You received @ ! - text_jump UnknownText_0x1c0421 - db "@" -; 0x2cafa - -Function2cafa: ; 2cafa - ld a, [wd265] - dec a - ld hl, TMsHMs - ld b, 0 - ld c, a - add hl, bc - ld a, [hl] - inc a - cp NUM_TMS * 2 - ret nc - ld [hl], a - ret -; 2cb0c - -Function2cb0c: ; 2cb0c (b:4b0c) - call ConvertCurItemIntoCurTMHM - ld a, [wd265] - dec a - ld hl, TMsHMs - ld b, 0 - ld c, a - add hl, bc - ld a, [hl] - and a - ret z - dec a - ld [hl], a - ret nz - ld a, [wTMHMPocketScrollPosition] - and a - ret z - dec a - ld [wTMHMPocketScrollPosition], a - ret - -Function2cb2a: ; 2cb2a (b:4b2a) - ld b, $0 - ld c, $39 - ld hl, TMsHMs -.asm_2cb31 - ld a, [hli] - and a - jr z, .asm_2cb36 - inc b -.asm_2cb36 - dec c - jr nz, .asm_2cb31 - ld a, b - ld [wd265], a - ret - - -PrintMoveDesc: ; 2cb3e - push hl - ld hl, MoveDescriptions - ld a, [CurSpecies] - dec a - ld c, a - ld b, 0 -rept 2 - add hl, bc -endr - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - jp PlaceString -; 2cb52 +INCLUDE "engine/tmhm2.asm" MoveDescriptions:: ; 2cb52 INCLUDE "battle/moves/move_descriptions.asm" ; 2ed44 - Function2ed44: ; 2ed44 call ConvertBerriesToBerryJuice ld hl, PartyMon1PokerusStatus @@ -12780,7 +11285,6 @@ ShowLinkBattleParticipants: ; 2ee18 ret ; 2ee2f - FindFirstAliveMon: ; 2ee2f xor a ld [hMapAnims], a @@ -12816,7 +11320,6 @@ FindFirstAliveMon: ; 2ee2f ret ; 2ee6c - PlayBattleMusic: ; 2ee6c push hl @@ -12919,7 +11422,6 @@ PlayBattleMusic: ; 2ee6c ret ; 2ef18 - ClearBattleRAM: ; 2ef18 xor a ld [wd0ec], a @@ -12971,7 +11473,6 @@ endr ret ; 2ef6e - FillBox: ; 2ef6e ; Fill wc2c6-aligned box width b height c ; with iterating tile starting from hFillBox at hl. @@ -13030,17 +11531,14 @@ FillBox: ; 2ef6e ret ; 2ef9f - SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4] INCLUDE "tilesets/data_4.asm" - SECTION "Effect Commands", ROMX, BANK[$D] INCLUDE "battle/effect_commands.asm" - SECTION "Enemy Trainers", ROMX, BANK[$E] INCLUDE "battle/ai/items.asm" @@ -13048,7 +11546,6 @@ INCLUDE "battle/ai/items.asm" AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm" - GetTrainerClassName: ; 3952d ld hl, RivalName ld a, c @@ -13125,17 +11622,14 @@ INCLUDE "trainers/trainer_pointers.asm" INCLUDE "trainers/trainers.asm" - SECTION "Battle Core", ROMX, BANK[$F] INCLUDE "battle/core.asm" INCLUDE "battle/effect_command_pointers.asm" - SECTION "bank10", ROMX, BANK[$10] - INCLUDE "engine/pokedex.asm" INCLUDE "battle/moves/moves.asm" @@ -13190,7 +11684,6 @@ AnimateDexSearchSlowpoke: ; 441cf db -2 ; 44207 - DoDexSearchSlowpokeFrame: ; 44207 ld a, [wDexSearchSlowpokeFrame] ld hl, .SpriteData @@ -13447,7 +11940,6 @@ endr ret ; 44378 - PokedexDataPointerTable: ; 0x44378 INCLUDE "data/pokedex/entry_pointers.asm" @@ -13571,7 +12063,6 @@ Function48e64: ; 48e64 (12:4e64) GFX_48e71: ; 48e71 INCBIN "gfx/unknown/048e71.2bpp" - DrawKrisPackGFX: ; 48e81 ld hl, PackFGFXPointers rept 2 @@ -13606,54 +12097,52 @@ Special_MoveTutor: ; 4925b call GetSGBLayout xor a ld [wItemAttributeParamBuffer], a - call Function492a5 + call .GetMoveTutorMove ld [wd265], a ld [wPutativeTMHMMove], a call GetMoveName call CopyName1 - callba Function2c7fb - jr c, .asm_4929c - jr .asm_49291 + callba ChooseMonToLearnTMHM + jr c, .cancel + jr .enter_loop -.asm_49289 - callba Function2c80a - jr c, .asm_4929c - -.asm_49291 - call Function492b9 - jr nc, .asm_49289 +.loop + callba ChooseMonToLearnTMHM_NoRefresh + jr c, .cancel +.enter_loop + call CheckCanLearnMoveTutorMove + jr nc, .loop xor a ld [ScriptVar], a - jr .asm_492a1 + jr .quit -.asm_4929c - ld a, $ff +.cancel + ld a, -1 ld [ScriptVar], a - -.asm_492a1 +.quit call CloseSubmenu ret ; 492a5 -Function492a5: ; 492a5 +.GetMoveTutorMove: ; 492a5 ld a, [ScriptVar] - cp $1 - jr z, .asm_492b3 - cp $2 - jr z, .asm_492b6 + cp 1 + jr z, .flamethrower + cp 2 + jr z, .thunderbolt ld a, ICE_BEAM ret -.asm_492b3 +.flamethrower ld a, FLAMETHROWER ret -.asm_492b6 +.thunderbolt ld a, THUNDERBOLT ret ; 492b9 -Function492b9: ; 492b9 +CheckCanLearnMoveTutorMove: ; 492b9 ld hl, MenuDataHeader_0x4930a call LoadMenuDataHeader @@ -13672,12 +12161,12 @@ Function492b9: ; 492b9 ld de, SFX_WRONG call PlaySFX pop de - ld a, BANK(UnknownText_0x2c8ce) - ld hl, UnknownText_0x2c8ce + ld a, BANK(Text_TMHMNotCompatible) + ld hl, Text_TMHMNotCompatible call FarPrintText jr .didnt_learn -.can_learn +.can_learn callab KnowsMove jr c, .didnt_learn @@ -13754,7 +12243,6 @@ Function49336: ; 49336 ret ; 49346 - Function49346: ; 49346 (12:5346) hlcoord 0, 0, AttrMap ld bc, SCREEN_HEIGHT * SCREEN_WIDTH @@ -13848,7 +12336,6 @@ Palette_493e1: ; 493e1 RGB 00, 00, 00 ; 49409 - Function49409:: ; 49409 ld hl, Palette_49418 ld de, UnknBGPals + 8 * 7 @@ -14401,7 +12888,6 @@ Buena_ExitMenu: ; 4ae5e ret ; 4ae78 - SECTION "bank13", ROMX, BANK[$13] SwapTextboxPalettes:: ; 4c000 @@ -14493,10 +12979,8 @@ ScrollBGMapPalettes:: ; 4c03f ret ; 4c075 - INCLUDE "tilesets/palette_maps.asm" - TileCollisionTable:: ; 4ce1f ; 00 land ; 01 water @@ -14563,7 +13047,6 @@ EmptyAllSRAMBanks: ; 4cf1f ret ; 4cf45 - SaveMenu_LoadEDTile: ; 4cf45 (13:4f45) ld a, [hCGB] and a @@ -14642,7 +13125,6 @@ endr ld sp, hl ret - CheckSave:: ; 4cffe ld a, BANK(s1_a008) call GetSRAMBank @@ -14665,10 +13147,8 @@ CheckSave:: ; 4cffe ret ; 4d01e - INCLUDE "engine/map_triggers.asm" - Function4d15b:: ; 4d15b ld hl, wc608 ld a, [wd196] @@ -14824,7 +13304,6 @@ Function4d354: ; 4d354 ret ; 4d35b - Function4d35b: ; 4d35b ld h, d ld l, e @@ -15219,7 +13698,6 @@ MenuData2_0x4d58d: ; 0x4d58d Tilesets:: INCLUDE "tilesets/tileset_headers.asm" - FlagPredef: ; 4d7c1 ; Perform action b on flag c in flag array hl. ; If checking a flag, check flag array d:hl unless d is 0. @@ -15749,7 +14227,6 @@ CheckPartyFullAfterContest: ; 4d9e5 ret ; 4db3b - GiveANickname_YesNo: ; 4db3b ld hl, TextJump_GiveANickname call PrintText @@ -15762,7 +14239,6 @@ TextJump_GiveANickname: ; 0x4db44 db "@" ; 0x4db49 - SetCaughtData: ; 4db49 ld a, [PartyCount] dec a @@ -15839,7 +14315,6 @@ SetGiftMonCaughtData: ; 4dbaf ret ; 4dbb8 - SetEggMonCaughtData: ; 4dbb8 (13:5bb8) ld a, [CurPartyMon] ld hl, PartyMon1CaughtLevel @@ -15996,7 +14471,6 @@ RetroactivelyIgnoreEggs: ; 4dc67 jr .loop ; 4dc7b - INCLUDE "engine/stats_screen.asm" CatchTutorial:: ; 4e554 @@ -16056,26 +14530,26 @@ endr ret .LoadDudeData: ; 4e5b7 (13:65b7) - ld hl, OTPartyMon1 - ld [hl], BULBASAUR + ld hl, wDudeNumItems + ld [hl], 1 inc hl ld [hl], POTION inc hl - ld [hl], POUND + ld [hl], 1 inc hl - ld [hl], $ff - ld hl, OTPartyMon1Exp + 2 - ld [hl], $0 + ld [hl], -1 + ld hl, wDudeNumKeyItems + ld [hl], 0 inc hl - ld [hl], $ff - ld hl, OTPartyMon1CaughtGender - ld a, $1 + ld [hl], -1 + ld hl, wDudeNumBalls + ld a, 1 ld [hli], a - ld a, $5 + ld a, POKE_BALL ; 5 rept 2 ld [hli], a endr - ld [hl], $ff + ld [hl], -1 ret ; 4e5da (13:65da) @@ -16121,7 +14595,6 @@ Function4e881: ; 4e881 db "@" ; 0x4e8c2 - Function4e8c2: ; 4e8c2 call ClearBGPalettes call ClearTileMap @@ -16174,7 +14647,6 @@ Function4e906: ; 4e906 ret ; 4e929 - Function4e929: ; mobile function ld h, b ld l, c @@ -16265,10 +14737,8 @@ FemaleTrainers: ; 4e976 FemaleTrainersEnd: ; 4e980 - INCLUDE "battle/sliding_intro.asm" - Function4ea0a: ; 4ea0a ld a, c push af @@ -16301,8 +14771,6 @@ Function4ea0a: ; 4ea0a ret ; 4ea44 - - CheckBattleScene: ; 4ea44 ; Return carry if battle scene is turned off. @@ -16352,12 +14820,10 @@ CheckBattleScene: ; 4ea44 ret ; 4ea82 - INCLUDE "misc/gbc_only.asm" INCLUDE "event/poke_seer.asm" - SECTION "bank14", ROMX, BANK[$14] INCLUDE "engine/party_menu.asm" @@ -16403,7 +14869,6 @@ CopyPkmnToTempMon: ; 5084a ret ; 5088b - Function5088b: ; 5088b ld bc, wd018_Mon jr Function50893 @@ -16504,10 +14969,8 @@ GetPkmnSpecies: ; 508d5 ret ; 5090d - INCLUDE "text/types.asm" - Function50a28: ; 50a28 ld hl, Strings50a42 ld a, [TrainerClass] @@ -16604,7 +15067,6 @@ Strings50a42: ; 50a42 .CooltrainerF db "エりート♀@" ; 50b0a - DrawPlayerHP: ; 50b0a ld a, $1 jr DrawHP @@ -16689,7 +15151,6 @@ DrawHP: ; 50b10 ret ; 50b7b - PrintTempMonStats: ; 50b7b ; Print TempMon's stats at hl, with spacing bc. push bc @@ -16732,7 +15193,6 @@ PrintTempMonStats: ; 50b7b next "@" ; 50bdd - GetGender: ; 50bdd ; Return the gender of a given monster (CurPartyMon/CurOTMon/CurWildMon). ; When calling this function, a should be set to an appropriate MonType value. @@ -16745,7 +15205,6 @@ GetGender: ; 50bdd ; This is determined by comparing the Attack and Speed DVs ; with the species' gender ratio. - ; Figure out what type of monster struct we're looking at. ; 0: PartyMon @@ -16775,7 +15234,6 @@ GetGender: ; 50bdd ld hl, EnemyMonDVs jr .DVs - ; Get our place in the party/box. .PartyMon @@ -16783,7 +15241,6 @@ GetGender: ; 50bdd ld a, [CurPartyMon] call AddNTimes - .DVs ; sBoxMon data is read directly from SRAM. @@ -16810,7 +15267,6 @@ GetGender: ; 50bdd cp BOXMON call z, CloseSRAM - ; We need the gender ratio to do anything with this. push bc ld a, [CurPartySpecies] @@ -16823,7 +15279,6 @@ GetGender: ; 50bdd ld a, BANK(BaseData) call GetFarByte - ; The higher the ratio, the more likely the monster is to be female. cp $ff @@ -16985,7 +15440,6 @@ Function50cdb: ; unreferenced predef ret ; 50d0a - PlaceStatusString: ; 50d0a push de rept 2 @@ -17171,7 +15625,6 @@ Function50db9: ; 50db9 ret ; 50e1b - CalcLevel: ; 50e1b ld a, [TempMonSpecies] ld [CurSpecies], a @@ -17205,8 +15658,6 @@ CalcLevel: ; 50e1b ret ; 50e47 - - CalcExpAtLevel: ; 50e47 ; (a/b)*n**3 + c*n**2 + d*n - e ld a, [BaseGrowthRate] @@ -17557,7 +16008,6 @@ GetUnownLetter: ; 51040 ret ; 51077 - GetFrontpic: ; 51077 ld a, [CurPartySpecies] ld [CurSpecies], a @@ -17765,7 +16215,6 @@ GetBackpic: ; 5116c ret ; 511c5 - FixPicBank: ; 511c5 ; This is a thing for some reason. push hl @@ -17827,7 +16276,6 @@ Function511ec: ; 511ec ret ; 0x5120d - GetTrainerPic: ; 5120d ld a, [TrainerClass] and a @@ -17871,8 +16319,6 @@ GetTrainerPic: ; 5120d ret ; 5125d - - DecompressPredef: ; 5125d ; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de. @@ -17898,7 +16344,6 @@ DecompressPredef: ; 5125d ret ; 5127c - Function5127c: ; 5127c push de push bc @@ -18182,16 +16627,12 @@ UnknownEggPic:: ; 53d9c INCBIN "gfx/misc/unknown_egg.5x5.2bpp.lz" ; 53e2e - SECTION "bank19", ROMX, BANK[$19] INCLUDE "text/phone/extra.asm" - - SECTION "bank20", ROMX, BANK[$20] - DoPlayerMovement:: ; 80000 call GetMovementInput @@ -18206,7 +16647,6 @@ DoPlayerMovement:: ; 80000 ret ; 80017 - GetMovementInput: ; 80017 ld a, [hJoyDown] @@ -18228,7 +16668,6 @@ GetMovementInput: ; 80017 ret ; 8002d - GetPlayerMovement: ; 8002d ld a, [PlayerState] @@ -18312,7 +16751,6 @@ GetPlayerMovement: ; 8002d ret ; 800b7 - CheckTileMovement: ; 800b7 ; Tiles such as waterfalls and warps move the player ; in a given direction, overriding input. @@ -18428,7 +16866,6 @@ CheckTileMovement: ; 800b7 ret ; 80147 - CheckTurning: ; 80147 ; If the player is turning, change direction first. This also lets ; the player change facing without moving by tapping a direction. @@ -18459,7 +16896,6 @@ CheckTurning: ; 80147 ret ; 8016b - TryStep: ; 8016b ; Surfing actually calls TrySurfStep directly instead of passing through here. @@ -18526,7 +16962,6 @@ TryStep: ; 8016b ret ; 801c0 - TrySurfStep: ; 801c0 call CheckWaterPermissions @@ -18563,7 +16998,6 @@ TrySurfStep: ; 801c0 ret ; 801f3 - TryJumpLedge: ; 801f3 ld a, [PlayerNextTile] ld e, a @@ -18604,7 +17038,6 @@ TryJumpLedge: ; 801f3 db FACE_UP | FACE_LEFT ; 80226 - CheckEdgeWarp: ; 80226 ; Bug: Since no case is made for STANDING here, it will check @@ -18650,7 +17083,6 @@ CheckEdgeWarp: ; 80226 db $70, $78, $76, $7e ; 8025f - DoStep: ; 8025f ld e, a ld d, 0 @@ -18731,7 +17163,6 @@ endr db $80 + movement_turn_head_right ; 802b3 - StandInPlace: ; 802b3 ld a, 0 ld [wd04e], a @@ -18741,7 +17172,6 @@ StandInPlace: ; 802b3 ret ; 802bf - WalkInPlace: ; 802bf ld a, 0 ld [wd04e], a @@ -18751,7 +17181,6 @@ WalkInPlace: ; 802bf ret ; 802cb - CheckForcedMovementInput: ; 802cb ; When sliding on ice, input is forced to remain in the same direction. @@ -18777,7 +17206,6 @@ CheckForcedMovementInput: ; 802cb db D_DOWN, D_UP, D_LEFT, D_RIGHT ; 802ec - GetMovementAction: ; 802ec ; Poll player input and update movement info. @@ -18837,7 +17265,6 @@ GetMovementAction: ; 802ec dw TileDown ; 80341 - IsNPCInFront: ; 80341 ; Returns 0 if there is an NPC in front that you can't move ; Returns 1 if there is no NPC in front @@ -18876,7 +17303,6 @@ IsNPCInFront: ; 80341 ret ; 8036f - Function8036f: ; 8036f ld hl, BikeFlags @@ -18915,7 +17341,6 @@ Function8036f: ; 8036f ret ; 8039e - CheckLandPermissions: ; 8039e ; Return 0 if walking onto land and tile permissions allow it. ; Otherwise, return carry. @@ -18960,7 +17385,6 @@ CheckWaterPermissions: ; 803b4 ret ; 803ca - CheckRiding: ; 803ca ld a, [PlayerState] @@ -18970,7 +17394,6 @@ CheckRiding: ; 803ca ret ; 803d3 - CheckWalkable: ; 803d3 ; Return 0 if tile a is land. Otherwise, return carry. @@ -18981,7 +17404,6 @@ CheckWalkable: ; 803d3 ret ; 803da - CheckSurfable: ; 803da ; Return 0 if tile a is water, or 1 if land. ; Otherwise, return carry. @@ -19010,7 +17432,6 @@ CheckSurfable: ; 803da ret ; 803ee - PlayBump: ; 803ee call CheckSFX @@ -19020,7 +17441,6 @@ PlayBump: ; 803ee ret ; 803f9 - WaterToLandSprite: ; 803f9 push bc ld a, PLAYER_NORMAL @@ -19030,7 +17450,6 @@ WaterToLandSprite: ; 803f9 ret ; 80404 - CheckStandingOnIce:: ; 80404 ld a, [wd04e] cp 0 @@ -19053,7 +17472,6 @@ CheckStandingOnIce:: ; 80404 ret ; 80422 - Function80422:: ; 80422 ld hl, wc2de ld a, movement_step_sleep_1 @@ -19066,8 +17484,6 @@ Function80422:: ; 80422 ret ; 80430 - - INCLUDE "engine/engine_flags.asm" ; 80648 @@ -19272,7 +17688,6 @@ CardGFX: ; 887c5 INCBIN "gfx/misc/trainer_card.2bpp" ; 88825 - GetPlayerBackpic: ; 88825 ld a, [PlayerGender] bit 0, a @@ -19319,8 +17734,6 @@ Function88840: ; 88840 ret ; 88874 - - DrawIntroPlayerPic: ; 88874 ; Draw the player pic at (6,4). @@ -19355,7 +17768,6 @@ DrawIntroPlayerPic: ; 88874 ret ; 888a9 - ChrisPic: ; 888a9 INCBIN "gfx/misc/chris.7x7.2bpp" ; 88bb9 @@ -19364,7 +17776,6 @@ KrisPic: ; 88bb9 INCBIN "gfx/misc/kris.7x7.2bpp" ; 88ec9 - GetKrisBackpic: ; 88ec9 ; Kris's backpic is uncompressed. ld de, KrisBackpic @@ -19378,7 +17789,6 @@ KrisBackpic: ; 88ed6 INCBIN "gfx/misc/kris_back.6x6.2bpp" ; 89116 - String_89116: db "-----@" ; 8911c @@ -19390,7 +17800,6 @@ INCLUDE "event/dratini.asm" INCLUDE "event/battle_tower.asm" INCLUDE "misc/mobile_22_2.asm" - SECTION "bank23", ROMX, BANK[$23] Predef35: ; 8c000 @@ -19398,7 +17807,6 @@ Predef36: ret ; 8c001 - INCLUDE "engine/timeofdaypals.asm" INCLUDE "engine/battle_start.asm" @@ -19432,13 +17840,11 @@ INCLUDE "engine/pokegear.asm" INCLUDE "data/wild/fish.asm" INCLUDE "engine/slot_machine.asm" - SECTION "Phone Engine", ROMX, BANK[$28] INCLUDE "engine/more_phone_scripts.asm" INCLUDE "engine/buena_phone_scripts.asm" - SECTION "Phone Text", ROMX, BANK[$29] INCLUDE "text/phone/anthony_overworld.asm" @@ -19463,7 +17869,6 @@ SECTION "Tileset Data 5", ROMX, BANK[TILESETS_5] INCLUDE "tilesets/data_5.asm" - SECTION "bank2E", ROMX, BANK[$2E] INCLUDE "engine/events_3.asm" @@ -19513,8 +17918,6 @@ AlreadyBeatenTrainerScript: scripttalkafter ; 0xbe699 - - SECTION "bank30", ROMX, BANK[$30] INCLUDE "gfx/overworld/sprites_1.asm" @@ -19523,7 +17926,6 @@ SECTION "bank31", ROMX, BANK[$31] INCLUDE "gfx/overworld/sprites_2.asm" - SECTION "bank32", ROMX, BANK[$32] INCLUDE "battle/bg_effects.asm" @@ -19585,7 +17987,6 @@ TheEndGFX:: ; cbd2e INCBIN "gfx/credits/theend.2bpp" ; cbe2e - SECTION "bank33", ROMX, BANK[$33] DisplayCaughtContestMonStats: ; cc000 @@ -19702,12 +18103,10 @@ Predef39: ; cc0d5 ret ; cc0d6 - INCLUDE "battle/anim_commands.asm" INCLUDE "battle/anim_objects.asm" - SECTION "Pic Animations 1", ROMX, BANK[$34] INCLUDE "gfx/pics/animation.asm" @@ -19748,30 +18147,25 @@ INCLUDE "gfx/pics/bitmasks.asm" INCLUDE "gfx/pics/unown_bitmask_pointers.asm" INCLUDE "gfx/pics/unown_bitmasks.asm" - SECTION "Pic Animations 2", ROMX, BANK[$35] INCLUDE "gfx/pics/frame_pointers.asm" INCLUDE "gfx/pics/kanto_frames.asm" - SECTION "bank36", ROMX, BANK[$36] FontInversed: INCBIN "gfx/misc/font_inversed.1bpp" - SECTION "Pic Animations 3", ROMX, BANK[$36] INCLUDE "gfx/pics/johto_frames.asm" INCLUDE "gfx/pics/unown_frame_pointers.asm" INCLUDE "gfx/pics/unown_frames.asm" - SECTION "Tileset Data 6", ROMX, BANK[TILESETS_6] INCLUDE "tilesets/data_6.asm" - SECTION "bank38", ROMX, BANK[$38] Functione0000: ; e0000 @@ -19936,7 +18330,6 @@ INCLUDE "event/mom_phone.asm" INCLUDE "misc/mobile_40.asm" - SECTION "bank41", ROMX, BANK[$41] INCLUDE "misc/gfx_41.asm" @@ -19951,20 +18344,16 @@ INCLUDE "misc/mobile_41.asm" INCLUDE "misc/mobile_42.asm" - SECTION "Intro Logo", ROMX, BANK[$42] IntroLogoGFX: ; 109407 INCBIN "gfx/intro/logo.2bpp.lz" ; 109847 - INCLUDE "misc/unused_title.asm" - INCLUDE "engine/title.asm" - INCLUDE "misc/mobile_45.asm" INCLUDE "misc/mobile_46.asm" @@ -19984,7 +18373,6 @@ SECTION "bank5D", ROMX, BANK[$5D] INCLUDE "text/phone/extra3.asm" - SECTION "bank5E", ROMX, BANK[$5E] _UpdateBattleHUDs: @@ -19998,10 +18386,8 @@ _UpdateBattleHUDs: ret ; 17801f (5e:401f) - INCLUDE "misc/mobile_5f.asm" - SECTION "Common Text 1", ROMX, BANK[$6C] INCLUDE "text/common.asm" @@ -20024,23 +18410,18 @@ INCLUDE "text/phone/bill.asm" INCLUDE "text/phone/elm.asm" INCLUDE "text/phone/trainers1.asm" - - SECTION "Common Text 2", ROMX, BANK[$6F] INCLUDE "text/common_2.asm" - SECTION "Common Text 3", ROMX, BANK[$70] INCLUDE "text/common_3.asm" - SECTION "Common Text 4", ROMX, BANK[$71] INCLUDE "text/common_4.asm" - SECTION "bank72", ROMX, BANK[$72] ItemNames:: @@ -20053,13 +18434,10 @@ INCLUDE "battle/move_names.asm" INCLUDE "engine/landmarks.asm" - SECTION "bank75", ROMX, BANK[$75] - SECTION "bank76", ROMX, BANK[$76] - SECTION "bank77", ROMX, BANK[$77] UnownFont: ; 1dc000 @@ -20074,14 +18452,10 @@ INCBIN "gfx/mobile/hp.1bpp" MobileLvIcon: ; 1dc599 INCBIN "gfx/mobile/lv.1bpp" - - SECTION "Tileset Data 7", ROMX, BANK[TILESETS_7] INCLUDE "tilesets/data_7.asm" - - SECTION "bank77_2", ROMX, BANK[$77] Function1dd6a9: ; 1dd6a9 @@ -20151,10 +18525,8 @@ String_AM: db "AM@" ; 1dd6fc String_PM: db "PM@" ; 1dd6ff ; 1dd702 - INCLUDE "engine/diploma.asm" - LoadSGBPokedexGFX: ; 1ddf1c ld hl, LZ_1ddf33 ld de, VTiles2 tile $31 @@ -20326,8 +18698,6 @@ Bank77_FillColumn: ; 1de27f ret ; 1de28a - - _DudeAutoInput_A:: ; 1de28a ld hl, DudeAutoInput_A jr _DudeAutoInput @@ -20349,7 +18719,6 @@ _DudeAutoInput: ; 1de299 ret ; 1de29f - DudeAutoInputs: DudeAutoInput_A: ; 1de29f @@ -20380,7 +18749,6 @@ DudeAutoInput_DownA: ; 1de2af db NO_INPUT, $ff ; end ; 1de2c5 - Function1de2c5: ; 1de2c5 ld hl, StringBuffer1 .loop @@ -20542,28 +18910,22 @@ LeggiPostaInglese: ret ; 1df238 - SECTION "Tileset Data 8", ROMX, BANK[TILESETS_8] INCLUDE "tilesets/data_8.asm" - SECTION "bank79", ROMX, BANK[$79] - SECTION "bank7A", ROMX, BANK[$7A] - SECTION "bank7B", ROMX, BANK[$7B] INCLUDE "text/battle_tower.asm" - SECTION "bank7C", ROMX, BANK[$7C] INCLUDE "data/battle_tower_2.asm" - SECTION "bank7D", ROMX, BANK[$7D] db $cc, $6b, $1e ; XXX @@ -20610,16 +18972,13 @@ Function1f5d9f: ; 1f5d9f Unknown_1f5db4: INCBIN "unknown/1f5db4.bin" - SECTION "bank7E", ROMX, BANK[$7E] INCLUDE "data/battle_tower.asm" INCLUDE "data/odd_eggs.asm" - SECTION "bank7F", ROMX, BANK[$7F] - SECTION "stadium2", ROMX[$8000-$220], BANK[$7F] IF DEF(CRYSTAL11) diff --git a/misc/mobile_22.asm b/misc/mobile_22.asm index 2915d4c9d..279631bc1 100644 --- a/misc/mobile_22.asm +++ b/misc/mobile_22.asm @@ -1694,7 +1694,7 @@ Function89a57: ; 89a57 Function89a8a: ; 89a8a push af - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop af ret diff --git a/text/trainer_class_names.asm b/text/trainer_class_names.asm new file mode 100755 index 000000000..daa7e08a9 --- /dev/null +++ b/text/trainer_class_names.asm @@ -0,0 +1,67 @@ + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "RIVAL@" + db "#MON PROF.@" + db "ELITE FOUR@" + db " TRAINER@" + db "ELITE FOUR@" + db "ELITE FOUR@" + db "ELITE FOUR@" + db "CHAMPION@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "SCIENTIST@" + db "LEADER@" + db "YOUNGSTER@" + db "SCHOOLBOY@" + db "BIRD KEEPER@" + db "LASS@" + db "LEADER@" + db "COOLTRAINER@" + db "COOLTRAINER@" + db "BEAUTY@" + db "#MANIAC@" + db "ROCKET@" + db "GENTLEMAN@" + db "SKIER@" + db "TEACHER@" + db "LEADER@" + db "BUG CATCHER@" + db "FISHER@" + db "SWIMMER♂@" + db "SWIMMER♀@" + db "SAILOR@" + db "SUPER NERD@" + db "RIVAL@" + db "GUITARIST@" + db "HIKER@" + db "BIKER@" + db "LEADER@" + db "BURGLAR@" + db "FIREBREATHER@" + db "JUGGLER@" + db "BLACKBELT@" + db "ROCKET@" + db "PSYCHIC@" + db "PICNICKER@" + db "CAMPER@" + db "ROCKET@" + db "SAGE@" + db "MEDIUM@" + db "BOARDER@" + db "#FAN@" + db "KIMONO GIRL@" + db "TWINS@" + db "#FAN@" + db " TRAINER@" + db "LEADER@" + db "OFFICER@" + db "ROCKET@" + db "MYSTICALMAN@" \ No newline at end of file diff --git a/wram.asm b/wram.asm index c492a5614..f16413d39 100644 --- a/wram.asm +++ b/wram.asm @@ -1471,12 +1471,14 @@ Requested1bppDest:: ; cf6f ; something to do with menu wcf71:: ds 1 wcf72:: ds 1 +wMenuJoypad:: wcf73:: ds 1 MenuSelection:: ; cf74 ds 1 wcf75:: ds 1 wcf76:: ds 1 +wCurrPocketCursorPosition:: wcf77:: ds 1 wcf78:: ds 9 @@ -1506,10 +1508,15 @@ wMenuData2Flags:: ds 1 ; cf91 ; bit 0: ???? wMenuData2Items:: ds 1 +wMenuData2IndicesPointer:: wcf93:: ds 1 wcf94:: ds 1 +wMenuData2DisplayFunctionPointer:: +wMenuData2Bank:: wcf95:: ds 1 ; bank +wMenuData2Addr:: wcf96:: ds 1 ; addr lo +wMenuData2PointerTableAddr:: wcf97:: ds 1 ; addr hi wcf98:: ds 3 wcf9b:: ds 3 @@ -1622,7 +1629,7 @@ wMinutesSince:: ds 1 wHoursSince:: ds 1 wDaysSince:: ds 1 - ds 40 +wRAM0End:: ; cfc0 SECTION "WRAM 1", WRAMX, BANK [1] @@ -1851,6 +1858,7 @@ wBallsPocketScrollPosition:: ds 1 wTMHMPocketScrollPosition:: ds 1 wMoveSwapBuffer:: wSwitchMon:: +wSwitchItem:: wd0e3:: ds 1 wMenuScrollPosition:: ds 4 wQueuedScriptBank:: ds 1 @@ -1858,6 +1866,7 @@ wQueuedScriptAddr:: ds 2 wNumMoves:: wd0eb:: ds 1 wFieldMoveSucceeded:: +wItemEffectSucceeded:: wPlayerAction:: ; 0 - use move ; 1 - use item @@ -2285,6 +2294,21 @@ OTPartyCount:: ds 1 ; d280 OTPartySpecies:: ds PARTY_LENGTH ; d281 OTPartyEnd:: ds 1 +wDudeBag:: ; d288 +wDudeNumItems:: ds 1 +wDudeItems:: ds 2 * 4 +wDudeItemsEnd:: ds 1 + +wDudeNumKeyItems:: ds 1 ; d292 +wDudeKeyItems:: ds 18 +wDudeKeyItemsEnd:: ds 1 + +wDudeNumBalls:: ds 1 ; d2a6 +wDudeBalls:: ds 2 * 4 +wDudeBallsEnd:: ds 1 +wDudeBagEnd:: + ds wDudeBag - @ + OTPartyMons:: OTPartyMon1:: party_struct OTPartyMon1 ; d288 OTPartyMon2:: party_struct OTPartyMon2 ; d2b8