mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
eb1e3636bb
Use explicit ldh instruction to access HRAM locations, don't rely on optimizing ld
340 lines
4.7 KiB
NASM
340 lines
4.7 KiB
NASM
LinkCommsBorderGFX:
|
|
INCBIN "gfx/trade/border_tiles.2bpp"
|
|
|
|
__LoadTradeScreenBorder:
|
|
ld de, LinkCommsBorderGFX
|
|
ld hl, vTiles2
|
|
lb bc, BANK(LinkCommsBorderGFX), 70
|
|
call Get2bpp
|
|
ret
|
|
|
|
Function16d42e:
|
|
ld hl, Tilemap_MobileTradeBorderFullscreen
|
|
decoord 0, 0
|
|
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
|
call CopyBytes
|
|
ret
|
|
|
|
Function16d43b:
|
|
call LoadStandardMenuHeader
|
|
call ClearBGPalettes
|
|
call ClearTileMap
|
|
call ClearSprites
|
|
farcall __LoadTradeScreenBorder ; useless to farcall
|
|
farcall Function16d42e ; useless to farcall
|
|
ld b, SCGB_DIPLOMA
|
|
call GetSGBLayout
|
|
call SetPalettes
|
|
call WaitBGMap
|
|
call JoyWaitAorB
|
|
call Call_ExitMenu
|
|
ret
|
|
|
|
Tilemap_MobileTradeBorderFullscreen:
|
|
INCBIN "gfx/trade/border_mobile_fullscreen.tilemap"
|
|
|
|
Tilemap_CableTradeBorderTop:
|
|
INCBIN "gfx/trade/border_cable_top.tilemap"
|
|
|
|
Tilemap_CableTradeBorderBottom:
|
|
INCBIN "gfx/trade/border_cable_bottom.tilemap"
|
|
|
|
_LinkTextbox:
|
|
ld h, d
|
|
ld l, e
|
|
push bc
|
|
push hl
|
|
call .PlaceBorder
|
|
pop hl
|
|
pop bc
|
|
|
|
ld de, wAttrMap - wTileMap
|
|
add hl, de
|
|
inc b
|
|
inc b
|
|
inc c
|
|
inc c
|
|
ld a, PAL_BG_TEXT
|
|
.row
|
|
push bc
|
|
push hl
|
|
.col
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .col
|
|
pop hl
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
pop bc
|
|
dec b
|
|
jr nz, .row
|
|
ret
|
|
|
|
.PlaceBorder
|
|
push hl
|
|
ld a, $30
|
|
ld [hli], a
|
|
inc a
|
|
call .PlaceRow
|
|
inc a
|
|
ld [hl], a
|
|
pop hl
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
.loop
|
|
push hl
|
|
ld a, $33
|
|
ld [hli], a
|
|
ld a, " "
|
|
call .PlaceRow
|
|
ld [hl], $34
|
|
pop hl
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
dec b
|
|
jr nz, .loop
|
|
|
|
ld a, $35
|
|
ld [hli], a
|
|
ld a, $36
|
|
call .PlaceRow
|
|
ld [hl], $37
|
|
ret
|
|
|
|
.PlaceRow
|
|
ld d, c
|
|
.row_loop
|
|
ld [hli], a
|
|
dec d
|
|
jr nz, .row_loop
|
|
ret
|
|
|
|
InitTradeSpeciesList:
|
|
call _LoadTradeScreenBorder
|
|
call Function16d6ae
|
|
farcall InitMG_Mobile_LinkTradePalMap
|
|
farcall PlaceTradePartnerNamesAndParty
|
|
hlcoord 10, 17
|
|
ld de, .CANCEL
|
|
call PlaceString
|
|
ret
|
|
|
|
.CANCEL:
|
|
db "CANCEL@"
|
|
|
|
_LoadTradeScreenBorder:
|
|
call __LoadTradeScreenBorder
|
|
ret
|
|
|
|
LinkComms_LoadPleaseWaitTextboxBorderGFX:
|
|
ld de, LinkCommsBorderGFX + $30 tiles
|
|
ld hl, vTiles2 tile $76
|
|
lb bc, BANK(LinkCommsBorderGFX), 8
|
|
call Get2bpp
|
|
ret
|
|
|
|
LoadTradeRoomBGPals:
|
|
farcall _LoadTradeRoomBGPals
|
|
ret
|
|
|
|
Function16d6ae:
|
|
call Function16d42e
|
|
ld hl, Tilemap_CableTradeBorderTop
|
|
decoord 0, 0
|
|
ld bc, 2 * SCREEN_WIDTH
|
|
call CopyBytes
|
|
ld hl, Tilemap_CableTradeBorderBottom
|
|
decoord 0, 16
|
|
ld bc, 2 * SCREEN_WIDTH
|
|
call CopyBytes
|
|
ret
|
|
|
|
LinkTextbox:
|
|
call _LinkTextbox
|
|
ret
|
|
|
|
Function16d6ce:
|
|
call LoadStandardMenuHeader
|
|
call Function16d6e1
|
|
farcall WaitLinkTransfer
|
|
call Call_ExitMenu
|
|
call WaitBGMap2
|
|
ret
|
|
|
|
Function16d6e1:
|
|
hlcoord 4, 10
|
|
ld b, 1
|
|
ld c, 10
|
|
predef LinkTextboxAtHL
|
|
hlcoord 5, 11
|
|
ld de, .Waiting
|
|
call PlaceString
|
|
call WaitBGMap
|
|
call WaitBGMap2
|
|
ld c, 50
|
|
jp DelayFrames
|
|
|
|
.Waiting:
|
|
db "WAITING..!@"
|
|
|
|
LinkTradeMenu:
|
|
call .MenuAction
|
|
call .GetJoypad
|
|
ret
|
|
|
|
.GetJoypad:
|
|
push bc
|
|
push af
|
|
ldh a, [hJoyLast]
|
|
and D_PAD
|
|
ld b, a
|
|
ldh a, [hJoyPressed]
|
|
and BUTTONS
|
|
or b
|
|
ld b, a
|
|
pop af
|
|
ld a, b
|
|
pop bc
|
|
ld d, a
|
|
ret
|
|
|
|
.MenuAction:
|
|
ld hl, w2DMenuFlags2
|
|
res 7, [hl]
|
|
ldh a, [hBGMapMode]
|
|
push af
|
|
call .loop
|
|
pop af
|
|
ldh [hBGMapMode], a
|
|
ret
|
|
|
|
.loop
|
|
call .UpdateCursor
|
|
call .UpdateBGMapAndOAM
|
|
call .loop2
|
|
jr nc, .done
|
|
farcall _2DMenuInterpretJoypad
|
|
jr c, .done
|
|
ld a, [w2DMenuFlags1]
|
|
bit 7, a
|
|
jr nz, .done
|
|
call .GetJoypad
|
|
ld b, a
|
|
ld a, [wMenuJoypadFilter]
|
|
and b
|
|
jr z, .loop
|
|
|
|
.done
|
|
ret
|
|
|
|
.UpdateBGMapAndOAM:
|
|
ldh a, [hOAMUpdate]
|
|
push af
|
|
ld a, $1
|
|
ldh [hOAMUpdate], a
|
|
call WaitBGMap
|
|
pop af
|
|
ldh [hOAMUpdate], a
|
|
xor a
|
|
ldh [hBGMapMode], a
|
|
ret
|
|
|
|
.loop2
|
|
call RTC
|
|
call .TryAnims
|
|
ret c
|
|
ld a, [w2DMenuFlags1]
|
|
bit 7, a
|
|
jr z, .loop2
|
|
and a
|
|
ret
|
|
|
|
.UpdateCursor:
|
|
ld hl, wCursorCurrentTile
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [hl]
|
|
cp $1f
|
|
jr nz, .not_currently_selected
|
|
ld a, [wCursorOffCharacter]
|
|
ld [hl], a
|
|
push hl
|
|
push bc
|
|
ld bc, MON_NAME_LENGTH
|
|
add hl, bc
|
|
ld [hl], a
|
|
pop bc
|
|
pop hl
|
|
|
|
.not_currently_selected
|
|
ld a, [w2DMenuCursorInitY]
|
|
ld b, a
|
|
ld a, [w2DMenuCursorInitX]
|
|
ld c, a
|
|
call Coord2Tile
|
|
ld a, [w2DMenuCursorOffsets]
|
|
swap a
|
|
and $f
|
|
ld c, a
|
|
ld a, [wMenuCursorY]
|
|
ld b, a
|
|
xor a
|
|
dec b
|
|
jr z, .skip
|
|
.loop3
|
|
add c
|
|
dec b
|
|
jr nz, .loop3
|
|
|
|
.skip
|
|
ld c, SCREEN_WIDTH
|
|
call AddNTimes
|
|
ld a, [w2DMenuCursorOffsets]
|
|
and $f
|
|
ld c, a
|
|
ld a, [wMenuCursorX]
|
|
ld b, a
|
|
xor a
|
|
dec b
|
|
jr z, .skip2
|
|
.loop4
|
|
add c
|
|
dec b
|
|
jr nz, .loop4
|
|
|
|
.skip2
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
cp $1f
|
|
jr z, .cursor_already_there
|
|
ld [wCursorOffCharacter], a
|
|
ld [hl], $1f
|
|
push hl
|
|
push bc
|
|
ld bc, MON_NAME_LENGTH
|
|
add hl, bc
|
|
ld [hl], $1f
|
|
pop bc
|
|
pop hl
|
|
.cursor_already_there
|
|
ld a, l
|
|
ld [wCursorCurrentTile], a
|
|
ld a, h
|
|
ld [wCursorCurrentTile + 1], a
|
|
ret
|
|
|
|
.TryAnims:
|
|
ld a, [w2DMenuFlags1]
|
|
bit 6, a
|
|
jr z, .skip_anims
|
|
farcall PlaySpriteAnimationsAndDelayFrame
|
|
.skip_anims
|
|
call JoyTextDelay
|
|
call .GetJoypad
|
|
and a
|
|
ret z
|
|
scf
|
|
ret
|