summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.asm82
-rw-r--r--constants.asm62
-rw-r--r--music.asm323
3 files changed, 420 insertions, 47 deletions
diff --git a/common.asm b/common.asm
index 3933458c..1ebbda95 100644
--- a/common.asm
+++ b/common.asm
@@ -594,8 +594,8 @@ OverworldLoopLessDelay: ; 402
jr nz,.oddLoop\@
ld a,[$d52a]
ld [$d528],a
- call $0683
- jp c,$0637
+ call NewBattle
+ jp c,.battleOccurred\@
jp OverworldLoop
.noDirectionChange\@
ld a,[$d52a] ; current direction
@@ -687,7 +687,7 @@ OverworldLoopLessDelay: ; 402
ld hl,$d736
res 2,[hl]
jp nc,CheckWarpsNoCollision ; check for warps if there was no battle
-; if a battle occurred
+.battleOccurred\@
ld hl,$d72d
res 6,[hl]
ld hl,$d733
@@ -23988,7 +23988,7 @@ EnemySendOut: ; 490E
ld [hl],a
dec a
ld [W_AICOUNT],a
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
res 5,[hl]
ld hl,$C3B2
ld a,8
@@ -24194,7 +24194,7 @@ UnnamedText_3d430: ; 0x3d430
INCBIN "baserom.gbc",$3d435,$274
; in-battle stuff
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
res 4,[hl]
res 6,[hl]
call $5AF5
@@ -24202,17 +24202,17 @@ INCBIN "baserom.gbc",$3d435,$274
ld de,$CCDC ; pointer to the move just used
ld b,BANK(DecrementPP)
call Bankswitch
- ld a,[$CFD3] ; effect of the move just used
+ ld a,[W_PLAYERMOVEEFFECT] ; effect of the move just used
ld hl,EffectsArray1
ld de,1
call IsInArray
jp c,$7132
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
ld hl,EffectsArray5B
ld de,1
call IsInArray
call c,$7132
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
ld hl,EffectsArray2
ld de,1
call IsInArray
@@ -24227,33 +24227,33 @@ INCBIN "baserom.gbc",$3d435,$274
call $6687
call $656B
.next11\@
- ld a,[$D05F]
+ ld a,[W_MOVEMISSED]
and a
jr z,.next\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
sub a,7
jr z,.next2\@
jr .next3\@ ; 574B
.next\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
and a
ld a,4
jr z,.next2\@
ld a,5
.next2\@
push af
- ld a,[$D063]
+ ld a,[W_PLAYERBATTSTATUS2]
bit 4,a
ld hl,$5747
ld b,$1E
call nz,Bankswitch
pop af
ld [$CC5B],a
- ld a,[$CFD2]
+ ld a,[W_PLAYERMOVENUM]
call $6F07
call $6ED3
call $4D60
- ld a,[$D063]
+ ld a,[W_PLAYERBATTSTATUS2]
bit 4,a
ld hl,$5771
ld b,$1E
@@ -24262,7 +24262,7 @@ INCBIN "baserom.gbc",$3d435,$274
.next3\@
ld c,$1E
call $3739
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
cp a,$2B
jr z,.next5\@
cp a,$27 ; XXX SLP | FRZ ?
@@ -24274,7 +24274,7 @@ INCBIN "baserom.gbc",$3d435,$274
ld a,$A7
call $6F07
.next4\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
cp a,9
jr nz,.next6\@ ; 577A
call $62FD
@@ -24288,16 +24288,16 @@ INCBIN "baserom.gbc",$3d435,$274
call $6348
jp $569A
.next7\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
ld hl,EffectsArray3
ld de,1
call IsInArray
jp c,$7132
- ld a,[$D05F]
+ ld a,[W_MOVEMISSED]
and a
jr z,.next8\@ ; 57A6
call $5BE2
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
cp a,7
jr z,.next9\@ ; 57B9
jp Function580A
@@ -24310,7 +24310,7 @@ INCBIN "baserom.gbc",$3d435,$274
ld a,1
ld [$CCF4],a
.next9\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
ld hl,EffectsArray4
ld de,1
call IsInArray
@@ -24322,7 +24322,7 @@ INCBIN "baserom.gbc",$3d435,$274
ret z
call $62B6
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
bit 2,[hl]
jr z,.next10\@ ; 57EF
ld a,[$D06A]
@@ -24336,7 +24336,7 @@ INCBIN "baserom.gbc",$3d435,$274
xor a
ld [W_NUMHITS],a ; reset
.next10\@
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
and a
jp z,Function580A
ld hl,EffectsArray5
@@ -24438,7 +24438,7 @@ Function5854: ; 5854
jp $5A37
.HeldInPlaceCheck\@
- ld a,[W_CURMONBATTSTATUS]
+ ld a,[W_ENEMYBATTSTATUS1]
bit 5,a
jp z,FlinchedCheck
ld hl,CantMoveText
@@ -24447,7 +24447,7 @@ Function5854: ; 5854
jp $5A37
FlinchedCheck: ; 58AC
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
bit 3,[hl]
jp z,HyperBeamCheck
res 3,[hl]
@@ -24457,7 +24457,7 @@ FlinchedCheck: ; 58AC
jp $5A37
HyperBeamCheck: ; 58C2
- ld hl,$D063
+ ld hl,W_PLAYERBATTSTATUS2
bit 5,[hl]
jr z,.next\@ ; 58D7
res 5,[hl]
@@ -24479,13 +24479,13 @@ HyperBeamCheck: ; 58C2
ld hl,DisabledNoMoreText
call PrintText
.next2\@
- ld a,[$D062]
+ ld a,[W_PLAYERBATTSTATUS1]
add a
jr nc,.next3\@ ; 5929
ld hl,$D06B
dec [hl]
jr nz,.next4\@ ; 5907
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
res 7,[hl]
ld hl,ConfusedNoMoreText
call PrintText
@@ -24500,7 +24500,7 @@ HyperBeamCheck: ; 58C2
call $6E9B
cp a,$80
jr c,.next3\@
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
ld a,[hl]
and a,$80
ld [hl],a
@@ -24526,11 +24526,11 @@ HyperBeamCheck: ; 58C2
ld hl,FullyParalyzedText
call PrintText
.next5\@
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
ld a,[hl]
and a,$CC
ld [hl],a
- ld a,[$CFD3]
+ ld a,[W_PLAYERMOVEEFFECT]
cp a,$2B
jr z,.next8\@ ; 5966
cp a,$27
@@ -24545,11 +24545,11 @@ HyperBeamCheck: ; 58C2
ld hl,$580A
jp $5A37
.next7\@
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
bit 0,[hl]
jr z,.next10\@ ; 59D0
xor a
- ld [$CFD2],a
+ ld [W_PLAYERMOVENUM],a
ld hl,$D0D7
ld a,[hli]
ld b,a
@@ -24567,7 +24567,7 @@ HyperBeamCheck: ; 58C2
ld hl,$580A
jp $5A37
.next11\@
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
res 0,[hl]
ld hl,UnleashedEnergyText
call PrintText
@@ -24584,20 +24584,20 @@ HyperBeamCheck: ; 58C2
or b
jr nz,.next12\@ ; 59C2
ld a,1
- ld [$D05F],a
+ ld [W_MOVEMISSED],a
.next12\@
xor a
ld [hli],a
ld [hl],a
ld a,$75
- ld [$CFD2],a
+ ld [W_PLAYERMOVENUM],a
ld hl,$5705
jp $5A37
.next10\@
bit 1,[hl]
jr z,.next13\@ ; 59FF
ld a,$25
- ld [$CFD2],a
+ ld [W_PLAYERMOVENUM],a
ld hl,ThrashingAboutText
call PrintText
ld hl,$D06A
@@ -24605,7 +24605,7 @@ HyperBeamCheck: ; 58C2
ld hl,$56DC
jp nz,$5A37
push hl
- ld hl,$D062
+ ld hl,W_PLAYERBATTSTATUS1
res 1,[hl]
set 7,[hl]
call $6E9B ; random number?
@@ -47376,12 +47376,12 @@ DecrementPP: ; 0x68000
cp a, STRUGGLE
ret z ; if the pokemon is using "struggle", there's nothing to do
; we don't decrement PP for "struggle"
- ld hl, $D062
- ld a, [hli] ; load the $D062 pokemon status flags and increment hl to load the
- ; $D063 status flags later
+ ld hl, W_PLAYERBATTSTATUS1
+ ld a, [hli] ; load the W_PLAYERBATTSTATUS1 pokemon status flags and increment hl to load the
+ ; W_PLAYERBATTSTATUS2 status flags later
and a, 7 ; check to see if bits 0, 1, or 2 are set
ret nz ; if any of these statuses are true, don't decrement PP
- bit 6, [hl] ; check 6th bit status flag on $D063
+ bit 6, [hl] ; check 6th bit status flag on W_PLAYERBATTSTATUS2
ret nz ; and return if it is set
ld hl, $D02D ; PP of first move (in battle)
call .DecrementPP\@
diff --git a/constants.asm b/constants.asm
index 573e97e5..1ea3d67e 100644
--- a/constants.asm
+++ b/constants.asm
@@ -89,6 +89,9 @@ TX_RAM: MACRO
; wram locations
+W_PLAYERSELECTEDMOVE EQU $CCDC
+W_ENEMYSELECTEDMOVE EQU $CCDD
+
W_AICOUNT EQU $CCDF ; number of times remaining that AI action can occur
W_WHICHTRADE EQU $CD3D ; which entry from TradeMons to select
@@ -97,6 +100,20 @@ W_WHICHPOKEMON EQU $CF92 ; which pokemon you selected
W_WALKCOUNTER EQU $CFC5 ; walk animation counter
+W_ENEMYMOVENUM EQU $CFCC
+W_ENEMYMOVEEFFECT EQU $CFCD
+W_ENEMYMOVEPOWER EQU $CFCE
+W_ENEMYMOVETYPE EQU $CFCF
+W_ENEMYMOVEACCURACY EQU $CFD0
+W_ENEMYMOVEMAXPP EQU $CFD1
+
+W_PLAYERMOVENUM EQU $CFD2
+W_PLAYERMOVEEFFECT EQU $CFD3
+W_PLAYERMOVEPOWER EQU $CFD4
+W_PLAYERMOVETYPE EQU $CFD5
+W_PLAYERMOVEACCURACY EQU $CFD6
+W_PLAYERMOVEMAXPP EQU $CFD7
+
W_OPPONENTHP EQU $CFE6 ; active opponent's hp (16 bits)
W_OPPONENTNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5)
W_OPPONENTSTATUS EQU $CFE9 ; active opponent's status condition
@@ -119,9 +136,6 @@ W_CURMONSTATUS EQU $D018 ; the status of the player’s current monster
; bit 6 par
; unused? (XXX confirm)
-W_CURMONBATTSTATUS EQU $D067 ; various battle statuses
- ; bit 5 held in place (Bind, Clamp, etc.)
-
W_TRAINERCLASS EQU $D031
W_ISINBATTLE EQU $D057 ; no battle, this is 0
@@ -138,6 +152,48 @@ W_BATTLETYPE EQU $D05A ; in normal battle, this is 0
W_LONEATTACKNO EQU $D05C ; which entry in LoneAttacks to use
W_TRAINERNO EQU $D05D ; which instance of [youngster, lass, etc] is this?
+W_MOVEMISSED EQU $D05F
+
+; not entirely sure that all these bits are 100% correct
+; Battle Status Byte 1
+; bit 0 - bide
+; bit 1 - thrash / petal dance
+; bit 2 - attacking multiple times (e.g. double kick)
+; bit 3 - flinch
+; bit 4 - charging up for attack
+; bit 5 - using multi-turn move (e.g. wrap)
+; bit 6 - invulnerable to normal attack (using fly/dig)
+; bit 7 - confusion
+
+; Battle Status Byte 2
+; bit 0 - X Accuracy effect
+; bit 1 - protected by "mist"
+; bit 2 - focus energy effect
+; bit 4 - has a substitute
+; bit 5 - need to recharge
+; bit 6 - rage
+; bit 7 - leech seeded
+
+; Battle Status Byte 3
+; bit 0 - toxic
+; bit 1 - light screen
+; bit 2 - reflect
+; bit 3 - tranformed
+
+W_PLAYERBATTSTATUS1 EQU $D062
+W_PLAYERBATTSTATUS2 EQU $D063
+W_PLAYERBATTSTATUS3 EQU $D062
+
+W_ENEMYBATTSTATUS1 EQU $D067
+W_ENEMYBATTSTATUS2 EQU $D068
+W_ENEMYBATTSTATUS3 EQU $D069
+
+W_PLAYERTOXICCOUNTER EQU $D06C
+W_PLAYERDISABLEDMOVE EQU $D06D
+
+W_ENEMYTOXICCOUNTER EQU $D071
+W_ENEMYDISABLEDMOVE EQU $D072
+
W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc.
; List type
diff --git a/music.asm b/music.asm
index 5aa15f53..409b88bf 100644
--- a/music.asm
+++ b/music.asm
@@ -2801,7 +2801,7 @@ branch_A4A8:
mus_note noteC#, note8
mus_note noteB, note8
mus_note noteC#, note8
- mus_jump 0, $64A8
+ mus_jump 0, branch_A4A8
; A5EF
;No end byte until indigo plateu channel 1
@@ -3975,12 +3975,329 @@ branch_a9d8:
; AA6F
mus_tempo 0, 232
- mus_jump 0, $6A79 ;;Leads into city music not dugout yet
+ mus_jump 0, branch_aa79
; AA75
;Viridian City, Pewter City, Saffron City
Cities1_md_1: ;AA76 - AB91
-INCBIN "baserom.gbc",$aa76,$ab92 - $aa76
+ ; AA76
+ mus_tempo 0, 144
+
+branch_aa79:
+ mus_volume 119
+ mus_mod 8, 2, 4
+ mus_duty duty75
+branch_aa80:
+ mus_vel 12, 5
+
+ mus_octave oct2
+ mus_note noteG#, note4
+ mus_note noteF#, note4
+ mus_note noteE, note8
+ mus_note noteE, note8
+ mus_note noteF#, note8
+ mus_note noteD#, note8
+ mus_note noteE, note8
+ mus_note noteE, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note4
+ mus_note noteD#, note4
+ mus_note noteE, note8
+ mus_note noteD#, note4
+ mus_note noteC#, note8
+ mus_note noteE, note8
+ mus_note noteE, note4
+ mus_vel 10, 5
+ mus_note noteC#, note4
+
+ mus_octave oct1
+ mus_note noteB, note4_8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteC#, note4
+
+ mus_octave oct1
+ mus_note noteB, note4
+ mus_vel 12, 5
+ mus_call branch_ab7d
+
+ mus_octave oct2
+ mus_note noteD#, note4_8
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note4
+ mus_vel 10, 5
+
+ mus_octave oct2
+ mus_note noteC#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+ mus_note noteA, note4
+ mus_note noteB, note4
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_note noteE, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_vel 12, 5
+ mus_note noteG#, note8
+ mus_note noteE, note8
+ mus_note noteF#, note8
+ mus_note noteE, note8
+ mus_note noteE, note4
+ mus_note noteF#, note8
+ mus_note noteD#, note8
+ mus_note noteE, note4
+ mus_note noteD#, note8
+ mus_note noteC#, note4
+ mus_note noteD#, note4
+ mus_note noteE, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note8
+ mus_note noteC#, note8
+ mus_note noteE, note8
+ mus_note noteE, note4
+ mus_vel 10, 5
+ mus_note noteC#, note8
+
+ mus_octave oct1
+ mus_note noteA, note8
+ mus_note noteB, note4_8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteC#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+ mus_note noteB, note4
+ mus_vel 12, 5
+ mus_call branch_ab7d
+
+ mus_octave oct2
+ mus_note noteD#, note4
+ mus_note noteD#, note8
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteG#, note8
+ mus_note noteE, note4
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note8
+ mus_vel 10, 5
+ mus_note noteC#, note4
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteD#, note4
+ mus_note noteC#, note8
+ mus_note noteE, note4
+ mus_vel 11, 3
+ mus_call branch_ab8a
+ mus_note noteA, note8
+ mus_note noteB, note8
+ mus_note noteA, note8
+ mus_note noteG#, note8
+ mus_note noteA, note4
+ mus_note noteF#, note4
+ mus_note noteG#, note8
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note4
+ mus_note noteG#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note8
+ mus_note noteE, note8
+ mus_note noteF#, note8
+ mus_note noteE, note8
+ mus_note noteD#, note8
+ mus_note noteE, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+branch_ab12:
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note8
+
+ mus_octave oct1
+ mus_note noteB, note4
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_jump 2, branch_ab12
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note4
+
+ mus_octave oct2
+ mus_note noteE, note4
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteG#, note8
+ mus_note noteG#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteF#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteD#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_call branch_ab8a
+ mus_note noteA, note8
+ mus_note noteE, note8
+ mus_note noteA, note8
+ mus_note noteB, note8
+ mus_note noteA, note8
+ mus_note noteG#, note8
+ mus_note noteA, note8
+ mus_note noteF#, note8
+ mus_note noteG#, note8
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note8
+ mus_note noteC#, note8
+ mus_note noteG#, note8
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_note noteB, note8
+ mus_note noteE, note8
+ mus_note noteG#, note8
+ mus_note noteE, note8
+ mus_note noteF#, note8
+ mus_note noteE, note4
+ mus_note noteG#, note8
+ mus_note noteF#, note8
+ mus_note noteD#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteD#, note4
+ mus_note noteF#, note8
+ mus_note noteD#, note8
+ mus_note noteD#, note8
+ mus_note noteF#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteE, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteD#, note8
+
+ mus_octave oct1
+ mus_note noteB, note8
+ mus_note noteB, note8
+
+ mus_octave oct2
+ mus_note noteD#, note8
+ mus_vel 11, 6
+ mus_note noteF#, note2
+ mus_note noteF#, note4
+ mus_note noteD#, note4
+ mus_note noteE, note2
+ mus_vel 8, 4
+
+ mus_octave oct1
+ mus_note noteB, note4
+
+ mus_octave oct2
+ mus_note noteE, note8
+ mus_note noteF#, note8
+ mus_jump 0, branch_aa80
+
+branch_ab7d:
+ mus_octave oct2
+ mus_note noteF#, note8
+ mus_note noteD#, note4
+ mus_note noteE, note8
+ mus_note noteD#, note4
+ mus_note noteC#, note4
+
+ mus_octave oct1
+ mus_note noteB, note4
+
+ mus_octave oct2
+ mus_note noteC#, note8
+ mus_note noteD#, note8
+ mus_note noteC#, note8
+ mus_end
+ ; AB89
+
+ ; AB8A
+branch_ab8a:
+ mus_note noteA, note8
+ mus_note noteE, note8
+ mus_note noteC#, note8
+ mus_note noteE, note4
+ mus_note noteA, note8
+ mus_note noteC#, note8
+ mus_note noteE, note8
+ mus_end
+ ; AB91
Cities1_md_2: ;AB92 - AC02
INCBIN "baserom.gbc",$ab92,$ac32 - $ab92