Move more code from home.asm into home/

This commit is contained in:
Rangi
2018-04-05 00:35:14 -04:00
parent 1e1bbbbf8c
commit 99df17d571
18 changed files with 1349 additions and 1361 deletions

View File

@@ -1,257 +1,229 @@
PushWindow:: ; 1c00
callfar _PushWindow
ClearBGPalettes:: ; 31f3
call ClearPalettes
WaitBGMap:: ; 31f6
; Tell VBlank to update BG Map
ld a, 1 ; BG Map 0 tiles
ld [hBGMapMode], a
; Wait for it to do its magic
ld c, 4
call DelayFrames
ret
; 1c07
; 3200
ExitMenu:: ; 0x1c07
WaitBGMap2:: ; 0x3200
ld a, [hCGB]
and a
jr z, .bg0
ld a, 2
ld [hBGMapMode], a
ld c, 4
call DelayFrames
.bg0
ld a, 1
ld [hBGMapMode], a
ld c, 4
call DelayFrames
ret
; 0x3218
IsCGB:: ; 3218
ld a, [hCGB]
and a
ret
; 321c
ApplyTilemap:: ; 321c
ld a, [hCGB]
and a
jr z, .dmg
ld a, [wSpriteUpdatesEnabled]
cp 0
jr z, .dmg
ld a, 1
ld [hBGMapMode], a
jr CopyTilemapAtOnce
.dmg
; WaitBGMap
ld a, 1
ld [hBGMapMode], a
ld c, 4
call DelayFrames
ret
; 3238
CGBOnly_CopyTilemapAtOnce:: ; 3238
ld a, [hCGB]
and a
jr z, WaitBGMap
CopyTilemapAtOnce:: ; 323d
jr .CopyTilemapAtOnce
; 323f
; unused
farcall HDMATransferAttrMapAndTileMapToWRAMBank3
ret
; 3246
.CopyTilemapAtOnce: ; 3246
ld a, [hBGMapMode]
push af
callfar _ExitMenu
pop af
ret
xor a
ld [hBGMapMode], a
InitVerticalMenuCursor:: ; 0x1c10
callfar _InitVerticalMenuCursor
ret
CloseWindow:: ; 0x1c17
ld a, [hMapAnims]
push af
call ExitMenu
call ApplyTilemap
call UpdateSprites
xor a
ld [hMapAnims], a
.wait
ld a, [rLY]
cp $7f
jr c, .wait
di
ld a, BANK(vTiles3)
ld [rVBK], a
hlcoord 0, 0, wAttrMap
call .StackPointerMagic
ld a, BANK(vTiles0)
ld [rVBK], a
hlcoord 0, 0
call .StackPointerMagic
.wait2
ld a, [rLY]
cp $7f
jr c, .wait2
ei
pop af
ld [hMapAnims], a
pop af
ld [hBGMapMode], a
ret
; 327b
RestoreTileBackup:: ; 0x1c23
call MenuBoxCoord2Tile
call .copy
call MenuBoxCoord2Attr
call .copy
ret
; 0x1c30
.StackPointerMagic: ; 327b
; Copy all tiles to vBGMap
ld [hSPBuffer], sp
ld sp, hl
ld a, [hBGMapAddress + 1]
ld h, a
ld l, 0
ld a, SCREEN_HEIGHT
ld [hTilesPerCycle], a
ld b, 1 << 1 ; not in v/hblank
ld c, LOW(rSTAT)
.copy ; 0x1c30
call GetMenuBoxDims
inc b
inc c
.row
push bc
push hl
.col
ld a, [de]
ld [hli], a
dec de
dec c
jr nz, .col ; 0x1c3b $fa
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .row ; 0x1c44 $ef
ret
PopWindow:: ; 0x1c47
ld b, $10
ld de, wMenuFlags
.loop
ld a, [hld]
ld [de], a
inc de
dec b
jr nz, .loop ; 0x1c50 $fa
ret
GetMenuBoxDims:: ; 0x1c53
ld a, [wMenuBorderTopCoord] ; top
ld b, a
ld a, [wMenuBorderBottomCoord] ; bottom
sub b
ld b, a
ld a, [wMenuBorderLeftCoord] ; left
ld c, a
ld a, [wMenuBorderRightCoord] ; right
sub c
ld c, a
ret
; 0x1c66
CopyMenuData:: ; 1c66
push hl
push de
push bc
push af
ld hl, wMenuDataPointer
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wMenuDataFlags
ld bc, wMenuDataEnd - wMenuDataFlags
call CopyBytes
pop af
pop bc
rept SCREEN_WIDTH / 2
pop de
pop hl
ret
; 1c7e
; if in v/hblank, wait until not in v/hblank
.loop\@
ld a, [$ff00+c]
and b
jr nz, .loop\@
; load BGMap0
ld [hl], e
inc l
ld [hl], d
inc l
endr
GetWindowStackTop:: ; 1c7e
ld hl, wWindowStackPointer
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
ld a, [hli]
ld h, [hl]
ld l, a
ret
; 1c89
PlaceVerticalMenuItems:: ; 1c89
call CopyMenuData
ld hl, wMenuDataPointer
ld e, [hl]
inc hl
ld d, [hl]
call GetMenuTextStartCoord
call Coord2Tile ; hl now contains the tilemap address where we will start printing text.
inc de
ld a, [de] ; Number of items
inc de
ld b, a
.loop
push bc
call PlaceString
inc de
ld bc, 2 * SCREEN_WIDTH
add hl, bc
pop bc
dec b
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
add hl, de
ld a, [hTilesPerCycle]
dec a
ld [hTilesPerCycle], a
jr nz, .loop
ld a, [wMenuDataFlags]
bit 4, a
ld a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
; 32f9
SetPalettes:: ; 32f9
; Inits the Palettes
; depending on the system the monochromes palettes or color palettes
ld a, [hCGB]
and a
jr nz, .SetPalettesForGameBoyColor
ld a, %11100100
ld [rBGP], a
ld a, %11010000
ld [rOBP0], a
ld [rOBP1], a
ret
.SetPalettesForGameBoyColor:
push de
ld a, %11100100
call DmgToCgbBGPals
lb de, %11100100, %11100100
call DmgToCgbObjPals
pop de
ret
; 3317
ClearPalettes:: ; 3317
; Make all palettes white
; CGB: make all the palette colors white
ld a, [hCGB]
and a
jr nz, .cgb
; DMG: just change palettes to 0 (white)
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
ret
.cgb
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ld [rSVBK], a
; Fill wBGPals2 and wOBPals2 with $ffff (white)
ld hl, wBGPals2
ld bc, 16 palettes
ld a, $ff
call ByteFill
pop af
ld [rSVBK], a
; Request palette update
ld a, 1
ld [hCGBPalUpdate], a
ret
; 333e
GetMemSGBLayout:: ; 333e
ld b, SCGB_RAM
GetSGBLayout:: ; 3340
; load sgb packets unless dmg
ld a, [hCGB]
and a
jr nz, .sgb
ld a, [hSGB]
and a
ret z
call MenuBoxCoord2Tile
ld a, [de]
ld c, a
inc de
ld b, $0
add hl, bc
jp PlaceString
; 1cbb
MenuBox:: ; 1cbb
call MenuBoxCoord2Tile
call GetMenuBoxDims
dec b
dec c
jp TextBox
; 1cc6
GetMenuTextStartCoord:: ; 1cc6
ld a, [wMenuBorderTopCoord]
ld b, a
inc b
ld a, [wMenuBorderLeftCoord]
ld c, a
inc c
; bit 6: if not set, leave extra room on top
ld a, [wMenuDataFlags]
bit 6, a
jr nz, .bit_6_set
inc b
.bit_6_set
; bit 7: if set, leave extra room on the left
ld a, [wMenuDataFlags]
bit 7, a
jr z, .bit_7_clear
inc c
.bit_7_clear
ret
; 1ce1
ClearMenuBoxInterior:: ; 1ce1
call MenuBoxCoord2Tile
ld bc, SCREEN_WIDTH + 1
add hl, bc
call GetMenuBoxDims
dec b
dec c
call ClearBox
ret
; 1cf1
ClearWholeMenuBox:: ; 1cf1
call MenuBoxCoord2Tile
call GetMenuBoxDims
inc c
inc b
call ClearBox
ret
; 1cfd
MenuBoxCoord2Tile:: ; 1cfd
ld a, [wMenuBorderLeftCoord]
ld c, a
ld a, [wMenuBorderTopCoord]
ld b, a
; 1d05
Coord2Tile:: ; 1d05
; Return the address of wTileMap(c, b) in hl.
xor a
ld h, a
ld l, b
ld a, c
ld b, h
ld c, l
add hl, hl
add hl, hl
add hl, bc
add hl, hl
add hl, hl
ld c, a
xor a
ld b, a
add hl, bc
bccoord 0, 0
add hl, bc
ret
; 1d19
MenuBoxCoord2Attr:: ; 1d19
ld a, [wMenuBorderLeftCoord]
ld c, a
ld a, [wMenuBorderTopCoord]
ld b, a
Coord2Attr:: ; 1d21
; Return the address of wAttrMap(c, b) in hl.
xor a
ld h, a
ld l, b
ld a, c
ld b, h
ld c, l
add hl, hl
add hl, hl
add hl, bc
add hl, hl
add hl, hl
ld c, a
xor a
ld b, a
add hl, bc
bccoord 0, 0, wAttrMap
add hl, bc
ret
; 1d35
.sgb
predef_jump LoadSGBLayout
; 334e