From 140b01bbd6dac2c29c4fbc2cbe4360380851448e Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 16 Apr 2014 13:19:06 -0400 Subject: Use bits for status constants instead of masks. --- constants/status_constants.asm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'constants') diff --git a/constants/status_constants.asm b/constants/status_constants.asm index 8dd99e1d..866ea03c 100755 --- a/constants/status_constants.asm +++ b/constants/status_constants.asm @@ -1,6 +1,6 @@ -; status ailments (masks) -SLP EQU %00000111 -PSN EQU %00001000 -BRN EQU %00010000 -FRZ EQU %00100000 -PAR EQU %01000000 \ No newline at end of file +; status ailments +SLP EQU %111 ; mask +PSN EQU 3 +BRN EQU 4 +FRZ EQU 5 +PAR EQU 6 -- cgit v1.3.1-sl0p From 7eeaad6ab072898a4b69666bdbfc3f4cd041fe0f Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 16 Apr 2014 13:21:22 -0400 Subject: More move effect constants. --- constants/move_effect_constants.asm | 13 ++++- main.asm | 94 ++++++++++++++++++++++++++++++++----- 2 files changed, 95 insertions(+), 12 deletions(-) (limited to 'constants') diff --git a/constants/move_effect_constants.asm b/constants/move_effect_constants.asm index 088482dc..1a6d1be6 100644 --- a/constants/move_effect_constants.asm +++ b/constants/move_effect_constants.asm @@ -13,14 +13,18 @@ DREAM_EATER_EFFECT EQU $08 MIRROR_MOVE_EFFECT EQU $09 ATTACK_UP1_EFFECT EQU $0A DEFENSE_UP1_EFFECT EQU $0B +SPEED_UP1_EFFECT EQU $0C SPECIAL_UP1_EFFECT EQU $0D +ACCURACY_UP1_EFFECT EQU $0E EVASION_UP1_EFFECT EQU $0F PAY_DAY_EFFECT EQU $10 SWIFT_EFFECT EQU $11 ATTACK_DOWN1_EFFECT EQU $12 DEFENSE_DOWN1_EFFECT EQU $13 SPEED_DOWN1_EFFECT EQU $14 +SPECIAL_DOWN1_EFFECT EQU $15 ACCURACY_DOWN1_EFFECT EQU $16 +EVASION_DOWN1_EFFECT EQU $17 CONVERSION_EFFECT EQU $18 HAZE_EFFECT EQU $19 BIDE_EFFECT EQU $1A @@ -49,9 +53,16 @@ ATTACK_UP2_EFFECT EQU $32 DEFENSE_UP2_EFFECT EQU $33 SPEED_UP2_EFFECT EQU $34 SPECIAL_UP2_EFFECT EQU $35 +ACCURACY_UP2_EFFECT EQU $36 +EVASION_UP2_EFFECT EQU $37 HEAL_EFFECT EQU $38 ; Recover, Softboiled, Rest TRANSFORM_EFFECT EQU $39 +ATTACK_DOWN2_EFFECT EQU $3A DEFENSE_DOWN2_EFFECT EQU $3B +SPEED_DOWN2_EFFECT EQU $3C +SPECIAL_DOWN2_EFFECT EQU $3D +ACCURACY_DOWN2_EFFECT EQU $3E +EVASION_DOWN2_EFFECT EQU $3F LIGHT_SCREEN_EFFECT EQU $40 REFLECT_EFFECT EQU $41 POISON_EFFECT EQU $42 @@ -73,4 +84,4 @@ DISABLE_EFFECT EQU $56 ; fixed damage constants SONICBOOM_DAMAGE EQU 20 -DRAGON_RAGE_DAMAGE EQU 40 \ No newline at end of file +DRAGON_RAGE_DAMAGE EQU 40 diff --git a/main.asm b/main.asm index 2bcf7b40..bb62d989 100755 --- a/main.asm +++ b/main.asm @@ -56224,22 +56224,94 @@ BattleCore: ; These are move effects (second value from the Moves table in bank $E). EffectsArray1: ; 3c000 (f:4000) - db $18,$19,$1C,$2E,$2F,$31,$38,$39,$40,$41,$42,$43,$4F,$52,$54,$55,$FF + db CONVERSION_EFFECT + db HAZE_EFFECT + db SWITCH_AND_TELEPORT_EFFECT + db MIST_EFFECT + db FOCUS_ENERGY_EFFECT + db CONFUSION_EFFECT + db HEAL_EFFECT + db TRANSFORM_EFFECT + db LIGHT_SCREEN_EFFECT + db REFLECT_EFFECT + db POISON_EFFECT + db PARALYZE_EFFECT + db SUBSTITUTE_EFFECT + db MIMIC_EFFECT + db LEECH_SEED_EFFECT + db SPLASH_EFFECT + db -1 EffectsArray2: ; 3c011 (f:4011) ; moves that do damage but not through normal calculations ; e.g., Super Fang, Psywave - db $28,$29,$FF + db SUPER_FANG_EFFECT + db SPECIAL_DAMAGE_EFFECT + db -1 EffectsArray3: ; 3c014 (f:4014) ; non-damaging, stat‐affecting or status‐causing moves? ; e.g., Meditate, Bide, Hypnosis - db $01,$0A,$0B,$0C,$0D,$0E,$0F,$12,$13,$14,$15,$16,$17,$1A,$20,$32,$33,$34,$35,$36,$37,$3A,$3B,$3C,$3D,$3E,$3F,$FF + db $01 + db ATTACK_UP1_EFFECT + db DEFENSE_UP1_EFFECT + db SPEED_UP1_EFFECT + db SPECIAL_UP1_EFFECT + db ACCURACY_UP1_EFFECT + db EVASION_UP1_EFFECT + db ATTACK_DOWN1_EFFECT + db DEFENSE_DOWN1_EFFECT + db SPEED_DOWN1_EFFECT + db SPECIAL_DOWN1_EFFECT + db ACCURACY_DOWN1_EFFECT + db EVASION_DOWN1_EFFECT + db BIDE_EFFECT + db SLEEP_EFFECT + db ATTACK_UP2_EFFECT + db DEFENSE_UP2_EFFECT + db SPEED_UP2_EFFECT + db SPECIAL_UP2_EFFECT + db ACCURACY_UP2_EFFECT + db EVASION_UP2_EFFECT + db ATTACK_DOWN2_EFFECT + db DEFENSE_DOWN2_EFFECT + db SPEED_DOWN2_EFFECT + db SPECIAL_DOWN2_EFFECT + db ACCURACY_DOWN2_EFFECT + db EVASION_DOWN2_EFFECT + db -1 EffectsArray4: ; 3c030 (f:4030) - db $03,$07,$08,$10,$1D,$1E,$2C,$30,$4D,$51,$FF +; Attacks that aren't finished after they faint the opponent. + db DRAIN_HP_EFFECT + db EXPLODE_EFFECT + db DREAM_EATER_EFFECT + db PAY_DAY_EFFECT + db TWO_TO_FIVE_ATTACKS_EFFECT + db $1E + db ATTACK_TWICE_EFFECT + db RECOIL_EFFECT + db TWINEEDLE_EFFECT + db RAGE_EFFECT + db -1 EffectsArray5: ; 3c03b (f:403b) - db $03,$07,$08,$10,$11,$1D,$1E,$27,$28,$29,$2B,$2C,$2D,$30 ; fallthru + db DRAIN_HP_EFFECT + db EXPLODE_EFFECT + db DREAM_EATER_EFFECT + db PAY_DAY_EFFECT + db SWIFT_EFFECT + db TWO_TO_FIVE_ATTACKS_EFFECT + db $1E + db CHARGE_EFFECT + db SUPER_FANG_EFFECT + db SPECIAL_DAMAGE_EFFECT + db FLY_EFFECT + db ATTACK_TWICE_EFFECT + db JUMP_KICK_EFFECT + db RECOIL_EFFECT + ; fallthrough EffectsArray5B: ; 3c049 (f:4049) ; moves that prevent the player from switching moves? - db $1B,$2A,$FF + db THRASH_PETAL_DANCE_EFFECT + db TRAPPING_EFFECT + db -1 Func_3c04c: ; 3c04c (f:404c) call Func_3ec92 @@ -59361,9 +59433,9 @@ asm_3d74b ld c,$1E call DelayFrames ld a,[W_PLAYERMOVEEFFECT] - cp a,$2B + cp a,FLY_EFFECT jr z,.next5 - cp a,$27 ; XXX SLP | FRZ ? + cp a,CHARGE_EFFECT jr z,.next5 jr asm_3d766 .next5 @@ -59373,7 +59445,7 @@ asm_3d74b call PlayMoveAnimation asm_3d766 ld a,[W_PLAYERMOVEEFFECT] - cp a,9 + cp a,MIRROR_MOVE_EFFECT jr nz,.next6 ; 577A call MirrorMoveCopyMove jp z,Func_3d80a @@ -59381,7 +59453,7 @@ asm_3d766 ld [$CCED],a jp Func_3d69a .next6 - cp a,$53 + cp a,METRONOME_EFFECT jr nz,.next7 ; 5784 call MetronomePickMove jp Func_3d69a @@ -59396,7 +59468,7 @@ asm_3d766 jr z,.next8 ; 57A6 call Func_3dbe2 ld a,[W_PLAYERMOVEEFFECT] - cp a,7 + cp a,EXPLODE_EFFECT jr z,.next9 ; 57B9 jp Func_3d80a .next8 -- cgit v1.3.1-sl0p From d0e2fc78c0c25e1b6508f7173d4e85c4b6949b2d Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 22 Apr 2014 13:35:55 -0400 Subject: More move and effect constants. Use a constant for total move count. --- constants/move_constants.asm | 5 ++- main.asm | 78 ++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 40 deletions(-) (limited to 'constants') diff --git a/constants/move_constants.asm b/constants/move_constants.asm index 524e7814..9fdb1ce7 100644 --- a/constants/move_constants.asm +++ b/constants/move_constants.asm @@ -1,3 +1,5 @@ +NUM_MOVES EQU $A4 + POUND EQU $01 KARATE_CHOP EQU $02 DOUBLESLAP EQU $03 @@ -163,6 +165,7 @@ SUPER_FANG EQU $A2 SLASH EQU $A3 SUBSTITUTE EQU $A4 STRUGGLE EQU $A5 + ; these do double duty as animation identifiers SHOWPIC_ANIM EQU $A6 ; redraw monster pic STATUS_AFFECTED_ANIM EQU $A7 ; effect when monster receives a status aliment @@ -178,4 +181,4 @@ GREATTOSS_ANIM EQU $C5 ; toss Great Ball ULTRATOSS_ANIM EQU $C6 ; toss Ultra Ball or Master Ball HIDEPIC_ANIM EQU $C8 ; monster disappears ROCK_ANIM EQU $C9 ; throw rock -BAIT_ANIM EQU $CA ; throw bait \ No newline at end of file +BAIT_ANIM EQU $CA ; throw bait diff --git a/main.asm b/main.asm index 6635ccb5..2f84cd85 100755 --- a/main.asm +++ b/main.asm @@ -31865,12 +31865,12 @@ Func_1392c: ; 1392c (4:792c) ld d, a ld a, [W_DAMAGE] ; $d0d7 ld b, a - ld a, [$d0d8] + ld a, [W_DAMAGE + 1] ld c, a srl b rr c ld a, d - cp $a5 + cp STRUGGLE jr z, .asm_13953 srl b rr c @@ -55932,7 +55932,7 @@ Func_3b9ec: ; 3b9ec (e:79ec) sbc [hl] jp z, Func_3ba97 ld a, b - cp $9c + cp REST jr nz, .asm_3ba37 push hl push de @@ -55947,7 +55947,7 @@ Func_3b9ec: ; 3b9ec (e:79ec) .asm_3ba25 ld a, [hl] and a - ld [hl], $2 + ld [hl], 2 ; Number of turns from Rest ld hl, UnnamedText_3baa2 ; $7aa2 jr z, .asm_3ba31 ld hl, UnnamedText_3baa7 ; $7aa7 @@ -59672,7 +59672,7 @@ HyperBeamCheck: ; 3d8c2 (f:58c2) jr c,.next3 ld hl,W_PLAYERBATTSTATUS1 ld a,[hl] - and a,$80 + and a,$80 ; confused ld [hl],a call Func_3daad jr .next5 ; 5952 @@ -59688,7 +59688,7 @@ HyperBeamCheck: ; 3d8c2 (f:58c2) jp Func_3da37 .ParalysisCheck ld hl,W_PLAYERMONSTATUS - bit 6,[hl] + bit PAR,[hl] jr z,.next7 ; 5975 call GenRandomInBattle ; random number cp a,$3F @@ -59701,9 +59701,9 @@ HyperBeamCheck: ; 3d8c2 (f:58c2) and a,$CC ld [hl],a ld a,[W_PLAYERMOVEEFFECT] - cp a,$2B + cp a,FLY_EFFECT jr z,.next8 ; 5966 - cp a,$27 + cp a,CHARGE_EFFECT jr z,.next8 jr .next9 ; 596F .next8 @@ -59759,14 +59759,14 @@ HyperBeamCheck: ; 3d8c2 (f:58c2) xor a ld [hli],a ld [hl],a - ld a,$75 + ld a,BIDE ld [W_PLAYERMOVENUM],a ld hl,asm_3d705 ; $5705 jp Func_3da37 .next10 bit 1,[hl] jr z,.next13 ; 59FF - ld a,$25 + ld a,THRASH ld [W_PLAYERMOVENUM],a ld hl,ThrashingAboutText call PrintText @@ -59801,7 +59801,7 @@ Func_3da1a: ; 3da1a (f:5a1a) ld a, [W_PLAYERBATTSTATUS2] ; $d063 bit 6, a jp z, Func_3da39 - ld a, $63 + ld a, RAGE ld [$d11e], a call GetMoveName call CopyStringToCF4B @@ -59967,7 +59967,7 @@ UnnamedText_3dafb: ; 3dafb (f:5afb) ld hl, UnnamedText_3db34 ; $5b34 ret nz ld a, [$d11e] - cp $3 + cp DOUBLESLAP ld hl, UnnamedText_3db34 ; $5b34 ret c ld hl, UnnamedText_3db2d ; $5b2d @@ -61344,7 +61344,7 @@ MetronomePickMove: ; 3e348 (f:6348) call GenRandomInBattle ; random number and a jr z,.pickMoveLoop - cp a,$a5 ; max normal move number + 1 (this is Struggle's move number) + cp a,NUM_MOVES + 1 ; max normal move number + 1 (this is Struggle's move number) jr nc,.pickMoveLoop cp a,METRONOME jr z,.pickMoveLoop @@ -62294,7 +62294,7 @@ asm_3e9f6: ; 3e9f6 (f:69f6) xor a ld [hli], a ld [hl], a - ld a, $75 + ld a, BIDE ld [W_ENEMYMOVENUM], a ; $cfcc call Func_3ec81 ld hl, asm_3e782 ; $6782 @@ -62302,7 +62302,7 @@ asm_3e9f6: ; 3e9f6 (f:69f6) .asm_3ea54 bit 1, [hl] jr z, .asm_3ea83 - ld a, $25 + ld a, THRASH ld [W_ENEMYMOVENUM], a ; $cfcc ld hl, ThrashingAboutText ; $5a79 call PrintText @@ -62336,7 +62336,7 @@ Func_3ea9b: ; 3ea9b (f:6a9b) ld a, [W_ENEMYBATTSTATUS2] ; $d068 bit 6, a jp z, Func_3eaba - ld a, $63 + ld a, RAGE ld [$d11e], a call GetMoveName call CopyStringToCF4B @@ -62978,24 +62978,24 @@ Func_3eed3: ; 3eed3 (f:6ed3) ld de, W_ENEMYBATTSTATUS1 ; $d067 ld a, [W_ENEMYMOVENUM] ; $cfcc .asm_3eeea - cp $78 + cp SELFDESTRUCT jr z, .asm_3eef1 - cp $99 + cp EXPLOSION ret nz .asm_3eef1 ld a, [de] - bit 6, a + bit 6, a ; fly/dig ret nz ld a, [hli] - cp $8 + cp GHOST ret z ld a, [hl] - cp $8 + cp GHOST ret z ld a, [W_MOVEMISSED] ; $d05f and a ret nz - ld a, $5 + ld a, MEGA_PUNCH ld [$cc5b], a PlayMoveAnimation: ; 3ef07 (f:6f07) @@ -63851,7 +63851,7 @@ asm_3f4ca: ; 3f4ca (f:74ca) ld bc, $ccf3 .asm_3f4e6 ld a, [de] - cp $6b + cp MINIMIZE jr nz, .asm_3f4f9 bit 4, [hl] push af @@ -63864,7 +63864,7 @@ asm_3f4ca: ; 3f4ca (f:74ca) .asm_3f4f9 call Func_3fba8 ld a, [de] - cp $6b + cp MINIMIZE jr nz, .asm_3f50e pop bc ld a, $1 @@ -63900,7 +63900,7 @@ UnnamedText_3f528: ; 3f528 (f:7528) jr z, .asm_3f53b ld a, [W_ENEMYMOVEEFFECT] ; $cfcd .asm_3f53b - cp $12 + cp ATTACK_DOWN1_EFFECT ret nc ld hl, UnnamedText_3f547 ; $7547 ret @@ -64264,7 +64264,7 @@ Func_3f739: ; 3f739 (f:7739) ld c, $32 call DelayFrames ld a, [W_ENEMYMOVENUM] ; $cfcc - cp $64 + cp TELEPORT jp nz, Func_3fb5e jp Func_3fb53 .asm_3f7c1 @@ -64280,7 +64280,7 @@ Func_3f739: ; 3f739 (f:7739) call DelayFrames ld hl, UnnamedText_3fb69 ; $7b69 ld a, [W_ENEMYMOVENUM] ; $cfcc - cp $64 + cp TELEPORT jp nz, PrintText jp Func_3fb4e .asm_3f7e4 @@ -64290,10 +64290,10 @@ Func_3f739: ; 3f739 (f:7739) call DelayFrames pop af ld hl, UnnamedText_3f802 ; $7802 - cp $64 + cp TELEPORT jr z, .asm_3f7ff ld hl, UnnamedText_3f807 ; $7807 - cp $2e + cp ROAR jr z, .asm_3f7ff ld hl, UnnamedText_3f80c ; $780c .asm_3f7ff @@ -64332,9 +64332,9 @@ Func_3f811: ; 3f811 (f:7811) ld hl, W_ENEMYMOVEEFFECT ; $cfcd .asm_3f838 ld a, [hl] - cp $4d + cp TWINEEDLE_EFFECT jr z, .asm_3f856 - cp $2c + cp ATTACK_TWICE_EFFECT ld a, $2 jr z, .asm_3f853 call GenRandomInBattle @@ -64422,22 +64422,22 @@ UnnamedText_3f8c8: ; 3f8c8 (f:78c8) TX_FAR _UnnamedText_3f8c8 db $08 ; asm ld a, [wWhichTrade] ; $cd3d - cp $d + cp RAZOR_WIND ld hl, UnnamedText_3f8f9 ; $78f9 jr z, .asm_3f8f8 - cp $4c + cp SOLARBEAM ld hl, UnnamedText_3f8fe ; $78fe jr z, .asm_3f8f8 - cp $82 + cp SKULL_BASH ld hl, UnnamedText_3f903 ; $7903 jr z, .asm_3f8f8 - cp $8f + cp SKY_ATTACK ld hl, UnnamedText_3f908 ; $7908 jr z, .asm_3f8f8 - cp $13 + cp FLY ld hl, UnnamedText_3f90d ; $790d jr z, .asm_3f8f8 - cp $5b + cp DIG ld hl, UnnamedText_3f912 ; $7912 .asm_3f8f8 ret @@ -64540,7 +64540,7 @@ Func_3f96f: ; 3f96f (f:796f) inc a ld [bc], a pop af - cp $4c + cp CONFUSION_SIDE_EFFECT call nz, Func_3fb89 ld hl, UnnamedText_3f9a1 ; $79a1 jp PrintText @@ -64550,7 +64550,7 @@ UnnamedText_3f9a1: ; 3f9a1 (f:79a1) db "@" Func_3f9a6: ; 3f9a6 (f:79a6) - cp $4c + cp CONFUSION_SIDE_EFFECT ret z ld c, $32 call DelayFrames -- cgit v1.3.1-sl0p From b73ed53ab77844d8e6fcf1d1c8f5dbb780e3cd06 Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 22 Apr 2014 13:37:07 -0400 Subject: Comment in-game trade evolution. --- constants/wram_constants.asm | 3 +++ main.asm | 43 +++++++++++++++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 10 deletions(-) (limited to 'constants') diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 111ae584..51c5c604 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -5,3 +5,6 @@ SPRITEBUFFERSIZE EQU 7*7 * 8 ; 7 * 7 (tiles) * 8 (bytes per tile) W_WATERRATE EQU $d8a4 W_WATERMONS EQU $d8a5 +; Overload enemy stat modifiers +wTradeMonNick EQU $cd1e + diff --git a/main.asm b/main.asm index 2f84cd85..e990ccd4 100755 --- a/main.asm +++ b/main.asm @@ -33232,16 +33232,39 @@ EmotionBubblesOAM: ; 17cb5 (5:7cb5) EmotionBubbles: ; 17cbd (5:7cbd) INCBIN "gfx/emotion_bubbles.w16.2bpp" -Func_17d7d: ; 17d7d (5:7d7d) - ld a, [wPlayerMonAccuracyMod] ; $cd1e - cp $86 - jr z, .asm_17d8d - cp $92 +EvolveTradeMon: ; 17d7d (5:7d7d) +; Verify the TradeMon's species name before +; attempting to initiate a trade evolution. + +; The names of the trade evolutions in Blue (JP) +; are checked. In that version, TradeMons that +; can evolve are Graveler and Haunter. + +; In localization, this check was translated +; before monster names were finalized. +; Then, Haunter's name was "Spectre". +; Since its name no longer starts with +; "SP", it is prevented from evolving. + +; This may have been why Red/Green's trades +; were used instead, where none can evolve. + +; This was fixed in Yellow. + + ld a, [wTradeMonNick] + + ; GRAVELER + cp "G" + jr z, .ok + + ; "SPECTRE" (HAUNTER) + cp "S" ret nz - ld a, [wPlayerMonEvasionMod] ; $cd1f - cp $8f + ld a, [wTradeMonNick + 1] + cp "P" ret nz -.asm_17d8d + +.ok ld a, [W_NUMINPARTY] ; $d163 dec a ld [wWhichPokemon], a ; $cf92 @@ -101816,8 +101839,8 @@ Func_71c07: ; 71c07 (1c:5c07) ld [$cc49],a call AddPokemonToParty call Func_71d19 - ld hl, Func_17d7d - ld b, BANK(Func_17d7d) + ld hl, EvolveTradeMon + ld b, BANK(EvolveTradeMon) call Bankswitch call ClearScreen call Func_71ca2 -- cgit v1.3.1-sl0p