summaryrefslogtreecommitdiff
path: root/event
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2015-10-11 12:15:03 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2015-10-11 12:26:39 -0400
commit327faac497b4195dbf1d3c8dbfeb2adcda9deb27 (patch)
treec081ba04287f441383f32d18ee0bd2ecafbfc184 /event
parentd42330ed8b591db79c43ef680edc5965d6a7b14b (diff)
Magikarp functions moved to event/magikarp.asm
Diffstat (limited to 'event')
-rw-r--r--event/magikarp.asm345
-rw-r--r--event/mom.asm750
2 files changed, 1095 insertions, 0 deletions
diff --git a/event/magikarp.asm b/event/magikarp.asm
new file mode 100644
index 000000000..4f759d655
--- /dev/null
+++ b/event/magikarp.asm
@@ -0,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
diff --git a/event/mom.asm b/event/mom.asm
new file mode 100644
index 000000000..f6bccdc28
--- /dev/null
+++ b/event/mom.asm
@@ -0,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