mirror of
https://github.com/pret/pokered.git
synced 2024-10-24 15:27:10 +00:00
bd533aa79b
Using 'Coord =' doesn't like using wTileMap So use hlCoord, deCoord, bcCoord, aCoord, Coorda, or dwCoord to avoid static addresses
950 lines
14 KiB
NASM
Executable file
950 lines
14 KiB
NASM
Executable file
Func_5317: ; 5317 (1:5317)
|
|
ld c, $50
|
|
call DelayFrames
|
|
call ClearScreen
|
|
call UpdateSprites
|
|
call LoadFontTilePatterns
|
|
call LoadHpBarAndStatusTilePatterns
|
|
call LoadTrainerInfoTextBoxTiles
|
|
hlCoord 3, 8
|
|
ld b, $2
|
|
ld c, $c
|
|
call Func_5ab3
|
|
hlCoord 4, 10
|
|
ld de, PleaseWaitString ; $550f
|
|
call PlaceString
|
|
ld hl, W_NUMHITS ; wd074
|
|
xor a
|
|
ld [hli], a
|
|
ld [hl], $50
|
|
|
|
Func_5345: ; 5345
|
|
ld hl, wd152
|
|
ld a, $fd
|
|
ld b, $6
|
|
.asm_534c
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_534c
|
|
ld hl, wd141
|
|
ld a, $fd
|
|
ld b, $7
|
|
.asm_5357
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_5357
|
|
ld b, $a
|
|
.asm_535d
|
|
call Random
|
|
cp $fd
|
|
jr nc, .asm_535d
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_535d
|
|
ld hl, wTileMapBackup
|
|
ld a, $fd
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld b, $c8
|
|
xor a
|
|
.asm_5373
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .asm_5373
|
|
ld hl, W_GRASSRATE ; W_GRASSRATE
|
|
ld bc, $1a9
|
|
.asm_537d
|
|
xor a
|
|
ld [hli], a
|
|
dec bc
|
|
ld a, b
|
|
or c
|
|
jr nz, .asm_537d
|
|
ld hl, wPartyMons - 1
|
|
ld de, wTileMapBackup + 10
|
|
ld bc, $0
|
|
.asm_538d
|
|
inc c
|
|
ld a, c
|
|
cp $fd
|
|
jr z, .asm_53a9
|
|
ld a, b
|
|
dec a
|
|
jr nz, .asm_539c
|
|
ld a, c
|
|
cp $d
|
|
jr z, .asm_53b2
|
|
.asm_539c
|
|
inc hl
|
|
ld a, [hl]
|
|
cp $fe
|
|
jr nz, .asm_538d
|
|
ld a, c
|
|
ld [de], a
|
|
inc de
|
|
ld [hl], $ff
|
|
jr .asm_538d
|
|
.asm_53a9
|
|
ld a, $ff
|
|
ld [de], a
|
|
inc de
|
|
ld bc, $100
|
|
jr .asm_538d
|
|
.asm_53b2
|
|
ld a, $ff
|
|
ld [de], a
|
|
call Func_227f
|
|
ld a, [$ffaa]
|
|
cp $2
|
|
jr nz, .asm_53d2
|
|
call Delay3
|
|
xor a
|
|
ld [$ffac], a
|
|
ld a, $81
|
|
ld [$ff02], a
|
|
call DelayFrame
|
|
xor a
|
|
ld [$ffac], a
|
|
ld a, $81
|
|
ld [$ff02], a
|
|
.asm_53d2
|
|
call Delay3
|
|
ld a, $8
|
|
ld [rIE], a ; $ffff
|
|
ld hl, wd141
|
|
ld de, wTileMapBackup2
|
|
ld bc, $11
|
|
call Func_216f
|
|
ld a, $fe
|
|
ld [de], a
|
|
ld hl, wd152
|
|
ld de, wd893
|
|
ld bc, $1a8
|
|
call Func_216f
|
|
ld a, $fe
|
|
ld [de], a
|
|
ld hl, wTileMapBackup
|
|
ld de, wTileMapBackup + 200
|
|
ld bc, $c8
|
|
call Func_216f
|
|
ld a, $d
|
|
ld [rIE], a ; $ffff
|
|
ld a, $ff
|
|
call PlaySound
|
|
ld a, [$ffaa]
|
|
cp $2
|
|
jr z, .asm_5431
|
|
ld hl, wTileMapBackup2
|
|
.asm_5415
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_5415
|
|
cp $fd
|
|
jr z, .asm_5415
|
|
cp $fe
|
|
jr z, .asm_5415
|
|
dec hl
|
|
ld de, wd148
|
|
ld c, $a
|
|
.asm_5427
|
|
ld a, [hli]
|
|
cp $fe
|
|
jr z, .asm_5427
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .asm_5427
|
|
.asm_5431
|
|
ld hl, wd896
|
|
.asm_5434
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_5434
|
|
cp $fd
|
|
jr z, .asm_5434
|
|
cp $fe
|
|
jr z, .asm_5434
|
|
dec hl
|
|
ld de, W_GRASSRATE ; W_GRASSRATE
|
|
ld c, $b
|
|
.asm_5446
|
|
ld a, [hli]
|
|
cp $fe
|
|
jr z, .asm_5446
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .asm_5446
|
|
ld de, wEnemyPartyCount ; wEnemyPartyCount
|
|
ld bc, $194
|
|
.asm_5456
|
|
ld a, [hli]
|
|
cp $fe
|
|
jr z, .asm_5456
|
|
ld [de], a
|
|
inc de
|
|
dec bc
|
|
ld a, b
|
|
or c
|
|
jr nz, .asm_5456
|
|
ld de, wTileMapBackup
|
|
ld hl, wPartyMons
|
|
ld c, $2
|
|
.asm_546a
|
|
ld a, [de]
|
|
inc de
|
|
and a
|
|
jr z, .asm_546a
|
|
cp $fd
|
|
jr z, .asm_546a
|
|
cp $fe
|
|
jr z, .asm_546a
|
|
cp $ff
|
|
jr z, .asm_5489
|
|
push hl
|
|
push bc
|
|
ld b, 0
|
|
dec a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, $fe
|
|
ld [hl], a
|
|
pop bc
|
|
pop hl
|
|
jr .asm_546a
|
|
.asm_5489
|
|
ld hl, wPartyMons + $fc ; wd267
|
|
dec c
|
|
jr nz, .asm_546a
|
|
ld de, wTileMapBackup + 200
|
|
ld hl, wEnemyMons
|
|
ld c, $2
|
|
.asm_5497
|
|
ld a, [de]
|
|
inc de
|
|
and a
|
|
jr z, .asm_5497
|
|
cp $fd
|
|
jr z, .asm_5497
|
|
cp $fe
|
|
jr z, .asm_5497
|
|
cp $ff
|
|
jr z, .asm_54b6
|
|
push hl
|
|
push bc
|
|
ld b, $0
|
|
dec a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, $fe
|
|
ld [hl], a
|
|
pop bc
|
|
pop hl
|
|
jr .asm_5497
|
|
.asm_54b6
|
|
ld hl, wEnemyMons + $fc
|
|
dec c
|
|
jr nz, .asm_5497
|
|
ld a, $ac
|
|
ld [wcf8d], a
|
|
ld a, $d9
|
|
ld [wcf8e], a
|
|
xor a
|
|
ld [wcc38], a
|
|
ld a, $ff
|
|
call PlaySound
|
|
ld a, [$ffaa]
|
|
cp $2
|
|
ld c, $42
|
|
call z, DelayFrames
|
|
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
|
|
cp $3
|
|
ld a, $32
|
|
ld [W_ISLINKBATTLE], a ; W_ISLINKBATTLE
|
|
jr nz, .asm_5506
|
|
ld a, $4
|
|
ld [W_ISLINKBATTLE], a ; W_ISLINKBATTLE
|
|
ld a, SONY1 + $c8
|
|
ld [W_CUROPPONENT], a ; wd059
|
|
call ClearScreen
|
|
call Delay3
|
|
ld hl, W_OPTIONS ; W_OPTIONS
|
|
res 7, [hl]
|
|
predef InitOpponent
|
|
predef HealParty
|
|
jp Func_577d
|
|
.asm_5506
|
|
ld c, BANK(Music_GameCorner)
|
|
ld a, MUSIC_GAME_CORNER
|
|
call PlayMusic
|
|
jr Func_551c
|
|
|
|
PleaseWaitString: ; 550f (1:550f)
|
|
db "PLEASE WAIT!@"
|
|
|
|
Func_551c:
|
|
ld hl, PointerTable_5a5b ; $5a5b
|
|
ld b, $0
|
|
ld a, [wcc38]
|
|
cp $ff
|
|
jp z, LoadTitlescreenGraphics
|
|
add a
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp [hl]
|
|
|
|
TradeCenter_SelectMon:
|
|
call ClearScreen
|
|
call LoadTrainerInfoTextBoxTiles
|
|
call Func_57f2
|
|
call Func_57a2
|
|
xor a
|
|
ld hl, wcc3d
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld [wcc37], a
|
|
ld [wCurrentMenuItem], a
|
|
ld [wLastMenuItem], a
|
|
ld [wMenuJoypadPollCount], a
|
|
inc a
|
|
ld [wcc42], a
|
|
jp .asm_55dc
|
|
.asm_5557
|
|
xor a
|
|
ld [wcc37], a
|
|
inc a
|
|
ld [wcc49], a
|
|
ld a, $a1
|
|
ld [wMenuWatchedKeys], a
|
|
ld a, [wEnemyPartyCount]
|
|
ld [wMaxMenuItem], a
|
|
ld a, $9
|
|
ld [wTopMenuItemY], a
|
|
ld a, $1
|
|
ld [wTopMenuItemX], a
|
|
.asm_5574
|
|
ld hl, $fff6
|
|
set 1, [hl]
|
|
call HandleMenuInput
|
|
ld hl, $fff6
|
|
res 1, [hl]
|
|
and a
|
|
jp z, .asm_565b
|
|
bit 0, a
|
|
jr z, .asm_55b0 ; 0x5587 $27
|
|
ld a, [wMaxMenuItem]
|
|
ld c, a
|
|
ld a, [wCurrentMenuItem]
|
|
cp c
|
|
jr c, .asm_559a ; 0x5591 $7
|
|
ld a, [wMaxMenuItem]
|
|
dec a
|
|
ld [wCurrentMenuItem], a
|
|
.asm_559a
|
|
ld a, $1
|
|
ld [wd11b], a
|
|
callab Func_39bd5
|
|
ld hl, wEnemyMons
|
|
call Func_57d6
|
|
jp .asm_565b
|
|
.asm_55b0
|
|
bit 5, a
|
|
jr z, .asm_55d4 ; 0x55b2 $20
|
|
xor a
|
|
ld [wcc49], a
|
|
ld a, [wMenuCursorLocation]
|
|
ld l, a
|
|
ld a, [wMenuCursorLocation + 1]
|
|
ld h, a
|
|
ld a, [wTileBehindCursor]
|
|
ld [hl], a
|
|
ld a, [wCurrentMenuItem]
|
|
ld b, a
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
cp b
|
|
jr nc, .asm_55dc ; 0x55cd $d
|
|
ld [wCurrentMenuItem], a
|
|
jr .asm_55dc ; 0x55d2 $8
|
|
.asm_55d4
|
|
bit 7, a
|
|
jp z, .asm_565b
|
|
jp .asm_572f
|
|
.asm_55dc
|
|
xor a
|
|
ld [wcc49], a
|
|
ld [wcc37], a
|
|
ld a, $91
|
|
ld [wMenuWatchedKeys], a
|
|
ld a, [wPartyCount]
|
|
ld [wMaxMenuItem], a
|
|
ld a, $1
|
|
ld [wTopMenuItemY], a
|
|
ld a, $1
|
|
ld [wTopMenuItemX], a
|
|
ld hl, wTileMap + $15
|
|
ld bc, $0601
|
|
call ClearScreenArea
|
|
.asm_5601
|
|
ld hl, $fff6
|
|
set 1, [hl]
|
|
call HandleMenuInput
|
|
ld hl, $fff6
|
|
res 1, [hl]
|
|
and a
|
|
jr nz, .asm_5614 ; 0x560f $3
|
|
jp .asm_565b
|
|
.asm_5614
|
|
bit 0, a
|
|
jr z, .asm_562e ; 0x5616 $16
|
|
jp .asm_5665
|
|
ld a, $4
|
|
ld [wd11b], a
|
|
callab Func_39bd5
|
|
call Func_57d6
|
|
jp .asm_565b
|
|
.asm_562e
|
|
bit 4, a
|
|
jr z, .asm_5654 ; 0x5630 $22
|
|
ld a, $1
|
|
ld [wcc49], a
|
|
ld a, [wMenuCursorLocation]
|
|
ld l, a
|
|
ld a, [wMenuCursorLocation + 1]
|
|
ld h, a
|
|
ld a, [wTileBehindCursor]
|
|
ld [hl], a
|
|
ld a, [wCurrentMenuItem]
|
|
ld b, a
|
|
ld a, [wEnemyPartyCount]
|
|
dec a
|
|
cp b
|
|
jr nc, .asm_5651 ; 0x564c $3
|
|
ld [wCurrentMenuItem], a
|
|
.asm_5651
|
|
jp .asm_5557
|
|
.asm_5654
|
|
bit 7, a
|
|
jr z, .asm_565b ; 0x5656 $3
|
|
jp .asm_572f
|
|
.asm_565b
|
|
ld a, [wcc49]
|
|
and a
|
|
jp z, .asm_5601
|
|
jp .asm_5574
|
|
.asm_5665
|
|
call SaveScreenTilesToBuffer1
|
|
call PlaceUnfilledArrowMenuCursor
|
|
ld a, [wMaxMenuItem]
|
|
ld c, a
|
|
ld a, [wCurrentMenuItem]
|
|
cp c
|
|
jr c, .asm_5679 ; 0x5673 $4
|
|
ld a, [wMaxMenuItem]
|
|
dec a
|
|
.asm_5679
|
|
push af
|
|
ld hl, wTileMap + $118
|
|
ld b, $2
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $142
|
|
ld de, .statsTrade
|
|
call PlaceString
|
|
xor a
|
|
ld [wCurrentMenuItem], a
|
|
ld [wLastMenuItem], a
|
|
ld [wMenuJoypadPollCount], a
|
|
ld [wMaxMenuItem], a
|
|
ld a, $10
|
|
ld [wTopMenuItemY], a
|
|
.asm_569f
|
|
ld a, $7f
|
|
ld [wTileMap + $14b], a
|
|
ld a, $13
|
|
ld [wMenuWatchedKeys], a
|
|
ld a, $1
|
|
ld [wTopMenuItemX], a
|
|
call HandleMenuInput
|
|
bit 4, a
|
|
jr nz, .asm_56c3 ; 0x56b3 $e
|
|
bit 1, a
|
|
jr z, .asm_56df ; 0x56b7 $26
|
|
.asm_56b9
|
|
pop af
|
|
ld [wCurrentMenuItem], a
|
|
call LoadScreenTilesFromBuffer1
|
|
jp .asm_55dc
|
|
.asm_56c3
|
|
ld a, $7f
|
|
ld [wTileMap + $141], a
|
|
ld a, $23
|
|
ld [wMenuWatchedKeys], a
|
|
ld a, $b
|
|
ld [wTopMenuItemX], a
|
|
call HandleMenuInput
|
|
bit 5, a
|
|
jr nz, .asm_569f ; 0x56d7 $c6
|
|
bit 1, a
|
|
jr nz, .asm_56b9 ; 0x56db $dc
|
|
jr .asm_56f9 ; 0x56dd $1a
|
|
.asm_56df
|
|
pop af
|
|
ld [wCurrentMenuItem], a
|
|
ld a, $4
|
|
ld [wd11b], a
|
|
callab Func_39bd5
|
|
call Func_57d6
|
|
call LoadScreenTilesFromBuffer1
|
|
jp .asm_55dc
|
|
.asm_56f9
|
|
call PlaceUnfilledArrowMenuCursor
|
|
pop af
|
|
ld [wCurrentMenuItem], a
|
|
ld [wWhichTrade], a
|
|
ld [wcc42], a
|
|
call Func_226e
|
|
ld a, [wcc3d]
|
|
cp $f
|
|
jp z, Func_551c
|
|
ld [wTrainerEngageDistance], a
|
|
call Func_57c7
|
|
ld a, $1
|
|
ld [wcc38], a
|
|
jp Func_551c
|
|
.statsTrade
|
|
db "STATS TRADE@"
|
|
.asm_572f
|
|
ld a, [wCurrentMenuItem]
|
|
ld b, a
|
|
ld a, [wMaxMenuItem]
|
|
cp b
|
|
jp nz, .asm_565b
|
|
ld a, [wMenuCursorLocation]
|
|
ld l, a
|
|
ld a, [wMenuCursorLocation + 1]
|
|
ld h, a
|
|
ld a, $7f
|
|
ld [hl], a
|
|
.asm_5745
|
|
ld a, $ed
|
|
ld [wTileMap + $141], a
|
|
.asm_574a
|
|
call JoypadLowSensitivity
|
|
ld a, [$ffb5]
|
|
and a
|
|
jr z, .asm_574a ; 0x5750 $f8
|
|
bit 0, a
|
|
jr nz, .asm_5769 ; 0x5754 $13
|
|
bit 6, a
|
|
jr z, .asm_574a ; 0x5758 $f0
|
|
ld a, $7f
|
|
ld [wTileMap + $141], a
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
ld [wCurrentMenuItem], a
|
|
jp .asm_55dc
|
|
.asm_5769
|
|
ld a, $ec
|
|
ld [wTileMap + $141], a
|
|
ld a, $f
|
|
ld [wcc42], a
|
|
call Func_226e
|
|
ld a, [wcc3d]
|
|
cp $f
|
|
jr nz, .asm_5745 ; 0x577b $c8
|
|
|
|
Func_577d: ; 577d (1:577d)
|
|
call GBPalWhiteOutWithDelay3
|
|
ld hl, wcfc4
|
|
ld a, [hl]
|
|
push af
|
|
push hl
|
|
res 0, [hl]
|
|
xor a
|
|
ld [wd72d], a
|
|
dec a
|
|
ld [wd42f], a
|
|
call LoadMapData
|
|
callba Func_c335
|
|
pop hl
|
|
pop af
|
|
ld [hl], a
|
|
call GBFadeIn2
|
|
ret
|
|
|
|
Func_57a2:
|
|
ld hl, wTileMap + $137
|
|
ld a, $7e
|
|
ld bc, $0031
|
|
call FillMemory
|
|
ld hl, wTileMap + $12c
|
|
ld b, $1
|
|
ld c, $9
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $142
|
|
ld de, CancelTextString
|
|
jp PlaceString
|
|
|
|
CancelTextString:
|
|
db "CANCEL@"
|
|
|
|
Func_57c7:
|
|
ld a, [wcc3d]
|
|
ld hl, wTileMap + $b5
|
|
ld bc, $0014
|
|
call AddNTimes
|
|
ld [hl], $ec
|
|
ret
|
|
|
|
Func_57d6:
|
|
ld a, [wCurrentMenuItem]
|
|
ld [wWhichPokemon], a
|
|
predef StatusScreen
|
|
predef StatusScreen2
|
|
call GBPalNormal
|
|
call LoadTrainerInfoTextBoxTiles
|
|
call Func_57f2
|
|
jp Func_57a2
|
|
|
|
Func_57f2:
|
|
ld hl, wTileMap
|
|
ld b, $6
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $a0
|
|
ld b, $6
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $5
|
|
ld de, wPlayerName
|
|
call PlaceString
|
|
ld hl, wTileMap + $a5
|
|
ld de, W_GRASSRATE
|
|
call PlaceString
|
|
ld hl, wTileMap + $16
|
|
ld de, wPartySpecies
|
|
call Func_5827
|
|
ld hl, wTileMap + $b6
|
|
ld de, wEnemyPartyMons
|
|
|
|
Func_5827:
|
|
ld c, $0
|
|
.asm_5829
|
|
ld a, [de]
|
|
cp $ff
|
|
ret z
|
|
ld [wd11e], a
|
|
push bc
|
|
push hl
|
|
push de
|
|
push hl
|
|
ld a, c
|
|
ld [$ff95], a
|
|
call GetMonName
|
|
pop hl
|
|
call PlaceString
|
|
pop de
|
|
inc de
|
|
pop hl
|
|
ld bc, $0014
|
|
add hl, bc
|
|
pop bc
|
|
inc c
|
|
jr .asm_5829 ; 0x5847 $e0
|
|
|
|
TradeCenter_Trade:
|
|
ld c, $64
|
|
call DelayFrames
|
|
xor a
|
|
ld [wcc43], a
|
|
ld [wcc3e], a
|
|
ld [wcc37], a
|
|
ld [wMenuJoypadPollCount], a
|
|
ld hl, wTileMap + $f0
|
|
ld b, $4
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld a, [wWhichTrade]
|
|
ld hl, wPartySpecies
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
ld hl, wcd6d
|
|
ld de, wTrainerFacingDirection
|
|
ld bc, $000b
|
|
call CopyData
|
|
ld a, [wTrainerEngageDistance]
|
|
ld hl, wEnemyPartyMons
|
|
ld c, a
|
|
ld b, $0
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
ld hl, WillBeTradedText
|
|
ld bc, wTileMap + $119
|
|
call TextCommandProcessor
|
|
call SaveScreenTilesToBuffer1
|
|
ld hl, wTileMap + $96
|
|
ld bc, $080b
|
|
ld a, $5
|
|
ld [wd12c], a
|
|
ld a, $14
|
|
ld [wd125], a
|
|
call DisplayTextBoxID
|
|
call LoadScreenTilesFromBuffer1
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr z, .asm_58d9 ; 0x58b9 $1e
|
|
ld a, $1
|
|
ld [wcc42], a
|
|
ld hl, wTileMap + $f0
|
|
ld b, $4
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $119
|
|
ld de, TradeCanceled
|
|
call PlaceString
|
|
call Func_226e
|
|
jp Func_5a18
|
|
.asm_58d9
|
|
ld a, $2
|
|
ld [wcc42], a
|
|
call Func_226e
|
|
ld a, [wcc3d]
|
|
dec a
|
|
jr nz, .asm_58fd ; 0x58e5 $16
|
|
ld hl, wTileMap + $f0
|
|
ld b, $4
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $119
|
|
ld de, TradeCanceled
|
|
call PlaceString
|
|
jp Func_5a18
|
|
.asm_58fd
|
|
ld a, [wWhichTrade]
|
|
ld hl, wPartyMonOT ; OT names of player
|
|
call SkipFixedLengthTextEntries
|
|
ld de, wTrainerScreenX
|
|
ld bc, $000b
|
|
call CopyData
|
|
ld hl, wPartyMon1Species
|
|
ld a, [wWhichTrade]
|
|
ld bc, $002c
|
|
call AddNTimes
|
|
ld bc, $000c
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [wcd4c], a
|
|
ld a, [hl]
|
|
ld [wcd4d], a
|
|
ld a, [wTrainerEngageDistance]
|
|
ld hl, wEnemyMonOT ; OT names of other player
|
|
call SkipFixedLengthTextEntries
|
|
ld de, wcd4e
|
|
ld bc, $000b
|
|
call CopyData
|
|
ld hl, wEnemyMons
|
|
ld a, [wTrainerEngageDistance]
|
|
ld bc, $002c
|
|
call AddNTimes
|
|
ld bc, $000c
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [wcd59], a
|
|
ld a, [hl]
|
|
ld [wcd5a], a
|
|
ld a, [wWhichTrade]
|
|
ld [wWhichPokemon], a
|
|
ld hl, wPartySpecies
|
|
ld b, $0
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wWhichTrade], a
|
|
xor a
|
|
ld [wcf95], a
|
|
call RemovePokemon
|
|
ld a, [wTrainerEngageDistance]
|
|
ld c, a
|
|
ld [wWhichPokemon], a
|
|
ld hl, wEnemyPartyMons
|
|
ld d, $0
|
|
ld e, a
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld [wcf91], a
|
|
ld hl, wEnemyMons
|
|
ld a, c
|
|
ld bc, $002c
|
|
call AddNTimes
|
|
ld de, wcf98
|
|
ld bc, $002c
|
|
call CopyData
|
|
call AddEnemyMonToPlayerParty
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
ld [wWhichPokemon], a
|
|
ld a, $1
|
|
ld [wccd4], a
|
|
ld a, [wTrainerEngageDistance]
|
|
ld hl, wEnemyPartyMons
|
|
ld b, $0
|
|
ld c, a
|
|
add hl, bc
|
|
ld a, [hl]
|
|
ld [wTrainerEngageDistance], a
|
|
ld a, $a
|
|
ld [wMusicHeaderPointer], a
|
|
ld a, $2
|
|
ld [wc0f0], a
|
|
ld a, MUSIC_SAFARI_ZONE
|
|
ld [wc0ee], a
|
|
call PlaySound
|
|
ld c, $64
|
|
call DelayFrames
|
|
call ClearScreen
|
|
call LoadHpBarAndStatusTilePatterns
|
|
xor a
|
|
ld [wcc5b], a
|
|
ld a, [$ffaa]
|
|
cp $1
|
|
jr z, .asm_59d9 ; 0x59d0 $7
|
|
predef Func_410e2
|
|
jr .asm_59de ; 0x59d7 $5
|
|
.asm_59d9
|
|
predef Func_410f3
|
|
.asm_59de
|
|
callab Func_3ad0e
|
|
call ClearScreen
|
|
call LoadTrainerInfoTextBoxTiles
|
|
call Func_226e
|
|
ld c, $28
|
|
call DelayFrames
|
|
ld hl, wTileMap + $f0
|
|
ld b, $4
|
|
ld c, $12
|
|
call Func_5ab3
|
|
ld hl, wTileMap + $119
|
|
ld de, TradeCompleted
|
|
call PlaceString
|
|
predef SaveSAVtoSRAM2
|
|
ld c, $32
|
|
call DelayFrames
|
|
xor a
|
|
ld [wcc38], a
|
|
jp Func_5345
|
|
|
|
Func_5a18:
|
|
ld c, $64
|
|
call DelayFrames
|
|
xor a
|
|
ld [wcc38], a
|
|
jp Func_551c
|
|
|
|
WillBeTradedText: ; 5a24 (1:5a24)
|
|
TX_FAR _WillBeTradedText
|
|
db "@"
|
|
|
|
TradeCompleted:
|
|
db "Trade completed!@"
|
|
|
|
TradeCanceled:
|
|
db "Too bad! The trade"
|
|
next "was canceled!@"
|
|
|
|
PointerTable_5a5b: ; 5a5b (1:5a5b)
|
|
dw TradeCenter_SelectMon
|
|
dw TradeCenter_Trade
|
|
|
|
Func_5a5f: ; 5a5f (1:5a5f)
|
|
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
|
|
cp $2
|
|
jr z, .asm_5a75
|
|
cp $3
|
|
jr z, .asm_5a75
|
|
cp $5
|
|
ret nz
|
|
predef Func_5aaf
|
|
jp Init
|
|
.asm_5a75
|
|
call Func_5317
|
|
ld hl, Club_GFX
|
|
ld a, h
|
|
ld [W_TILESETGFXPTR + 1], a
|
|
ld a, l
|
|
ld [W_TILESETGFXPTR], a
|
|
ld a, Bank(Club_GFX)
|
|
ld [W_TILESETBANK], a
|
|
ld hl, Club_Coll
|
|
ld a, h
|
|
ld [W_TILESETCOLLISIONPTR + 1], a
|
|
ld a, l
|
|
ld [W_TILESETCOLLISIONPTR], a
|
|
xor a
|
|
ld [W_GRASSRATE], a ; W_GRASSRATE
|
|
inc a
|
|
ld [W_ISLINKBATTLE], a ; W_ISLINKBATTLE
|
|
ld [$ffb5], a
|
|
ld a, $a
|
|
ld [wMusicHeaderPointer], a
|
|
ld a, BANK(Music_Celadon)
|
|
ld [wc0f0], a
|
|
ld a, MUSIC_CELADON
|
|
ld [wc0ee], a
|
|
jp PlaySound
|
|
|
|
Func_5aaf: ; 5aaf (1:5aaf)
|
|
ret
|
|
|
|
Func_5ab0:
|
|
call GetPredefRegisters
|
|
|
|
Func_5ab3: ; 5ab3 (1:5ab3)
|
|
push hl
|
|
ld a, $78
|
|
ld [hli], a
|
|
inc a
|
|
call Func_5ae0
|
|
inc a
|
|
ld [hl], a
|
|
pop hl
|
|
ld de, $14
|
|
add hl, de
|
|
.asm_5ac2
|
|
push hl
|
|
ld a, $7b
|
|
ld [hli], a
|
|
ld a, $7f
|
|
call Func_5ae0
|
|
ld [hl], $77
|
|
pop hl
|
|
ld de, $14
|
|
add hl, de
|
|
dec b
|
|
jr nz, .asm_5ac2
|
|
ld a, $7c
|
|
ld [hli], a
|
|
ld a, $76
|
|
call Func_5ae0
|
|
ld [hl], $7d
|
|
ret
|
|
|
|
Func_5ae0: ; 5ae0 (1:5ae0)
|
|
ld d, c
|
|
.asm_5ae1
|
|
ld [hli], a
|
|
dec d
|
|
jr nz, .asm_5ae1
|
|
ret
|