mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
split code out of main.asm
This commit is contained in:
parent
10289bf7dd
commit
bf67f7174d
22 changed files with 2671 additions and 2675 deletions
126
engine/overworld/update_map.asm
Normal file
126
engine/overworld/update_map.asm
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
; 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, [H_AUTOBGTRANSFERENABLED]
|
||||
push af
|
||||
ld a, [hTilesetType]
|
||||
push af
|
||||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED], 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 * 32
|
||||
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 [$ffbe], a
|
||||
ld c, 9 ; 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, [$ffbe]
|
||||
.calcWRAMAddrLoop
|
||||
add hl, de
|
||||
dec a
|
||||
jr nz, .calcWRAMAddrLoop
|
||||
call CopyToRedrawRowOrColumnSrcTiles
|
||||
pop hl
|
||||
ld de, $20
|
||||
ld a, [$ffbe]
|
||||
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, $ffbe
|
||||
inc [hl]
|
||||
inc [hl]
|
||||
pop hl
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .redrawRowLoop
|
||||
pop af
|
||||
ld [hTilesetType], a
|
||||
pop af
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
ret
|
||||
|
||||
CompareHLWithBC:
|
||||
ld a, h
|
||||
sub b
|
||||
ret nz
|
||||
ld a, l
|
||||
sub c
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue