ref: 327faac497b4195dbf1d3c8dbfeb2adcda9deb27
parent: d42330ed8b591db79c43ef680edc5965d6a7b14b
author: PikalaxALT <[email protected]>
date: Sun Oct 11 08:15:03 EDT 2015
Magikarp functions moved to event/magikarp.asm
--- a/battle/magikarp_length.asm
+++ /dev/null
@@ -1,215 +1,0 @@
-CalcMagikarpLength: ; fbbfc
-; Return Magikarp's length (in mm) at MagikarpLength (big endian).
-;
-; input:
-; de: EnemyMonDVs
-; bc: PlayerID
-
-; This function is poorly commented.
-
-; In short, it generates a value between 190 and 1786 using
-; a Magikarp's DVs and its trainer ID. This value is further
-; filtered in LoadEnemyMon to make longer Magikarp even rarer.
-
-; The value is generated from a lookup table.
-; The index is determined by the dv xored with the player's trainer id.
-
-; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
-
-; if bc < 10: [MagikarpLength] = c + 190
-; if bc >= $ff00: [MagikarpLength] = c + 1370
-; else: [MagikarpLength] = z * 100 + (bc - x) / y
-
-; X, Y, and Z depend on the value of b as follows:
-
-; if b = 0: x = 310, y = 2, z = 3
-; if b = 1: x = 710, y = 4, z = 4
-; if b = 2-9: x = 2710, y = 20, z = 5
-; if b = 10-29: x = 7710, y = 50, z = 6
-; if b = 30-68: x = 17710, y = 100, z = 7
-; if b = 69-126: x = 32710, y = 150, z = 8
-; if b = 127-185: x = 47710, y = 150, z = 9
-; if b = 186-224: x = 57710, y = 100, z = 10
-; if b = 225-243: x = 62710, y = 50, z = 11
-; if b = 244-251: x = 64710, y = 20, z = 12
-; if b = 252-253: x = 65210, y = 5, z = 13
-; if b = 254: x = 65410, y = 2, z = 14
-
-
- ; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
-
- ; id
- ld h, b
- ld l, c
- ld a, [hli]
- ld b, a
- ld c, [hl]
- rrc b
- rrc c
-
- ; dv
- ld a, [de]
- inc de
- rrca
- rrca
- xor b
- ld b, a
-
- ld a, [de]
- rrca
- rrca
- xor c
- ld c, a
-
- ; if bc < 10:
- ; de = bc + 190
- ; break
-
- ld a, b
- and a
- jr nz, .no
- ld a, c
- cp 10
- jr nc, .no
-
- ld hl, 190
- add hl, bc
- ld d, h
- ld e, l
- jr .done
-
-.no
-
- ld hl, .Lengths
- ld a, 2
- ld [wd265], a
-
-.read
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- call .BCLessThanDE
- jr nc, .next
-
- ; c = (bc - de) / [hl]
- call .BCMinusDE
- ld a, b
- ld [hDividend + 0], a
- ld a, c
- ld [hDividend + 1], a
- ld a, [hl]
- ld [hDivisor], a
- ld b, 2
- call Divide
- ld a, [hQuotient + 2]
- ld c, a
-
- ; de = c + 100 * (2 + i)
- xor a
- ld [hMultiplicand + 0], a
- ld [hMultiplicand + 1], a
- ld a, 100
- ld [hMultiplicand + 2], a
- ld a, [wd265]
- ld [hMultiplier], a
- call Multiply
- ld b, 0
- ld a, [hProduct + 3]
- add c
- ld e, a
- ld a, [hProduct + 2]
- adc b
- ld d, a
- jr .done
-
-.next
- inc hl ; align to next triplet
- ld a, [wd265]
- inc a
- ld [wd265], a
- cp 16
- jr c, .read
-
- call .BCMinusDE
- ld hl, 1600
- add hl, bc
- ld d, h
- ld e, l
-
-.done
- ; hl = de * 10
- ld h, d
- ld l, e
-rept 2
- add hl, hl
-endr
- add hl, de
- add hl, hl
-
- ; hl = hl / 254
- ld de, -254
- ld a, -1
-.div_254
- inc a
- add hl, de
- jr c, .div_254
-
- ; d, e = hl / 12, hl % 12
- ld d, 0
-.mod_12
- cp 12
- jr c, .ok
- sub 12
- inc d
- jr .mod_12
-.ok
- ld e, a
-
- ld hl, MagikarpLength
- ld [hl], d
- inc hl
- ld [hl], e
- ret
-; fbc9a
-
-.BCLessThanDE: ; fbc9a
-; Intention: Return bc < de.
-; Reality: Return b < d.
- ld a, b
- cp d
- ret c
- ret nc ; whoops
- ld a, c
- cp e
- ret
-; fbca1
-
-.BCMinusDE: ; fbca1
-; bc -= de
- ld a, c
- sub e
- ld c, a
- ld a, b
- sbc d
- ld b, a
- ret
-; fbca8
-
-.Lengths: ; fbca8
-; ????, divisor
- dwb 110, 1
- dwb 310, 2
- dwb 710, 4
- dwb 2710, 20
- dwb 7710, 50
- dwb 17710, 100
- dwb 32710, 150
- dwb 47710, 150
- dwb 57710, 100
- dwb 62710, 50
- dwb 64710, 20
- dwb 65210, 5
- dwb 65410, 2
- dwb 65510, 1 ; not used
-; fbcd2
--- /dev/null
+++ b/battle/misc.asm
@@ -1,0 +1,259 @@
+Functionfbd54: ; fbd54
+ xor a
+ ld [hBGMapMode], a ; $ff00+$d4
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .asm_fbd61
+ call Functionfbd96
+ jr .asm_fbd64
+.asm_fbd61
+ call Functionfbd9d
+.asm_fbd64
+ call ClearBox
+ jr Functionfbd91
+
+Functionfbd69: ; fbd69 (3e:7d69)
+ callba BattleCommanda6
+ jr Functionfbd77
+
+Functionfbd71: ; fbd71 (3e:7d71)
+ callba BattleCommanda7
+
+Functionfbd77: ; fbd77 (3e:7d77)
+ xor a
+ ld [hBGMapMode], a ; $ff00+$d4
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .asm_fbd85
+ call Functionfbd96
+ xor a
+ jr .asm_fbd8a
+.asm_fbd85
+ call Functionfbd9d
+ ld a, $31
+.asm_fbd8a
+ ld [$ffad], a
+ predef FillBox
+Functionfbd91: ; fbd91 (3e:7d91)
+ ld a, $1
+ ld [hBGMapMode], a ; $ff00+$d4
+ ret
+
+Functionfbd96: ; fbd96 (3e:7d96)
+ hlcoord 12, 0
+ lb bc, 7, 7
+ ret
+
+Functionfbd9d: ; fbd9d (3e:7d9d)
+ hlcoord 2, 6
+ lb bc, 6, 6
+ ret
+
+
+DoWeatherModifiers: ; fbda4
+
+ ld de, .WeatherTypeModifiers
+ ld a, [Weather]
+ ld b, a
+ ld a, [wd265] ; move type
+ ld c, a
+
+.CheckWeatherType
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_fbdc0
+
+ cp b
+ jr nz, .NextWeatherType
+
+ ld a, [de]
+ cp c
+ jr z, .ApplyModifier
+
+.NextWeatherType
+rept 2
+ inc de
+endr
+ jr .CheckWeatherType
+
+
+.asm_fbdc0
+ ld de, .WeatherMoveModifiers
+
+ ld a, BATTLE_VARS_MOVE_EFFECT
+ call GetBattleVar
+ ld c, a
+
+.CheckWeatherMove
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .done
+
+ cp b
+ jr nz, .NextWeatherMove
+
+ ld a, [de]
+ cp c
+ jr z, .ApplyModifier
+
+.NextWeatherMove
+rept 2
+ inc de
+endr
+ jr .CheckWeatherMove
+
+.ApplyModifier
+ xor a
+ ld [hMultiplicand + 0], a
+ ld hl, CurDamage
+ ld a, [hli]
+ ld [hMultiplicand + 1], a
+ ld a, [hl]
+ ld [hMultiplicand + 2], a
+
+ inc de
+ ld a, [de]
+ ld [hMultiplier], a
+
+ call Multiply
+
+ ld a, 10
+ ld [hDivisor], a
+ ld b, $4
+ call Divide
+
+ ld a, [hQuotient + 0]
+ and a
+ ld bc, -1
+ jr nz, .Update
+
+ ld a, [hQuotient + 1]
+ ld b, a
+ ld a, [hQuotient + 2]
+ ld c, a
+ or b
+ jr nz, .Update
+
+ ld bc, 1
+
+.Update
+ ld a, b
+ ld [CurDamage], a
+ ld a, c
+ ld [CurDamage + 1], a
+
+.done
+ ret
+
+.WeatherTypeModifiers
+ db WEATHER_RAIN, WATER, 15
+ db WEATHER_RAIN, FIRE, 05
+ db WEATHER_SUN, FIRE, 15
+ db WEATHER_SUN, WATER, 05
+ db $ff
+
+.WeatherMoveModifiers
+ db WEATHER_RAIN, EFFECT_SOLARBEAM, 05
+ db $ff
+; fbe24
+
+
+DoBadgeTypeBoosts: ; fbe24
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+
+ ld a, [InBattleTowerBattle]
+ and a
+ ret nz
+
+ ld a, [hBattleTurn]
+ and a
+ ret nz
+
+ push de
+ push bc
+
+ ld hl, .BadgeTypes
+
+ ld a, [KantoBadges]
+ ld b, a
+ ld a, [JohtoBadges]
+ ld c, a
+
+.CheckBadge
+ ld a, [hl]
+ cp $ff
+ jr z, .done
+
+ srl b
+ rr c
+ jr nc, .NextBadge
+
+ ld a, [wd265] ; move type
+ cp [hl]
+ jr z, .ApplyBoost
+
+.NextBadge
+ inc hl
+ jr .CheckBadge
+
+.ApplyBoost
+ ld a, [CurDamage]
+ ld h, a
+ ld d, a
+ ld a, [CurDamage + 1]
+ ld l, a
+ ld e, a
+
+ srl d
+ rr e
+ srl d
+ rr e
+ srl d
+ rr e
+
+ ld a, e
+ or d
+ jr nz, .asm_fbe6f
+ ld e, 1
+
+.asm_fbe6f
+ add hl, de
+ jr nc, .Update
+
+ ld hl, $ffff
+
+.Update
+ ld a, h
+ ld [CurDamage], a
+ ld a, l
+ ld [CurDamage + 1], a
+
+.done
+ pop bc
+ pop de
+ ret
+
+.BadgeTypes
+ db FLYING ; zephyrbadge
+ db BUG ; hivebadge
+ db NORMAL ; plainbadge
+ db GHOST ; fogbadge
+ db STEEL ; mineralbadge
+ db FIGHTING ; stormbadge
+ db ICE ; glacierbadge
+ db DRAGON ; risingbadge
+
+ db ROCK ; boulderbadge
+ db WATER ; cascadebadge
+ db ELECTRIC ; thunderbadge
+ db GRASS ; rainbowbadge
+ db POISON ; soulbadge
+ db PSYCHIC ; marshbadge
+ db FIRE ; volcanobadge
+ db GROUND ; earthbadge
+ db $ff
+; fbe91
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -116,6 +116,11 @@
NUM_WILDMONS_PER_AREA_TIME_OF_DAY EQU 7
WILDMON_GRASS_STRUCTURE_LENGTH EQU 2 + 3 * (1 + 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY)
-PRINTNUM_MONEY EQU %00100000
-PRINTNUM_RIGHTALIGN EQU %01000000
-PRINTNUM_LEADINGZEROS EQU %10000000
+
+PRINTNUM_MONEY_F EQU 5
+PRINTNUM_RIGHTALIGN_F EQU 6
+PRINTNUM_LEADINGZEROS_F EQU 7
+
+PRINTNUM_MONEY EQU 1 << PRINTNUM_MONEY_F
+PRINTNUM_RIGHTALIGN EQU 1 << PRINTNUM_RIGHTALIGN_F
+PRINTNUM_LEADINGZEROS EQU 1 << PRINTNUM_LEADINGZEROS_F
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -217,7 +217,7 @@
call ByteFill
callba Function1de171
hlcoord 0, 17
- ld de, Unknown_407f2
+ ld de, String_START_SEARCH
call Function40acd
ld a, $7
ld [wc7d3], a
@@ -246,7 +246,7 @@
call Function41148
callba Function1de171
hlcoord 0, 17
- ld de, Unknown_407f2
+ ld de, String_START_SEARCH
call Function40acd
ld a, $7
ld [wc7d3], a
@@ -1068,7 +1068,7 @@
Function4074c: ; 4074c (10:474c)
hlcoord 0, 17
- ld de, Unknown_407f2
+ ld de, String_START_SEARCH
call Function40acd
ld a, $32
hlcoord 0, 0
@@ -1081,7 +1081,7 @@
ld bc, $607
call Function40ad5
hlcoord 1, 11
- ld de, Unknown_407e1
+ ld de, String_SEEN
call Function40acd
ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
ld b, EndPokedexSeen - PokedexSeen
@@ -1088,10 +1088,10 @@
call CountSetBits
ld de, wd265
hlcoord 5, 12
- ld bc, $103
+ lb bc, 1, 3
call PrintNum
hlcoord 1, 14
- ld de, Unknown_407e6
+ ld de, String_OWN
call Function40acd
ld hl, PokedexCaught
ld b, EndPokedexCaught - PokedexCaught
@@ -1098,10 +1098,10 @@
call CountSetBits
ld de, wd265
hlcoord 5, 15
- ld bc, $103
+ lb bc, 1, 3
call PrintNum
hlcoord 1, 17
- ld de, Unknown_407ea
+ ld de, String_SELECT_OPTION
call Function40acd
hlcoord 8, 1
ld b, $7
@@ -1123,13 +1123,13 @@
ret
; 407e1 (10:47e1)
-Unknown_407e1: ; 407e1
+String_SEEN: ; 407e1
db "SEEN", $ff
-Unknown_407e6: ; 407e6
+String_OWN: ; 407e6
db "OWN", $ff
-Unknown_407ea: ; 407ea
+String_SELECT_OPTION: ; 407ea
db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION
-Unknown_407f2: ; 407f2
+String_START_SEARCH: ; 407f2
db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH
; 407fd
@@ -1270,7 +1270,7 @@
call PlaceString
ld de, wc7d7
hlcoord 1, 16
- ld bc, $103
+ lb bc, 1, 3
call PrintNum
hlcoord 8, 0
ld [hl], $59
--- /dev/null
+++ b/event/magikarp.asm
@@ -1,0 +1,345 @@
+
+
+Special_CheckMagikarpLength: ; fbb32
+ ; Returns 3 if you select a Magikarp that beats the previous record.
+ ; Returns 2 if you select a Magikarp, but the current record is longer.
+ ; Returns 1 if you press B in the Pokemon selection menu.
+ ; Returns 0 if the Pokemon you select is not a Magikarp.
+
+ ; Let's start by selecting a Magikarp.
+ callba SelectMonFromParty
+ jr c, .declined
+ ld a, [CurPartySpecies]
+ cp MAGIKARP
+ jr nz, .not_magikarp
+
+ ; Now let's compute its length based on its DVs and ID.
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Species
+ ld bc, PartyMon2 - PartyMon1
+ call AddNTimes
+ push hl
+ ld bc, MON_DVS
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, MON_ID
+ add hl, bc
+ ld b, h
+ ld c, l
+ call CalcMagikarpLength
+ call PrintMagikarpLength
+ callba MagikarpLength_Mobile
+ ld hl, .MeasureItText
+ call PrintText
+
+ ; Did we beat the record?
+ ld hl, Buffer1
+ ld de, wBestMagikarpLengthFeet
+ ld c, 2
+ call StringCmp
+ jr nc, .not_long_enough
+
+ ; NEW RECORD!!! Let's save that.
+ ld hl, Buffer1
+ ld de, wBestMagikarpLengthFeet
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld a, [CurPartyMon]
+ ld hl, PartyMonOT
+ call SkipNames
+ call CopyBytes
+ ld a, 3
+ ld [ScriptVar], a
+ ret
+
+.not_long_enough
+ ld a, 2
+ ld [ScriptVar], a
+ ret
+
+.declined
+ ld a, 1
+ ld [ScriptVar], a
+ ret
+
+.not_magikarp
+ xor a
+ ld [ScriptVar], a
+ ret
+; fbba9
+
+.MeasureItText: ; 0xfbba9
+ ; Let me measure that MAGIKARP. …Hm, it measures @ .
+ text_jump UnknownText_0x1c1203
+ db "@"
+; 0xfbbae
+
+Magikarp_LoadFeetInchesChars: ; fbbae
+ ld hl, VTiles2 + "<FOOT>" * $10
+ ld de, .feetinchchars
+ lb bc, BANK(.feetinchchars), 2
+ call Request2bpp
+ ret
+; fbbbb
+
+.feetinchchars: ; fbbb
+INCBIN "gfx/unknown/0fbbbb.2bpp"
+; fbbdb
+
+PrintMagikarpLength: ; fbbdb
+ call Magikarp_LoadFeetInchesChars
+ ld hl, StringBuffer1
+ ld de, Buffer1
+ lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+ call PrintNum
+ ld [hl], "<FOOT>"
+ inc hl
+ ld de, Buffer2
+ lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+ call PrintNum
+ ld [hl], "<INCH>"
+ inc hl
+ ld [hl], "@"
+ ret
+; fbbfc
+
+CalcMagikarpLength: ; fbbfc
+; Return Magikarp's length (in mm) at MagikarpLength (big endian).
+;
+; input:
+; de: EnemyMonDVs
+; bc: PlayerID
+
+; This function is poorly commented.
+
+; In short, it generates a value between 190 and 1786 using
+; a Magikarp's DVs and its trainer ID. This value is further
+; filtered in LoadEnemyMon to make longer Magikarp even rarer.
+
+; The value is generated from a lookup table.
+; The index is determined by the dv xored with the player's trainer id.
+
+; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
+
+; if bc < 10: [MagikarpLength] = c + 190
+; if bc >= $ff00: [MagikarpLength] = c + 1370
+; else: [MagikarpLength] = z * 100 + (bc - x) / y
+
+; X, Y, and Z depend on the value of b as follows:
+
+; if b = 0: x = 310, y = 2, z = 3
+; if b = 1: x = 710, y = 4, z = 4
+; if b = 2-9: x = 2710, y = 20, z = 5
+; if b = 10-29: x = 7710, y = 50, z = 6
+; if b = 30-68: x = 17710, y = 100, z = 7
+; if b = 69-126: x = 32710, y = 150, z = 8
+; if b = 127-185: x = 47710, y = 150, z = 9
+; if b = 186-224: x = 57710, y = 100, z = 10
+; if b = 225-243: x = 62710, y = 50, z = 11
+; if b = 244-251: x = 64710, y = 20, z = 12
+; if b = 252-253: x = 65210, y = 5, z = 13
+; if b = 254: x = 65410, y = 2, z = 14
+
+
+ ; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
+
+ ; id
+ ld h, b
+ ld l, c
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ rrc b
+ rrc c
+
+ ; dv
+ ld a, [de]
+ inc de
+ rrca
+ rrca
+ xor b
+ ld b, a
+
+ ld a, [de]
+ rrca
+ rrca
+ xor c
+ ld c, a
+
+ ; if bc < 10:
+ ; de = bc + 190
+ ; break
+
+ ld a, b
+ and a
+ jr nz, .no
+ ld a, c
+ cp 10
+ jr nc, .no
+
+ ld hl, 190
+ add hl, bc
+ ld d, h
+ ld e, l
+ jr .done
+
+.no
+
+ ld hl, .Lengths
+ ld a, 2
+ ld [wd265], a
+
+.read
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ call .BCLessThanDE
+ jr nc, .next
+
+ ; c = (bc - de) / [hl]
+ call .BCMinusDE
+ ld a, b
+ ld [hDividend + 0], a
+ ld a, c
+ ld [hDividend + 1], a
+ ld a, [hl]
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+ ld a, [hQuotient + 2]
+ ld c, a
+
+ ; de = c + 100 * (2 + i)
+ xor a
+ ld [hMultiplicand + 0], a
+ ld [hMultiplicand + 1], a
+ ld a, 100
+ ld [hMultiplicand + 2], a
+ ld a, [wd265]
+ ld [hMultiplier], a
+ call Multiply
+ ld b, 0
+ ld a, [hProduct + 3]
+ add c
+ ld e, a
+ ld a, [hProduct + 2]
+ adc b
+ ld d, a
+ jr .done
+
+.next
+ inc hl ; align to next triplet
+ ld a, [wd265]
+ inc a
+ ld [wd265], a
+ cp 16
+ jr c, .read
+
+ call .BCMinusDE
+ ld hl, 1600
+ add hl, bc
+ ld d, h
+ ld e, l
+
+.done
+ ; hl = de * 10
+ ld h, d
+ ld l, e
+rept 2
+ add hl, hl
+endr
+ add hl, de
+ add hl, hl
+
+ ; hl = hl / 254
+ ld de, -254
+ ld a, -1
+.div_254
+ inc a
+ add hl, de
+ jr c, .div_254
+
+ ; d, e = hl / 12, hl % 12
+ ld d, 0
+.mod_12
+ cp 12
+ jr c, .ok
+ sub 12
+ inc d
+ jr .mod_12
+.ok
+ ld e, a
+
+ ld hl, MagikarpLength
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ ret
+; fbc9a
+
+.BCLessThanDE: ; fbc9a
+; Intention: Return bc < de.
+; Reality: Return b < d.
+ ld a, b
+ cp d
+ ret c
+ ret nc ; whoops
+ ld a, c
+ cp e
+ ret
+; fbca1
+
+.BCMinusDE: ; fbca1
+; bc -= de
+ ld a, c
+ sub e
+ ld c, a
+ ld a, b
+ sbc d
+ ld b, a
+ ret
+; fbca8
+
+.Lengths: ; fbca8
+; ????, divisor
+ dwb 110, 1
+ dwb 310, 2
+ dwb 710, 4
+ dwb 2710, 20
+ dwb 7710, 50
+ dwb 17710, 100
+ dwb 32710, 150
+ dwb 47710, 150
+ dwb 57710, 100
+ dwb 62710, 50
+ dwb 64710, 20
+ dwb 65210, 5
+ dwb 65410, 2
+ dwb 65510, 1 ; not used
+; fbcd2
+
+
+
+Special_MagikarpHouseSign: ; fbcd2
+ ld a, [wBestMagikarpLengthFeet]
+ ld [Buffer1], a
+ ld a, [wBestMagikarpLengthInches]
+ ld [Buffer2], a
+ call PrintMagikarpLength
+ ld hl, .CurrentRecordtext
+ call PrintText
+ ret
+; fbce8
+
+.CurrentRecordtext: ; 0xfbce8
+ ; "CURRENT RECORD"
+ text_jump UnknownText_0x1c123a
+ db "@"
+; 0xfbced
--- /dev/null
+++ b/event/mom.asm
@@ -1,0 +1,750 @@
+Special_BankOfMom: ; 16218
+ ld a, [$ffaa]
+ push af
+ ld a, $1
+ ld [$ffaa], a
+ xor a
+ ld [wcf63], a
+.asm_16223
+ ld a, [wcf63]
+ bit 7, a
+ jr nz, .asm_1622f
+ call Function16233
+ jr .asm_16223
+
+.asm_1622f
+ pop af
+ ld [$ffaa], a
+ ret
+; 16233
+
+Function16233: ; 16233
+ ld a, [wcf63]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_16242
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 16242
+
+Jumptable_16242: ; 16242
+ dw Function16254
+ dw Function1626a
+ dw Function16290
+ dw Function162a8
+ dw Function162e0
+ dw Function16373
+ dw Function16406
+ dw Function1642d
+ dw Function16433
+; 16254
+
+Function16254: ; 16254
+ ld a, [wd854]
+ bit 7, a
+ jr nz, .asm_16264
+ set 7, a
+ ld [wd854], a
+ ld a, $1
+ jr .asm_16266
+
+.asm_16264
+ ld a, $2
+
+.asm_16266
+ ld [wcf63], a
+ ret
+; 1626a
+
+Function1626a: ; 1626a
+ ld hl, UnknownText_0x16649
+ call PrintText
+ call YesNoBox
+ jr c, .asm_1627f
+ ld hl, UnknownText_0x1664e
+ call PrintText
+ ld a, $81
+ jr .asm_16281
+
+.asm_1627f
+ ld a, $80
+
+.asm_16281
+ ld [wd854], a
+ ld hl, UnknownText_0x16653
+ call PrintText
+ ld a, $8
+ ld [wcf63], a
+ ret
+; 16290
+
+Function16290: ; 16290
+ ld hl, UnknownText_0x16658
+ call PrintText
+ call YesNoBox
+ jr c, .asm_1629f
+ ld a, $3
+ jr .asm_162a4
+
+.asm_1629f
+ call DSTChecks
+ ld a, $7
+
+.asm_162a4
+ ld [wcf63], a
+ ret
+; 162a8
+
+Function162a8: ; 162a8
+ ld hl, UnknownText_0x1665d
+ call PrintText
+ call Function1d6e
+ ld hl, MenuDataHeader_0x166b5
+ call CopyMenuDataHeader
+ call InterpretMenu2
+ call WriteBackup
+ jr c, .asm_162ce
+ ld a, [wcfa9]
+ cp $1
+ jr z, .asm_162d2
+ cp $2
+ jr z, .asm_162d6
+ cp $3
+ jr z, .asm_162da
+
+.asm_162ce
+ ld a, $7
+ jr .asm_162dc
+
+.asm_162d2
+ ld a, $5
+ jr .asm_162dc
+
+.asm_162d6
+ ld a, $4
+ jr .asm_162dc
+
+.asm_162da
+ ld a, $6
+
+.asm_162dc
+ ld [wcf63], a
+ ret
+; 162e0
+
+Function162e0: ; 162e0
+ ld hl, UnknownText_0x16662
+ call PrintText
+ xor a
+ ld hl, StringBuffer2
+rept 2
+ ld [hli], a
+endr
+ ld [hl], a
+ ld a, $5
+ ld [wcf64], a
+ call Function1d6e
+ call Function16517
+ call Function1656b
+ call Function16571
+ call WriteBackup
+ jr c, .asm_1636d
+ ld hl, StringBuffer2
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ jr z, .asm_1636d
+ ld de, Money
+ ld bc, StringBuffer2
+ callba CheckMoney
+ jr c, .asm_1635f
+ ld hl, StringBuffer2
+ ld de, StringBuffer2 + 3
+ ld bc, $0003
+ call CopyBytes
+ ld bc, wd851
+ ld de, StringBuffer2
+ callba GiveMoney
+ jr c, .asm_16366
+ ld bc, StringBuffer2 + 3
+ ld de, Money
+ callba TakeMoney
+ ld hl, StringBuffer2
+ ld de, wd851
+ ld bc, $0003
+ call CopyBytes
+ ld de, SFX_TRANSACTION
+ call PlaySFX
+ call WaitSFX
+ ld hl, UnknownText_0x1668a
+ call PrintText
+ ld a, $8
+ jr .asm_1636f
+
+.asm_1635f
+ ld hl, UnknownText_0x1667b
+ call PrintText
+ ret
+
+.asm_16366
+ ld hl, UnknownText_0x16680
+ call PrintText
+ ret
+
+.asm_1636d
+ ld a, $7
+
+.asm_1636f
+ ld [wcf63], a
+ ret
+; 16373
+
+Function16373: ; 16373
+ ld hl, UnknownText_0x16667
+ call PrintText
+ xor a
+ ld hl, StringBuffer2
+rept 2
+ ld [hli], a
+endr
+ ld [hl], a
+ ld a, $5
+ ld [wcf64], a
+ call Function1d6e
+ call Function16512
+ call Function1656b
+ call Function16571
+ call WriteBackup
+ jr c, .asm_16400
+ ld hl, StringBuffer2
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ jr z, .asm_16400
+ ld hl, StringBuffer2
+ ld de, StringBuffer2 + 3
+ ld bc, 3
+ call CopyBytes
+ ld de, wd851
+ ld bc, StringBuffer2
+ callba CheckMoney
+ jr c, .asm_163f2
+ ld bc, Money
+ ld de, StringBuffer2
+ callba GiveMoney
+ jr c, .asm_163f9
+ ld bc, StringBuffer2 + 3
+ ld de, wd851
+ callba TakeMoney
+ ld hl, StringBuffer2
+ ld de, Money
+ ld bc, 3
+ call CopyBytes
+ ld de, SFX_TRANSACTION
+ call PlaySFX
+ call WaitSFX
+ ld hl, UnknownText_0x1668f
+ call PrintText
+ ld a, $8
+ jr .asm_16402
+
+.asm_163f2
+ ld hl, UnknownText_0x16671
+ call PrintText
+ ret
+
+.asm_163f9
+ ld hl, UnknownText_0x16676
+ call PrintText
+ ret
+
+.asm_16400
+ ld a, 7
+
+.asm_16402
+ ld [wcf63], a
+ ret
+; 16406
+
+Function16406: ; 16406
+ ld hl, UnknownText_0x1666c
+ call PrintText
+ call YesNoBox
+ jr c, .asm_16422
+ ld a, $81
+ ld [wd854], a
+ ld hl, UnknownText_0x16685
+ call PrintText
+ ld a, $8
+ ld [wcf63], a
+ ret
+
+.asm_16422
+ ld a, $80
+ ld [wd854], a
+ ld a, $7
+ ld [wcf63], a
+ ret
+; 1642d
+
+Function1642d: ; 1642d
+ ld hl, UnknownText_0x16694
+ call PrintText
+
+Function16433: ; 16433
+ ld hl, wcf63
+ set 7, [hl]
+ ret
+; 16439
+
+DSTChecks: ; 16439
+; check the time; avoid changing DST if doing so would change the current day
+ ld a, [wDST]
+ bit 7, a
+ ld a, [hHours]
+ jr z, .asm_16447
+ and a ; within one hour of 00:00?
+ jr z, .LostBooklet
+ jr .loop
+
+.asm_16447
+ cp 23 ; within one hour of 23:00?
+ jr nz, .loop
+ ; fallthrough
+
+.LostBooklet
+ call Function164ea
+ bccoord 1, 14
+ ld hl, UnknownText_0x164f4
+ call PlaceWholeStringInBoxAtOnce
+ call YesNoBox
+ ret c
+ call Function164ea
+ bccoord 1, 14
+ ld hl, LostInstructionBookletText
+ call PlaceWholeStringInBoxAtOnce
+ ret
+
+.loop
+ call Function164ea
+ bccoord 1, 14
+ ld a, [wDST]
+ bit 7, a
+ jr z, .asm_16497
+ ld hl, UnknownText_0x16508
+ call PlaceWholeStringInBoxAtOnce
+ call YesNoBox
+ ret c
+ ld a, [wDST]
+ res 7, a
+ ld [wDST], a
+ call Function164d1
+ call Function164ea
+ bccoord 1, 14
+ ld hl, UnknownText_0x1650d
+ call PlaceWholeStringInBoxAtOnce
+ ret
+
+.asm_16497
+ ld hl, UnknownText_0x164fe
+ call PlaceWholeStringInBoxAtOnce
+ call YesNoBox
+ ret c
+ ld a, [wDST]
+ set 7, a
+ ld [wDST], a
+ call Function164b9
+ call Function164ea
+ bccoord 1, 14
+ ld hl, UnknownText_0x16503
+ call PlaceWholeStringInBoxAtOnce
+ ret
+; 164b9
+
+Function164b9: ; 164b9
+ ld a, [StartHour]
+ add 1
+ sub 24
+ jr nc, .asm_164c4
+ add 24
+.asm_164c4
+ ld [StartHour], a
+ ccf
+ ld a, [StartDay]
+ adc 0
+ ld [StartDay], a
+ ret
+; 164d1
+
+Function164d1: ; 164d1
+ ld a, [StartHour]
+ sub 1
+ jr nc, .asm_164da
+ add 24
+.asm_164da
+ ld [StartHour], a
+ ld a, [StartDay]
+ sbc 0
+ jr nc, .asm_164e6
+ add 7
+.asm_164e6
+ ld [StartDay], a
+ ret
+; 164ea
+
+Function164ea: ; 164ea
+ hlcoord 1, 14
+ ld bc, $0312
+ call ClearBox
+ ret
+; 164f4
+
+UnknownText_0x164f4: ; 0x164f4
+ ; Do you want to adjust your clock for Daylight Saving Time?
+ text_jump UnknownText_0x1c6095
+ db "@"
+; 0x164f9
+
+LostInstructionBookletText: ; 0x164f9
+ ; I lost the instruction booklet for the POKéGEAR.
+ ; Come back again in a while.
+ text_jump UnknownText_0x1c60d1
+ db "@"
+; 0x164fe
+
+UnknownText_0x164fe: ; 0x164fe
+ ; Do you want to switch to Daylight Saving Time?
+ text_jump UnknownText_0x1c6000
+ db "@"
+; 0x16503
+
+UnknownText_0x16503: ; 0x16503
+ ; I set the clock forward by one hour.
+ text_jump UnknownText_0x1c6030
+ db "@"
+; 0x16508
+
+UnknownText_0x16508: ; 0x16508
+ ; Is Daylight Saving Time over?
+ text_jump UnknownText_0x1c6056
+ db "@"
+; 0x1650d
+
+UnknownText_0x1650d: ; 0x1650d
+ ; I put the clock back one hour.
+ text_jump UnknownText_0x1c6075
+ db "@"
+; 0x16512
+
+Function16512: ; 16512
+ ld de, String_1669f
+ jr Function1651a
+
+Function16517: ; 16517
+ ld de, String_166a8
+
+Function1651a: ; 1651a
+ push de
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 0, 0
+ lb bc, 6, 18
+ call TextBox
+ hlcoord 1, 2
+ ld de, String_16699
+ call PlaceString
+ hlcoord 12, 2
+ ld de, wd851
+ lb bc, PRINTNUM_MONEY | 3, 6
+ call PrintNum
+ hlcoord 1, 4
+ ld de, String_166b0
+ call PlaceString
+ hlcoord 12, 4
+ ld de, Money
+ lb bc, PRINTNUM_MONEY | 3, 6
+ call PrintNum
+ hlcoord 1, 6
+ pop de
+ call PlaceString
+ hlcoord 12, 6
+ ld de, StringBuffer2
+ lb bc, PRINTNUM_MONEY | PRINTNUM_LEADINGZEROS | 3, 6
+ call PrintNum
+ call UpdateSprites
+ call Function3238
+ ret
+; 1656b
+
+Function1656b: ; 1656b
+ ld c, 10
+ call DelayFrames
+ ret
+; 16571
+
+Function16571: ; 16571
+.loop
+ call Functiona57
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .pressedB
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .pressedA
+ call .dpadaction
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 12, 6
+ ld bc, 7
+ ld a, " "
+ call ByteFill
+ hlcoord 12, 6
+ ld de, StringBuffer2
+ lb bc, PRINTNUM_MONEY | PRINTNUM_LEADINGZEROS | 3, 6
+ call PrintNum
+ ld a, [$ff9b]
+ and $10
+ jr nz, .skip
+ hlcoord 13, 6
+ ld a, [wMomBankDigitCursorPosition]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld [hl], " "
+
+.skip
+ call WaitBGMap
+ jr .loop
+
+.pressedB
+ scf
+ ret
+
+.pressedA
+ and a
+ ret
+; 165b9
+
+.dpadaction: ; 165b9
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .incrementdigit
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .decrementdigit
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .movecursorleft
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .movecursorright
+ and a
+ ret
+
+.movecursorleft
+ ld hl, wMomBankDigitCursorPosition
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+
+.movecursorright
+ ld hl, wMomBankDigitCursorPosition
+ ld a, [hl]
+ cp 5
+ ret nc
+ inc [hl]
+ ret
+
+.incrementdigit
+ ld hl, .DigitQuantities
+ call .getdigitquantity
+ ld c, l
+ ld b, h
+ ld de, StringBuffer2
+ callba GiveMoney
+ ret
+
+.decrementdigit
+ ld hl, .DigitQuantities
+ call .getdigitquantity
+ ld c, l
+ ld b, h
+ ld de, StringBuffer2
+ callba TakeMoney
+ ret
+; 16607
+
+.getdigitquantity: ; 16607
+ ld a, [wMomBankDigitCursorPosition]
+ push de
+ ld e, a
+ ld d, 0
+rept 3
+ add hl, de
+endr
+ pop de
+ ret
+; 16613
+
+.DigitQuantities: ; 16613
+ dt 100000
+ dt 10000
+ dt 1000
+ dt 100
+ dt 10
+ dt 1
+
+ dt 100000
+ dt 10000
+ dt 1000
+ dt 100
+ dt 10
+ dt 1
+
+ dt 900000
+ dt 90000
+ dt 9000
+ dt 900
+ dt 90
+ dt 9
+; 16649
+
+UnknownText_0x16649: ; 0x16649
+ ; Wow, that's a cute #MON. Where did you get it? … So, you're leaving on an adventure… OK! I'll help too. But what can I do for you? I know! I'll save money for you. On a long journey, money's important. Do you want me to save your money?
+ text_jump UnknownText_0x1bd77f
+ db "@"
+; 0x1664e
+
+UnknownText_0x1664e: ; 0x1664e
+ ; OK, I'll take care of your money.
+ text_jump UnknownText_0x1bd868
+ db "@"
+; 0x16653
+
+UnknownText_0x16653: ; 0x16653
+ ; Be careful. #MON are your friends. You need to work as a team. Now, go on!
+ text_jump UnknownText_0x1bd88e
+ db "@"
+; 0x16658
+
+UnknownText_0x16658: ; 0x16658
+ ; Hi! Welcome home! You're trying very hard, I see. I've kept your room tidy. Or is this about your money?
+ text_jump UnknownText_0x1bd8da
+ db "@"
+; 0x1665d
+
+UnknownText_0x1665d: ; 0x1665d
+ ; What do you want to do?
+ text_jump UnknownText_0x1bd942
+ db "@"
+; 0x16662
+
+UnknownText_0x16662: ; 0x16662
+ ; How much do you want to save?
+ text_jump UnknownText_0x1bd95b
+ db "@"
+; 0x16667
+
+UnknownText_0x16667: ; 0x16667
+ ; How much do you want to take?
+ text_jump UnknownText_0x1bd97a
+ db "@"
+; 0x1666c
+
+UnknownText_0x1666c: ; 0x1666c
+ ; Do you want to save some money?
+ text_jump UnknownText_0x1bd999
+ db "@"
+; 0x16671
+
+UnknownText_0x16671: ; 0x16671
+ ; You haven't saved that much.
+ text_jump UnknownText_0x1bd9ba
+ db "@"
+; 0x16676
+
+UnknownText_0x16676: ; 0x16676
+ ; You can't take that much.
+ text_jump UnknownText_0x1bd9d7
+ db "@"
+; 0x1667b
+
+UnknownText_0x1667b: ; 0x1667b
+ ; You don't have that much.
+ text_jump UnknownText_0x1bd9f1
+ db "@"
+; 0x16680
+
+UnknownText_0x16680: ; 0x16680
+ ; You can't save that much.
+ text_jump UnknownText_0x1bda0b
+ db "@"
+; 0x16685
+
+UnknownText_0x16685: ; 0x16685
+ ; OK, I'll save your money. Trust me! , stick with it!
+ text_jump UnknownText_0x1bda25
+ db "@"
+; 0x1668a
+
+UnknownText_0x1668a: ; 0x1668a
+ ; Your money's safe here! Get going!
+ text_jump UnknownText_0x1bda5b
+ db "@"
+; 0x1668f
+
+UnknownText_0x1668f: ; 0x1668f
+ ; , don't give up!
+ text_jump UnknownText_0x1bda7e
+ db "@"
+; 0x16694
+
+UnknownText_0x16694: ; 0x16694
+ ; Just do what you can.
+ text_jump UnknownText_0x1bda90
+ db "@"
+; 0x16699
+
+String_16699: ; 16699
+ db "SAVED@"
+; 1669f
+
+String_1669f: ; 1669f
+ db "WITHDRAW@"
+; 166a8
+
+String_166a8: ; 166a8
+ db "DEPOSIT@"
+; 166b0
+
+String_166b0: ; 166b0
+ db "HELD@"
+; 166b5
+
+MenuDataHeader_0x166b5: ; 0x166b5
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 10, 10 ; end coords
+ dw MenuData2_0x166bd
+ db 1 ; default option
+; 0x166bd
+
+MenuData2_0x166bd: ; 0x166bd
+ db $80 ; flags
+ db 4 ; items
+ db "GET@"
+ db "SAVE@"
+ db "CHANGE@"
+ db "CANCEL@"
+; 0x166d6
--- a/home.asm
+++ b/home.asm
@@ -75,12 +75,12 @@
ret
; 2ec6
-Function2ec6:: ; 2ec6
+xor_a:: ; 2ec6
xor a
ret
; 2ec8
-Function2ec8:: ; 2ec8
+xor_a_dec_a:: ; 2ec8
xor a
dec a
ret
@@ -1760,7 +1760,7 @@
Function3842:: ; 3842
ld [wd265], a
ld de, wd265
- ld b, 1 << 6 + 1
+ ld b, PRINTNUM_RIGHTALIGN | 1
jp PrintNum
; 384d
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -331,7 +331,7 @@
jr z, .asm_a63
ld a, [hJoyDown]
.asm_a63
- ld [$ffa9], a
+ ld [hJoyLast], a
ld a, [hJoyPressed]
and a
jr z, .asm_a70
@@ -344,7 +344,7 @@
and a
jr z, .asm_a7a
xor a
- ld [$ffa9], a
+ ld [hJoyLast], a
ret
.asm_a7a
--- a/home/text.asm
+++ b/home/text.asm
@@ -972,7 +972,7 @@
ld a, b
and $f0
swap a
- set 6, a
+ set PRINTNUM_RIGHTALIGN_F, a
ld b, a
call PrintNum
ld b, h
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -10,6 +10,9 @@
charmap "└", $7d
charmap "┘", $7e
charmap " ", $7f
+ charmap "<FOOT>", $6e
+ charmap "<INCH>", $6f
+
charmap "A", $80
charmap "B", $81
--- a/main.asm
+++ b/main.asm
@@ -249,7 +249,7 @@
call CloseSRAM
call LoadOrRegenerateLuckyIDNumber
- call InitializeRalphName
+ call InitializeMagikarpHouse
xor a
ld [MonType], a
@@ -335,8 +335,8 @@
db "BOX@"
; 5cd3
-InitializeRalphName: ; 5cd3
- ld hl, wdfe8
+InitializeMagikarpHouse: ; 5cd3
+ ld hl, wBestMagikarpLengthFeet
ld a, $3
ld [hli], a
ld a, $6
@@ -721,7 +721,7 @@
ld [hl], $6d
inc hl
ld de, GameTimeMinutes
- lb bc, $81, 2
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
jp PrintNum
; 5f99
@@ -18724,7 +18724,7 @@
ld [StringBuffer2 + 1], a
ld hl, StringBuffer1
ld de, StringBuffer2
- lb bc, $82, 6 ; 6 digits
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits
call PrintNum
pop hl
@@ -19463,8 +19463,8 @@
TakeMoney:: ; 15ffa
- ld a, $3
- call Function16035
+ ld a, 3
+ call CheckMoney2
jr nc, .asm_16009
xor a
ld [de], a
@@ -19527,9 +19527,9 @@
ret
; 16035
-Function16035: ; 16035
- ld a, $3
-Function16037: ; 16037
+CheckMoney2: ; 16035
+ ld a, 3
+CheckFunds2: ; 16037
push hl
push de
push bc
@@ -19536,17 +19536,17 @@
ld h, b
ld l, c
ld b, a
- ld c, $0
-.asm_1603f
+ ld c, 0
+.loop
dec a
- jr z, .asm_16046
+ jr z, .done
inc de
inc hl
- jr .asm_1603f
+ jr .loop
-.asm_16046
+.done
and a
-.asm_16047
+.loop2
ld a, [de]
sbc [hl]
ld [de], a
@@ -19553,7 +19553,7 @@
dec de
dec hl
dec b
- jr nz, .asm_16047
+ jr nz, .loop2
pop bc
pop de
pop hl
@@ -19593,14 +19593,14 @@
; 1606f
GiveCoins:: ; 1606f
- ld a, $2
+ ld a, 2
ld de, Coins
call Function16055
- ld a, $2
- ld bc, Unknown_1608d
+ ld a, 2
+ ld bc, .maxcoins
call CheckFunds
jr c, .asm_1608b
- ld hl, Unknown_1608d
+ ld hl, .maxcoins
ld a, [hli]
ld [de], a
inc de
@@ -19614,15 +19614,15 @@
ret
; 1608d
-Unknown_1608d: ; 1608d
+.maxcoins: ; 1608d
bigdw 9999
; 1608f
TakeCoins:: ; 1608f
- ld a, $2
+ ld a, 2
ld de, Coins
- call Function16037
+ call CheckFunds2
jr nc, .asm_1609f
xor a
ld [de], a
@@ -19645,758 +19645,8 @@
INCLUDE "items/marts.asm"
+INCLUDE "event/mom.asm"
-Special_BankOfMom: ; 16218
- ld a, [$ffaa]
- push af
- ld a, $1
- ld [$ffaa], a
- xor a
- ld [wcf63], a
-.asm_16223
- ld a, [wcf63]
- bit 7, a
- jr nz, .asm_1622f
- call Function16233
- jr .asm_16223
-
-.asm_1622f
- pop af
- ld [$ffaa], a
- ret
-; 16233
-
-Function16233: ; 16233
- ld a, [wcf63]
- ld e, a
- ld d, 0
- ld hl, Jumptable_16242
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 16242
-
-Jumptable_16242: ; 16242
- dw Function16254
- dw Function1626a
- dw Function16290
- dw Function162a8
- dw Function162e0
- dw Function16373
- dw Function16406
- dw Function1642d
- dw Function16433
-; 16254
-
-Function16254: ; 16254
- ld a, [wd854]
- bit 7, a
- jr nz, .asm_16264
- set 7, a
- ld [wd854], a
- ld a, $1
- jr .asm_16266
-
-.asm_16264
- ld a, $2
-
-.asm_16266
- ld [wcf63], a
- ret
-; 1626a
-
-Function1626a: ; 1626a
- ld hl, UnknownText_0x16649
- call PrintText
- call YesNoBox
- jr c, .asm_1627f
- ld hl, UnknownText_0x1664e
- call PrintText
- ld a, $81
- jr .asm_16281
-
-.asm_1627f
- ld a, $80
-
-.asm_16281
- ld [wd854], a
- ld hl, UnknownText_0x16653
- call PrintText
- ld a, $8
- ld [wcf63], a
- ret
-; 16290
-
-Function16290: ; 16290
- ld hl, UnknownText_0x16658
- call PrintText
- call YesNoBox
- jr c, .asm_1629f
- ld a, $3
- jr .asm_162a4
-
-.asm_1629f
- call DSTChecks
- ld a, $7
-
-.asm_162a4
- ld [wcf63], a
- ret
-; 162a8
-
-Function162a8: ; 162a8
- ld hl, UnknownText_0x1665d
- call PrintText
- call Function1d6e
- ld hl, MenuDataHeader_0x166b5
- call CopyMenuDataHeader
- call InterpretMenu2
- call WriteBackup
- jr c, .asm_162ce
- ld a, [wcfa9]
- cp $1
- jr z, .asm_162d2
- cp $2
- jr z, .asm_162d6
- cp $3
- jr z, .asm_162da
-
-.asm_162ce
- ld a, $7
- jr .asm_162dc
-
-.asm_162d2
- ld a, $5
- jr .asm_162dc
-
-.asm_162d6
- ld a, $4
- jr .asm_162dc
-
-.asm_162da
- ld a, $6
-
-.asm_162dc
- ld [wcf63], a
- ret
-; 162e0
-
-Function162e0: ; 162e0
- ld hl, UnknownText_0x16662
- call PrintText
- xor a
- ld hl, StringBuffer2
-rept 2
- ld [hli], a
-endr
- ld [hl], a
- ld a, $5
- ld [wcf64], a
- call Function1d6e
- call Function16517
- call Function1656b
- call Function16571
- call WriteBackup
- jr c, .asm_1636d
- ld hl, StringBuffer2
- ld a, [hli]
- or [hl]
- inc hl
- or [hl]
- jr z, .asm_1636d
- ld de, Money
- ld bc, StringBuffer2
- callba CheckMoney
- jr c, .asm_1635f
- ld hl, StringBuffer2
- ld de, StringBuffer2 + 3
- ld bc, $0003
- call CopyBytes
- ld bc, wd851
- ld de, StringBuffer2
- callba GiveMoney
- jr c, .asm_16366
- ld bc, StringBuffer2 + 3
- ld de, Money
- callba TakeMoney
- ld hl, StringBuffer2
- ld de, wd851
- ld bc, $0003
- call CopyBytes
- ld de, SFX_TRANSACTION
- call PlaySFX
- call WaitSFX
- ld hl, UnknownText_0x1668a
- call PrintText
- ld a, $8
- jr .asm_1636f
-
-.asm_1635f
- ld hl, UnknownText_0x1667b
- call PrintText
- ret
-
-.asm_16366
- ld hl, UnknownText_0x16680
- call PrintText
- ret
-
-.asm_1636d
- ld a, $7
-
-.asm_1636f
- ld [wcf63], a
- ret
-; 16373
-
-Function16373: ; 16373
- ld hl, UnknownText_0x16667
- call PrintText
- xor a
- ld hl, StringBuffer2
-rept 2
- ld [hli], a
-endr
- ld [hl], a
- ld a, $5
- ld [wcf64], a
- call Function1d6e
- call Function16512
- call Function1656b
- call Function16571
- call WriteBackup
- jr c, .asm_16400
- ld hl, StringBuffer2
- ld a, [hli]
- or [hl]
- inc hl
- or [hl]
- jr z, .asm_16400
- ld hl, StringBuffer2
- ld de, StringBuffer2 + 3
- ld bc, $0003
- call CopyBytes
- ld de, wd851
- ld bc, StringBuffer2
- callba CheckMoney
- jr c, .asm_163f2
- ld bc, Money
- ld de, StringBuffer2
- callba GiveMoney
- jr c, .asm_163f9
- ld bc, StringBuffer2 + 3
- ld de, wd851
- callba TakeMoney
- ld hl, StringBuffer2
- ld de, Money
- ld bc, $0003
- call CopyBytes
- ld de, SFX_TRANSACTION
- call PlaySFX
- call WaitSFX
- ld hl, UnknownText_0x1668f
- call PrintText
- ld a, $8
- jr .asm_16402
-
-.asm_163f2
- ld hl, UnknownText_0x16671
- call PrintText
- ret
-
-.asm_163f9
- ld hl, UnknownText_0x16676
- call PrintText
- ret
-
-.asm_16400
- ld a, $7
-
-.asm_16402
- ld [wcf63], a
- ret
-; 16406
-
-Function16406: ; 16406
- ld hl, UnknownText_0x1666c
- call PrintText
- call YesNoBox
- jr c, .asm_16422
- ld a, $81
- ld [wd854], a
- ld hl, UnknownText_0x16685
- call PrintText
- ld a, $8
- ld [wcf63], a
- ret
-
-.asm_16422
- ld a, $80
- ld [wd854], a
- ld a, $7
- ld [wcf63], a
- ret
-; 1642d
-
-Function1642d: ; 1642d
- ld hl, UnknownText_0x16694
- call PrintText
-
-Function16433: ; 16433
- ld hl, wcf63
- set 7, [hl]
- ret
-; 16439
-
-DSTChecks: ; 16439
-; check the time; avoid changing DST if doing so would change the current day
- ld a, [wDST]
- bit 7, a
- ld a, [hHours]
- jr z, .asm_16447
- and a ; within one hour of 00:00?
- jr z, .LostBooklet
- jr .loop
-
-.asm_16447
- cp 23 ; within one hour of 23:00?
- jr nz, .loop
- ; fallthrough
-
-.LostBooklet
- call Function164ea
- bccoord 1, 14
- ld hl, UnknownText_0x164f4
- call PlaceWholeStringInBoxAtOnce
- call YesNoBox
- ret c
- call Function164ea
- bccoord 1, 14
- ld hl, LostInstructionBookletText
- call PlaceWholeStringInBoxAtOnce
- ret
-
-.loop
- call Function164ea
- bccoord 1, 14
- ld a, [wDST]
- bit 7, a
- jr z, .asm_16497
- ld hl, UnknownText_0x16508
- call PlaceWholeStringInBoxAtOnce
- call YesNoBox
- ret c
- ld a, [wDST]
- res 7, a
- ld [wDST], a
- call Function164d1
- call Function164ea
- bccoord 1, 14
- ld hl, UnknownText_0x1650d
- call PlaceWholeStringInBoxAtOnce
- ret
-
-.asm_16497
- ld hl, UnknownText_0x164fe
- call PlaceWholeStringInBoxAtOnce
- call YesNoBox
- ret c
- ld a, [wDST]
- set 7, a
- ld [wDST], a
- call Function164b9
- call Function164ea
- bccoord 1, 14
- ld hl, UnknownText_0x16503
- call PlaceWholeStringInBoxAtOnce
- ret
-; 164b9
-
-Function164b9: ; 164b9
- ld a, [StartHour]
- add 1
- sub 24
- jr nc, .asm_164c4
- add 24
-.asm_164c4
- ld [StartHour], a
- ccf
- ld a, [StartDay]
- adc 0
- ld [StartDay], a
- ret
-; 164d1
-
-Function164d1: ; 164d1
- ld a, [StartHour]
- sub 1
- jr nc, .asm_164da
- add 24
-.asm_164da
- ld [StartHour], a
- ld a, [StartDay]
- sbc 0
- jr nc, .asm_164e6
- add 7
-.asm_164e6
- ld [StartDay], a
- ret
-; 164ea
-
-Function164ea: ; 164ea
- hlcoord 1, 14
- ld bc, $0312
- call ClearBox
- ret
-; 164f4
-
-UnknownText_0x164f4: ; 0x164f4
- ; Do you want to adjust your clock for Daylight Saving Time?
- text_jump UnknownText_0x1c6095
- db "@"
-; 0x164f9
-
-LostInstructionBookletText: ; 0x164f9
- ; I lost the instruction booklet for the POKéGEAR.
- ; Come back again in a while.
- text_jump UnknownText_0x1c60d1
- db "@"
-; 0x164fe
-
-UnknownText_0x164fe: ; 0x164fe
- ; Do you want to switch to Daylight Saving Time?
- text_jump UnknownText_0x1c6000
- db "@"
-; 0x16503
-
-UnknownText_0x16503: ; 0x16503
- ; I set the clock forward by one hour.
- text_jump UnknownText_0x1c6030
- db "@"
-; 0x16508
-
-UnknownText_0x16508: ; 0x16508
- ; Is Daylight Saving Time over?
- text_jump UnknownText_0x1c6056
- db "@"
-; 0x1650d
-
-UnknownText_0x1650d: ; 0x1650d
- ; I put the clock back one hour.
- text_jump UnknownText_0x1c6075
- db "@"
-; 0x16512
-
-Function16512: ; 16512
- ld de, String_1669f
- jr Function1651a
-
-Function16517: ; 16517
- ld de, String_166a8
-
-Function1651a: ; 1651a
- push de
- xor a
- ld [hBGMapMode], a
- hlcoord 0, 0
- lb bc, 6, 18
- call TextBox
- hlcoord 1, 2
- ld de, String_16699
- call PlaceString
- hlcoord 12, 2
- ld de, wd851
- lb bc, PRINTNUM_MONEY | 3, 6
- call PrintNum
- hlcoord 1, 4
- ld de, String_166b0
- call PlaceString
- hlcoord 12, 4
- ld de, Money
- lb bc, PRINTNUM_MONEY | 3, 6
- call PrintNum
- hlcoord 1, 6
- pop de
- call PlaceString
- hlcoord 12, 6
- ld de, StringBuffer2
- lb bc, PRINTNUM_MONEY | PRINTNUM_LEADINGZEROS | 3, 6
- call PrintNum
- call UpdateSprites
- call Function3238
- ret
-; 1656b
-
-Function1656b: ; 1656b
- ld c, 10
- call DelayFrames
- ret
-; 16571
-
-Function16571: ; 16571
-.asm_16571
- call Functiona57
- ld hl, hJoyPressed
- ld a, [hl]
- and $2
- jr nz, .asm_165b5
- ld a, [hl]
- and $1
- jr nz, .asm_165b7
- call Function165b9
- xor a
- ld [hBGMapMode], a
- hlcoord 12, 6
- ld bc, $0007
- ld a, $7f
- call ByteFill
- hlcoord 12, 6
- ld de, StringBuffer2
- lb bc, PRINTNUM_MONEY | PRINTNUM_LEADINGZEROS | 3, 6
- call PrintNum
- ld a, [$ff9b]
- and $10
- jr nz, .asm_165b0
- hlcoord 13, 6
- ld a, [wcf64]
- ld c, a
- ld b, $0
- add hl, bc
- ld [hl], $7f
-
-.asm_165b0
- call WaitBGMap
- jr .asm_16571
-
-.asm_165b5
- scf
- ret
-
-.asm_165b7
- and a
- ret
-; 165b9
-
-Function165b9: ; 165b9
- ld hl, $ffa9
- ld a, [hl]
- and $40
- jr nz, .asm_165e3
- ld a, [hl]
- and $80
- jr nz, .asm_165f5
- ld a, [hl]
- and $20
- jr nz, .asm_165d2
- ld a, [hl]
- and $10
- jr nz, .asm_165da
- and a
- ret
-
-.asm_165d2
- ld hl, wcf64
- ld a, [hl]
- and a
- ret z
- dec [hl]
- ret
-
-.asm_165da
- ld hl, wcf64
- ld a, [hl]
- cp $5
- ret nc
- inc [hl]
- ret
-
-.asm_165e3
- ld hl, Unknown_16613
- call Function16607
- ld c, l
- ld b, h
- ld de, StringBuffer2
- callba GiveMoney
- ret
-
-.asm_165f5
- ld hl, Unknown_16613
- call Function16607
- ld c, l
- ld b, h
- ld de, StringBuffer2
- callba TakeMoney
- ret
-; 16607
-
-Function16607: ; 16607
- ld a, [wcf64]
- push de
- ld e, a
- ld d, 0
-rept 3
- add hl, de
-endr
- pop de
- ret
-; 16613
-
-Unknown_16613: ; 16613
- dt 100000
- dt 10000
- dt 1000
- dt 100
- dt 10
- dt 1
-
- dt 100000
- dt 10000
- dt 1000
- dt 100
- dt 10
- dt 1
-
- dt 900000
- dt 90000
- dt 9000
- dt 900
- dt 90
- dt 9
-; 16649
-
-UnknownText_0x16649: ; 0x16649
- ; Wow, that's a cute #MON. Where did you get it? … So, you're leaving on an adventure… OK! I'll help too. But what can I do for you? I know! I'll save money for you. On a long journey, money's important. Do you want me to save your money?
- text_jump UnknownText_0x1bd77f
- db "@"
-; 0x1664e
-
-UnknownText_0x1664e: ; 0x1664e
- ; OK, I'll take care of your money.
- text_jump UnknownText_0x1bd868
- db "@"
-; 0x16653
-
-UnknownText_0x16653: ; 0x16653
- ; Be careful. #MON are your friends. You need to work as a team. Now, go on!
- text_jump UnknownText_0x1bd88e
- db "@"
-; 0x16658
-
-UnknownText_0x16658: ; 0x16658
- ; Hi! Welcome home! You're trying very hard, I see. I've kept your room tidy. Or is this about your money?
- text_jump UnknownText_0x1bd8da
- db "@"
-; 0x1665d
-
-UnknownText_0x1665d: ; 0x1665d
- ; What do you want to do?
- text_jump UnknownText_0x1bd942
- db "@"
-; 0x16662
-
-UnknownText_0x16662: ; 0x16662
- ; How much do you want to save?
- text_jump UnknownText_0x1bd95b
- db "@"
-; 0x16667
-
-UnknownText_0x16667: ; 0x16667
- ; How much do you want to take?
- text_jump UnknownText_0x1bd97a
- db "@"
-; 0x1666c
-
-UnknownText_0x1666c: ; 0x1666c
- ; Do you want to save some money?
- text_jump UnknownText_0x1bd999
- db "@"
-; 0x16671
-
-UnknownText_0x16671: ; 0x16671
- ; You haven't saved that much.
- text_jump UnknownText_0x1bd9ba
- db "@"
-; 0x16676
-
-UnknownText_0x16676: ; 0x16676
- ; You can't take that much.
- text_jump UnknownText_0x1bd9d7
- db "@"
-; 0x1667b
-
-UnknownText_0x1667b: ; 0x1667b
- ; You don't have that much.
- text_jump UnknownText_0x1bd9f1
- db "@"
-; 0x16680
-
-UnknownText_0x16680: ; 0x16680
- ; You can't save that much.
- text_jump UnknownText_0x1bda0b
- db "@"
-; 0x16685
-
-UnknownText_0x16685: ; 0x16685
- ; OK, I'll save your money. Trust me! , stick with it!
- text_jump UnknownText_0x1bda25
- db "@"
-; 0x1668a
-
-UnknownText_0x1668a: ; 0x1668a
- ; Your money's safe here! Get going!
- text_jump UnknownText_0x1bda5b
- db "@"
-; 0x1668f
-
-UnknownText_0x1668f: ; 0x1668f
- ; , don't give up!
- text_jump UnknownText_0x1bda7e
- db "@"
-; 0x16694
-
-UnknownText_0x16694: ; 0x16694
- ; Just do what you can.
- text_jump UnknownText_0x1bda90
- db "@"
-; 0x16699
-
-String_16699: ; 16699
- db "SAVED@"
-; 1669f
-
-String_1669f: ; 1669f
- db "WITHDRAW@"
-; 166a8
-
-String_166a8: ; 166a8
- db "DEPOSIT@"
-; 166b0
-
-String_166b0: ; 166b0
- db "HELD@"
-; 166b5
-
-MenuDataHeader_0x166b5: ; 0x166b5
- db $40 ; flags
- db 00, 00 ; start coords
- db 10, 10 ; end coords
- dw MenuData2_0x166bd
- db 1 ; default option
-; 0x166bd
-
-MenuData2_0x166bd: ; 0x166bd
- db $80 ; flags
- db 4 ; items
- db "GET@"
- db "SAVE@"
- db "CHANGE@"
- db "CANCEL@"
-; 0x166d6
-
Special_DayCareMan: ; 166d6
ld hl, wDaycareMan
bit 0, [hl]
@@ -20497,11 +19747,11 @@
Function16798: ; 16798
ld a, [PartyCount]
- cp $2
+ cp 2
jr c, .asm_167e5
- ld a, $4
+ ld a, 4
call Function1689b
- ld b, $6
+ ld b, 6
callba Function5001d
jr c, .asm_167dd
ld a, [CurPartySpecies]
@@ -22274,10 +21524,10 @@
Function173b3: ; 173b3 (5:73b3)
callba Function8cf53
ld hl, Unknown_173ef
-.asm_173bc
+.loop
ld a, [hli]
cp $ff
- jr z, .asm_173e5
+ jr z, .done
ld e, a
ld a, [hli]
ld d, a
@@ -22302,8 +21552,8 @@
add hl, bc
ld [hl], d
pop hl
- jr .asm_173bc
-.asm_173e5
+ jr .loop
+.done
ld de, SFX_EGG_HATCH
call PlaySFX
call Function1727f
@@ -23811,13 +23061,13 @@
Function24673: ; 24673
ld a, [wcf91]
bit 7, a
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, [wcfa9]
dec a
call Function248d5
ld a, [MenuSelection]
cp $ff
- jp z, Function2ec8
+ jp z, xor_a_dec_a
call Function246fc
dec a
ld [wcf77], a
@@ -23829,7 +23079,7 @@
Function24695: ; 24695
ld a, [wcf91]
bit 6, a
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, $8
scf
ret
@@ -23838,10 +23088,10 @@
Function246a1: ; 246a1
ld hl, wcfa6
bit 7, [hl]
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, [wcf91]
bit 3, a
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, $20
scf
ret
@@ -23850,10 +23100,10 @@
Function246b5: ; 246b5
ld hl, wcfa6
bit 7, [hl]
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, [wcf91]
bit 2, a
- jp z, Function2ec8
+ jp z, xor_a_dec_a
ld a, $10
scf
ret
@@ -23862,22 +23112,22 @@
Function246c9: ; 246c9
ld hl, wcfa6
bit 7, [hl]
- jp z, Function2ec6
+ jp z, xor_a
ld hl, wd0e4
ld a, [hl]
and a
jr z, .asm_246dc
dec [hl]
- jp Function2ec6
+ jp xor_a
.asm_246dc
- jp Function2ec8
+ jp xor_a_dec_a
; 246df
Function246df: ; 246df
ld hl, wcfa6
bit 7, [hl]
- jp z, Function2ec6
+ jp z, xor_a
ld hl, wd0e4
ld a, [wcf92]
add [hl]
@@ -23886,10 +23136,10 @@
cp b
jr c, .asm_246f9
inc [hl]
- jp Function2ec6
+ jp xor_a
.asm_246f9
- jp Function2ec8
+ jp xor_a_dec_a
; 246fc
Function246fc: ; 246fc
@@ -24577,8 +23827,8 @@
Function24b25: ; 24b25
hlcoord 11, 0
- ld b, $1
- ld c, $7
+ ld b, 1
+ ld c, 7
call TextBox
hlcoord 12, 0
ld de, CoinString
@@ -25737,7 +24987,7 @@
ld de, Tilemap_252fc
call Function253a8
hlcoord 14, 1
- ld bc, $507
+ lb bc, 5, 7
xor a
ld [$ffad], a
predef FillBox
@@ -25768,7 +25018,7 @@
call CountSetBits
ld de, wd265
hlcoord 15, 10
- ld bc, $103
+ lb bc, 1, 3
call PrintNum
call Function25415
hlcoord 2, 8
@@ -25927,7 +25177,7 @@
Function25415: ; 25415 (9:5415)
hlcoord 11, 12
ld de, GameTimeHours
- ld bc, $204
+ lb bc, 2, 4
call PrintNum
inc hl
ld de, GameTimeMinutes
@@ -34431,7 +33681,7 @@
ld a, b
ld [wd265], a
ld de, wd265
- ld bc, $102
+ lb bc, 1, 2
call PrintNum
.asm_2ca6f
pop bc
@@ -38300,12 +37550,12 @@
Function487ff: ; 487ff (12:47ff)
push hl
- ld a, $7f
+ ld a, " "
ld [hli], a
ld [hl], a
pop hl
- ld b, $81
- ld c, $3
+ ld b, PRINTNUM_LEADINGZEROS | 1
+ ld c, 3
call PrintNum
ret
; 4880d (12:480d)
@@ -45294,12 +44544,12 @@
hlcoord 17, 14
call Function4e0d3
hlcoord 13, 10
- ld bc, $307
+ lb bc, 3, 7
ld de, TempMonExp
call PrintNum
call Function4e0e7
hlcoord 13, 13
- ld bc, $307
+ lb bc, 3, 7
ld de, Buffer1 ; wd1ea (aliases: MagikarpLength)
call PrintNum
ld de, String_4e136
@@ -48403,7 +47653,7 @@
ld bc, SCREEN_WIDTH
add hl, bc
ld de, TempMonAttack
- ld bc, $0203
+ lb bc, 2, 3
call .PrintStat
ld de, TempMonDefense
call .PrintStat
@@ -86312,385 +85562,12 @@
UnownWord26: unownword "ZOOM"
; fbb32
-Special_CheckMagikarpLength: ; fbb32
- callba SelectMonFromParty
- jr c, .declined
- ld a, [CurPartySpecies]
- cp MAGIKARP
- jr nz, .not_magikarp
- ld a, [CurPartyMon]
- ld hl, PartyMon1Species
- ld bc, PartyMon2 - PartyMon1
- call AddNTimes
- push hl
- ld bc, MON_DVS
- add hl, bc
- ld d, h
- ld e, l
- pop hl
- ld bc, MON_ID
- add hl, bc
- ld b, h
- ld c, l
- call CalcMagikarpLength
- call Functionfbbdb
- callba Function105f33
- ld hl, UnknownText_0xfbba9
- call PrintText
- ld hl, Buffer1
- ld de, wdfe8
- ld c, $2
- call StringCmp
- jr nc, .not_long_enough
- ld hl, Buffer1
- ld de, wdfe8
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- inc de
- ld a, [CurPartyMon]
- ld hl, PartyMonOT
- call SkipNames
- call CopyBytes
- ld a, $3
- ld [ScriptVar], a
- ret
+INCLUDE "event/magikarp.asm"
-.not_long_enough
- ld a, $2
- ld [ScriptVar], a
- ret
-
-.declined
- ld a, $1
- ld [ScriptVar], a
- ret
-
-.not_magikarp
- xor a
- ld [ScriptVar], a
- ret
-; fbba9
-
-UnknownText_0xfbba9: ; 0xfbba9
- ; Let me measure that MAGIKARP. …Hm, it measures @ .
- text_jump UnknownText_0x1c1203
- db "@"
-; 0xfbbae
-
-Functionfbbae: ; fbbae
- ld hl, $96e0
- ld de, GFX_fbbbb
- lb bc, BANK(GFX_fbbbb), $02
- call Request2bpp
- ret
-; fbbbb
-
-GFX_fbbbb: ; fbbb
-INCBIN "gfx/unknown/0fbbbb.2bpp"
-; fbbdb
-
-Functionfbbdb: ; fbbdb
- call Functionfbbae
- ld hl, StringBuffer1
- ld de, Buffer1
- lb bc, PRINTNUM_RIGHTALIGN | 1, 2
- call PrintNum
- ld [hl], $6e
- inc hl
- ld de, Buffer2
- lb bc, PRINTNUM_RIGHTALIGN | 1, 2
- call PrintNum
- ld [hl], $6f
- inc hl
- ld [hl], "@"
- ret
-; fbbfc
-
-INCLUDE "battle/magikarp_length.asm"
-
-Special_MagikarpHouseSign: ; fbcd2
- ld a, [wdfe8]
- ld [Buffer1], a
- ld a, [wdfe9]
- ld [Buffer2], a
- call Functionfbbdb
- ld hl, UnknownText_0xfbce8
- call PrintText
- ret
-; fbce8
-
-UnknownText_0xfbce8: ; 0xfbce8
- ; "CURRENT RECORD"
- text_jump UnknownText_0x1c123a
- db "@"
-; 0xfbced
-
INCLUDE "battle/hidden_power.asm"
-Functionfbd54: ; fbd54
- xor a
- ld [hBGMapMode], a ; $ff00+$d4
- ld a, [hBattleTurn] ; $ff00+$e4
- and a
- jr z, .asm_fbd61
- call Functionfbd96
- jr .asm_fbd64
-.asm_fbd61
- call Functionfbd9d
-.asm_fbd64
- call ClearBox
- jr Functionfbd91
+INCLUDE "battle/misc.asm"
-Functionfbd69: ; fbd69 (3e:7d69)
- callba BattleCommanda6
- jr Functionfbd77
-
-Functionfbd71: ; fbd71 (3e:7d71)
- callba BattleCommanda7
-
-Functionfbd77: ; fbd77 (3e:7d77)
- xor a
- ld [hBGMapMode], a ; $ff00+$d4
- ld a, [hBattleTurn] ; $ff00+$e4
- and a
- jr z, .asm_fbd85
- call Functionfbd96
- xor a
- jr .asm_fbd8a
-.asm_fbd85
- call Functionfbd9d
- ld a, $31
-.asm_fbd8a
- ld [$ffad], a
- predef FillBox
-Functionfbd91: ; fbd91 (3e:7d91)
- ld a, $1
- ld [hBGMapMode], a ; $ff00+$d4
- ret
-
-Functionfbd96: ; fbd96 (3e:7d96)
- hlcoord 12, 0
- ld bc, $707
- ret
-
-Functionfbd9d: ; fbd9d (3e:7d9d)
- hlcoord 2, 6
- ld bc, $606
- ret
-
-
-DoWeatherModifiers: ; fbda4
-
- ld de, .WeatherTypeModifiers
- ld a, [Weather]
- ld b, a
- ld a, [wd265] ; move type
- ld c, a
-
-.CheckWeatherType
- ld a, [de]
- inc de
- cp $ff
- jr z, .asm_fbdc0
-
- cp b
- jr nz, .NextWeatherType
-
- ld a, [de]
- cp c
- jr z, .ApplyModifier
-
-.NextWeatherType
-rept 2
- inc de
-endr
- jr .CheckWeatherType
-
-
-.asm_fbdc0
- ld de, .WeatherMoveModifiers
-
- ld a, BATTLE_VARS_MOVE_EFFECT
- call GetBattleVar
- ld c, a
-
-.CheckWeatherMove
- ld a, [de]
- inc de
- cp $ff
- jr z, .done
-
- cp b
- jr nz, .NextWeatherMove
-
- ld a, [de]
- cp c
- jr z, .ApplyModifier
-
-.NextWeatherMove
-rept 2
- inc de
-endr
- jr .CheckWeatherMove
-
-.ApplyModifier
- xor a
- ld [hMultiplicand + 0], a
- ld hl, CurDamage
- ld a, [hli]
- ld [hMultiplicand + 1], a
- ld a, [hl]
- ld [hMultiplicand + 2], a
-
- inc de
- ld a, [de]
- ld [hMultiplier], a
-
- call Multiply
-
- ld a, 10
- ld [hDivisor], a
- ld b, $4
- call Divide
-
- ld a, [hQuotient + 0]
- and a
- ld bc, $ffff
- jr nz, .Update
-
- ld a, [hQuotient + 1]
- ld b, a
- ld a, [hQuotient + 2]
- ld c, a
- or b
- jr nz, .Update
-
- ld bc, 1
-
-.Update
- ld a, b
- ld [CurDamage], a
- ld a, c
- ld [CurDamage + 1], a
-
-.done
- ret
-
-.WeatherTypeModifiers
- db WEATHER_RAIN, WATER, 15
- db WEATHER_RAIN, FIRE, 05
- db WEATHER_SUN, FIRE, 15
- db WEATHER_SUN, WATER, 05
- db $ff
-
-.WeatherMoveModifiers
- db WEATHER_RAIN, EFFECT_SOLARBEAM, 05
- db $ff
-; fbe24
-
-
-DoBadgeTypeBoosts: ; fbe24
- ld a, [InLinkBattle]
- and a
- ret nz
-
- ld a, [InBattleTowerBattle]
- and a
- ret nz
-
- ld a, [hBattleTurn]
- and a
- ret nz
-
- push de
- push bc
-
- ld hl, .BadgeTypes
-
- ld a, [KantoBadges]
- ld b, a
- ld a, [JohtoBadges]
- ld c, a
-
-.CheckBadge
- ld a, [hl]
- cp $ff
- jr z, .done
-
- srl b
- rr c
- jr nc, .NextBadge
-
- ld a, [wd265] ; move type
- cp [hl]
- jr z, .ApplyBoost
-
-.NextBadge
- inc hl
- jr .CheckBadge
-
-.ApplyBoost
- ld a, [CurDamage]
- ld h, a
- ld d, a
- ld a, [CurDamage + 1]
- ld l, a
- ld e, a
-
- srl d
- rr e
- srl d
- rr e
- srl d
- rr e
-
- ld a, e
- or d
- jr nz, .asm_fbe6f
- ld e, 1
-
-.asm_fbe6f
- add hl, de
- jr nc, .Update
-
- ld hl, $ffff
-
-.Update
- ld a, h
- ld [CurDamage], a
- ld a, l
- ld [CurDamage + 1], a
-
-.done
- pop bc
- pop de
- ret
-
-.BadgeTypes
- db FLYING ; zephyrbadge
- db BUG ; hivebadge
- db NORMAL ; plainbadge
- db GHOST ; fogbadge
- db STEEL ; mineralbadge
- db FIGHTING ; stormbadge
- db ICE ; glacierbadge
- db DRAGON ; risingbadge
-
- db ROCK ; boulderbadge
- db WATER ; cascadebadge
- db ELECTRIC ; thunderbadge
- db GRASS ; rainbowbadge
- db POISON ; soulbadge
- db PSYCHIC ; marshbadge
- db FIRE ; volcanobadge
- db GROUND ; earthbadge
- db $ff
-; fbe91
-
-
SECTION "bank3F", ROMX, BANK[$3F]
INCLUDE "tilesets/animations.asm"
@@ -86732,7 +85609,7 @@
jr c, .done
; Select givemon from party
- ld b, $6
+ ld b, 6
callba Function5001d
ld a, TRADE_CANCEL
jr c, .done
@@ -90697,7 +89574,7 @@
ret
; 105f33
-Function105f33: mobile ; 105f33
+MagikarpLength_Mobile: mobile ; 105f33
ld a, $5
call GetSRAMBank
ld de, Buffer1
@@ -92253,7 +91130,7 @@
Function1dd6bb: ; 1dd6bb (77:56bb)
ld a, b
- cp $c
+ cp 12
push af
jr c, .asm_1dd6c7
jr z, .asm_1dd6cc
@@ -92272,7 +91149,7 @@
pop de
pop hl
ld [hl], $7f
- ld bc, $102
+ lb bc, 1, 2
call PrintNum
ld [hl], $9c
inc hl
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -1843,7 +1843,7 @@
callba Function3e786
ret z
call Function100dd8
- jp c, Function2ec8
+ jp c, xor_a_dec_a
call Function100e72
call Function100bc2
push af
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -4359,9 +4359,9 @@
ld de, $b2f4
.asm_17f3ab
- ld a, $82
+ ld a, PRINTNUM_LEADINGZEROS | 2
ld b, a
- ld a, $3
+ ld a, 3
ld c, a
call PrintNum
call CloseSRAM
--- a/text/common_3.asm
+++ b/text/common_3.asm
@@ -1222,7 +1222,7 @@
text_from_ram StringBuffer1
text " caught by"
line "@"
- text_from_ram wdfe9 + 1
+ text_from_ram wBestMagikarpLengthInches + 1
text_waitbutton
db "@"
; 1c1260
--- a/wram.asm
+++ b/wram.asm
@@ -1191,6 +1191,7 @@
wcf61:: ds 2
wcf63:: ds 1
wNrOfBeatenBattleTowerTrainers::
+wMomBankDigitCursorPosition::
wcf64:: ds 1
IF !DEF(CRYSTAL11)
wPokedexStatus::
@@ -2579,9 +2580,9 @@
wdfe5:: ds 1
wdfe6:: ds 1
wdfe7:: ds 1
-wdfe8:: ds 1
-wdfe9:: ds 1
- ds 1
+wBestMagikarpLengthFeet:: ds 1
+wBestMagikarpLengthInches:: ds 1
+wMagikarpRecordHoldersName:: ds 1
ds 1
wdfec:: ds 1
ds 3