summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--battle_constants.asm1
-rw-r--r--main.asm136
-rw-r--r--text/battle.asm4
-rw-r--r--wram.asm5
4 files changed, 142 insertions, 4 deletions
diff --git a/battle_constants.asm b/battle_constants.asm
index ee450c984..a1858da1f 100644
--- a/battle_constants.asm
+++ b/battle_constants.asm
@@ -40,6 +40,7 @@ TRAINER_BATTLE EQU 2
; battle types
BATTLETYPE_NORMAL EQU $00
+BATTLETYPE_CANLOSE EQU $01
BATTLETYPE_TUTORIAL EQU $03
BATTLETYPE_FISH EQU $04
BATTLETYPE_ROAMING EQU $05
diff --git a/main.asm b/main.asm
index 7958c1bf6..b582b29c4 100644
--- a/main.asm
+++ b/main.asm
@@ -6983,7 +6983,34 @@ BoxNameInputUpper:
db "- ? ! ♂ ♀ / . , &"
db "lower DEL END "
-INCBIN "baserom.gbc", $11e5d, $125cd - $11e5d
+
+INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d
+
+
+HalveMoney: ; 12513
+
+; Empty function...
+ ld a, $41
+ ld hl, $60c7
+ rst FarCall
+
+; Halve the player's money.
+ ld hl, Money
+ ld a, [hl]
+ srl a
+ ld [hli], a
+ ld a, [hl]
+ rra
+ ld [hli], a
+ ld a, [hl]
+ rra
+ ld [hl], a
+ ret
+; 12527
+
+
+INCBIN "baserom.gbc", $12527, $125cd - $12527
+
OpenMenu: ; 0x125cd
call $1fbf
@@ -9383,7 +9410,112 @@ KantoGymLeaders:
db BLUE
db $ff
-INCBIN "baserom.gbc", $3d14e, $3ddc2 - $3d14e
+
+INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e
+
+
+LostBattle: ; 3d38e
+ ld a, 1
+ ld [BattleEnded], a
+
+ ld a, [$cfc0]
+ bit 0, a
+ jr nz, .asm_3d3bd
+
+ ld a, [BattleType]
+ cp BATTLETYPE_CANLOSE
+ jr nz, .asm_3d3e3
+
+; Remove the enemy from the screen.
+ hlcoord 0, 0
+ ld bc, $0815
+ call ClearBox
+ call $6bd8
+
+ ld c, 40
+ call DelayFrames
+
+ ld a, [$c2cc]
+ bit 0, a
+ jr nz, .asm_3d3bc
+ call $3718
+.asm_3d3bc
+ ret
+
+.asm_3d3bd
+; Remove the enemy from the screen.
+ hlcoord 0, 0
+ ld bc, $0815
+ call ClearBox
+ call $6bd8
+
+ ld c, 40
+ call DelayFrames
+
+ call $6dd1
+ ld c, 2
+ ld a, $47
+ ld hl, $4000
+ rst FarCall
+ call $0a80
+ call ClearTileMap
+ call WhiteBGMap
+ ret
+
+.asm_3d3e3
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .LostLinkBattle
+
+; Greyscale
+ ld b, 0
+ call GetSGBLayout
+ call $32f9
+ jr .end
+
+.LostLinkBattle
+ call UpdateEnemyMonInParty
+ call $4f35
+ jr nz, .asm_3d40a
+ ld hl, TiedAgainstText
+ ld a, [$d0ee]
+ and $c0
+ add 2
+ ld [$d0ee], a
+ jr .asm_3d412
+
+.asm_3d40a
+ ld hl, LostAgainstText
+ call $52f1
+ jr z, .asm_3d417
+
+.asm_3d412
+ call FarBattleTextBox
+
+.end
+ scf
+ ret
+
+.asm_3d417
+; Remove the enemy from the screen.
+ hlcoord 0, 0
+ ld bc, $0815
+ call ClearBox
+ call $6bd8
+
+ ld c, 40
+ call DelayFrames
+
+ ld c, $3
+ ld a, $13
+ ld hl, $6a0a
+ rst FarCall
+ scf
+ ret
+; 3d432
+
+
+INCBIN "baserom.gbc", $3d432, $3ddc2 - $3d432
ld hl, RecoveredUsingText
jp $3ad5
diff --git a/text/battle.asm b/text/battle.asm
index cab8fc4a2..dae8c1c3b 100644
--- a/text/battle.asm
+++ b/text/battle.asm
@@ -176,7 +176,7 @@ BattleText_0x809da: ; 0x809da
db "was defeated!", $58
; 0x809eb
-BattleText_0x809eb: ; 0x809eb
+TiedAgainstText: ; 0x809eb
db $0, "Tied against", $4f
db $3f, "!", $58
; 0x809fc
@@ -219,7 +219,7 @@ BattleText_0x80a93: ; 0x80a93
db "good #MON!", $58
; 0x80ab9
-BattleText_0x80ab9: ; 0x80ab9
+LostAgainstText: ; 0x80ab9
db $0, "Lost against", $4f
db $3f, "!", $58
; 0x80aca
diff --git a/wram.asm b/wram.asm
index 0f7096ebf..b1204bb8c 100644
--- a/wram.asm
+++ b/wram.asm
@@ -778,6 +778,11 @@ LastEnemyMove: ; c71c
ds 1
+SECTION "battle",BSS[$c734]
+BattleEnded: ; c734
+ ds 1
+
+
SECTION "overworldmap",BSS[$c800]
OverworldMap: ; c800
ds 1300