shithub: pokecrystal

Download patch

ref: 9755ff375a7e80b978d9cd32052a6cf2cc7c45cf
parent: 36247945996feb163bc79e5079924ecc90c8baf6
author: yenatch <[email protected]>
date: Wed May 21 12:37:18 EDT 2014

Split bank 0 battle functions into home/battle.asm.

--- a/home.asm
+++ b/home.asm
@@ -2071,340 +2071,7 @@
 ; 3945
 
 
-UserPartyAttr:: ; 3945
-	push af
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .asm_394e
-	pop af
-	jr BattlePartyAttr
-.asm_394e
-	pop af
-	jr OTPartyAttr
-; 3951
-
-
-OpponentPartyAttr:: ; 3951
-	push af
-	ld a, [hBattleTurn]
-	and a
-	jr z, .asm_395a
-	pop af
-	jr BattlePartyAttr
-.asm_395a
-	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]
-
-Function399f:: ; 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 Function3df48
-	callba Function3e036
-	ret
-; 39e1
-
-
-GetBattleVar:: ; 39e1
-; Preserves hl.
-	push hl
-	call _GetBattleVar
-	pop hl
-	ret
-; 39e7
-
-_GetBattleVar:: ; 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
-	add hl, bc
-	add hl, bc
-
-	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
-	add hl, bc
-	add hl, bc
-
-	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 PlayerMoveAnimation,  EnemyMoveAnimation
-	dw PlayerMoveEffect,     EnemyMoveEffect
-	dw PlayerMovePower,      EnemyMovePower
-	dw PlayerMoveType,       EnemyMoveType
-	dw CurPlayerMove,        CurEnemyMove
-	dw LastEnemyCounterMove, LastPlayerCounterMove
-	dw LastPlayerMove,       LastEnemyMove
-; 3a90
-
-
-Function3a90:: ; 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, $d00c
-	ld bc, $0028
-	call CopyBytes
-	pop af
-	ld [hROMBank], a
-	ld [MBC3RomBank], a
-	ret
-; 3ab2
-
-
-MobileTextBorder:: ; 3ab2
-; 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.
-	ld hl, $c5a3 ; TileMap(19,12)
-	ld [hl], $5e ; cell phone top
-	ld hl, $c5b7 ; TileMap(19,13)
-	ld [hl], $5f ; cell phone bottom
-	ret
-; 3ac3
-
-
-BattleTextBox:: ; 3ac3
-; Open a textbox and print text at hl.
-	push hl
-	call SpeechTextBox
-	call MobileTextBorder
-	call Function1ad2
-	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
+INCLUDE "home/battle.asm"
 
 
 Function3ae1:: ; 3ae1
--- /dev/null
+++ b/home/battle.asm
@@ -1,0 +1,337 @@
+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]
+
+Function399f:: ; 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 Function3df48
+	callba Function3e036
+	ret
+; 39e1
+
+
+GetBattleVar:: ; 39e1
+; Preserves hl.
+	push hl
+	call _GetBattleVar
+	pop hl
+	ret
+; 39e7
+
+_GetBattleVar:: ; 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
+	add hl, bc
+	add hl, bc
+
+	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
+	add hl, bc
+	add hl, bc
+
+	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 PlayerMoveAnimation,  EnemyMoveAnimation
+	dw PlayerMoveEffect,     EnemyMoveEffect
+	dw PlayerMovePower,      EnemyMovePower
+	dw PlayerMoveType,       EnemyMoveType
+	dw CurPlayerMove,        CurEnemyMove
+	dw LastEnemyCounterMove, LastPlayerCounterMove
+	dw LastPlayerMove,       LastEnemyMove
+; 3a90
+
+
+Function3a90:: ; 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, $d00c
+	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 Function1ad2
+	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