diff options
Diffstat (limited to 'misc/mobile_41.asm')
-rwxr-xr-x | misc/mobile_41.asm | 1094 |
1 files changed, 1094 insertions, 0 deletions
diff --git a/misc/mobile_41.asm b/misc/mobile_41.asm new file mode 100755 index 000000000..825ee9497 --- /dev/null +++ b/misc/mobile_41.asm @@ -0,0 +1,1094 @@ +SECTION "bank41_2", ROMX, BANK[$41] + +Mobile_HallOfFame2:: mobile ; 0x105ef6 + ld a, $5 + call GetSRAMBank + ld hl, GameTimeHours + ld de, $a001 + ld bc, 4 + call CopyBytes + ld hl, $a010 + ld de, $a005 + ld bc, 4 + call CopyBytes + ld hl, $a039 + ld de, $a009 + ld bc, 4 + call CopyBytes + ld hl, $a01b + ld de, $a00d + ld bc, 3 + call CopyBytes + call Function106162 + call CloseSRAM + ret +; 105f33 + +MagikarpLength_Mobile: mobile ; 105f33 + ld a, $5 + call GetSRAMBank + ld de, Buffer1 + ld hl, $a07b + ld a, [de] + cp [hl] + jr z, .asm_105f47 + jr nc, .asm_105f4f + jr .asm_105f55 + +.asm_105f47 + inc hl + inc de + ld a, [de] + cp [hl] + dec hl + dec de + jr c, .asm_105f55 + +.asm_105f4f + ld a, [de] + inc de + ld [hli], a + ld a, [de] + dec de + ld [hl], a + +.asm_105f55 + ld hl, $a07d + ld a, [hli] + or [hl] + dec hl + jr z, .asm_105f6d + ld a, [de] + cp [hl] + jr z, .asm_105f65 + jr c, .asm_105f6d + jr .asm_105f72 + +.asm_105f65 + inc hl + inc de + ld a, [de] + cp [hl] + jr nc, .asm_105f72 + dec hl + dec de + +.asm_105f6d + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + +.asm_105f72 + call Function106162 + call CloseSRAM + ret +; 105f79 + +MobileFn_105f79: mobile ; 105f79 + ld a, $5 + call GetSRAMBank + ld a, [hProduct] + ld hl, $a07f + cp [hl] + jr z, .asm_105f8b + jr nc, .asm_105f92 + jr .asm_105f98 + +.asm_105f8b + inc hl + ld a, [hMultiplicand] + cp [hl] + jr c, .asm_105f98 + dec hl + +.asm_105f92 + ld a, [hProduct] + ld [hli], a + ld a, [hMultiplicand] + ld [hl], a + +.asm_105f98 + call Function106162 + call CloseSRAM + ret +; 105f9f + +MobileFn_105f9f: mobile ; 105f9f + ld a, $5 + call GetSRAMBank + ld hl, $a070 + inc [hl] + jr nz, .asm_105fae + dec hl + inc [hl] + inc hl + +.asm_105fae + dec hl + ld a, [$a071] + cp [hl] + jr z, .asm_105fb9 + jr c, .asm_105fc1 + jr .asm_105fc9 + +.asm_105fb9 + inc hl + ld a, [$a072] + cp [hl] + jr nc, .asm_105fc9 + dec hl + +.asm_105fc1 + ld a, [hli] + ld [$a071], a + ld a, [hl] + ld [$a072], a + +.asm_105fc9 + call Function106162 + call CloseSRAM + ret +; 105fd0 + +MobileFn_105fd0: mobile ; 105fd0 + ld a, $5 + call GetSRAMBank + ld hl, $a06f + xor a + ld [hli], a + ld [hl], a + call Function106162 + call CloseSRAM + ret +; 105fe3 + +MobileFn_105fe3: mobile ; 105fe3 + ld a, $5 + call GetSRAMBank + ld hl, $a076 + ld a, e + add [hl] + ld [hld], a + ld a, d + adc [hl] + ld [hld], a + jr nc, .asm_106001 + inc [hl] + jr nz, .asm_106001 + dec hl + inc [hl] + jr nz, .asm_106001 + ld a, $ff +rept 3 + ld [hli], a +endr + ld [hl], a + +.asm_106001 + call Function106162 + call CloseSRAM + ret +; 106008 + +MobileFn_106008: mobile ; 106008 + ld a, $5 + call GetSRAMBank + ld hl, $a07a + 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, .asm_106027 + inc [hl] + jr nz, .asm_106027 + ld a, $ff +rept 3 + ld [hli], a +endr + ld [hl], a + +.asm_106027 + call Function106162 + call CloseSRAM + ret +; 10602e + +MobileFn_10602e: mobile ; 10602e (41:602e) + ld hl, $a010 + jp MobileFn_106117 + +MobileFn_106035: mobile ; 106035 + ld a, $5 + call GetSRAMBank + ld a, [$aa8d] + and a + call CloseSRAM + ret nz + ld hl, $a014 + jp Function106123 + +MobileFn_106049: mobile ; 106049 + ld hl, $a018 + jp Function10611d + +MobileFn_106050: mobile ; 106050 + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + ret z + ld hl, $a01b + jp Function10611d + +MobileFn_10605d: mobile ; 10605d + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + ret z + ld hl, $a01e + jp Function10611d + +MobileFn_10606a: mobile ; 10606a + ld hl, $a021 + jp Function10611d + +MobileFn_106071: mobile ; 106071 + ld hl, $a024 + jp Function10611d + +Mobile_HallOfFame:: mobile ; 0x106078 + ld hl, $a027 + jp Function10611d + +MobileFn_10607f: mobile ; 10607f (41:607f) + ld hl, $a02a + jp Function10611d + +MobileFn_106086: mobile ; 106086 + ld hl, $a02d + jp Function10611d + +MobileFn_10608d: mobile ; 10608d (41:608d) + ld hl, $a030 + jp Function10611d + +MobileFn_106094: mobile ; 106094 + ld hl, $a033 + jp Function10611d + +MobileFn_10609b: mobile ; 10609b + ld hl, $a036 + jp Function10611d + +Mobile_HealParty: mobile ; 1060a2 + ld hl, $a039 + jp Function10611d + +MobileFn_1060a9: mobile ; 1060a9 (41:60a9) + ld hl, $a03c + jr Function10611d + +MobileFn_1060af: mobile ; 1060af + ld hl, $a03f + jr Function10611d + +MobileFn_1060b5: mobile ; 1060b5 + ld hl, $a042 + jr Function10611d + +MobileFn_1060bb: mobile ; 1060bb + ld hl, $a045 + jr Function10611d + +MobileFn_1060c1: mobile ; 1060c1 + ld hl, $a048 + jr Function10611d + +MobileFn_1060c7: mobile ; 1060c7 + ld hl, $a04b + jr Function10611d + +MobileFn_1060cd: mobile ; 1060cd + ld hl, $a04e + jr Function106123 + +MobileFn_1060d3: mobile ; 1060d3 + ld hl, $a051 + jr Function10611d + +MobileFn_1060d9: mobile ; 1060df + ld hl, $a054 + jr Function10611d + +MobileFn_1060df: mobile ; 1060df + ld hl, $a057 + jr Function10611d + +MobileFn_1060e5: mobile ; 1060e5 + ld a, [hBattleTurn] + and a + ret nz + ld hl, $a05a + jr Function10611d + +MobileFn_1060ef: mobile ; 1060ef + ld hl, $a05d + jr Function10611d + +MobileFn_1060f5: mobile ; 1060f5 + ld hl, $a060 + jr Function10611d + +MobileFn_SaveBattleResult_Win: mobile ; win + ld hl, $a063 + jr Function10611d + +MobileFn_SaveBattleResult_Lose: mobile ; lose + ld hl, $a066 + jr Function10611d +; 106107 + +MobileFn_SaveBattleResult_Draw: mobile ; draw + ld hl, $a069 + jr Function10611d +; 10610d + +MobileFn_10610d: mobile ; 10610d + ld a, [hBattleTurn] + and a + ret nz + ld hl, $a06c + jr Function10611d +; 106117 + +MobileFn_106117: ; 106117 + push bc + ld bc, 3 + jr Function10612d +; 10611d + +Function10611d: ; 10611d + push bc + ld bc, 2 + jr Function10612d +; 106123 + +Function106123: ; 106123 + push bc + ld bc, 1 + jr Function10612d +; 106129 + +Function106129: ; 106129 + push bc + ld bc, 0 + +Function10612d: ; 10612d + ld a, $5 + 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 Function106162 + call CloseSRAM + pop bc + ret +; 106155 + +MobileFn_106155: mobile ; 106155 + ld a, $5 + call GetSRAMBank + call Function106162 + call CloseSRAM + ret +; 106162 + +Function106162: ; 106162 + push de + call Function10616e + ld hl, $a081 ; s5_a081 + ld [hl], d + inc hl + ld [hl], e + pop de + ret +; 10616e + +Function10616e: ; 10616e + push bc + ld hl, $a001 ; s5_a001 + ld bc, $80 + 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) + +Function1061b3: ; 1061b3 + call Function10616e + ld hl, $a081 ; s5_a081 + 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) + +Function1061cd: ; unreferenced + ld hl, $a001 + ld bc, $82 + xor a + call ByteFill + ld hl, $a07d + ld a, $3 + ld [hli], a + ld [hl], $e8 + call Function106162 + ld hl, $a001 + ld de, $a084 + ld bc, $82 + 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 +rept 3 + inc de +endr +rept 2 + dec a +endr + +.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] +rept 3 + inc de +endr + 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 + +Function10630f: ; 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 + +Function10632f: ; 10632f + or a + mobile + + 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, .asm_106359 + and a + jr z, .asm_106359 + and $8f + cp c + jr nz, .asm_106359 + ld c, a + scf + ret + +.asm_106359 + xor a + ld c, a + ret +; 10635c + +Function10635c: ; 10635c + ld a, [wcd25] + bit 7, a + ret nz + ld a, [wcd25] + ld hl, Jumptable_10636a + rst JumpTable + ret +; 10636a + +Jumptable_10636a: ; 10636a + dw Function10637c + dw Function106392 + dw Function1063cc + dw Function1063d8 + dw Function1063e5 + dw Function1063f3 + dw Function106403 + dw Function106442 + dw Function106453 +; 10637c + +Function10637c: ; 10637c + ld de, wcd30 + ld hl, $41 + ld bc, $41 + ld a, $40 + call Function3e32 + ld a, [wcd25] + inc a + ld [wcd25], 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 Function10632f + ld a, c + and a + jr nz, .asm_1063b4 + ld a, $b + ld [wcf64], a + ld a, $7 + ld [wcd25], a + ret + +.asm_1063b4 + ld a, $7 + ld [wcf64], a + ld a, $7 + ld [wcd25], a + ret + +.asm_1063bf + ld a, $1 + ld [wcf64], a + ld a, [wcd25] + inc a + ld [wcd25], a + ret +; 1063cc + +Function1063cc: ; 1063cc + ld a, $78 + ld [wcd42], a + ld a, [wcd25] + inc a + ld [wcd25], a + +Function1063d8: ; 1063d8 + ld hl, wcd42 + dec [hl] + ret nz + ld a, [wcd25] + inc a + ld [wcd25], a + ret +; 1063e5 + +Function1063e5: ; 1063e5 + ld a, [wcf64] + cp $3 + ret nz + ld a, [wcd25] + inc a + ld [wcd25], a + ret +; 1063f3 + +Function1063f3: ; 1063f3 + ld de, wcd31 + ld a, $32 + call Function3e32 + ld a, [wcd25] + inc a + ld [wcd25], 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, [wcd25] + inc a + ld [wcd25], a + ret + +.asm_106426 + call Function10632f + ld a, c + and a + jr z, .asm_106435 + ld a, [wcd25] + inc a + ld [wcd25], a + ret + +.asm_106435 + ld c, $0 + call MobileFn_106314 + ld a, [wcd25] + inc a + ld [wcd25], a + ret +; 106442 + +Function106442: ; 106442 + ld a, $36 + call Function3e32 + xor a + ld [hMobile], a + ld [$ffc9], a + ld a, [wcd25] + inc a + ld [wcd25], a + +Function106453: ; 106453 + ld a, [wcd25] + set 7, a + ld [wcd25], a + nop + ld a, $4 + ld [wcf64], a + ret +; 106462 + +Function106462: ; 106462 + ret +; 106463 + +Function106463: ; 106463 + ret +; 106464 + +Function106464:: ; 106464 + ld de, MobilePhoneTilesGFX + ld hl, VTiles2 tile $60 + lb bc, BANK(MobilePhoneTilesGFX), 1 + call Get2bpp + ld de, GFX_f9424 + ld hl, VTiles2 tile $61 + lb bc, BANK(GFX_f9424), 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 + callba LoadFrame + ret +; 10649b + +Function10649b: ; 10649b + ld a, [TextBoxFrame] + and $7 + ld bc, $30 + 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, w6_d000 + 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" + + +Function106594:: ; 106594 + ld de, GFX_1065ad + ld hl, VTiles1 + lb bc, BANK(GFX_1065ad), $80 + call Get2bpp + ld de, GFX_1065ad + $800 + ld hl, VTiles2 tile $7f + lb bc, BANK(GFX_1065ad), 1 + call Get2bpp + ret +; 1065ad + +GFX_1065ad: +INCBIN "gfx/unknown/1065ad.2bpp" |