summaryrefslogtreecommitdiff
path: root/engine/time_capsule.asm
diff options
context:
space:
mode:
authorRemy Oukaour <remy.oukaour@gmail.com>2017-12-15 12:31:18 -0500
committerRemy Oukaour <remy.oukaour@gmail.com>2017-12-15 12:31:18 -0500
commit94722aa8f08ceaef8233d73a87f534b6c3f0475f (patch)
tree5cf3287bec399ededa7e397812d1a06d7533641a /engine/time_capsule.asm
parent2b6dd505c1674e0d99d649515a8efe868035db09 (diff)
Move predef/ files into engine/
Get rid of single-file engine/ subdirectories Move tilesets/ palettes unrelated to individual tilesets into data/palettes/ (more from engine/colors.asm can be moved here too)
Diffstat (limited to 'engine/time_capsule.asm')
-rwxr-xr-xengine/time_capsule.asm277
1 files changed, 277 insertions, 0 deletions
diff --git a/engine/time_capsule.asm b/engine/time_capsule.asm
new file mode 100755
index 000000000..eb8896355
--- /dev/null
+++ b/engine/time_capsule.asm
@@ -0,0 +1,277 @@
+; These functions seem to be related to backwards compatibility
+
+ValidateOTTrademon: ; fb57e
+ ld a, [wd003]
+ ld hl, OTPartyMon1Species
+ call GetPartyLocation
+ push hl
+ ld a, [wd003]
+ inc a
+ ld c, a
+ ld b, 0
+ ld hl, OTPartyCount
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ cp EGG
+ jr z, .matching_or_egg
+ cp [hl]
+ jr nz, .abnormal
+
+.matching_or_egg
+ ld b, h
+ ld c, l
+ ld hl, MON_LEVEL
+ add hl, bc
+ ld a, [hl]
+ cp MAX_LEVEL + 1
+ jr nc, .abnormal
+ ld a, [wLinkMode]
+ cp LINK_TIMECAPSULE
+ jr nz, .normal
+ ld hl, OTPartySpecies
+ ld a, [wd003]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [hl]
+
+ ; Magnemite and Magneton's types changed
+ ; from Electric to Electric/Steel.
+ cp MAGNEMITE
+ jr z, .normal
+ cp MAGNETON
+ jr z, .normal
+
+ ld [CurSpecies], a
+ call GetBaseData
+ ld hl, wLinkOTPartyMonTypes
+ add hl, bc
+ add hl, bc
+ ld a, [BaseType1]
+ cp [hl]
+ jr nz, .abnormal
+ inc hl
+ ld a, [BaseType2]
+ cp [hl]
+ jr nz, .abnormal
+
+.normal
+ and a
+ ret
+
+.abnormal
+ scf
+ ret
+; fb5dd
+
+Functionfb5dd: ; fb5dd
+ ld a, [wd002]
+ ld d, a
+ ld a, [PartyCount]
+ ld b, a
+ ld c, $0
+.loop
+ ld a, c
+ cp d
+ jr z, .next
+ push bc
+ ld a, c
+ ld hl, PartyMon1HP
+ call GetPartyLocation
+ pop bc
+ ld a, [hli]
+ or [hl]
+ jr nz, .done
+
+.next
+ inc c
+ dec b
+ jr nz, .loop
+ ld a, [wd003]
+ ld hl, OTPartyMon1HP
+ call GetPartyLocation
+ ld a, [hli]
+ or [hl]
+ jr nz, .done
+ scf
+ ret
+
+.done
+ and a
+ ret
+; fb60d
+
+PlaceTradePartnerNamesAndParty: ; fb60d
+ hlcoord 4, 0
+ ld de, PlayerName
+ call PlaceString
+ ld a, $14
+ ld [bc], a
+ hlcoord 4, 8
+ ld de, OTPlayerName
+ call PlaceString
+ ld a, $14
+ ld [bc], a
+ hlcoord 7, 1
+ ld de, PartySpecies
+ call .PlaceSpeciesNames
+ hlcoord 7, 9
+ ld de, OTPartySpecies
+.PlaceSpeciesNames: ; fb634
+ ld c, $0
+.loop
+ ld a, [de]
+ cp -1
+ ret z
+ ld [wd265], a
+ push bc
+ push hl
+ push de
+ push hl
+ ld a, c
+ ld [hProduct], a
+ call GetPokemonName
+ pop hl
+ call PlaceString
+ pop de
+ inc de
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ inc c
+ jr .loop
+; fb656
+
+
+INCLUDE "data/time_capsule/special_stats.asm"
+
+
+INCLUDE "event/name_rater.asm"
+
+
+PlaySlowCry: ; fb841
+ ld a, [ScriptVar]
+ call LoadCryHeader
+ jr c, .done
+
+ ld hl, CryPitch
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, -$140
+ add hl, bc
+ ld a, l
+ ld [CryPitch], a
+ ld a, h
+ ld [CryPitch + 1], a
+ ld hl, CryLength
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, $60
+ add hl, bc
+ ld a, l
+ ld [CryLength], a
+ ld a, h
+ ld [CryLength + 1], a
+ callba _PlayCryHeader
+ call WaitSFX
+
+.done
+ ret
+; fb877
+
+NewPokedexEntry: ; fb877
+ ld a, [hMapAnims]
+ push af
+ xor a
+ ld [hMapAnims], a
+ call LowVolume
+ call ClearBGPalettes
+ call ClearTileMap
+ call UpdateSprites
+ call ClearSprites
+ ld a, [wPokedexStatus]
+ push af
+ ld a, [hSCX]
+ add $5
+ ld [hSCX], a
+ xor a
+ ld [wPokedexStatus], a
+ callba _NewPokedexEntry
+ call WaitPressAorB_BlinkCursor
+ ld a, $1
+ ld [wPokedexStatus], a
+ callba DisplayDexEntry
+ call WaitPressAorB_BlinkCursor
+ pop af
+ ld [wPokedexStatus], a
+ call MaxVolume
+ call RotateThreePalettesRight
+ ld a, [hSCX]
+ add -5 ; 251 ; NUM_POKEMON
+ ld [hSCX], a
+ call .ReturnFromDexRegistration
+ pop af
+ ld [hMapAnims], a
+ ret
+; fb8c8
+
+.ReturnFromDexRegistration: ; fb8c8
+ call ClearTileMap
+ call LoadFontsExtra
+ call LoadStandardFont
+ callba Pokedex_PlaceFrontpicTopLeftCorner
+ call WaitBGMap2
+ callba GetEnemyMonDVs
+ ld a, [hli]
+ ld [TempMonDVs], a
+ ld a, [hl]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call SetPalettes
+ ret
+; fb8f1
+
+ConvertMon_2to1: ; fb8f1
+; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265.
+ push bc
+ push hl
+ ld a, [wd265]
+ ld b, a
+ ld c, 0
+ ld hl, Pokered_MonIndices
+.loop
+ inc c
+ ld a, [hli]
+ cp b
+ jr nz, .loop
+ ld a, c
+ ld [wd265], a
+ pop hl
+ pop bc
+ ret
+; fb908
+
+ConvertMon_1to2: ; fb908
+; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265.
+ push bc
+ push hl
+ ld a, [wd265]
+ dec a
+ ld hl, Pokered_MonIndices
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ ld [wd265], a
+ pop hl
+ pop bc
+ ret
+; fb91c
+
+
+INCLUDE "data/time_capsule/mon_order.asm"