summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/events/checksave.asm (renamed from engine/routines/checksave.asm)0
-rw-r--r--engine/events/checktime.asm (renamed from engine/routines/checktime.asm)0
-rw-r--r--engine/events/engine_flags.asm (renamed from engine/engine_flags.asm)0
-rwxr-xr-xengine/events/money.asm (renamed from engine/money.asm)0
-rw-r--r--engine/events/playslowcry.asm (renamed from engine/routines/playslowcry.asm)0
-rwxr-xr-xengine/gfx/crystal_layouts.asm2
-rwxr-xr-xengine/gfx/dma_transfer.asm (renamed from engine/dma_transfer.asm)0
-rw-r--r--engine/gfx/loadpushoam.asm (renamed from engine/routines/loadpushoam.asm)0
-rwxr-xr-xengine/items/tmhm.asm584
-rwxr-xr-xengine/items/tmhm2.asm49
-rwxr-xr-xengine/link/link.asm2
-rw-r--r--engine/link/placewaitingtext.asm (renamed from engine/routines/placewaitingtext.asm)0
-rwxr-xr-xengine/menus/debug.asm (renamed from engine/debug.asm)0
-rw-r--r--engine/menus/save.asm (renamed from engine/save.asm)0
-rw-r--r--engine/menus/savemenu_copytilemapatonce.asm (renamed from engine/routines/savemenu_copytilemapatonce.asm)0
-rw-r--r--engine/movie/credits.asm (renamed from engine/title/credits.asm)0
-rwxr-xr-xengine/movie/crystal_intro.asm (renamed from engine/title/crystal_intro.asm)0
-rwxr-xr-xengine/movie/evolution_animation.asm (renamed from engine/gfx/evolution_animation.asm)0
-rw-r--r--engine/movie/gbc_only.asm (renamed from engine/gfx/gbc_only.asm)0
-rw-r--r--engine/movie/init_hof_credits.asm (renamed from engine/title/init_hof_credits.asm)0
-rw-r--r--engine/movie/title.asm (renamed from engine/title/title.asm)0
-rwxr-xr-xengine/movie/trade_animation.asm (renamed from engine/gfx/trade_animation.asm)0
-rw-r--r--engine/movie/unused_title.asm (renamed from engine/title/unused_title.asm)0
-rw-r--r--engine/phone/phonering_copytilemapatonce.asm (renamed from engine/routines/phonering_copytilemapatonce.asm)0
-rw-r--r--engine/pokegear/townmap_convertlinebreakcharacters.asm (renamed from engine/routines/townmap_convertlinebreakcharacters.asm)0
-rw-r--r--engine/pokemon/checknickerrors.asm (renamed from engine/routines/checknickerrors.asm)0
-rw-r--r--engine/pokemon/correcterrorsinplayerparty.asm (renamed from engine/routines/correcterrorsinplayerparty.asm)0
-rwxr-xr-xengine/pokemon/tmhm.asm589
-rw-r--r--engine/routines/predef.asm (renamed from engine/predef.asm)0
-rw-r--r--engine/tilesets/map_palettes.asm (renamed from engine/gfx/map_palettes.asm)0
-rw-r--r--engine/tilesets/mapgroup_roofs.asm (renamed from engine/gfx/mapgroup_roofs.asm)0
-rw-r--r--engine/tilesets/tileset_anims.asm (renamed from engine/gfx/tileset_anims.asm)0
-rw-r--r--engine/tilesets/tileset_palettes.asm (renamed from engine/gfx/tileset_palettes.asm)0
-rw-r--r--engine/tilesets/timeofdaypals.asm (renamed from engine/gfx/timeofdaypals.asm)0
34 files changed, 613 insertions, 613 deletions
diff --git a/engine/routines/checksave.asm b/engine/events/checksave.asm
index 2280f0e53..2280f0e53 100644
--- a/engine/routines/checksave.asm
+++ b/engine/events/checksave.asm
diff --git a/engine/routines/checktime.asm b/engine/events/checktime.asm
index 4c7d033ff..4c7d033ff 100644
--- a/engine/routines/checktime.asm
+++ b/engine/events/checktime.asm
diff --git a/engine/engine_flags.asm b/engine/events/engine_flags.asm
index acda9ede7..acda9ede7 100644
--- a/engine/engine_flags.asm
+++ b/engine/events/engine_flags.asm
diff --git a/engine/money.asm b/engine/events/money.asm
index 585c85618..585c85618 100755
--- a/engine/money.asm
+++ b/engine/events/money.asm
diff --git a/engine/routines/playslowcry.asm b/engine/events/playslowcry.asm
index 1f27a7ca4..1f27a7ca4 100644
--- a/engine/routines/playslowcry.asm
+++ b/engine/events/playslowcry.asm
diff --git a/engine/gfx/crystal_layouts.asm b/engine/gfx/crystal_layouts.asm
index 0133916e5..71e2e4f56 100755
--- a/engine/gfx/crystal_layouts.asm
+++ b/engine/gfx/crystal_layouts.asm
@@ -203,7 +203,7 @@ Function49496: ; 49496
ret
; 494ac
-INCLUDE "engine/gfx/tileset_palettes.asm"
+INCLUDE "engine/tilesets/tileset_palettes.asm"
MG_Mobile_Layout02: ; 49706
ld hl, .Palette_49732
diff --git a/engine/dma_transfer.asm b/engine/gfx/dma_transfer.asm
index e22adf69a..e22adf69a 100755
--- a/engine/dma_transfer.asm
+++ b/engine/gfx/dma_transfer.asm
diff --git a/engine/routines/loadpushoam.asm b/engine/gfx/loadpushoam.asm
index 95f67ff73..95f67ff73 100644
--- a/engine/routines/loadpushoam.asm
+++ b/engine/gfx/loadpushoam.asm
diff --git a/engine/items/tmhm.asm b/engine/items/tmhm.asm
index 9db3dc291..442f73cfa 100755
--- a/engine/items/tmhm.asm
+++ b/engine/items/tmhm.asm
@@ -1,49 +1,589 @@
-CanLearnTMHMMove: ; 11639
+TMHMPocket: ; 2c76f (b:476f)
+ ld a, $1
+ ld [hInMenu], a
+ call TMHM_PocketLoop
+ ld a, $0
+ ld [hInMenu], a
+ ret nc
+ call PlaceHollowCursor
+ call WaitBGMap
+ ld a, [wCurItem]
+ dec a
+ ld [wCurItemQuantity], a
+ ld hl, wTMsHMs
+ 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, [wCurItem]
+ ld c, a
+ callfar GetNumberedTMHM
+ ld a, c
+ ld [wCurItem], a
+ ret
+
+ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7)
+ ld a, [wCurItem]
+ ld c, a
+ callfar GetTMHMNumber
+ ld a, c
+ ld [wCurTMHM], a
+ ret
+
+GetTMHMItemMove: ; 2c7b6 (b:47b6)
+ call ConvertCurItemIntoCurTMHM
+ predef GetTMHMMove
+ ret
+
+AskTeachTMHM: ; 2c7bf (b:47bf)
+ ld hl, wOptions
+ ld a, [hl]
+ push af
+ res NO_TEXT_SCROLL, [hl]
+ ld a, [wCurItem]
+ 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, [wCurItem]
+ 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 [wOptions], a
+ ret
+
+ChooseMonToLearnTMHM: ; 2c7fb
+ ld hl, wStringBuffer2
+ ld de, wTMHMMoveNameBackup
+ ld bc, 12
+ call CopyBytes
+ call ClearBGPalettes
+ChooseMonToLearnTMHM_NoRefresh: ; 2c80a
+ farcall LoadPartyMenuGFX
+ farcall InitPartyMenuWithCancel
+ farcall InitPartyMenuGFX
+ ld a, PARTYMENUACTION_TEACH_TMHM
+ ld [wPartyMenuActionText], a
+.loopback
+ farcall WritePartyMenuTilemap
+ farcall PrintPartyMenuText
+ call WaitBGMap
+ call SetPalettes
+ call DelayFrame
+ farcall PartyMenuSelect
+ push af
ld a, [wCurPartySpecies]
- ld [wCurSpecies], a
- call GetBaseData
- ld hl, wBaseTMHM
+ cp EGG
+ pop bc ; now contains the former contents of af
+ jr z, .egg
+ push bc
+ ld hl, wTMHMMoveNameBackup
+ ld de, wStringBuffer2
+ 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, [wCurPartyMon]
+ ld hl, wPartyMonNicknames
+ 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
+ callfar KnowsMove
+ jr c, .nope
+
+ predef LearnMove
+ ld a, b
+ and a
+ jr z, .nope
+
+ farcall StubbedTrainerRankings_TMsHMsTaught
+ ld a, [wCurItem]
+ call IsHM
+ ret c
+
+ ld c, HAPPINESS_LEARNMOVE
+ callfar ChangeHappiness
+ call ConsumeTM
+ jr .learned_move
+
+.nope
+ and a
+ ret
- ld a, [wPutativeTMHMMove]
+.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 [w2DMenuCursorInitY], a
+ ld a, 7
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 5
+ sub d
+ inc a
+ cp 6
+ jr nz, .okay
+ dec a
+.okay
+ ld [w2DMenuNumRows], a
+ ld a, $c
+ ld [w2DMenuFlags1], a
+ xor a
+ ld [w2DMenuFlags2], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN | D_LEFT | D_RIGHT
+ ld [wMenuJoypadFilter], a
+ ld a, [wTMHMPocketCursor]
+ inc a
+ ld [wMenuCursorY], a
+ ld a, $1
+ ld [wMenuCursorX], a
+ jr TMHM_ShowTMMoveDescription
+
+TMHM_JoypadLoop: ; 2c915 (b:4915)
+ call TMHM_DisplayPocketItems
+ call StaticMenuJoypad
+ ld b, a
+ ld a, [wMenuCursorY]
+ dec a
+ ld [wTMHMPocketCursor], a
+ xor a
+ ld [hBGMapMode], a
+ ld a, [w2DMenuFlags2]
+ 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, [wCurItem]
+ cp NUM_TMS + NUM_HMS + 1
+ jr nc, TMHM_JoypadLoop
+ ld [wd265], a
+ predef GetTMHMMove
+ ld a, [wd265]
+ ld [wCurSpecies], 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, [wMenuCursorY]
+ 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, [wMenuCursorY]
ld b, a
- ld c, 0
- ld hl, TMHMMoves
.loop
+ inc c
+ ld a, c
+ cp NUM_TMS + NUM_HMS + 1
+ jr nc, .okay
ld a, [hli]
and a
- jr z, .end
- cp b
- jr z, .asm_11659
+ jr z, .loop
+ dec b
+ jr nz, .loop
+ ld a, c
+.okay
+ ld [wCurItem], 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, [wBattleType]
+ 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
- jr .loop
+ 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
-.asm_11659
+.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
- ld b, CHECK_FLAG
+ dec d
+ jr nz, .loop2
+ jr .done
+
+.NotTMHM:
+ call TMHMPocket_GetCurrentLineCoord
+ inc hl
+ inc hl
+ inc hl
push de
- ld d, 0
- predef SmallFarFlagAction
+ 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)
-.end
+Unreferenced_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
+
+TMHM_String_Cancel: ; 2caae
+ db "CANCEL@"
+; 2cab5
+
+TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5)
+ ld hl, wTMsHMs
+ 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
-; 1166a
-GetTMHMMove: ; 1166a
+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)
+
+Unreferenced_Function2cadf: ; 2cadf
+ 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, TMHMMoves
+ ld hl, wTMsHMs
ld b, 0
ld c, a
add hl, bc
ld a, [hl]
- ld [wd265], a
+ inc a
+ cp NUM_TMS * 2
+ ret nc
+ ld [hl], a
ret
-; 1167a
+; 2cb0c
+ConsumeTM: ; 2cb0c (b:4b0c)
+ call ConvertCurItemIntoCurTMHM
+ ld a, [wd265]
+ dec a
+ ld hl, wTMsHMs
+ 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, wTMsHMs
+.loop
+ ld a, [hli]
+ and a
+ jr z, .skip
+ inc b
+.skip
+ dec c
+ jr nz, .loop
+ ld a, b
+ ld [wd265], a
+ ret
-INCLUDE "data/moves/tmhm_moves.asm"
+PrintMoveDesc: ; 2cb3e
+ push hl
+ ld hl, MoveDescriptions
+ ld a, [wCurSpecies]
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+ jp PlaceString
+; 2cb52
diff --git a/engine/items/tmhm2.asm b/engine/items/tmhm2.asm
new file mode 100755
index 000000000..9db3dc291
--- /dev/null
+++ b/engine/items/tmhm2.asm
@@ -0,0 +1,49 @@
+CanLearnTMHMMove: ; 11639
+ ld a, [wCurPartySpecies]
+ ld [wCurSpecies], a
+ call GetBaseData
+ ld hl, wBaseTMHM
+ push hl
+
+ ld a, [wPutativeTMHMMove]
+ ld b, a
+ ld c, 0
+ ld hl, TMHMMoves
+.loop
+ ld a, [hli]
+ and a
+ jr z, .end
+ cp b
+ jr z, .asm_11659
+ inc c
+ jr .loop
+
+.asm_11659
+ pop hl
+ ld b, CHECK_FLAG
+ push de
+ ld d, 0
+ predef SmallFarFlagAction
+ pop de
+ ret
+
+.end
+ pop hl
+ ld c, 0
+ ret
+; 1166a
+
+GetTMHMMove: ; 1166a
+ ld a, [wd265]
+ dec a
+ ld hl, TMHMMoves
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ ld [wd265], a
+ ret
+; 1167a
+
+
+INCLUDE "data/moves/tmhm_moves.asm"
diff --git a/engine/link/link.asm b/engine/link/link.asm
index 86af41c01..f6f37619f 100755
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -2029,7 +2029,7 @@ Unreferenced_Function28f09: ; 28f09
ret
; 28f24
-INCLUDE "engine/gfx/trade_animation.asm"
+INCLUDE "engine/movie/trade_animation.asm"
CheckTimeCapsuleCompatibility: ; 29bfb
; Checks to see if your party is compatible with the Gen 1 games.
diff --git a/engine/routines/placewaitingtext.asm b/engine/link/placewaitingtext.asm
index 9b2260722..9b2260722 100644
--- a/engine/routines/placewaitingtext.asm
+++ b/engine/link/placewaitingtext.asm
diff --git a/engine/debug.asm b/engine/menus/debug.asm
index 4c3110fe1..4c3110fe1 100755
--- a/engine/debug.asm
+++ b/engine/menus/debug.asm
diff --git a/engine/save.asm b/engine/menus/save.asm
index 7984c1612..7984c1612 100644
--- a/engine/save.asm
+++ b/engine/menus/save.asm
diff --git a/engine/routines/savemenu_copytilemapatonce.asm b/engine/menus/savemenu_copytilemapatonce.asm
index 9b50494a4..9b50494a4 100644
--- a/engine/routines/savemenu_copytilemapatonce.asm
+++ b/engine/menus/savemenu_copytilemapatonce.asm
diff --git a/engine/title/credits.asm b/engine/movie/credits.asm
index 1aaecf64a..1aaecf64a 100644
--- a/engine/title/credits.asm
+++ b/engine/movie/credits.asm
diff --git a/engine/title/crystal_intro.asm b/engine/movie/crystal_intro.asm
index 56bb02750..56bb02750 100755
--- a/engine/title/crystal_intro.asm
+++ b/engine/movie/crystal_intro.asm
diff --git a/engine/gfx/evolution_animation.asm b/engine/movie/evolution_animation.asm
index 978f9e968..978f9e968 100755
--- a/engine/gfx/evolution_animation.asm
+++ b/engine/movie/evolution_animation.asm
diff --git a/engine/gfx/gbc_only.asm b/engine/movie/gbc_only.asm
index badd953aa..badd953aa 100644
--- a/engine/gfx/gbc_only.asm
+++ b/engine/movie/gbc_only.asm
diff --git a/engine/title/init_hof_credits.asm b/engine/movie/init_hof_credits.asm
index e8e98a0e1..e8e98a0e1 100644
--- a/engine/title/init_hof_credits.asm
+++ b/engine/movie/init_hof_credits.asm
diff --git a/engine/title/title.asm b/engine/movie/title.asm
index f311f2342..f311f2342 100644
--- a/engine/title/title.asm
+++ b/engine/movie/title.asm
diff --git a/engine/gfx/trade_animation.asm b/engine/movie/trade_animation.asm
index 04c31df80..04c31df80 100755
--- a/engine/gfx/trade_animation.asm
+++ b/engine/movie/trade_animation.asm
diff --git a/engine/title/unused_title.asm b/engine/movie/unused_title.asm
index 8e52a71bb..8e52a71bb 100644
--- a/engine/title/unused_title.asm
+++ b/engine/movie/unused_title.asm
diff --git a/engine/routines/phonering_copytilemapatonce.asm b/engine/phone/phonering_copytilemapatonce.asm
index b0d4ffa1e..b0d4ffa1e 100644
--- a/engine/routines/phonering_copytilemapatonce.asm
+++ b/engine/phone/phonering_copytilemapatonce.asm
diff --git a/engine/routines/townmap_convertlinebreakcharacters.asm b/engine/pokegear/townmap_convertlinebreakcharacters.asm
index 6ccd79aae..6ccd79aae 100644
--- a/engine/routines/townmap_convertlinebreakcharacters.asm
+++ b/engine/pokegear/townmap_convertlinebreakcharacters.asm
diff --git a/engine/routines/checknickerrors.asm b/engine/pokemon/checknickerrors.asm
index 87ebd6bb3..87ebd6bb3 100644
--- a/engine/routines/checknickerrors.asm
+++ b/engine/pokemon/checknickerrors.asm
diff --git a/engine/routines/correcterrorsinplayerparty.asm b/engine/pokemon/correcterrorsinplayerparty.asm
index e815aa4c8..e815aa4c8 100644
--- a/engine/routines/correcterrorsinplayerparty.asm
+++ b/engine/pokemon/correcterrorsinplayerparty.asm
diff --git a/engine/pokemon/tmhm.asm b/engine/pokemon/tmhm.asm
deleted file mode 100755
index 442f73cfa..000000000
--- a/engine/pokemon/tmhm.asm
+++ /dev/null
@@ -1,589 +0,0 @@
-TMHMPocket: ; 2c76f (b:476f)
- ld a, $1
- ld [hInMenu], a
- call TMHM_PocketLoop
- ld a, $0
- ld [hInMenu], a
- ret nc
- call PlaceHollowCursor
- call WaitBGMap
- ld a, [wCurItem]
- dec a
- ld [wCurItemQuantity], a
- ld hl, wTMsHMs
- 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, [wCurItem]
- ld c, a
- callfar GetNumberedTMHM
- ld a, c
- ld [wCurItem], a
- ret
-
-ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7)
- ld a, [wCurItem]
- ld c, a
- callfar GetTMHMNumber
- ld a, c
- ld [wCurTMHM], a
- ret
-
-GetTMHMItemMove: ; 2c7b6 (b:47b6)
- call ConvertCurItemIntoCurTMHM
- predef GetTMHMMove
- ret
-
-AskTeachTMHM: ; 2c7bf (b:47bf)
- ld hl, wOptions
- ld a, [hl]
- push af
- res NO_TEXT_SCROLL, [hl]
- ld a, [wCurItem]
- 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, [wCurItem]
- 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 [wOptions], a
- ret
-
-ChooseMonToLearnTMHM: ; 2c7fb
- ld hl, wStringBuffer2
- ld de, wTMHMMoveNameBackup
- ld bc, 12
- call CopyBytes
- call ClearBGPalettes
-ChooseMonToLearnTMHM_NoRefresh: ; 2c80a
- farcall LoadPartyMenuGFX
- farcall InitPartyMenuWithCancel
- farcall InitPartyMenuGFX
- ld a, PARTYMENUACTION_TEACH_TMHM
- ld [wPartyMenuActionText], a
-.loopback
- farcall WritePartyMenuTilemap
- farcall PrintPartyMenuText
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- farcall PartyMenuSelect
- push af
- ld a, [wCurPartySpecies]
- cp EGG
- pop bc ; now contains the former contents of af
- jr z, .egg
- push bc
- ld hl, wTMHMMoveNameBackup
- ld de, wStringBuffer2
- 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, [wCurPartyMon]
- ld hl, wPartyMonNicknames
- 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
- callfar KnowsMove
- jr c, .nope
-
- predef LearnMove
- ld a, b
- and a
- jr z, .nope
-
- farcall StubbedTrainerRankings_TMsHMsTaught
- ld a, [wCurItem]
- call IsHM
- ret c
-
- ld c, HAPPINESS_LEARNMOVE
- callfar 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 [w2DMenuCursorInitY], a
- ld a, 7
- ld [w2DMenuCursorInitX], a
- ld a, 1
- ld [w2DMenuNumCols], a
- ld a, 5
- sub d
- inc a
- cp 6
- jr nz, .okay
- dec a
-.okay
- ld [w2DMenuNumRows], a
- ld a, $c
- ld [w2DMenuFlags1], a
- xor a
- ld [w2DMenuFlags2], a
- ld a, $20
- ld [w2DMenuCursorOffsets], a
- ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN | D_LEFT | D_RIGHT
- ld [wMenuJoypadFilter], a
- ld a, [wTMHMPocketCursor]
- inc a
- ld [wMenuCursorY], a
- ld a, $1
- ld [wMenuCursorX], a
- jr TMHM_ShowTMMoveDescription
-
-TMHM_JoypadLoop: ; 2c915 (b:4915)
- call TMHM_DisplayPocketItems
- call StaticMenuJoypad
- ld b, a
- ld a, [wMenuCursorY]
- dec a
- ld [wTMHMPocketCursor], a
- xor a
- ld [hBGMapMode], a
- ld a, [w2DMenuFlags2]
- 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, [wCurItem]
- cp NUM_TMS + NUM_HMS + 1
- jr nc, TMHM_JoypadLoop
- ld [wd265], a
- predef GetTMHMMove
- ld a, [wd265]
- ld [wCurSpecies], 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, [wMenuCursorY]
- 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, [wMenuCursorY]
- 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 [wCurItem], 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, [wBattleType]
- 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
- inc hl
- inc hl
- inc hl
- 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)
-
-Unreferenced_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
-
-TMHM_String_Cancel: ; 2caae
- db "CANCEL@"
-; 2cab5
-
-TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5)
- ld hl, wTMsHMs
- 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)
-
-Unreferenced_Function2cadf: ; 2cadf
- 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, wTMsHMs
- 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, wTMsHMs
- 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, wTMsHMs
-.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, [wCurSpecies]
- dec a
- ld c, a
- ld b, 0
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld e, a
- ld d, [hl]
- pop hl
- jp PlaceString
-; 2cb52
diff --git a/engine/predef.asm b/engine/routines/predef.asm
index 13c593c90..13c593c90 100644
--- a/engine/predef.asm
+++ b/engine/routines/predef.asm
diff --git a/engine/gfx/map_palettes.asm b/engine/tilesets/map_palettes.asm
index a9d2b382f..a9d2b382f 100644
--- a/engine/gfx/map_palettes.asm
+++ b/engine/tilesets/map_palettes.asm
diff --git a/engine/gfx/mapgroup_roofs.asm b/engine/tilesets/mapgroup_roofs.asm
index 58e5e7cfe..58e5e7cfe 100644
--- a/engine/gfx/mapgroup_roofs.asm
+++ b/engine/tilesets/mapgroup_roofs.asm
diff --git a/engine/gfx/tileset_anims.asm b/engine/tilesets/tileset_anims.asm
index bf0037e65..bf0037e65 100644
--- a/engine/gfx/tileset_anims.asm
+++ b/engine/tilesets/tileset_anims.asm
diff --git a/engine/gfx/tileset_palettes.asm b/engine/tilesets/tileset_palettes.asm
index e2c39c0ab..e2c39c0ab 100644
--- a/engine/gfx/tileset_palettes.asm
+++ b/engine/tilesets/tileset_palettes.asm
diff --git a/engine/gfx/timeofdaypals.asm b/engine/tilesets/timeofdaypals.asm
index b8d43d252..b8d43d252 100644
--- a/engine/gfx/timeofdaypals.asm
+++ b/engine/tilesets/timeofdaypals.asm