diff options
Diffstat (limited to 'engine/link')
-rwxr-xr-x | engine/link/time_capsule.asm | 140 | ||||
-rwxr-xr-x | engine/link/time_capsule_2.asm | 39 |
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" |