diff options
Diffstat (limited to 'home/mobile.asm')
-rw-r--r-- | home/mobile.asm | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/home/mobile.asm b/home/mobile.asm new file mode 100644 index 00000000..32692f6a --- /dev/null +++ b/home/mobile.asm @@ -0,0 +1,315 @@ +Function3e32:: ; 3e32 +; Mobile + cp $2 + ld [$c988], a + ld a, l + ld [$c986], a + ld a, h + ld [$c987], a + jr nz, .asm_3e4f + + ld [$c982], a + ld a, l + ld [$c981], a + ld hl, $c983 + ld a, c + ld [hli], a + ld a, b + ld [hl], a + +.asm_3e4f + ld hl, $c822 + set 6, [hl] + ld a, [hROMBank] + push af + ld a, BANK(Function110030) + ld [$c981], a + rst Bankswitch + + jp Function110030 +; 3e60 + +Function3e60:: ; 3e60 + ld [$c986], a + ld a, l + ld [$c987], a + ld a, h + ld [$c988], a + + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + + ld hl, $c822 + res 6, [hl] + ld hl, $c987 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$c986] + ret +; 3e80 + +MobileReceive:: ; 3e80 + ld a, [hROMBank] + push af + ld a, BANK(_MobileReceive) + ld [$c981], a + rst Bankswitch + + call _MobileReceive + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + + ret +; 3e93 + + +Timer:: ; 3e93 + push af + push bc + push de + push hl + + ld a, [hMobile] + and a + jr z, .pop_ret + + xor a + ld [rTAC], a + +; Turn off timer interrupt + ld a, [rIF] + and 1 << VBLANK | 1 << LCD_STAT | 1 << SERIAL | 1 << JOYPAD + ld [rIF], a + + ld a, [$c86a] + or a + jr z, .pop_ret + + ld a, [$c822] + bit 1, a + jr nz, .skip_Timer + + ld a, [rSC] + and 1 << rSC_ON + jr nz, .skip_Timer + + ld a, [hROMBank] + push af + ld a, BANK(_Timer) + ld [$c981], a + rst Bankswitch + + call _Timer + + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + +.skip_Timer + ld a, [rTMA] + ld [rTIMA], a + + ld a, 1 << rTAC_ON | rTAC_65536_HZ + ld [rTAC], a + +.pop_ret + pop hl + pop de + pop bc + pop af + reti +; 3ed7 + +Function3ed7:: ; 3ed7 +; unreferenced + ld [$dc02], a + ld a, [hROMBank] + push af + ld a, BANK(Function114243) + rst Bankswitch + + call Function114243 + pop bc + ld a, b + rst Bankswitch + + ld a, [$dc02] + ret +; 3eea + +Function3eea:: ; 3eea + push hl + push bc + ld de, AttrMap - TileMap + add hl, de + inc b + inc b + inc c + inc c + call Function3f35 + pop bc + pop hl + call MobileHome_PlaceBox + ret +; 3efd + +Function3efd:: ; 3efd +; unreferenced + push hl + hlcoord 0, 12 + ld b, 4 + ld c, 18 + call .fill_attr + pop hl + call PrintTextBoxText + ret +; 3f0d + +.fill_attr + push hl + push bc + ld de, AttrMap - TileMap + add hl, de + inc b + inc b + inc c + inc c + call Function3f35 + pop bc + pop hl + call TextBoxBorder + ret +; 3f20 + +Function3f20:: ; 3f20 + hlcoord 0, 0, AttrMap + ld b, 6 + ld c, 20 + call Function3f35 + hlcoord 0, 0 + ld b, 4 + ld c, 18 + call MobileHome_PlaceBox + ret +; 3f35 + +Function3f35:: ; 3f35 + ld a, 6 + ld de, SCREEN_WIDTH +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + add hl, de + pop bc + dec b + jr nz, .row + ret +; 3f47 + +MobileHome_PlaceBox: ; 3f47 + push bc + call .FillTop + pop bc +.RowLoop + push bc + call .FillMiddle + pop bc + dec b + jr nz, .RowLoop + call .FillBottom + ret +; 3f58 + +.FillTop + ld a, $63 + ld d, $62 + ld e, $64 + jr .FillRow + +.FillBottom + ld a, $68 + ld d, $67 + ld e, $69 + jr .FillRow + +.FillMiddle + ld a, $7f + ld d, $65 + ld e, $66 + +.FillRow + push hl + ld [hl], d + inc hl +.FillLoop + ld [hli], a + dec c + jr nz, .FillLoop + ld [hl], e + pop hl + ld de, SCREEN_WIDTH + add hl, de + ret +; 3f7c + +Function3f7c:: ; 3f7c + call MenuBoxCoord2Tile + call GetMenuBoxDims + dec b + dec c + call Function3eea + ret +; 3f88 + +Function3f88:: ; 3f88 + ld hl, wDecompressScratch + ld b, 0 +.row + push bc + ld c, 1 tiles / 2 +.col + ld a, [de] + inc de + cpl + ld [hl], 0 + inc hl + ld [hli], a + dec c + jr nz, .col + pop bc + dec c + jr nz, .row + ret +; 3f9f + +Function3f9f:: ; 3f9f + ld hl, wDecompressScratch +.row + push bc + ld c, 1 tiles / 2 +.col + ld a, [de] + inc de + inc de + cpl + ld [hl], $0 + inc hl + ld [hli], a + dec c + jr nz, .col + pop bc + dec c + jr nz, .row + ret +; 3fb5 |