mirror of
https://github.com/pret/pokeyellow.git
synced 2026-10-01 14:26:36 -04:00
Bank15 misc functions
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
GainExperience: ; 5524f (15:524f)
|
||||
GainExperience: ; 5524f (15:525f)
|
||||
ld a, [wLinkState]
|
||||
cp LINK_STATE_BATTLING
|
||||
ret z ; return if link battle
|
||||
@@ -43,17 +43,17 @@ GainExperience: ; 5524f (15:524f)
|
||||
inc de
|
||||
jr .nextBaseStat
|
||||
.maxStatExp ; if the upper byte also overflowed, then we have hit the max stat exp
|
||||
ld a, $ff
|
||||
dec a ; a is 0 from previous check
|
||||
ld [de], a
|
||||
inc de
|
||||
ld [de], a
|
||||
.nextBaseStat
|
||||
dec c
|
||||
jr z, .asm_552a1
|
||||
jr z, .statExpDone
|
||||
inc de
|
||||
inc de
|
||||
jr .gainStatExpLoop
|
||||
.asm_552a1
|
||||
.statExpDone
|
||||
xor a
|
||||
ld [H_MULTIPLICAND], a
|
||||
ld [H_MULTIPLICAND + 1], a
|
||||
@@ -233,13 +233,19 @@ GainExperience: ; 5524f (15:524f)
|
||||
.recalcStatChanges
|
||||
xor a ; battle mon
|
||||
ld [wCalculateWhoseStats], a
|
||||
callab CalculateModifiedStats
|
||||
callab ApplyBurnAndParalysisPenaltiesToPlayer
|
||||
callab ApplyBadgeStatBoosts
|
||||
callab DrawPlayerHUDAndHPBar
|
||||
callab PrintEmptyString
|
||||
ld hl, CalculateModifiedStats
|
||||
call Bankswitch15ToF
|
||||
ld hl, ApplyBurnAndParalysisPenaltiesToPlayer
|
||||
call Bankswitch15ToF
|
||||
ld hl, ApplyBadgeStatBoosts
|
||||
call Bankswitch15ToF
|
||||
ld hl, DrawPlayerHUDAndHPBar
|
||||
call Bankswitch15ToF
|
||||
ld hl, PrintEmptyString
|
||||
call Bankswitch15ToF
|
||||
call SaveScreenTilesToBuffer1
|
||||
.printGrewLevelText
|
||||
callabd_ModifyPikachuHappiness PIKAHAPPY_LEVELUP
|
||||
ld hl, GrewLevelText
|
||||
call PrintText
|
||||
xor a ; PLAYER_PARTY_DATA
|
||||
@@ -291,7 +297,7 @@ GainExperience: ; 5524f (15:524f)
|
||||
predef_jump FlagActionPredef ; set the fought current enemy flag for the mon that is currently out
|
||||
|
||||
; divide enemy base stats, catch rate, and base exp by the number of mons gaining exp
|
||||
DivideExpDataByNumMonsGainingExp: ; 5546c (15:546c)
|
||||
DivideExpDataByNumMonsGainingExp: ; 5547b (15:547b)
|
||||
ld a, [wPartyGainExpFlags]
|
||||
ld b, a
|
||||
xor a
|
||||
@@ -325,7 +331,7 @@ DivideExpDataByNumMonsGainingExp: ; 5546c (15:546c)
|
||||
ret
|
||||
|
||||
; multiplies exp by 1.5
|
||||
BoostExp: ; 5549f (15:549f)
|
||||
BoostExp: ; 554ae (15:54ae)
|
||||
ld a, [H_QUOTIENT + 2]
|
||||
ld b, a
|
||||
ld a, [H_QUOTIENT + 3]
|
||||
@@ -339,7 +345,11 @@ BoostExp: ; 5549f (15:549f)
|
||||
ld [H_QUOTIENT + 2], a
|
||||
ret
|
||||
|
||||
GainedText: ; 554b2 (15:54b2)
|
||||
Bankswitch15ToF: ; 554c1 (15:54c1)
|
||||
ld b, BANK(BattleCore)
|
||||
jp Bankswitch
|
||||
|
||||
GainedText: ; 554c6 (15:54c6)
|
||||
TX_FAR _GainedText
|
||||
TX_ASM
|
||||
ld a, [wBoostExpByExpAll]
|
||||
@@ -353,20 +363,20 @@ GainedText: ; 554b2 (15:54b2)
|
||||
ld hl, BoostedText
|
||||
ret
|
||||
|
||||
WithExpAllText: ; 554cb (15:54cb)
|
||||
WithExpAllText: ; 554df (15:54df)
|
||||
TX_FAR _WithExpAllText
|
||||
TX_ASM
|
||||
ld hl, ExpPointsText
|
||||
ret
|
||||
|
||||
BoostedText: ; 554d4 (15:54d4)
|
||||
BoostedText: ; 554e8 (15:54e8)
|
||||
TX_FAR _BoostedText
|
||||
|
||||
ExpPointsText: ; 554d8 (15:54d8)
|
||||
ExpPointsText: ; 554ec (15:54ec)
|
||||
TX_FAR _ExpPointsText
|
||||
db "@"
|
||||
|
||||
GrewLevelText: ; 554dd (15:54dd)
|
||||
GrewLevelText: ; 554f1 (15:54f1)
|
||||
TX_FAR _GrewLevelText
|
||||
db $0b
|
||||
db "@"
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
DisplayDiploma: ; 566e2 (15:66e2)
|
||||
call SaveScreenTilesToBuffer2
|
||||
call GBPalWhiteOutWithDelay3
|
||||
call ClearScreen
|
||||
xor a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
ld hl, wd730
|
||||
set 6, [hl]
|
||||
call DisableLCD
|
||||
ld hl, CircleTile
|
||||
ld de, vChars2 + $700
|
||||
ld bc, $0010
|
||||
ld a, BANK(CircleTile)
|
||||
call FarCopyData
|
||||
coord hl, 0, 0
|
||||
lb bc, 16, 18
|
||||
predef Diploma_TextBoxBorder
|
||||
ld hl, DiplomaTextPointersAndCoords
|
||||
ld c, $5
|
||||
.asm_56715
|
||||
push bc
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
push hl
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call PlaceString
|
||||
pop hl
|
||||
inc hl
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .asm_56715
|
||||
coord hl, 10, 4
|
||||
ld de, wPlayerName
|
||||
call PlaceString
|
||||
callba DrawPlayerCharacter
|
||||
|
||||
; Move the player 33 pixels right and set the priority bit so he appears
|
||||
; behind the background layer.
|
||||
ld hl, wOAMBuffer + $01
|
||||
lb bc, $80, $28
|
||||
.adjustPlayerGfxLoop
|
||||
ld a, [hl] ; X
|
||||
add 33
|
||||
ld [hli], a
|
||||
inc hl
|
||||
ld a, b
|
||||
ld [hli], a ; attributes
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .adjustPlayerGfxLoop
|
||||
|
||||
call EnableLCD
|
||||
callba LoadTrainerInfoTextBoxTiles
|
||||
ld b, SET_PAL_GENERIC
|
||||
call RunPaletteCommand
|
||||
call Delay3
|
||||
call GBPalNormal
|
||||
ld a, $90
|
||||
ld [rOBP0], a
|
||||
call WaitForTextScrollButtonPress
|
||||
ld hl, wd730
|
||||
res 6, [hl]
|
||||
call GBPalWhiteOutWithDelay3
|
||||
call RestoreScreenTilesAndReloadTilePatterns
|
||||
call Delay3
|
||||
jp GBPalNormal
|
||||
|
||||
UnusedPlayerNameLengthFunc: ; 56777 (15:6777)
|
||||
; Unused function that does a calculation involving the length of the player's
|
||||
; name.
|
||||
ld hl, wPlayerName
|
||||
ld bc, $ff00
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp "@"
|
||||
ret z
|
||||
dec c
|
||||
jr .loop
|
||||
|
||||
DiplomaTextPointersAndCoords: ; 56784 (15:6784)
|
||||
dw DiplomaText
|
||||
dwCoord 5, 2
|
||||
dw DiplomaPlayer
|
||||
dwCoord 3, 4
|
||||
dw DiplomaEmptyText
|
||||
dwCoord 15, 4
|
||||
dw DiplomaCongrats
|
||||
dwCoord 2, 6
|
||||
dw DiplomaGameFreak
|
||||
dwCoord 9, 16
|
||||
|
||||
DiplomaText:
|
||||
db $70,"Diploma",$70,"@"
|
||||
|
||||
DiplomaPlayer:
|
||||
db "Player@"
|
||||
|
||||
DiplomaEmptyText:
|
||||
db "@"
|
||||
|
||||
DiplomaCongrats:
|
||||
db "Congrats! This"
|
||||
next "diploma certifies"
|
||||
next "that you have"
|
||||
next "completed your"
|
||||
next "#DEX.@"
|
||||
|
||||
DiplomaGameFreak:
|
||||
db "GAME FREAK@"
|
||||
@@ -0,0 +1,17 @@
|
||||
DisplayDiploma: ; 56714 (15:6714)
|
||||
call SaveScreenTilesToBuffer2
|
||||
call GBPalWhiteOutWithDelay3
|
||||
call ClearScreen
|
||||
xor a
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
ld hl, wd730
|
||||
set 6, [hl]
|
||||
callab _DisplayDiploma
|
||||
call WaitForTextScrollButtonPress
|
||||
ld hl, wd730
|
||||
res 6, [hl]
|
||||
call GBPalWhiteOutWithDelay3
|
||||
call ReloadTilesetTilePatterns
|
||||
call RestoreScreenTilesAndReloadTilePatterns
|
||||
call Delay3
|
||||
jp GBPalNormal
|
||||
@@ -1,23 +1,23 @@
|
||||
_GetSpritePosition1: ; 567f9 (15:67f9)
|
||||
_GetSpritePosition1: ; 56745 (15:6745)
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld a, [wSpriteIndex]
|
||||
ld [H_SPRITEINDEX], a
|
||||
call GetSpriteDataPointer
|
||||
ld a, [hli]
|
||||
ld a, [hli] ; c1x4 (screen Y pos)
|
||||
ld [$ffeb], a
|
||||
inc hl
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; c1x6 (screen X pos)
|
||||
ld [$ffec], a
|
||||
ld de, $fe
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld a, [hli] ; c2x4 (map Y pos)
|
||||
ld [$ffed], a
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; c2x5 (map X pos)
|
||||
ld [$ffee], a
|
||||
ret
|
||||
|
||||
_GetSpritePosition2: ; 56819 (15:6819)
|
||||
_GetSpritePosition2: ; 56765 (15:6765)
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld a, [wSpriteIndex]
|
||||
@@ -28,7 +28,7 @@ _GetSpritePosition2: ; 56819 (15:6819)
|
||||
inc hl
|
||||
ld a, [hl] ; c1x6 (screen X pos)
|
||||
ld [wSavedSpriteScreenX], a
|
||||
ld de, $104 - $6
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [hli] ; c2x4 (map Y pos)
|
||||
ld [wSavedSpriteMapY], a
|
||||
@@ -36,7 +36,7 @@ _GetSpritePosition2: ; 56819 (15:6819)
|
||||
ld [wSavedSpriteMapX], a
|
||||
ret
|
||||
|
||||
_SetSpritePosition1: ; 5683d (15:683d)
|
||||
_SetSpritePosition1: ; 56789 (15:6789)
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld a, [wSpriteIndex]
|
||||
@@ -47,7 +47,7 @@ _SetSpritePosition1: ; 5683d (15:683d)
|
||||
inc hl
|
||||
ld a, [$ffec] ; c1x6 (screen X pos)
|
||||
ld [hl], a
|
||||
ld de, $104 - $6
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [$ffed] ; c2x4 (map Y pos)
|
||||
ld [hli], a
|
||||
@@ -55,36 +55,36 @@ _SetSpritePosition1: ; 5683d (15:683d)
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
_SetSpritePosition2: ; 5685d (15:685d)
|
||||
_SetSpritePosition2: ; 567a9 (15:67a9)
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $0004
|
||||
ld de, $4
|
||||
ld a, [wSpriteIndex]
|
||||
ld [H_SPRITEINDEX], a
|
||||
call GetSpriteDataPointer
|
||||
ld a, [wSavedSpriteScreenY]
|
||||
ld [hli], a
|
||||
ld [hli], a ; c1x4 (screen Y pos)
|
||||
inc hl
|
||||
ld a, [wSavedSpriteScreenX]
|
||||
ld [hl], a
|
||||
ld de, $00fe
|
||||
ld [hl], a ; c1x6 (screen X pos)
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [wSavedSpriteMapY]
|
||||
ld [hli], a
|
||||
ld [hli], a ; c2x4 (map Y pos)
|
||||
ld a, [wSavedSpriteMapX]
|
||||
ld [hl], a
|
||||
ld [hl], a ; c2x5 (map X pos)
|
||||
ret
|
||||
|
||||
TrainerWalkUpToPlayer: ; 56881 (15:6881)
|
||||
TrainerWalkUpToPlayer: ; 567cd (15:67cd)
|
||||
ld a, [wSpriteIndex]
|
||||
swap a
|
||||
ld [wTrainerSpriteOffset], a
|
||||
call ReadTrainerScreenPosition
|
||||
ld a, [wTrainerFacingDirection]
|
||||
and a
|
||||
and a ; SPRITE_FACING_DOWN
|
||||
jr z, .facingDown
|
||||
cp $4
|
||||
cp SPRITE_FACING_UP
|
||||
jr z, .facingUp
|
||||
cp $8
|
||||
cp SPRITE_FACING_LEFT
|
||||
jr z, .facingLeft
|
||||
jr .facingRight
|
||||
.facingDown
|
||||
@@ -148,8 +148,8 @@ TrainerWalkUpToPlayer: ; 56881 (15:6881)
|
||||
jp MoveSprite_
|
||||
|
||||
; input: de = offset within sprite entry
|
||||
; output: de = pointer to sprite data
|
||||
GetSpriteDataPointer: ; 56903 (15:6903)
|
||||
; output: hl = pointer to sprite data
|
||||
GetSpriteDataPointer: ; 5684f (15:684f)
|
||||
push de
|
||||
add hl, de
|
||||
ld a, [H_SPRITEINDEX]
|
||||
@@ -161,7 +161,7 @@ GetSpriteDataPointer: ; 56903 (15:6903)
|
||||
ret
|
||||
|
||||
; tests if this trainer is in the right position to engage the player and do so if she is.
|
||||
TrainerEngage: ; 5690f (15:690f)
|
||||
TrainerEngage: ; 5685b (15:685b)
|
||||
push hl
|
||||
push de
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
@@ -225,21 +225,21 @@ TrainerEngage: ; 5690f (15:690f)
|
||||
set 0, [hl]
|
||||
call EngageMapTrainer
|
||||
ld a, $ff
|
||||
.noEngage: ; 56988 (15:6988)
|
||||
.noEngage
|
||||
ld [wTrainerSpriteOffset], a
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
|
||||
; reads trainer's Y position to wTrainerScreenY and X position to wTrainerScreenX
|
||||
ReadTrainerScreenPosition: ; 5698e (15:698e)
|
||||
ReadTrainerScreenPosition: ; 568da (15:68da)
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $4
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; c1x4 (sprite Y pos)
|
||||
ld [wTrainerScreenY], a
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $6
|
||||
@@ -247,7 +247,7 @@ ReadTrainerScreenPosition: ; 5698e (15:698e)
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld a, [hl] ; c1x6 (sprite X pos)
|
||||
ld [wTrainerScreenX], a
|
||||
ret
|
||||
|
||||
@@ -262,13 +262,13 @@ CheckSpriteCanSeePlayer: ; 569af (15:69af)
|
||||
jr .notInLine ; player too far away
|
||||
.checkIfLinedUp
|
||||
ld a, [wTrainerFacingDirection] ; sprite facing direction
|
||||
cp $0 ; down
|
||||
cp SPRITE_FACING_DOWN ; down
|
||||
jr z, .checkXCoord
|
||||
cp $4 ; up
|
||||
cp SPRITE_FACING_UP ; up
|
||||
jr z, .checkXCoord
|
||||
cp $8 ; left
|
||||
cp SPRITE_FACING_LEFT ; left
|
||||
jr z, .checkYCoord
|
||||
cp $c ; right
|
||||
cp SPRITE_FACING_RIGHT ; right
|
||||
jr z, .checkYCoord
|
||||
jr .notInLine
|
||||
.checkXCoord
|
||||
@@ -290,7 +290,7 @@ CheckSpriteCanSeePlayer: ; 569af (15:69af)
|
||||
ret
|
||||
|
||||
; tests if the player is in front of the sprite (rather than behind it)
|
||||
CheckPlayerIsInFrontOfSprite: ; 569e3 (15:69e3)
|
||||
CheckPlayerIsInFrontOfSprite: ; 5692f (15:692f)
|
||||
ld a, [wCurMap]
|
||||
cp POWER_PLANT
|
||||
jp z, .engage ; bypass this for power plant to get voltorb fake items to work
|
||||
@@ -315,21 +315,21 @@ CheckPlayerIsInFrontOfSprite: ; 569e3 (15:69e3)
|
||||
ld a, [hl] ; c1x6 (sprite screen X pos)
|
||||
ld [wTrainerScreenX], a
|
||||
ld a, [wTrainerFacingDirection] ; facing direction
|
||||
cp $0
|
||||
cp SPRITE_FACING_DOWN
|
||||
jr nz, .notFacingDown
|
||||
ld a, [wTrainerScreenY] ; sprite screen Y pos
|
||||
cp $3c
|
||||
jr c, .engage ; sprite above player
|
||||
jr .noEngage ; sprite below player
|
||||
.notFacingDown
|
||||
cp $4
|
||||
cp SPRITE_FACING_UP
|
||||
jr nz, .notFacingUp
|
||||
ld a, [wTrainerScreenY] ; sprite screen Y pos
|
||||
cp $3c
|
||||
jr nc, .engage ; sprite below player
|
||||
jr .noEngage ; sprite above player
|
||||
.notFacingUp
|
||||
cp $8
|
||||
cp SPRITE_FACING_LEFT
|
||||
jr nz, .notFacingLeft
|
||||
ld a, [wTrainerScreenX] ; sprite screen X pos
|
||||
cp $40
|
||||
|
||||
@@ -728,18 +728,16 @@ INCLUDE "engine/hidden_object_functions14.asm"
|
||||
SECTION "bank15",ROMX,BANK[$15]
|
||||
|
||||
dr $54000,$5525f
|
||||
GainExperience: ; 5525f (15:525f)
|
||||
dr $5525f,$56745
|
||||
_GetSpritePosition1: ; 56745 (15:6745)
|
||||
dr $56745,$56765
|
||||
_GetSpritePosition2: ; 56765 (15:6765)
|
||||
dr $56765,$56789
|
||||
_SetSpritePosition1: ; 56789 (15:6789)
|
||||
dr $56789,$567a9
|
||||
_SetSpritePosition2: ; 567a9 (15:67a9)
|
||||
dr $567a9,$567cd
|
||||
TrainerWalkUpToPlayer: ; 567cd (15:67cd)
|
||||
dr $567cd,$58000
|
||||
|
||||
INCLUDE "engine/battle/experience.asm"
|
||||
|
||||
dr $554f7,$56714
|
||||
|
||||
INCLUDE "engine/menu/diploma_1.asm"
|
||||
|
||||
INCLUDE "engine/overworld/trainers.asm"
|
||||
|
||||
|
||||
SECTION "bank16",ROMX,BANK[$16]
|
||||
|
||||
dr $58000,$58d99
|
||||
@@ -865,7 +863,9 @@ Func_e8d35:: ; e8d35 (3a:4d35)
|
||||
Func_e8e79: ; e8e79 (3a:4e79)
|
||||
dr $e8e79,$e928a
|
||||
SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp"
|
||||
dr $e988a,$e9bfa
|
||||
dr $e988a,$e9a08
|
||||
_DisplayDiploma: ; e9a08 (3a:5a08)
|
||||
dr $e9a08,$e9bfa
|
||||
|
||||
SurfingPikachu3Graphics: INCBIN "gfx/surfing_pikachu_3.t1.2bpp"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user