diff options
Diffstat (limited to 'mobile/mobile_41.asm')
-rwxr-xr-x | mobile/mobile_41.asm | 1113 |
1 files changed, 1113 insertions, 0 deletions
diff --git a/mobile/mobile_41.asm b/mobile/mobile_41.asm new file mode 100755 index 000000000..7e1d20db6 --- /dev/null +++ b/mobile/mobile_41.asm @@ -0,0 +1,1113 @@ +; These functions deal with miscellaneous statistics +; which were used for Trainer Rankings in Pokémon News. + +; Copies certain values at the time the player enters the Hall of Fame. +TrainerRankings_HallOfFame2:: mobile ; 0x105ef6 + ld a, BANK(sTrainerRankingGameTimeHOF) + call GetSRAMBank + + ld hl, GameTimeHours + ld de, sTrainerRankingGameTimeHOF + ld bc, 4 + call CopyBytes + + ld hl, sTrainerRankingStepCount + ld de, sTrainerRankingStepCountHOF + ld bc, 4 + call CopyBytes + + ; sTrainerRankingHealings is only a 3-byte value. + ; One extraneous byte is copied from sTrainerRankingMysteryGift. + ld hl, sTrainerRankingHealings + ld de, sTrainerRankingHealingsHOF + ld bc, 4 + call CopyBytes + + ld hl, sTrainerRankingBattles + ld de, sTrainerRankingBattlesHOF + ld bc, 3 + call CopyBytes + + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 105f33 + +TrainerRankings_MagikarpLength: mobile ; 105f33 + ld a, BANK(sTrainerRankingLongestMagikarp) + call GetSRAMBank + ld de, Buffer1 + ld hl, sTrainerRankingLongestMagikarp + + ; Is this Magikarp the longest measured? + ld a, [de] + cp [hl] + jr z, .isLowByteHigher + jr nc, .newRecordLongest + jr .checkShortest + +.isLowByteHigher + inc hl + inc de + ld a, [de] + cp [hl] + dec hl + dec de + jr c, .checkShortest + +.newRecordLongest + ld a, [de] + inc de + ld [hli], a + ld a, [de] + dec de + ld [hl], a + +.checkShortest + ; First, check if the record for shortest Magikarp is 0. + ; This seems unnecessary, because the value is initialized to 100.0 cm. + ld hl, sTrainerRankingShortestMagikarp + ld a, [hli] + or [hl] + dec hl + jr z, .newRecordShortest + + ; Now check if this Magikarp is the shortest + ld a, [de] + cp [hl] + jr z, .isLowByteLower + jr c, .newRecordShortest + jr .done + +.isLowByteLower + inc hl + inc de + ld a, [de] + cp [hl] + jr nc, .done + dec hl + dec de + +.newRecordShortest + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + +.done + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 105f79 + +TrainerRankings_BugContestScore: mobile ; 105f79 + ld a, BANK(sTrainerRankingBugContestScore) + call GetSRAMBank + ld a, [hProduct] + ld hl, sTrainerRankingBugContestScore + cp [hl] + jr z, .isLowByteHigher + jr nc, .newHighScore + jr .done + +.isLowByteHigher + inc hl + ld a, [hMultiplicand] + cp [hl] + jr c, .done + dec hl + +.newHighScore + ld a, [hProduct] + ld [hli], a + ld a, [hMultiplicand] + ld [hl], a + +.done + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 105f9f + +TrainerRankings_AddToSlotsWinStreak: mobile ; 105f9f + ld a, BANK(sTrainerRankingCurrentSlotsStreak) + call GetSRAMBank + + ; Increment the current streak + ld hl, sTrainerRankingCurrentSlotsStreak + 1 + inc [hl] + jr nz, .noCarry + dec hl + inc [hl] + inc hl + +.noCarry + dec hl + ; Now check if this is a new record for longest streak + ld a, [sTrainerRankingLongestSlotsStreak] + cp [hl] + jr z, .isLowByteHigher + jr c, .newRecordStreak + jr .done + +.isLowByteHigher + inc hl + ld a, [sTrainerRankingLongestSlotsStreak + 1] + cp [hl] + jr nc, .done + dec hl + +.newRecordStreak + ld a, [hli] + ld [sTrainerRankingLongestSlotsStreak], a + ld a, [hl] + ld [sTrainerRankingLongestSlotsStreak + 1], a + +.done + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 105fd0 + +TrainerRankings_EndSlotsWinStreak: mobile ; 105fd0 + ld a, BANK(sTrainerRankingCurrentSlotsStreak) + call GetSRAMBank + ld hl, sTrainerRankingCurrentSlotsStreak + xor a + ld [hli], a + ld [hl], a + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 105fe3 + +TrainerRankings_AddToSlotsPayouts: mobile ; 105fe3 + ld a, BANK(sTrainerRankingTotalSlotsPayouts) + call GetSRAMBank + ld hl, sTrainerRankingTotalSlotsPayouts + 3 + ld a, e + add [hl] + ld [hld], a + ld a, d + adc [hl] + ld [hld], a + jr nc, .done + inc [hl] + jr nz, .done + dec hl + inc [hl] + jr nz, .done + ld a, $ff + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + +.done + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 106008 + +TrainerRankings_AddToBattlePayouts: mobile ; 106008 + ld a, BANK(sTrainerRankingTotalBattlePayouts) + call GetSRAMBank + ld hl, sTrainerRankingTotalBattlePayouts + 3 + ld a, [bc] + dec bc + add [hl] + ld [hld], a + ld a, [bc] + dec bc + adc [hl] + ld [hld], a + ld a, [bc] + adc [hl] + ld [hld], a + jr nc, .done + inc [hl] + jr nz, .done + ld a, $ff + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + +.done + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 10602e + +TrainerRankings_StepCount: mobile ; 10602e (41:602e) + ld hl, sTrainerRankingStepCount + jp TrainerRankings_Increment4Byte + +; Unreferenced in English version. +TrainerRankings_BattleTowerWins: mobile ; 106035 + ld a, $5 + call GetSRAMBank + ld a, [$aa8d] + and a + call CloseSRAM + ret nz + ld hl, sTrainerRankingBattleTowerWins + jp TrainerRankings_Increment2Byte + +TrainerRankings_TMsHMsTaught: mobile ; 106049 + ld hl, sTrainerRankingTMsHMsTaught + jp TrainerRankings_Increment3Byte + +TrainerRankings_Battles: mobile ; 106050 + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle + ret z + ld hl, sTrainerRankingBattles + jp TrainerRankings_Increment3Byte + +TrainerRankings_WildBattles: mobile ; 10605d + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle + ret z + ld hl, sTrainerRankingWildBattles + jp TrainerRankings_Increment3Byte + +TrainerRankings_TrainerBattles: mobile ; 10606a + ld hl, sTrainerRankingTrainerBattles + jp TrainerRankings_Increment3Byte + +TrainerRankings_Unused1: mobile ; 106071 + ld hl, sTrainerRankingUnused1 + jp TrainerRankings_Increment3Byte + +TrainerRankings_HallOfFame:: mobile ; 0x106078 + ld hl, sTrainerRankingHOFEntries + jp TrainerRankings_Increment3Byte + +TrainerRankings_WildMonsCaught: mobile ; 10607f (41:607f) + ld hl, sTrainerRankingWildMonsCaught + jp TrainerRankings_Increment3Byte + +TrainerRankings_HookedEncounters: mobile ; 106086 + ld hl, sTrainerRankingHookedEncounters + jp TrainerRankings_Increment3Byte + +TrainerRankings_EggsHatched: mobile ; 10608d (41:608d) + ld hl, sTrainerRankingEggsHatched + jp TrainerRankings_Increment3Byte + +TrainerRankings_MonsEvolved: mobile ; 106094 + ld hl, sTrainerRankingMonsEvolved + jp TrainerRankings_Increment3Byte + +TrainerRankings_FruitPicked: mobile ; 10609b + ld hl, sTrainerRankingFruitPicked + jp TrainerRankings_Increment3Byte + +TrainerRankings_Healings: mobile ; 1060a2 + ld hl, sTrainerRankingHealings + jp TrainerRankings_Increment3Byte + +TrainerRankings_MysteryGift: mobile ; 1060a9 (41:60a9) + ld hl, sTrainerRankingMysteryGift + jr TrainerRankings_Increment3Byte + +TrainerRankings_Trades: mobile ; 1060af + ld hl, sTrainerRankingTrades + jr TrainerRankings_Increment3Byte + +TrainerRankings_Fly: mobile ; 1060b5 + ld hl, sTrainerRankingFly + jr TrainerRankings_Increment3Byte + +TrainerRankings_Surf: mobile ; 1060bb + ld hl, sTrainerRankingSurf + jr TrainerRankings_Increment3Byte + +TrainerRankings_Waterfall: mobile ; 1060c1 + ld hl, sTrainerRankingWaterfall + jr TrainerRankings_Increment3Byte + +TrainerRankings_WhiteOuts: mobile ; 1060c7 + ld hl, sTrainerRankingWhiteOuts + jr TrainerRankings_Increment3Byte + +TrainerRankings_LuckyNumberShow: mobile ; 1060cd + ld hl, sTrainerRankingLuckyNumberShow + jr TrainerRankings_Increment2Byte + +TrainerRankings_PhoneCalls: mobile ; 1060d3 + ld hl, sTrainerRankingPhoneCalls + jr TrainerRankings_Increment3Byte + +TrainerRankings_Unused2: mobile ; 1060df + ld hl, sTrainerRankingUnused2 + jr TrainerRankings_Increment3Byte + +TrainerRankings_LinkBattles: mobile ; 1060df + ld hl, sTrainerRankingLinkBattles + jr TrainerRankings_Increment3Byte + +TrainerRankings_Splash: mobile ; 1060e5 + ; Only counts if it’s the player’s turn + ld a, [hBattleTurn] + and a + ret nz + ld hl, sTrainerRankingSplash + jr TrainerRankings_Increment3Byte + +TrainerRankings_TreeEncounters: mobile ; 1060ef + ld hl, sTrainerRankingTreeEncounters + jr TrainerRankings_Increment3Byte + +TrainerRankings_Unused3: mobile ; 1060f5 + ld hl, sTrainerRankingUnused3 + jr TrainerRankings_Increment3Byte + +TrainerRankings_ColosseumWins: mobile ; win + ld hl, sTrainerRankingColosseumWins + jr TrainerRankings_Increment3Byte + +TrainerRankings_ColosseumLosses: mobile ; lose + ld hl, sTrainerRankingColosseumLosses + jr TrainerRankings_Increment3Byte +; 106107 + +TrainerRankings_ColosseumDraws: mobile ; draw + ld hl, sTrainerRankingColosseumDraws + jr TrainerRankings_Increment3Byte +; 10610d + +; Counts uses of both Selfdestruct and Explosion. +TrainerRankings_Selfdestruct: mobile ; 10610d + ; Only counts if it’s the player’s turn + ld a, [hBattleTurn] + and a + ret nz + ld hl, sTrainerRankingSelfdestruct + jr TrainerRankings_Increment3Byte +; 106117 + +TrainerRankings_Increment4Byte: ; 106117 + push bc + ld bc, 3 + jr TrainerRankings_Increment +; 10611d + +TrainerRankings_Increment3Byte: ; 10611d + push bc + ld bc, 2 + jr TrainerRankings_Increment +; 106123 + +TrainerRankings_Increment2Byte: ; 106123 + push bc + ld bc, 1 + jr TrainerRankings_Increment +; 106129 + +; unused +TrainerRankings_Increment1Byte: ; 106129 + push bc + ld bc, 0 + +; Increments a big-endian value of bc + 1 bytes at hl +TrainerRankings_Increment: ; 10612d + ld a, BANK(sTrainerRankings) + call GetSRAMBank + push hl + push de + ld e, c + inc e +.asm_106136 + ld a, [hli] + inc a + jr nz, .asm_10613d + dec e + jr nz, .asm_106136 + +.asm_10613d + pop de + pop hl + jr z, .asm_10614d + add hl, bc +.asm_106142 + inc [hl] + jr nz, .asm_10614d + ld a, c + and a + jr z, .asm_10614d + dec hl + dec c + jr .asm_106142 + +.asm_10614d + call UpdateTrainerRankingsChecksum + call CloseSRAM + pop bc + ret +; 106155 + +; Used when SRAM bank 5 isn’t already loaded — what’s the point of this? +UpdateTrainerRankingsChecksum2: mobile ; 106155 + ld a, BANK(sTrainerRankings) + call GetSRAMBank + call UpdateTrainerRankingsChecksum + call CloseSRAM + ret +; 106162 + +UpdateTrainerRankingsChecksum: ; 106162 + push de + call CalculateTrainerRankingsChecksum + ld hl, sTrainerRankingsChecksum + ld [hl], d + inc hl + ld [hl], e + pop de + ret +; 10616e + +CalculateTrainerRankingsChecksum: ; 10616e + push bc + ld hl, sTrainerRankings + ld bc, sTrainerRankingsChecksum - sTrainerRankings + xor a + ld de, 0 +.asm_106179 + ld a, e + add [hl] + ld e, a + jr nc, .asm_10617f + inc d + +.asm_10617f + inc hl + dec bc + ld a, b + or c + jr nz, .asm_106179 + pop bc + ret +; 106187 + + +BackupMobileEventIndex: ; 106187 + ld a, BANK(sMobileEventIndex) + call GetSRAMBank + ld a, [sMobileEventIndex] + push af + ld a, BANK(sMobileEventIndexBackup) + call GetSRAMBank + pop af + ld [sMobileEventIndexBackup], a + call CloseSRAM + ret +; 10619d + + +RestoreMobileEventIndex: ; 10619d (41:619d) + ld a, BANK(sMobileEventIndexBackup) + call GetSRAMBank + ld a, [sMobileEventIndexBackup] + push af + ld a, BANK(sMobileEventIndex) + call GetSRAMBank + pop af + ld [sMobileEventIndex], a + call CloseSRAM + ret +; 1061b3 (41:61b3) + +; Unreferenced in English version. +VerifyTrainerRankingsChecksum: ; 1061b3 + call CalculateTrainerRankingsChecksum + ld hl, sTrainerRankingsChecksum + ld a, d + cp [hl] + ret nz + inc hl + ld a, e + cp [hl] + ret +; 1061c0 + +DeleteMobileEventIndex: ; 1061c0 (41:61c0) + ld a, BANK(sMobileEventIndex) + call GetSRAMBank + xor a + ld [sMobileEventIndex], a + call CloseSRAM + ret +; 1061cd (41:61cd) + +; Used in the Japanese version to initialize Trainer Rankings data +; for a new save file. Unreferenced in the English version. +InitializeTrainerRankings: + ld hl, sTrainerRankings + ld bc, sTrainerRankingsEnd - sTrainerRankings + xor a + call ByteFill + + ; Initialize the shortest Magikarp to 100.0 cm + ld hl, sTrainerRankingShortestMagikarp + ld a, $3 + ld [hli], a + ld [hl], $e8 + + call UpdateTrainerRankingsChecksum + ld hl, sTrainerRankings + ld de, sTrainerRankingsBackup + ld bc, sTrainerRankingsEnd - sTrainerRankings + call CopyBytes + ret +; 1061ef + + +_MobilePrintNum:: ; 1061ef +; Supports signed 31-bit integers (up to 10 digits) +; b: Bits 0-4 = # bytes +; Bit 7 = set if negative +; c: Number of digits +; de: highest byte of number to convert +; hl: where to print the converted string + push bc + xor a + ld [hPrintNum1], a + ld [hPrintNum2], a + ld [hPrintNum3], a + ld a, b + and $f + cp $1 + jr z, .one_byte + cp $2 + jr z, .two_bytes + cp $3 + jr z, .three_bytes +; four bytes + ld a, [de] + ld [hPrintNum1], a + inc de + +.three_bytes + ld a, [de] + ld [hPrintNum2], a + inc de + +.two_bytes + ld a, [de] + ld [hPrintNum3], a + inc de + +.one_byte + ld a, [de] + ld [hPrintNum4], a + inc de + + push de + xor a + ld [hPrintNum9], a + ld a, b + ld [hPrintNum10], a + ld a, c + cp 2 + jr z, .two_digits + ld de, ._2 + cp 3 + jr z, .three_to_nine_digits + ld de, ._3 + cp 4 + jr z, .three_to_nine_digits + ld de, ._4 + cp 5 + jr z, .three_to_nine_digits + ld de, ._5 + cp 6 + jr z, .three_to_nine_digits + ld de, ._6 + cp 7 + jr z, .three_to_nine_digits + ld de, ._7 + cp 8 + jr z, .three_to_nine_digits + ld de, ._8 + cp 9 + jr z, .three_to_nine_digits + ld de, ._9 + +.three_to_nine_digits + inc de + inc de + inc de + dec a + dec a + +.digit_loop + push af + call .Function1062b2 + call .Function1062ff +rept 4 + inc de +endr + pop af + dec a + jr nz, .digit_loop + +.two_digits + ld c, 0 + ld a, [hPrintNum4] +.mod_ten_loop + cp 10 + jr c, .simple_divide_done + sub 10 + inc c + jr .mod_ten_loop + +.simple_divide_done + ld b, a + ld a, [hPrintNum9] + or c + ld [hPrintNum9], a + jr nz, .create_digit + call .LoadMinusTenIfNegative + jr .done + +.create_digit + ld a, "0" + add c + ld [hl], a + +.done + call .Function1062ff + ld a, "0" + add b + ld [hli], a + pop de + pop bc + ret +; 106292 + +._9 dd 1000000000 +._8 dd 100000000 +._7 dd 10000000 +._6 dd 1000000 +._5 dd 100000 +._4 dd 10000 +._3 dd 1000 +._2 dd 100 +; 1062b2 + +.Function1062b2: ; 1062b2 + ld c, $0 +.asm_1062b4 + ld a, [de] + dec de + ld b, a + ld a, [hPrintNum4] + sub b + ld [hPrintNum8], a + ld a, [de] + dec de + ld b, a + ld a, [hPrintNum3] + sbc b + ld [hPrintNum7], a + ld a, [de] + dec de + ld b, a + ld a, [hPrintNum2] + sbc b + ld [hPrintNum6], a + ld a, [de] + inc de + inc de + inc de + ld b, a + ld a, [hPrintNum1] + sbc b + ld [hPrintNum5], a + jr c, .asm_1062eb + ld a, [hPrintNum5] + ld [hPrintNum1], a + ld a, [hPrintNum6] + ld [hPrintNum2], a + ld a, [hPrintNum7] + ld [hPrintNum3], a + ld a, [hPrintNum8] + ld [hPrintNum4], a + inc c + jr .asm_1062b4 + +.asm_1062eb + ld a, [hPrintNum9] + or c + jr z, .LoadMinusTenIfNegative + ld a, -10 + add c + ld [hl], a + ld [hPrintNum9], a + ret + +.LoadMinusTenIfNegative: + ld a, [hPrintNum10] + bit 7, a + ret z + + ld [hl], -10 + ret +; 1062ff + +.Function1062ff: ; 1062ff + ld a, [hPrintNum10] + bit 7, a + jr nz, .asm_10630d + bit 6, a + jr z, .asm_10630d + ld a, [hPrintNum9] + and a + ret z + +.asm_10630d + inc hl + ret +; 10630f + +; functions related to the cable club and various NPC scripts referencing mobile communications + +Mobile_DummyReturnFalse: ; 10630f + xor a + ld [ScriptVar], a + ret +; 106314 + +MobileFn_106314: mobile ; 106314 + ld a, $4 + call GetSRAMBank + ld a, c + cpl + ld [$b000], a + call CloseSRAM + ld a, $7 + call GetSRAMBank + ld a, c + ld [$a800], a + call CloseSRAM + ret +; 10632f + +Mobile_AlwaysReturnNotCarry: ; 10632f + or a + ret + +Function106331: ; 106331 - called by Mobile_DummyReturnFalse in Crystal-J + ; check ~[4:b000] == [7:a800] + ld a, $4 + call GetSRAMBank + ld a, [$b000] + cpl + ld b, a + call CloseSRAM + ld a, $7 + call GetSRAMBank + ld a, [$a800] + ld c, a + call CloseSRAM + ld a, c + cp b + jr nz, .nope + + ; check [7:a800] != 0 + and a + jr z, .nope + + ; check !([7:a800] & %01110000) + and %10001111 + cp c + jr nz, .nope + + ld c, a + scf + ret + +.nope + xor a + ld c, a + ret +; 10635c + +Function10635c: ; 10635c + ld a, [wMobileCommsJumptableIndex] + bit 7, a + ret nz + ld a, [wMobileCommsJumptableIndex] + ld hl, .Jumptable + rst JumpTable + ret +; 10636a + +.Jumptable: ; 10636a + dw .init + dw Function106392 + dw Function1063cc + dw Function1063d8 + dw Function1063e5 + dw Function1063f3 + dw Function106403 + dw Function106442 + dw Function106453 +; 10637c + +.init: ; 10637c + ld de, wcd30 + ld hl, $41 + ld bc, $41 + ld a, $40 + call Function3e32 + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 106392 + +Function106392: ; 106392 + xor a + ld [wcf64], a + ld a, [wc821] + bit 1, a + jr nz, .asm_1063a2 + bit 0, a + jr z, .asm_1063bf + ret + +.asm_1063a2 + call Mobile_AlwaysReturnNotCarry + ld a, c + and a + jr nz, .asm_1063b4 + ld a, $b + ld [wcf64], a + ld a, $7 + ld [wMobileCommsJumptableIndex], a + ret + +.asm_1063b4 + ld a, $7 + ld [wcf64], a + ld a, $7 + ld [wMobileCommsJumptableIndex], a + ret + +.asm_1063bf + ld a, $1 + ld [wcf64], a + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 1063cc + +Function1063cc: ; 1063cc + ld a, $78 + ld [wcd42], a + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + +Function1063d8: ; 1063d8 + ld hl, wcd42 + dec [hl] + ret nz + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 1063e5 + +Function1063e5: ; 1063e5 + ld a, [wcf64] + cp $3 + ret nz + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 1063f3 + +Function1063f3: ; 1063f3 + ld de, wcd31 + ld a, $32 + call Function3e32 + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 106403 + +Function106403: ; 106403 + ld a, [wc821] + bit 1, a + jr nz, .asm_106426 + bit 0, a + jr z, .asm_10640f + ret + +.asm_10640f + ld a, [wcd31] + and $80 + ld c, a + ld a, [wcd30] + or c + inc a + ld c, a + call MobileFn_106314 + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret + +.asm_106426 + call Mobile_AlwaysReturnNotCarry + ld a, c + and a + jr z, .asm_106435 + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret + +.asm_106435 + ld c, $0 + call MobileFn_106314 + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + ret +; 106442 + +Function106442: ; 106442 + ld a, $36 + call Function3e32 + xor a + ld [hMobile], a + ld [hMobileReceive], a + ld a, [wMobileCommsJumptableIndex] + inc a + ld [wMobileCommsJumptableIndex], a + +Function106453: ; 106453 + ld a, [wMobileCommsJumptableIndex] + set 7, a + ld [wMobileCommsJumptableIndex], a + nop + ld a, $4 + ld [wcf64], a + ret +; 106462 + +MobileFunc_106462: mobile + ret +; 106464 + +Function106464:: ; 106464 + ld de, MobilePhoneTilesGFX + ld hl, VTiles2 tile $60 + lb bc, BANK(MobilePhoneTilesGFX), 1 + call Get2bpp + ld de, FontsExtra2_UpArrowGFX + ld hl, VTiles2 tile $61 + lb bc, BANK(FontsExtra2_UpArrowGFX), 1 + call Get2bpp + ld de, GFX_106514 + ld hl, VTiles2 tile $62 + ld c, 9 + ld b, BANK(GFX_106514) + call Get2bpp + ld de, $40b0 + ld hl, VTiles2 tile $6b + ld b, $f ; XXX no graphics at 0f:40b0 + call Get2bpp + farcall LoadFrame + ret +; 10649b + +Function10649b: ; 10649b + ld a, [TextBoxFrame] + and $7 + ld bc, 3 tiles + ld hl, Frames + call AddNTimes + ld d, h + ld e, l + ld hl, VTiles2 tile $79 + ld c, 6 + ld b, BANK(Frames) + call Function1064c3 + ld hl, VTiles2 tile $7f + ld de, TextBoxSpaceGFX + ld c, 1 + ld b, BANK(TextBoxSpaceGFX) + call Function1064c3 + ret +; 1064c3 + +Function1064c3: ; 1064c3 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push bc + push hl + ld hl, Function3f88 + ld a, b + rst FarCall + pop hl + pop bc + pop af + ld [rSVBK], a + jr asm_1064ed + +Function1064d8: ; 1064d8 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push bc + push hl + ld hl, Function3f9f + ld a, b + rst FarCall + pop hl + pop bc + pop af + ld [rSVBK], a + jr asm_1064ed + +asm_1064ed + ld de, wDecompressScratch + ld b, $0 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + call Get2bpp + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + ret +; 10650a + +Function10650a: ; 10650a + ld de, MobilePhoneTilesGFX + $20 + lb bc, BANK(MobilePhoneTilesGFX), $11 + call Get2bpp + ret +; 106514 + +GFX_106514: +INCBIN "gfx/unknown/106514.2bpp" |