mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
c8960dd2c8
Annotated the SGB functions in predef/sgb.asm, and some of the map scripts. Renamed several functions in home. Renamed six WRAM addresses corresponding to party icon animations, and renamed several others relative to these.
340 lines
6.3 KiB
NASM
340 lines
6.3 KiB
NASM
UserPartyAttr:: ; 3945
|
|
push af
|
|
ld a, [hBattleTurn]
|
|
and a
|
|
jr nz, .ot
|
|
pop af
|
|
jr BattlePartyAttr
|
|
.ot
|
|
pop af
|
|
jr OTPartyAttr
|
|
; 3951
|
|
|
|
|
|
OpponentPartyAttr:: ; 3951
|
|
push af
|
|
ld a, [hBattleTurn]
|
|
and a
|
|
jr z, .ot
|
|
pop af
|
|
jr BattlePartyAttr
|
|
.ot
|
|
pop af
|
|
jr OTPartyAttr
|
|
; 395d
|
|
|
|
|
|
BattlePartyAttr:: ; 395d
|
|
; Get attribute a from the active BattleMon's party struct.
|
|
push bc
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, PartyMons
|
|
add hl, bc
|
|
ld a, [CurBattleMon]
|
|
call GetPartyLocation
|
|
pop bc
|
|
ret
|
|
; 396d
|
|
|
|
|
|
OTPartyAttr:: ; 396d
|
|
; Get attribute a from the active EnemyMon's party struct.
|
|
push bc
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, OTPartyMon1Species
|
|
add hl, bc
|
|
ld a, [CurOTMon]
|
|
call GetPartyLocation
|
|
pop bc
|
|
ret
|
|
; 397d
|
|
|
|
|
|
ResetDamage:: ; 397d
|
|
xor a
|
|
ld [CurDamage], a
|
|
ld [CurDamage + 1], a
|
|
ret
|
|
; 3985
|
|
|
|
SetPlayerTurn:: ; 3985
|
|
xor a
|
|
ld [hBattleTurn], a
|
|
ret
|
|
; 3989
|
|
|
|
SetEnemyTurn:: ; 3989
|
|
ld a, 1
|
|
ld [hBattleTurn], a
|
|
ret
|
|
; 398e
|
|
|
|
|
|
UpdateOpponentInParty:: ; 398e
|
|
ld a, [hBattleTurn]
|
|
and a
|
|
jr z, UpdateEnemyMonInParty
|
|
jr UpdateBattleMonInParty
|
|
; 3995
|
|
|
|
UpdateUserInParty:: ; 3995
|
|
ld a, [hBattleTurn]
|
|
and a
|
|
jr z, UpdateBattleMonInParty
|
|
jr UpdateEnemyMonInParty
|
|
; 399c
|
|
|
|
UpdateBattleMonInParty:: ; 399c
|
|
; Update level, status, current HP
|
|
|
|
ld a, [CurBattleMon]
|
|
|
|
UpdateBattleMon:: ; 399f
|
|
ld hl, PartyMon1Level
|
|
call GetPartyLocation
|
|
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, BattleMonLevel
|
|
ld bc, BattleMonMaxHP - BattleMonLevel
|
|
jp CopyBytes
|
|
; 39b0
|
|
|
|
UpdateEnemyMonInParty:: ; 39b0
|
|
; Update level, status, current HP
|
|
|
|
; No wildmons.
|
|
ld a, [IsInBattle]
|
|
dec a
|
|
ret z
|
|
|
|
ld a, [CurOTMon]
|
|
ld hl, OTPartyMon1Level
|
|
call GetPartyLocation
|
|
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, EnemyMonLevel
|
|
ld bc, EnemyMonMaxHP - EnemyMonLevel
|
|
jp CopyBytes
|
|
; 39c9
|
|
|
|
|
|
RefreshBattleHuds:: ; 39c9
|
|
call UpdateBattleHuds
|
|
ld c, 3
|
|
call DelayFrames
|
|
jp WaitBGMap
|
|
; 39d4
|
|
|
|
UpdateBattleHuds:: ; 39d4
|
|
callba UpdatePlayerHUD
|
|
callba UpdateEnemyHUD
|
|
ret
|
|
; 39e1
|
|
|
|
|
|
GetBattleVar:: ; 39e1
|
|
; Preserves hl.
|
|
push hl
|
|
call GetBattleVarAddr
|
|
pop hl
|
|
ret
|
|
; 39e7
|
|
|
|
GetBattleVarAddr:: ; 39e7
|
|
; Get variable from pair a, depending on whose turn it is.
|
|
; There are 21 variable pairs.
|
|
|
|
push bc
|
|
|
|
ld hl, .battlevarpairs
|
|
ld c, a
|
|
ld b, 0
|
|
rept 2
|
|
add hl, bc
|
|
endr
|
|
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
|
|
; Enemy turn uses the second byte instead.
|
|
; This lets battle variable calls be side-neutral.
|
|
ld a, [hBattleTurn]
|
|
and a
|
|
jr z, .getvar
|
|
inc hl
|
|
|
|
.getvar
|
|
; var id
|
|
ld a, [hl]
|
|
ld c, a
|
|
ld b, 0
|
|
|
|
ld hl, .vars
|
|
rept 2
|
|
add hl, bc
|
|
endr
|
|
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
|
|
ld a, [hl]
|
|
|
|
pop bc
|
|
ret
|
|
|
|
.battlevarpairs
|
|
dw .substatus1, .substatus2, .substatus3, .substatus4, .substatus5
|
|
dw .substatus1opp, .substatus2opp, .substatus3opp, .substatus4opp, .substatus5opp
|
|
dw .status, .statusopp, .animation, .effect, .power, .type
|
|
dw .curmove, .lastcounter, .lastcounteropp, .lastmove, .lastmoveopp
|
|
|
|
const_def
|
|
const PLAYER_SUBSTATUS_1
|
|
const ENEMY_SUBSTATUS_1
|
|
const PLAYER_SUBSTATUS_2
|
|
const ENEMY_SUBSTATUS_2
|
|
const PLAYER_SUBSTATUS_3
|
|
const ENEMY_SUBSTATUS_3
|
|
const PLAYER_SUBSTATUS_4
|
|
const ENEMY_SUBSTATUS_4
|
|
const PLAYER_SUBSTATUS_5
|
|
const ENEMY_SUBSTATUS_5
|
|
const PLAYER_STATUS
|
|
const ENEMY_STATUS
|
|
const PLAYER_MOVE_ANIMATION
|
|
const ENEMY_MOVE_ANIMATION
|
|
const PLAYER_MOVE_EFFECT
|
|
const ENEMY_MOVE_EFFECT
|
|
const PLAYER_MOVE_POWER
|
|
const ENEMY_MOVE_POWER
|
|
const PLAYER_MOVE_TYPE
|
|
const ENEMY_MOVE_TYPE
|
|
const PLAYER_CUR_MOVE
|
|
const ENEMY_CUR_MOVE
|
|
const PLAYER_COUNTER_MOVE
|
|
const ENEMY_COUNTER_MOVE
|
|
const PLAYER_LAST_MOVE
|
|
const ENEMY_LAST_MOVE
|
|
|
|
; player enemy
|
|
.substatus1 db PLAYER_SUBSTATUS_1, ENEMY_SUBSTATUS_1
|
|
.substatus1opp db ENEMY_SUBSTATUS_1, PLAYER_SUBSTATUS_1
|
|
.substatus2 db PLAYER_SUBSTATUS_2, ENEMY_SUBSTATUS_2
|
|
.substatus2opp db ENEMY_SUBSTATUS_2, PLAYER_SUBSTATUS_2
|
|
.substatus3 db PLAYER_SUBSTATUS_3, ENEMY_SUBSTATUS_3
|
|
.substatus3opp db ENEMY_SUBSTATUS_3, PLAYER_SUBSTATUS_3
|
|
.substatus4 db PLAYER_SUBSTATUS_4, ENEMY_SUBSTATUS_4
|
|
.substatus4opp db ENEMY_SUBSTATUS_4, PLAYER_SUBSTATUS_4
|
|
.substatus5 db PLAYER_SUBSTATUS_5, ENEMY_SUBSTATUS_5
|
|
.substatus5opp db ENEMY_SUBSTATUS_5, PLAYER_SUBSTATUS_5
|
|
.status db PLAYER_STATUS, ENEMY_STATUS
|
|
.statusopp db ENEMY_STATUS, PLAYER_STATUS
|
|
.animation db PLAYER_MOVE_ANIMATION, ENEMY_MOVE_ANIMATION
|
|
.effect db PLAYER_MOVE_EFFECT, ENEMY_MOVE_EFFECT
|
|
.power db PLAYER_MOVE_POWER, ENEMY_MOVE_POWER
|
|
.type db PLAYER_MOVE_TYPE, ENEMY_MOVE_TYPE
|
|
.curmove db PLAYER_CUR_MOVE, ENEMY_CUR_MOVE
|
|
.lastcounter db PLAYER_COUNTER_MOVE, ENEMY_COUNTER_MOVE
|
|
.lastcounteropp db ENEMY_COUNTER_MOVE, PLAYER_COUNTER_MOVE
|
|
.lastmove db PLAYER_LAST_MOVE, ENEMY_LAST_MOVE
|
|
.lastmoveopp db ENEMY_LAST_MOVE, PLAYER_LAST_MOVE
|
|
|
|
.vars
|
|
dw PlayerSubStatus1, EnemySubStatus1
|
|
dw PlayerSubStatus2, EnemySubStatus2
|
|
dw PlayerSubStatus3, EnemySubStatus3
|
|
dw PlayerSubStatus4, EnemySubStatus4
|
|
dw PlayerSubStatus5, EnemySubStatus5
|
|
dw BattleMonStatus, EnemyMonStatus
|
|
dw wPlayerMoveStruct + MOVE_ANIM, wEnemyMoveStruct + MOVE_ANIM
|
|
dw wPlayerMoveStruct + MOVE_EFFECT, wEnemyMoveStruct + MOVE_EFFECT
|
|
dw wPlayerMoveStruct + MOVE_POWER, wEnemyMoveStruct + MOVE_POWER
|
|
dw wPlayerMoveStruct + MOVE_TYPE, wEnemyMoveStruct + MOVE_TYPE
|
|
dw CurPlayerMove, CurEnemyMove
|
|
dw LastEnemyCounterMove, LastPlayerCounterMove
|
|
dw LastPlayerMove, LastEnemyMove
|
|
; 3a90
|
|
|
|
|
|
FarJumpText:: ; 3a90
|
|
inc hl
|
|
ld a, [hROMBank]
|
|
push af
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld a, [hli]
|
|
ld [hROMBank], a
|
|
ld [MBC3RomBank], a
|
|
ld a, e
|
|
ld l, a
|
|
ld a, d
|
|
ld h, a
|
|
ld de, wd00c
|
|
ld bc, $0028
|
|
call CopyBytes
|
|
pop af
|
|
ld [hROMBank], a
|
|
ld [MBC3RomBank], a
|
|
ret
|
|
; 3ab2
|
|
|
|
|
|
MobileTextBorder:: ; 3ab2
|
|
|
|
CELL_PHONE_TOP EQU $5e
|
|
CELL_PHONE_BOTTOM EQU $5f
|
|
|
|
; For mobile link battles only.
|
|
ld a, [InLinkBattle]
|
|
cp 4
|
|
ret c
|
|
|
|
; Draw a cell phone icon at the
|
|
; top right corner of the border.
|
|
hlcoord 19, 12
|
|
ld [hl], CELL_PHONE_TOP
|
|
hlcoord 19, 13
|
|
ld [hl], CELL_PHONE_BOTTOM
|
|
ret
|
|
; 3ac3
|
|
|
|
|
|
BattleTextBox:: ; 3ac3
|
|
; Open a textbox and print text at hl.
|
|
push hl
|
|
call SpeechTextBox
|
|
call MobileTextBorder
|
|
call UpdateSprites
|
|
call Function321c
|
|
pop hl
|
|
call PrintTextBoxText
|
|
ret
|
|
; 3ad5
|
|
|
|
|
|
StdBattleTextBox:: ; 3ad5
|
|
; Open a textbox and print battle text at 20:hl.
|
|
|
|
GLOBAL BattleText
|
|
|
|
ld a, [hROMBank]
|
|
push af
|
|
|
|
ld a, BANK(BattleText)
|
|
rst Bankswitch
|
|
|
|
call BattleTextBox
|
|
|
|
pop af
|
|
rst Bankswitch
|
|
ret
|
|
; 3ae1
|