ref: c480632d5494d04f7f5f0298a31877a2293b564e
dir: /engine/overworld/update_map.asm/
; replaces a tile block with the one specified in [wNewTileBlockID] ; and redraws the map view if necessary ; b = Y ; c = X ReplaceTileBlock: call GetPredefRegisters ld hl, wOverworldMap ld a, [wCurMapWidth] add $6 ld e, a ld d, $0 add hl, de add hl, de add hl, de ld e, $3 add hl, de ld e, a ld a, b and a jr z, .addX ; add width * Y .addWidthYTimesLoop add hl, de dec b jr nz, .addWidthYTimesLoop .addX add hl, bc ; add X ld a, [wNewTileBlockID] ld [hl], a ld a, [wCurrentTileBlockMapViewPointer] ld c, a ld a, [wCurrentTileBlockMapViewPointer + 1] ld b, a call CompareHLWithBC ret c ; return if the replaced tile block is below the map view in memory push hl ld l, e ld h, $0 ld e, $6 ld d, h add hl, hl add hl, hl add hl, de add hl, bc pop bc call CompareHLWithBC ret c ; return if the replaced tile block is above the map view in memory RedrawMapView: ld a, [wIsInBattle] inc a ret z ld a, [hAutoBGTransferEnabled] push af ld a, [hTilesetType] push af xor a ld [hAutoBGTransferEnabled], a ld [hTilesetType], a ; no flower/water BG tile animations call LoadCurrentMapView call RunDefaultPaletteCommand ld hl, wMapViewVRAMPointer ld a, [hli] ld h, [hl] ld l, a ld de, -2 * BG_MAP_WIDTH add hl, de ld a, h and $3 or $98 ld a, l ld [wBuffer], a ld a, h ld [wBuffer + 1], a ; this copy of the address is not used ld a, 2 ld [hRedrawMapViewRowOffset], a ld c, SCREEN_HEIGHT / 2 ; number of rows of 2x2 tiles (this covers the whole screen) .redrawRowLoop push bc push hl push hl ld hl, wTileMap - 2 * SCREEN_WIDTH ld de, SCREEN_WIDTH ld a, [hRedrawMapViewRowOffset] .calcWRAMAddrLoop add hl, de dec a jr nz, .calcWRAMAddrLoop call CopyToRedrawRowOrColumnSrcTiles pop hl ld de, BG_MAP_WIDTH ld a, [hRedrawMapViewRowOffset] ld c, a .calcVRAMAddrLoop add hl, de ld a, h and $3 or $98 dec c jr nz, .calcVRAMAddrLoop ld [hRedrawRowOrColumnDest + 1], a ld a, l ld [hRedrawRowOrColumnDest], a ld a, REDRAW_ROW ld [hRedrawRowOrColumnMode], a call DelayFrame ld hl, hRedrawMapViewRowOffset inc [hl] inc [hl] pop hl pop bc dec c jr nz, .redrawRowLoop pop af ld [hTilesetType], a pop af ld [hAutoBGTransferEnabled], a ret CompareHLWithBC: ld a, h sub b ret nz ld a, l sub c ret