Update Magikarp length documentation

This commit is contained in:
xCrystal 2017-12-28 16:42:57 +01:00
parent 333524f0be
commit 731311cb15
2 changed files with 24 additions and 8 deletions

View File

@ -6371,8 +6371,14 @@ LoadEnemyMon: ; 3e8eb
jr c, .GenerateDVs ; try again
.Magikarp:
; Skimming this part recommended
; These filters are untranslated
; They expect at wMagikarpLength a 2-byte value in mm,
; but the value is at ft and in (one byte each)
; The first filter is supposed to make very large Magikarp even rarer,
; by targeting those 1600 mm or larger.
; After the conversion to feet, they are unable to target any,
; as the largest possible Magikarp is 5'3'', which reads as 1283.
ld a, [TempEnemyMonSpecies]
cp MAGIKARP
jr nz, .Happiness
@ -6393,7 +6399,7 @@ LoadEnemyMon: ; 3e8eb
jr c, .CheckMagikarpArea
; Try again if > 1614
ld a, [wMagikarpLength + 1]
cp LOW(1614) + 2
cp LOW(1616)
jr nc, .GenerateDVs
; 20% chance of skipping this check
@ -6402,7 +6408,7 @@ LoadEnemyMon: ; 3e8eb
jr c, .CheckMagikarpArea
; Try again if > 1598
ld a, [wMagikarpLength + 1]
cp LOW(1598) + 2
cp LOW(1600)
jr nc, .GenerateDVs
.CheckMagikarpArea:
@ -6415,6 +6421,9 @@ LoadEnemyMon: ; 3e8eb
; Intended behavior enforces a minimum size at Lake of Rage
; The real behavior prevents size flooring in the Lake of Rage area
; Moreover, due to the check not being translated to feet, all Magikarp
; smaller than 4'0'' may be caught by the filter, a lot more than intended
ld a, [MapGroup]
cp GROUP_LAKE_OF_RAGE
jr z, .Happiness

View File

@ -108,7 +108,7 @@ PrintMagikarpLength: ; fbbdb
; fbbfc
CalcMagikarpLength: ; fbbfc
; Return Magikarp's length (in mm) at wMagikarpLength (big endian).
; Return Magikarp's length (in feet and inches) at wMagikarpLength (big endian).
;
; input:
; de: EnemyMonDVs
@ -247,6 +247,10 @@ CalcMagikarpLength: ; fbbfc
ld e, l
.done
; convert from mm to feet and inches
; in = mm / 25.4
; ft = in / 12
; hl = de × 10
ld h, d
ld l, e
@ -275,9 +279,9 @@ CalcMagikarpLength: ; fbbfc
ld e, a
ld hl, wMagikarpLength
ld [hl], d
ld [hl], d ; ft
inc hl
ld [hl], e
ld [hl], e ; in
ret
; fbc9a
@ -305,8 +309,11 @@ CalcMagikarpLength: ; fbbfc
; fbca8
.Lengths: ; fbca8
; ????, divisor
dwb 110, 1
; [wMagikarpLength] = z * 100 + (bc - x) / y
; First argument is the bc threshold as well as x.
; Second argument is y.
; In reality, due to the bug at .BCLessThanDE, the threshold is determined by only register b.
dwb 110, 1 ; not used unless the bug is fixed
dwb 310, 2
dwb 710, 4
dwb 2710, 20