summaryrefslogtreecommitdiff
path: root/engine/link
diff options
context:
space:
mode:
Diffstat (limited to 'engine/link')
-rwxr-xr-xengine/link/time_capsule.asm140
-rwxr-xr-xengine/link/time_capsule_2.asm39
2 files changed, 179 insertions, 0 deletions
diff --git a/engine/link/time_capsule.asm b/engine/link/time_capsule.asm
new file mode 100755
index 00000000..adbb3300
--- /dev/null
+++ b/engine/link/time_capsule.asm
@@ -0,0 +1,140 @@
+; These functions seem to be related to backwards compatibility
+
+ValidateOTTrademon:
+ ld a, [wceee]
+ ld hl, wOTPartyMon1Species
+ call GetPartyLocation
+ push hl
+ ld a, [wceee]
+ inc a
+ ld c, a
+ ld b, 0
+ ld hl, wOTPartyCount
+ 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, wOTPartySpecies
+ ld a, [wceee]
+ 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 [wCurSpecies], a
+ call GetBaseData
+ ld hl, wLinkOTPartyMonTypes
+ add hl, bc
+ add hl, bc
+ ld a, [wBaseType1]
+ cp [hl]
+ jr nz, .abnormal
+ inc hl
+ ld a, [wBaseType2]
+ cp [hl]
+ jr nz, .abnormal
+
+.normal
+ and a
+ ret
+
+.abnormal
+ scf
+ ret
+
+Functionfb6ed:
+ ld a, [wceed]
+ ld d, a
+ ld a, [wPartyCount]
+ ld b, a
+ ld c, $0
+.loop
+ ld a, c
+ cp d
+ jr z, .next
+ push bc
+ ld a, c
+ ld hl, wPartyMon1HP
+ call GetPartyLocation
+ pop bc
+ ld a, [hli]
+ or [hl]
+ jr nz, .done
+
+.next
+ inc c
+ dec b
+ jr nz, .loop
+ ld a, [wceee]
+ ld hl, wOTPartyMon1HP
+ call GetPartyLocation
+ ld a, [hli]
+ or [hl]
+ jr nz, .done
+ scf
+ ret
+
+.done
+ and a
+ ret
+
+PlaceTradePartnerNamesAndParty:
+ hlcoord 2, 0
+ ld de, wPlayerName
+ call PlaceString
+ hlcoord 2, 8
+ ld de, wOTPlayerName
+ call PlaceString
+ hlcoord 7, 1
+ ld de, wPartySpecies
+ call .PlaceSpeciesNames
+ hlcoord 7, 9
+ ld de, wOTPartySpecies
+.PlaceSpeciesNames:
+ ld c, 0
+.loop
+ ld a, [de]
+ cp -1
+ ret z
+ ld [wNamedObjectIndexBuffer], a
+ push bc
+ push hl
+ push de
+ push hl
+ ld a, c
+ ldh [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
+
+INCLUDE "data/pokemon/gen1_base_special.asm"
diff --git a/engine/link/time_capsule_2.asm b/engine/link/time_capsule_2.asm
new file mode 100755
index 00000000..6640f6b0
--- /dev/null
+++ b/engine/link/time_capsule_2.asm
@@ -0,0 +1,39 @@
+ConvertMon_2to1:
+; Takes the Gen 2 Pokemon number stored in wTempSpecies,
+; finds it in the Pokered_MonIndices table,
+; and returns its index in wTempSpecies.
+ push bc
+ push hl
+ ld a, [wTempSpecies]
+ 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 [wTempSpecies], a
+ pop hl
+ pop bc
+ ret
+
+ConvertMon_1to2:
+; Takes the Gen 1 Pokemon number stored in wTempSpecies
+; and returns the corresponding value from Pokered_MonIndices in wTempSpecies.
+ push bc
+ push hl
+ ld a, [wTempSpecies]
+ dec a
+ ld hl, Pokered_MonIndices
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ ld [wTempSpecies], a
+ pop hl
+ pop bc
+ ret
+
+INCLUDE "data/pokemon/gen1_order.asm"