diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index eb5d97abe..5af896533 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -2,6 +2,7 @@ ; name length PLAYER_NAME_LENGTH EQU 8 PKMN_NAME_LENGTH EQU 11 +NAME_LENGTH EQU 11 ; boxes NUM_BOXES EQU 14 diff --git a/engine/scripting.asm b/engine/scripting.asm index 4886327ca..43af00669 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -461,11 +461,11 @@ Script_yesorno: ; 0x96eed ; script command 0x4e call YesNoBox - ld a, $0 + ld a, 0 jr c, .asm_96ef6 ; 0x96ef2 $2 - ld a, $1 + ld a, 1 .asm_96ef6 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x96efa @@ -500,10 +500,10 @@ Script_pokepic: ; 0x96f16 call GetScriptByte and a - jr nz, .asm_96f1f ; 0x96f1a $3 - ld a, [$c2dd] -.asm_96f1f - ld [$d108], a + jr nz, .ok + ld a, [ScriptVar] +.ok + ld [CurPartySpecies], a callba Function244e3 ret ; 0x96f29 @@ -522,10 +522,10 @@ Script_interpretmenu2: ; 0x96f30 ld hl, Function1d81 rst FarCall ld a, [$cfa9] - jr nc, .asm_96f3d ; 0x96f3a $1 + jr nc, .ok xor a -.asm_96f3d - ld [$c2dd], a +.ok + ld [ScriptVar], a ret ; 0x96f41 @@ -536,10 +536,10 @@ Script_interpretmenu: ; 0x96f41 ld hl, Function202a rst FarCall ld a, [$cf88] - jr nc, .asm_96f4e ; 0x96f4b $1 + jr nc, .ok xor a -.asm_96f4e - ld [$c2dd], a +.ok + ld [ScriptVar], a ret ; 0x96f52 @@ -607,21 +607,21 @@ Script_verbosegiveitem2: ; 0x96f8e call GetScriptByte cp $ff - jr nz, .asm_96f98 ; 0x96f93 $3 - ld a, [$c2dd] -.asm_96f98 - ld [$d106], a + jr nz, .ok + ld a, [ScriptVar] +.ok + ld [CurItem], a call GetScriptByte - call Unknown_0x9769e + call Function9769e ld a, [de] ld [$d10c], a - ld hl, $d892 + ld hl, NumItems call ReceiveItem ld a, $1 - jr c, .asm_96fb0 ; 0x96fad $1 + jr c, .ok2 xor a -.asm_96fb0 - ld [$c2dd], a +.ok2 + ld [ScriptVar], a call CurItemName ld de, StringBuffer1 ld a, $1 @@ -745,7 +745,7 @@ Script_elevator: ; 0x9707c ; floor_list_pointer (PointerLabelParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte ld e, a call GetScriptByte @@ -755,7 +755,7 @@ Script_elevator: ; 0x9707c callba Function1342d ret c ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97099 @@ -812,7 +812,7 @@ Script_askforphonenumber: ; 0x970be call GetScriptByte ld a, $2 .asm_970db - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x970df @@ -895,7 +895,7 @@ Script_trainerstatus: ; 0x97132 ; action (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a ld hl, $d041 ld e, [hl] inc hl @@ -907,7 +907,7 @@ Script_trainerstatus: ; 0x97132 and a ret z ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x9714c @@ -943,12 +943,12 @@ Script_talkaftercheck: ; 0x9716b ; script command 0x67 ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ld a, [$d04d] and a ret nz xor a - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x9717a @@ -964,7 +964,7 @@ Script_playrammusic: ; 0x9717a Script_playmapmusic: ; 0x97185 ; script command 0x82 - call Function3cdf + call PlayMapMusic ret ; 0x97189 @@ -973,7 +973,7 @@ Script_playmusic: ; 0x97189 ; parameters: ; music_pointer (MultiByteParam) - ld de, $0000 + ld de, MUSIC_NONE call PlayMusic xor a ld [$c2a7], a @@ -993,9 +993,9 @@ Script_musicfadeout: ; 0x971a2 ; fadetime (SingleByteParam) call GetScriptByte - ld [$c2a9], a + ld [MusicFadeID], a call GetScriptByte - ld [$c2aa], a + ld [MusicFadeID + 1], a call GetScriptByte and $7f ld [$c2a7], a @@ -1041,13 +1041,13 @@ Script_cry: ; 0x971d1 pop af and a jr nz, .asm_971df ; 0x971da $3 - ld a, [$c2dd] + ld a, [ScriptVar] .asm_971df call Function37ce ret ; 0x971e3 -Unknown_0x971e3: ; 0x971e3 +Function971e3: ; 0x971e3 and a ret z cp $fe @@ -1062,7 +1062,7 @@ Script_setlasttalked: ; 0x971ea ; person (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld [$ffe0], a ret ; 0x971f3 @@ -1074,7 +1074,7 @@ Script_applymovement: ; 0x971f3 ; data (MovementPointerLabelParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld c, a ; 971fa @@ -1084,7 +1084,7 @@ Function971fa: ; 971fa callba Function585c pop bc push bc - call Unknown_0x97221 + call Function97221 pop bc call GetScriptByte ld l, a @@ -1100,7 +1100,7 @@ Function971fa: ; 971fa ret ; 0x97221 -Unknown_0x97221: ; 0x97221 +Function97221: ; 0x97221 callba Function5897 ret ; 0x97228 @@ -1131,7 +1131,7 @@ Script_faceplayer: ; 0x9722e ld e, a ld a, [$ffe0] ld d, a - call Unknown_0x9728b + call Function9728b ret ; 0x97248 @@ -1142,14 +1142,14 @@ Script_faceperson: ; 0x97248 ; person2 (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr c, .asm_97254 ; 0x97250 $2 ld a, [$ffe0] .asm_97254 ld e, a call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr nz, .asm_97261 ; 0x9725d $2 ld a, [$ffe0] @@ -1164,7 +1164,7 @@ Script_faceperson: ; 0x97248 add a ld e, a ld d, c - call Unknown_0x9728b + call Function9728b ret ; 0x97274 @@ -1175,7 +1175,7 @@ Script_spriteface: ; 0x97274 ; facing (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr nz, .asm_97280 ; 0x9727c $2 ld a, [$ffe0] @@ -1185,11 +1185,11 @@ Script_spriteface: ; 0x97274 add a add a ld e, a - call Unknown_0x9728b + call Function9728b ret ; 0x9728b -Unknown_0x9728b: ; 0x9728b +Function9728b: ; 0x9728b ld a, d push de call Function18de @@ -1211,7 +1211,7 @@ Unknown_0x9728b: ; 0x9728b ld hl, $d0ed bit 6, [hl] jr nz, .asm_972b5 ; 0x972b0 $3 - call Unknown_0x972bc + call Function972bc .asm_972b5 call Function1ad2 ret @@ -1221,7 +1221,7 @@ Unknown_0x9728b: ; 0x9728b ret ; 0x972bc -Unknown_0x972bc: ; 0x972bc +Function972bc: ; 0x972bc call Function217a ld hl, TileMap ld bc, $0168 @@ -1257,11 +1257,11 @@ Script_appear: ; 0x972dd ; person (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 call Function1956 ld a, [$ffaf] ld b, $0 - call Unknown_0x9730b + call Function9730b ret ; 0x972ee @@ -1271,7 +1271,7 @@ Script_disappear: ; 0x972ee ; person (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr nz, .asm_972fa ; 0x972f6 $2 ld a, [$ffe0] @@ -1279,12 +1279,12 @@ Script_disappear: ; 0x972ee call Function199f ld a, [$ffaf] ld b, $1 - call Unknown_0x9730b + call Function9730b callba Function5920 ret ; 0x9730b -Unknown_0x9730b: ; 0x9730b +Function9730b: ; 0x9730b push bc call GetMapObject ld hl, $000c @@ -1312,10 +1312,10 @@ Script_follow: ; 0x97325 ; person1 (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld b, a call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld c, a callba Function5803 ret @@ -1336,7 +1336,7 @@ Script_moveperson: ; 0x97341 ; y (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld b, a call GetScriptByte add $4 @@ -1354,7 +1354,7 @@ Script_writepersonxy: ; 0x9735b ; person (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr nz, .asm_97367 ; 0x97363 $2 ld a, [$ffe0] @@ -1371,10 +1371,10 @@ Script_follownotexact: ; 0x9736f ; person1 (SingleByteParam) call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld b, a call GetScriptByte - call Unknown_0x971e3 + call Function971e3 ld c, a callba Function839e ret @@ -1388,7 +1388,7 @@ Script_loademote: ; 0x97384 call GetScriptByte cp $ff jr nz, .asm_9738e ; 0x97389 $3 - ld a, [$c2dd] + ld a, [ScriptVar] .asm_9738e ld c, a callba Function1442f @@ -1403,9 +1403,9 @@ Script_showemote: ; 0x97396 ; time (DecimalParam) call GetScriptByte - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte - call Unknown_0x971e3 + call Function971e3 cp $fe jr z, .asm_973a8 ; 0x973a4 $2 ld [$ffe0], a @@ -1473,7 +1473,7 @@ Script_loadpikachudata: ; 0x973f0 ld a, $19 ld [$d22e], a ld a, $5 - ld [$d143], a + ld [CurPartyLevel], a ret ; 0x973fb @@ -1508,7 +1508,7 @@ Script_loadpokedata: ; 0x97412 call GetScriptByte ld [$d22e], a call GetScriptByte - ld [$d143], a + ld [CurPartyLevel], a ret ; 0x97424 @@ -1535,7 +1535,7 @@ Script_startbattle: ; 0x97436 call Predef ld a, [$d0ee] and $3f - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97447 @@ -1663,7 +1663,7 @@ ScriptCall: ; 0x974cb ret ; 0x974f3 -Unknown_0x974f3:: ; 0x974f3 +Function974f3:: ; 0x974f3 ld a, [ScriptBank] or $80 ld [ScriptBank], a @@ -1720,7 +1720,7 @@ Script_iffalse: ; 0x9752c ; parameters: ; pointer (ScriptPointerLabelParam) - ld a, [$c2dd] + ld a, [ScriptVar] and a jp nz, SkipTwoScriptBytes jp Script_2jump @@ -1731,7 +1731,7 @@ Script_iftrue: ; 0x97536 ; parameters: ; pointer (ScriptPointerLabelParam) - ld a, [$c2dd] + ld a, [ScriptVar] and a jp nz, Script_2jump jp SkipTwoScriptBytes @@ -1744,7 +1744,7 @@ Script_if_equal: ; 0x97540 ; pointer (ScriptPointerLabelParam) call GetScriptByte - ld hl, $c2dd + ld hl, ScriptVar cp [hl] jr z, Script_2jump ; 0x97547 $b5 jr SkipTwoScriptBytes ; 0x97549 $4b @@ -1757,7 +1757,7 @@ Script_if_not_equal: ; 0x9754b ; pointer (ScriptPointerLabelParam) call GetScriptByte - ld hl, $c2dd + ld hl, ScriptVar cp [hl] jr nz, Script_2jump ; 0x97552 $aa jr SkipTwoScriptBytes ; 0x97554 $40 @@ -1769,7 +1769,7 @@ Script_if_greater_than: ; 0x97556 ; byte (SingleByteParam) ; pointer (ScriptPointerLabelParam) - ld a, [$c2dd] + ld a, [ScriptVar] ld b, a call GetScriptByte cp b @@ -1785,7 +1785,7 @@ Script_if_less_than: ; 0x97562 call GetScriptByte ld b, a - ld a, [$c2dd] + ld a, [ScriptVar] cp b jr c, Script_2jump ; 0x9756a $92 jr SkipTwoScriptBytes ; 0x9756c $28 @@ -1866,11 +1866,11 @@ Script_checktriggers: ; 0x975c2 call Function211b jr z, .asm_975cb ; 0x975c5 $4 - ld [$c2dd], a + ld [ScriptVar], a ret .asm_975cb ld a, $ff - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x975d1 @@ -1889,11 +1889,11 @@ Script_checkmaptriggers: ; 0x975d1 or e jr z, .asm_975e5 ; 0x975de $5 ld a, [de] - ld [$c2dd], a + ld [ScriptVar], a ret .asm_975e5 ld a, $ff - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x975eb @@ -1943,7 +1943,7 @@ Script_copybytetovar: ; 0x97609 call GetScriptByte ld h, a ld a, [hl] - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97616 @@ -1956,7 +1956,7 @@ Script_copyvartobyte: ; 0x97616 ld l, a call GetScriptByte ld h, a - ld a, [$c2dd] + ld a, [ScriptVar] ld [hl], a ret ; 0x97623 @@ -1982,7 +1982,7 @@ Script_writebyte: ; 0x97630 ; value (SingleByteParam) call GetScriptByte - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97637 @@ -1992,7 +1992,7 @@ Script_addvar: ; 0x97637 ; value (SingleByteParam) call GetScriptByte - ld hl, $c2dd + ld hl, ScriptVar add [hl] ld [hl], a ret @@ -2004,11 +2004,11 @@ Script_random: ; 0x97640 ; input (SingleByteParam) call GetScriptByte - ld [$c2dd], a + ld [ScriptVar], a and a ret z ld c, a - call Unknown_0x97673 + call Function97673 and a jr z, .asm_9765f ; 0x9764d $10 ld b, a @@ -2030,15 +2030,15 @@ Script_random: ; 0x97640 ld a, [$ffe1] .asm_97666 push af - ld a, [$c2dd] + ld a, [ScriptVar] ld c, a pop af call SimpleDivide - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97673 -Unknown_0x97673: ; 0x97673 +Function97673: ; 0x97673 xor a ld b, a sub c @@ -2057,9 +2057,9 @@ Script_checkcode: ; 0x9767d ; variable_id (SingleByteParam) call GetScriptByte - call Unknown_0x9769e + call Function9769e ld a, [de] - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97688 @@ -2069,8 +2069,8 @@ Script_writevarcode: ; 0x97688 ; variable_id (SingleByteParam) call GetScriptByte - call Unknown_0x9769e - ld a, [$c2dd] + call Function9769e + ld a, [ScriptVar] ld [de], a ret ; 0x97693 @@ -2082,13 +2082,13 @@ Script_writecode: ; 0x97693 ; value (SingleByteParam) call GetScriptByte - call Unknown_0x9769e + call Function9769e call GetScriptByte ld [de], a ret ; 0x9769e -Unknown_0x9769e: ; 0x9769e +Function9769e: ; 0x9769e ld c, a callba Function80648 ret @@ -2098,7 +2098,7 @@ Script_checkver: ; 0x976a6 ; script command 0x18 ld a, [Version] - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x976ad @@ -2115,7 +2115,7 @@ Script_pokenamemem: ; 0x976ae call GetScriptByte and a jr nz, .asm_976b7 ; 0x976b2 $3 - ld a, [$c2dd] + ld a, [ScriptVar] .asm_976b7 ld [$d265], a call GetPokemonName @@ -2146,7 +2146,7 @@ Script_itemtotext: ; 0x976d5 call GetScriptByte and a jr nz, .asm_976de ; 0x976d9 $3 - ld a, [$c2dd] + ld a, [ScriptVar] .asm_976de ld [$d265], a call GetItemName @@ -2228,8 +2228,8 @@ Script_readmoney: ; 0x97732 ; account (SingleByteParam) ; memory (SingleByteParam) - call Unknown_0x97771 - call Unknown_0x97861 + call Function97771 + call Function97861 ld hl, StringBuffer1 ld bc, $4306 call PrintNum @@ -2242,7 +2242,7 @@ Script_readcoins: ; 0x97747 ; parameters: ; memory (SingleByteParam) - call Unknown_0x97771 + call Function97771 ld hl, StringBuffer1 ld de, Coins ld bc, $4206 @@ -2256,8 +2256,8 @@ Script_RAM2MEM: ; 0x9775c ; parameters: ; memory (SingleByteParam) - call Unknown_0x97771 - ld de, $c2dd + call Function97771 + ld de, ScriptVar ld hl, StringBuffer1 ld bc, $4103 call PrintNum @@ -2265,7 +2265,7 @@ Script_RAM2MEM: ; 0x9775c jp Unknown_976c0 ; 0x97771 -Unknown_0x97771: ; 0x97771 +Function97771: ; 0x97771 ld hl, StringBuffer1 ld bc, $000b ld a, "@" @@ -2337,20 +2337,20 @@ Script_giveitem: ; 0x977ca call GetScriptByte cp $ff jr nz, .asm_977d4 ; 0x977cf $3 - ld a, [$c2dd] + ld a, [ScriptVar] .asm_977d4 - ld [$d106], a + ld [CurItem], a call GetScriptByte ld [$d10c], a - ld hl, $d892 + ld hl, NumItems call ReceiveItem jr nc, .asm_977eb ; 0x977e3 $6 ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret .asm_977eb xor a - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x977f0 @@ -2361,18 +2361,18 @@ Script_takeitem: ; 0x977f0 ; quantity (DecimalParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte - ld [$d106], a + ld [CurItem], a call GetScriptByte ld [$d10c], a ld a, $ff ld [$d107], a - ld hl, $d892 + ld hl, NumItems call TossItem ret nc ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97812 @@ -2382,14 +2382,14 @@ Script_checkitem: ; 0x97812 ; item (ItemLabelByte) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte - ld [$d106], a - ld hl, $d892 + ld [CurItem], a + ld hl, NumItems call CheckItem ret nc - ld a, $1 - ld [$c2dd], a + ld a, 1 + ld [ScriptVar], a ret ; 0x97829 @@ -2399,8 +2399,8 @@ Script_givemoney: ; 0x97829 ; account (SingleByteParam) ; money (MoneyByteParam) - call Unknown_0x97861 - call Unknown_0x9786d + call Function97861 + call Function9786d callba Function15fd7 ret ; 0x97836 @@ -2411,8 +2411,8 @@ Script_takemoney: ; 0x97836 ; account (SingleByteParam) ; money (MoneyByteParam) - call Unknown_0x97861 - call Unknown_0x9786d + call Function97861 + call Function9786d callba Function15ffa ret ; 0x97843 @@ -2423,27 +2423,27 @@ Script_checkmoney: ; 0x97843 ; account (SingleByteParam) ; money (MoneyByteParam) - call Unknown_0x97861 - call Unknown_0x9786d + call Function97861 + call Function9786d callba Function1600b ; 0x9784f Unknown_9784f: ; 0x9784f - jr c, .asm_9785b ; 0x9784f $a - jr z, .asm_97857 ; 0x97851 $4 - ld a, $0 - jr .asm_9785d ; 0x97855 $6 -.asm_97857 - ld a, $1 - jr .asm_9785d ; 0x97859 $2 -.asm_9785b - ld a, $2 -.asm_9785d - ld [$c2dd], a + jr c, .two + jr z, .one + ld a, 0 + jr .done +.one + ld a, 1 + jr .done +.two + ld a, 2 +.done + ld [ScriptVar], a ret ; 0x97861 -Unknown_0x97861: ; 0x97861 +Function97861: ; 0x97861 call GetScriptByte and a ld de, $d84e @@ -2452,7 +2452,7 @@ Unknown_0x97861: ; 0x97861 ret ; 0x9786d -Unknown_0x9786d: ; 0x9786d +Function9786d: ; 0x9786d ld bc, $ffc3 push bc call GetScriptByte @@ -2512,13 +2512,13 @@ Script_checktime: ; 0x978ae ; time (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a callba Functionc000 call GetScriptByte and c ret z ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x978c3 @@ -2528,14 +2528,14 @@ Script_checkpoke: ; 0x978c3 ; pkmn (PokemonParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte - ld hl, $dcd8 - ld de, $0001 + ld hl, PartySpecies + ld de, 1 call IsInArray ret nc - ld a, $1 - ld [$c2dd], a + ld a, 1 + ld [ScriptVar], a ret ; 0x978da @@ -2545,13 +2545,13 @@ Script_addcellnum: ; 0x978da ; person (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte ld c, a callba Function90000 ret nc ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x978ef @@ -2561,13 +2561,13 @@ Script_delcellnum: ; 0x978ef ; person (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte ld c, a callba Function9000f ret nc ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97904 @@ -2577,13 +2577,13 @@ Script_checkcellnum: ; 0x97904 ; person (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte ld c, a callba Function90019 ret nc ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97919 @@ -2604,10 +2604,10 @@ Script_checkphonecall: ; 0x97926 ld a, [$dc31] and a - jr z, .asm_9792e ; 0x9792a $2 - ld a, $1 -.asm_9792e - ld [$c2dd], a + jr z, .ok + ld a, 1 +.ok + ld [ScriptVar], a ret ; 0x97932 @@ -2622,15 +2622,15 @@ Script_givepoke: ; 0x97932 ; pkmn_nickname (MultiByteParam) call GetScriptByte - ld [$d108], a + ld [CurPartySpecies], a call GetScriptByte - ld [$d143], a + ld [CurPartyLevel], a call GetScriptByte - ld [$d106], a + ld [CurItem], a call GetScriptByte and a ld b, a - jr z, .asm_9795d ; 0x97949 $12 + jr z, .ok ld hl, ScriptPos ld e, [hl] inc hl @@ -2639,10 +2639,10 @@ Script_givepoke: ; 0x97932 call GetScriptByte call GetScriptByte call GetScriptByte -.asm_9795d +.ok callba Functione277 ld a, b - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97968 @@ -2653,16 +2653,16 @@ Script_giveegg: ; 0x97968 ; level (DecimalParam) xor a - ld [$c2dd], a + ld [ScriptVar], a ld [$cf5f], a call GetScriptByte - ld [$d108], a + ld [CurPartySpecies], a call GetScriptByte - ld [$d143], a + ld [CurPartyLevel], a callba Functiondf8c ret nc ld a, $2 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97988 @@ -2710,7 +2710,7 @@ Script_checkevent: ; 0x979a4 jr z, .asm_979b7 ; 0x979b3 $2 ld a, $1 .asm_979b7 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x979bb @@ -2724,7 +2724,7 @@ Script_setflag: ; 0x979bb call GetScriptByte ld d, a ld b, $1 - call Unknown_0x979ee + call Function979ee ret ; 0x979c9 @@ -2738,7 +2738,7 @@ Script_clearflag: ; 0x979c9 call GetScriptByte ld d, a ld b, $0 - call Unknown_0x979ee + call Function979ee ret ; 0x979d7 @@ -2752,17 +2752,17 @@ Script_checkflag: ; 0x979d7 call GetScriptByte ld d, a ld b, $2 - call Unknown_0x979ee + call Function979ee ld a, c and a jr z, .asm_979ea ; 0x979e6 $2 ld a, $1 .asm_979ea - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x979ee -Unknown_0x979ee: ; 0x979ee +Function979ee: ; 0x979ee callba EngineFlagAction ret ; 0x979f5 @@ -2911,13 +2911,13 @@ Script_delcmdqueue: ; 0x97a9e ; byte (SingleByteParam) xor a - ld [$c2dd], a + ld [ScriptVar], a call GetScriptByte ld b, a callba Function97e5c ret c ld a, $1 - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97ab3 @@ -2978,7 +2978,7 @@ Script_warpcheck: ; 0x97af6 ret ; 0x97b01 -Unknown_0x97b01: ; 0x97b01 +Function97b01: ; 0x97b01 callba Function966d0 ret ; 0x97b08 @@ -3227,7 +3227,7 @@ Script_unknown0xa9: ; 0x97c15 callba Function4cffe ld a, c - ld [$c2dd], a + ld [ScriptVar], a ret ; 0x97c20 diff --git a/home.asm b/home.asm index caa595adb..3bea298b7 100644 --- a/home.asm +++ b/home.asm @@ -57,6 +57,7 @@ INCLUDE "home/window.asm" Function2e4e:: ; 2e4e +; Unreferenced. scf ret ; 2e50 @@ -70,11 +71,10 @@ Function2ebb:: ; 2ebb bit 1, a ret z ld a, [hJoyDown] - bit A_BUTTON, a + bit 1, a ; B_BUTTON ret ; 2ec6 - Function2ec6:: ; 2ec6 xor a ret @@ -219,7 +219,7 @@ Function309d:: ; 309d ld [rSVBK], a ld hl, TileMap ld de, $d000 - ld bc, 360 + ld bc, TileMapEnd - TileMap call CopyBytes pop af ld [rSVBK], a @@ -242,7 +242,7 @@ Function30bf:: ; 30bf ld [rSVBK], a ld hl, $d000 ld de, TileMap - ld bc, 360 + ld bc, TileMapEnd - TileMap call CopyBytes pop af ld [rSVBK], a @@ -289,8 +289,8 @@ IsInArray:: ; 30e1 ; 30f4 SkipNames:: ; 0x30f4 -; skips n names where n = a - ld bc, $000b ; name length +; Skip a names. + ld bc, NAME_LENGTH and a ret z .loop @@ -301,7 +301,7 @@ SkipNames:: ; 0x30f4 ; 0x30fe AddNTimes:: ; 0x30fe -; adds bc n times where n = a +; Add bc * a to hl. and a ret z .loop @@ -400,7 +400,7 @@ PrintLetterDelay:: ; 313d CopyDataUntil:: ; 318c -; Copy [hl .. bc) to [de .. de + bc - hl). +; Copy [hl .. bc) to de. ; In other words, the source data is ; from hl up to but not including bc, @@ -550,13 +550,14 @@ WaitBGMap:: ; 31f6 Function3200:: ; 0x3200 ld a, [hCGB] and a - jr z, .asm_320e + jr z, .bg0 + ld a, 2 ld [hBGMapMode], a ld c, 4 call DelayFrames -.asm_320e +.bg0 ld a, 1 ld [hBGMapMode], a ld c, 4 @@ -575,17 +576,17 @@ Function3218:: ; 3218 Function321c:: ; 321c ld a, [hCGB] and a - jr z, .asm_322e + jr z, .dmg ld a, [$c2ce] cp 0 - jr z, .asm_322e + jr z, .dmg ld a, 1 ld [hBGMapMode], a jr Function323d -.asm_322e +.dmg ld a, 1 ld [hBGMapMode], a ld c, 4 @@ -616,10 +617,11 @@ Function3246:: ; 3246 push af xor a ld [$ffde], a -.asm_3252 +.wait ld a, [rLY] cp $7f - jr c, .asm_3252 ; 3256 $fa + jr c, .wait + di ld a, $1 ld [rVBK], a @@ -629,11 +631,12 @@ Function3246:: ; 3246 ld [rVBK], a ld hl, TileMap call Function327b -.asm_326d +.wait2 ld a, [rLY] cp $7f - jr c, .asm_326d ; 3271 $fa + jr c, .wait2 ei + pop af ld [$ffde], a pop af @@ -651,10 +654,10 @@ Function327b:: ; 327b ld [$ffd3], a ld b, $2 ld c, $41 -.asm_328c - pop de -rept 9 +.loop +rept 10 + pop de .loop\@ ld a, [$ff00+c] and b @@ -663,27 +666,18 @@ rept 9 inc l ld [hl], d inc l - pop de endr -.asm_32de - ld a, [$ff00+c] - and b - jr nz, .asm_32de - ld [hl], e - inc l - ld [hl], d - inc l - ld de, $000c add hl, de ld a, [$ffd3] dec a ld [$ffd3], a - jr nz, .asm_328c + jr nz, .loop + ld a, [hSPBuffer] ld l, a - ld a, [$ffda] + ld a, [hSPBuffer + 1] ld h, a ld sp, hl ret @@ -2077,340 +2071,7 @@ Function392d:: ; 392d ; 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 @@ -2464,6 +2125,7 @@ GetBattleAnimByte:: ; 3af0 ; 3b0c Function3b0c:: ; 3b0c + ld a, [hLCDStatCustom] and a ret z @@ -2486,14 +2148,17 @@ Function3b0c:: ; 3b0c Function3b2a:: ; 3b2a + ld [$c3b8], a ld a, [hROMBank] push af + ld a, BANK(Function8cfd6) rst Bankswitch - ld a, [$c3b8] + call Function8cfd6 + pop af rst Bankswitch @@ -2502,14 +2167,17 @@ Function3b2a:: ; 3b2a Function3b3c:: ; 3b3c + ld [$c3b8], a ld a, [hROMBank] push af + ld a, BANK(Function8d120) rst Bankswitch - ld a, [$c3b8] + call Function8d120 + pop af rst Bankswitch @@ -2517,591 +2185,11 @@ Function3b3c:: ; 3b3c ; 3b4e -SoundRestart:: ; 3b4e +INCLUDE "home/audio.asm" - push hl - push de - push bc - push af - - ld a, [hROMBank] - push af - ld a, BANK(_SoundRestart) - ld [hROMBank], a - ld [MBC3RomBank], a - - call _SoundRestart - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - - pop af - pop bc - pop de - pop hl - ret -; 3b6a - - -UpdateSound:: ; 3b6a - - push hl - push de - push bc - push af - - ld a, [hROMBank] - push af - ld a, BANK(_UpdateSound) - ld [hROMBank], a - ld [MBC3RomBank], a - - call _UpdateSound - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - - pop af - pop bc - pop de - pop hl - ret -; 3b86 - - -_LoadMusicByte:: ; 3b86 -; CurMusicByte = [a:de] -GLOBAL LoadMusicByte - - ld [hROMBank], a - ld [MBC3RomBank], a - - ld a, [de] - ld [CurMusicByte], a - ld a, BANK(LoadMusicByte) - - ld [hROMBank], a - ld [MBC3RomBank], a - ret -; 3b97 - - -PlayMusic:: ; 3b97 -; Play music de. - - push hl - push de - push bc - push af - - ld a, [hROMBank] - push af - ld a, BANK(_PlayMusic) ; and BANK(_SoundRestart) - ld [hROMBank], a - ld [MBC3RomBank], a - - ld a, e - and a - jr z, .nomusic - - call _PlayMusic - jr .end - -.nomusic - call _SoundRestart - -.end - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - pop af - pop bc - pop de - pop hl - ret -; 3bbc - - -PlayMusic2:: ; 3bbc -; Stop playing music, then play music de. - - push hl - push de - push bc - push af - - ld a, [hROMBank] - push af - ld a, BANK(_PlayMusic) - ld [hROMBank], a - ld [MBC3RomBank], a - - push de - ld de, MUSIC_NONE - call _PlayMusic - call DelayFrame - pop de - call _PlayMusic - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - - pop af - pop bc - pop de - pop hl - ret - -; 3be3 - - -PlayCryHeader:: ; 3be3 -; Play a cry given parameters in header de - - push hl - push de - push bc - push af - -; Save current bank - ld a, [hROMBank] - push af - -; Cry headers are stuck in one bank. - ld a, BANK(CryHeaders) - ld [hROMBank], a - ld [MBC3RomBank], a - -; Each header is 6 bytes long: - ld hl, CryHeaders - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - - ld e, [hl] - inc hl - ld d, [hl] - inc hl - - ld a, [hli] - ld [CryPitch], a - ld a, [hli] - ld [CryEcho], a - ld a, [hli] - ld [CryLength], a - ld a, [hl] - ld [CryLength+1], a - - ld a, BANK(PlayCry) - ld [hROMBank], a - ld [MBC3RomBank], a - - call PlayCry - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - - pop af - pop bc - pop de - pop hl - ret -; 3c23 - - -PlaySFX:: ; 3c23 -; Play sound effect de. -; Sound effects are ordered by priority (lowest to highest) - - push hl - push de - push bc - push af - -; Is something already playing? - call CheckSFX - jr nc, .play -; Does it have priority? - ld a, [CurSFX] - cp e - jr c, .quit - -.play - ld a, [hROMBank] - push af - ld a, BANK(_PlaySFX) - ld [hROMBank], a - ld [MBC3RomBank], a ; bankswitch - - ld a, e - ld [CurSFX], a - call _PlaySFX - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a ; bankswitch -.quit - pop af - pop bc - pop de - pop hl - ret -; 3c4e - - -WaitPlaySFX:: ; 3c4e - call WaitSFX - call PlaySFX - ret -; 3c55 - - -WaitSFX:: ; 3c55 -; infinite loop until sfx is done playing - - push hl - -.loop - ; ch5 on? - ld hl, Channel5 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch6 on? - ld hl, Channel6 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch7 on? - ld hl, Channel7 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch8 on? - ld hl, Channel8 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - - pop hl - ret -; 3c74 - -Function3c74:: ; 3c74 - push hl - ld hl, $c1cc - bit 0, [hl] - jr nz, .asm_3c94 - ld hl, $c1fe - bit 0, [hl] - jr nz, .asm_3c94 - ld hl, $c230 - bit 0, [hl] - jr nz, .asm_3c94 - ld hl, $c262 - bit 0, [hl] - jr nz, .asm_3c94 - pop hl - scf - ret - -.asm_3c94 - pop hl - and a - ret -; 3c97 - -MaxVolume:: ; 3c97 - ld a, $77 ; max - ld [Volume], a - ret -; 3c9d - -LowVolume:: ; 3c9d - ld a, $33 ; 40% - ld [Volume], a - ret -; 3ca3 - -VolumeOff:: ; 3ca3 - xor a - ld [Volume], a - ret -; 3ca8 - -Function3ca8:: ; 3ca8 - ld a, $4 - ld [MusicFade], a - ret -; 3cae - -Function3cae:: ; 3cae - ld a, $84 - ld [MusicFade], a - ret -; 3cb4 - -Function3cb4:: ; 3cb4 -.asm_3cb4 - and a - ret z - dec a - call UpdateSound - jr .asm_3cb4 -; 3cbc - -Function3cbc:: ; 3cbc - push hl - push de - push bc - push af - call Function3d97 - ld a, [CurMusic] - cp e - jr z, .asm_3cda - ld a, $8 - ld [MusicFade], a - ld a, e - ld [MusicFadeIDLo], a - ld a, d - ld [MusicFadeIDHi], a - ld a, e - ld [CurMusic], a - -.asm_3cda - pop af - pop bc - pop de - pop hl - ret -; 3cdf - -Function3cdf:: ; 3cdf - push hl - push de - push bc - push af - call Function3d97 - ld a, [CurMusic] - cp e - jr z, .asm_3cfe - push de - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - pop de - ld a, e - ld [CurMusic], a - call PlayMusic - -.asm_3cfe - pop af - pop bc - pop de - pop hl - ret -; 3d03 - -Function3d03:: ; 3d03 - push hl - push de - push bc - push af - xor a - ld [$c2c1], a - ld de, MUSIC_BICYCLE - ld a, [PlayerState] - cp $1 - jr z, .asm_3d18 - call Function3d97 -.asm_3d18 - push de - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - pop de - ld a, e - ld [CurMusic], a - call PlayMusic - pop af - pop bc - pop de - pop hl - ret -; 3d2f - -Function3d2f:: ; 3d2f - ld a, [$c2c1] - and a - jr z, Function3d47 - xor a - ld [CurMusic], a - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - xor a - ld [$c2c1], a - ret -; 3d47 - -Function3d47:: ; 3d47 - push hl - push de - push bc - push af - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld a, [CurMusic] - ld e, a - ld d, 0 - call PlayMusic - pop af - pop bc - pop de - pop hl - ret -; 3d62 - -Function3d62:: ; 3d62 - ld a, [PlayerState] - cp $4 - jr z, .asm_3d7b - cp $8 - jr z, .asm_3d7b - ld a, [StatusFlags2] - bit 2, a - jr nz, .asm_3d80 -.asm_3d74 - and a - ret - - ld de, $0013 - scf - ret - -.asm_3d7b - ld de, $0021 - scf - ret - -.asm_3d80 - ld a, [MapGroup] - cp $a - jr nz, .asm_3d74 - ld a, [MapNumber] - cp $f - jr z, .asm_3d92 - cp $11 - jr nz, .asm_3d74 - -.asm_3d92 - ld de, $0058 - scf - ret -; 3d97 - -Function3d97:: ; 3d97 - call Function3d62 - ret c - call Function2cbd - ret -; 3d9f - -Function3d9f:: ; 3d9f - ld a, $20 - ld [$c498], a - ld [$c49c], a - ld a, $50 - ld [$c499], a - ld a, $58 - ld [$c49d], a - xor a - ld [$c49b], a - ld [$c49f], a - ld a, [$c296] - cp $64 - jr nc, .asm_3dd5 - add $1 - daa - ld b, a - swap a - and $f - add $f6 - ld [$c49a], a - ld a, b - and $f - add $f6 - ld [$c49e], a - ret - -.asm_3dd5 - ld a, $ff - ld [$c49a], a - ld [$c49e], a - ret -; 3dde - -CheckSFX:: ; 3dde -; returns carry if sfx channels are active - ld a, [$c1cc] ; 1 - bit 0, a - jr nz, .quit - ld a, [$c1fe] ; 2 - bit 0, a - jr nz, .quit - ld a, [$c230] ; 3 - bit 0, a - jr nz, .quit - ld a, [$c262] ; 4 - bit 0, a - jr nz, .quit - and a - ret -.quit - scf - ret -; 3dfe - -Function3dfe:: ; 3dfe - xor a - ld [$c1cc], a - ld [SoundInput], a - ld [rNR10], a - ld [rNR11], a - ld [rNR12], a - ld [rNR13], a - ld [rNR14], a - ret -; 3e10 - - -ChannelsOff:: ; 3e10 -; Quickly turn off music channels - xor a - ld [Channel1Flags], a - ld [$c136], a - ld [$c168], a - ld [$c19a], a - ld [SoundInput], a - ret -; 3e21 - -SFXChannelsOff:: ; 3e21 -; Quickly turn off sound effect channels - xor a - ld [$c1cc], a - ld [$c1fe], a - ld [$c230], a - ld [$c262], a - ld [SoundInput], a - ret -; 3e32 Function3e32:: ; 3e32 +; Mobile cp $2 ld [$c988], a ld a, l @@ -3109,6 +2197,7 @@ Function3e32:: ; 3e32 ld a, h ld [$c987], a jr nz, .asm_3e4f + ld [$c982], a ld a, l ld [$c981], a @@ -3130,13 +2219,13 @@ Function3e32:: ; 3e32 jp Function110030 ; 3e60 - Function3e60:: ; 3e60 ld [$c986], a ld a, l ld [$c987], a ld a, h ld [$c988], a + pop bc ld a, b ld [$c981], a @@ -3152,7 +2241,6 @@ Function3e60:: ; 3e60 ret ; 3e80 - Function3e80:: ; 3e80 ld a, [hROMBank] push af diff --git a/home/audio.asm b/home/audio.asm new file mode 100644 index 000000000..348da52c6 --- /dev/null +++ b/home/audio.asm @@ -0,0 +1,598 @@ +; Audio interfaces. + +SoundRestart:: ; 3b4e + + push hl + push de + push bc + push af + + ld a, [hROMBank] + push af + ld a, BANK(_SoundRestart) + ld [hROMBank], a + ld [MBC3RomBank], a + + call _SoundRestart + + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + + pop af + pop bc + pop de + pop hl + ret +; 3b6a + + +UpdateSound:: ; 3b6a + + push hl + push de + push bc + push af + + ld a, [hROMBank] + push af + ld a, BANK(_UpdateSound) + ld [hROMBank], a + ld [MBC3RomBank], a + + call _UpdateSound + + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + + pop af + pop bc + pop de + pop hl + ret +; 3b86 + + +_LoadMusicByte:: ; 3b86 +; CurMusicByte = [a:de] +GLOBAL LoadMusicByte + + ld [hROMBank], a + ld [MBC3RomBank], a + + ld a, [de] + ld [CurMusicByte], a + ld a, BANK(LoadMusicByte) + + ld [hROMBank], a + ld [MBC3RomBank], a + ret +; 3b97 + + +PlayMusic:: ; 3b97 +; Play music de. + + push hl + push de + push bc + push af + + ld a, [hROMBank] + push af + ld a, BANK(_PlayMusic) ; and BANK(_SoundRestart) + ld [hROMBank], a + ld [MBC3RomBank], a + + ld a, e + and a + jr z, .nomusic + + call _PlayMusic + jr .end + +.nomusic + call _SoundRestart + +.end + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret +; 3bbc + + +PlayMusic2:: ; 3bbc +; Stop playing music, then play music de. + + push hl + push de + push bc + push af + + ld a, [hROMBank] + push af + ld a, BANK(_PlayMusic) + ld [hROMBank], a + ld [MBC3RomBank], a + + push de + ld de, MUSIC_NONE + call _PlayMusic + call DelayFrame + pop de + call _PlayMusic + + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + + pop af + pop bc + pop de + pop hl + ret + +; 3be3 + + +PlayCryHeader:: ; 3be3 +; Play a cry given parameters at header de + + push hl + push de + push bc + push af + + ld a, [hROMBank] + push af + + ; Cry headers are stuck in one bank. + ld a, BANK(CryHeaders) + ld [hROMBank], a + ld [MBC3RomBank], a + + ld hl, CryHeaders + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + + ld e, [hl] + inc hl + ld d, [hl] + inc hl + + ld a, [hli] + ld [CryPitch], a + ld a, [hli] + ld [CryEcho], a + ld a, [hli] + ld [CryLength], a + ld a, [hl] + ld [CryLength + 1], a + + ld a, BANK(PlayCry) + ld [hROMBank], a + ld [MBC3RomBank], a + + call PlayCry + + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + + pop af + pop bc + pop de + pop hl + ret +; 3c23 + + +PlaySFX:: ; 3c23 +; Play sound effect de. +; Sound effects are ordered by priority (lowest to highest) + + push hl + push de + push bc + push af + + ; Is something already playing? + call CheckSFX + jr nc, .play + + ; Does it have priority? + ld a, [CurSFX] + cp e + jr c, .done + +.play + ld a, [hROMBank] + push af + ld a, BANK(_PlaySFX) + ld [hROMBank], a + ld [MBC3RomBank], a + + ld a, e + ld [CurSFX], a + call _PlaySFX + + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + +.done + pop af + pop bc + pop de + pop hl + ret +; 3c4e + + +WaitPlaySFX:: ; 3c4e + call WaitSFX + call PlaySFX + ret +; 3c55 + + +WaitSFX:: ; 3c55 +; infinite loop until sfx is done playing + + push hl + +.wait + ld hl, Channel5Flags + bit 0, [hl] + jr nz, .wait + ld hl, Channel6Flags + bit 0, [hl] + jr nz, .wait + ld hl, Channel7Flags + bit 0, [hl] + jr nz, .wait + ld hl, Channel8Flags + bit 0, [hl] + jr nz, .wait + + pop hl + ret +; 3c74 + +IsSFXPlaying:: ; 3c74 +; Return carry if no sound effect is playing. +; The inverse of CheckSFX. + push hl + + ld hl, Channel5Flags + bit 0, [hl] + jr nz, .playing + ld hl, Channel6Flags + bit 0, [hl] + jr nz, .playing + ld hl, Channel7Flags + bit 0, [hl] + jr nz, .playing + ld hl, Channel8Flags + bit 0, [hl] + jr nz, .playing + + pop hl + scf + ret + +.playing + pop hl + and a + ret +; 3c97 + +MaxVolume:: ; 3c97 + ld a, $77 ; max + ld [Volume], a + ret +; 3c9d + +LowVolume:: ; 3c9d + ld a, $33 ; 40% + ld [Volume], a + ret +; 3ca3 + +VolumeOff:: ; 3ca3 + xor a + ld [Volume], a + ret +; 3ca8 + +Function3ca8:: ; 3ca8 + ld a, 4 + ld [MusicFade], a + ret +; 3cae + +Function3cae:: ; 3cae + ld a, 4 | 1 << 7 + ld [MusicFade], a + ret +; 3cb4 + +SkipMusic:: ; 3cb4 +; Skip a frames of music. + and a + ret z + dec a + call UpdateSound + jr SkipMusic +; 3cbc + +FadeToMapMusic:: ; 3cbc + push hl + push de + push bc + push af + + call GetMapMusic + ld a, [wMapMusic] + cp e + jr z, .done + + ld a, 8 + ld [MusicFade], a + ld a, e + ld [MusicFadeIDLo], a + ld a, d + ld [MusicFadeIDHi], a + ld a, e + ld [wMapMusic], a + +.done + pop af + pop bc + pop de + pop hl + ret +; 3cdf + +PlayMapMusic:: ; 3cdf + push hl + push de + push bc + push af + + call GetMapMusic + ld a, [wMapMusic] + cp e + jr z, .done + + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + ld a, e + ld [wMapMusic], a + call PlayMusic + +.done + pop af + pop bc + pop de + pop hl + ret +; 3d03 + +EnterMapMusic:: ; 3d03 + push hl + push de + push bc + push af + + xor a + ld [$c2c1], a + ld de, MUSIC_BICYCLE + ld a, [PlayerState] + cp PLAYER_BIKE + jr z, .play + call GetMapMusic +.play + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + + ld a, e + ld [wMapMusic], a + call PlayMusic + + pop af + pop bc + pop de + pop hl + ret +; 3d2f + +Function3d2f:: ; 3d2f + ld a, [$c2c1] + and a + jr z, RestartMapMusic + xor a + ld [wMapMusic], a + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + xor a + ld [$c2c1], a + ret +; 3d47 + +RestartMapMusic:: ; 3d47 + push hl + push de + push bc + push af + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld a, [wMapMusic] + ld e, a + ld d, 0 + call PlayMusic + pop af + pop bc + pop de + pop hl + ret +; 3d62 + +SpecialMapMusic:: ; 3d62 + ld a, [PlayerState] + cp PLAYER_SURF + jr z, .surf + cp PLAYER_SURF_PIKA + jr z, .surf + + ld a, [StatusFlags2] + bit 2, a + jr nz, .contest + +.no + and a + ret + +.bike + ld de, MUSIC_BICYCLE + scf + ret + +.surf + ld de, MUSIC_SURF + scf + ret + +.contest + ld a, [MapGroup] + cp GROUP_ROUTE_35_NATIONAL_PARK_GATE + jr nz, .no + ld a, [MapNumber] + cp MAP_ROUTE_35_NATIONAL_PARK_GATE + jr z, .ranking + cp MAP_ROUTE_36_NATIONAL_PARK_GATE + jr nz, .no + +.ranking + ld de, MUSIC_BUG_CATCHING_CONTEST_RANKING + scf + ret +; 3d97 + +GetMapMusic:: ; 3d97 + call SpecialMapMusic + ret c + call GetMapHeaderMusic + ret +; 3d9f + +Function3d9f:: ; 3d9f +; Places a BCD number at the +; upper center of the screen. +; Unreferenced. + ld a, $20 + ld [$c498], a + ld [$c49c], a + ld a, $50 + ld [$c499], a + ld a, $58 + ld [$c49d], a + xor a + ld [$c49b], a + ld [$c49f], a + ld a, [$c296] + cp $64 + jr nc, .max + add 1 + daa + ld b, a + swap a + and $f + add "0" + ld [$c49a], a + ld a, b + and $f + add "0" + ld [$c49e], a + ret + +.max + ld a, "9" + ld [$c49a], a + ld [$c49e], a + ret +; 3dde + +CheckSFX:: ; 3dde +; Return carry if any SFX channels are active. + ld a, [Channel5Flags] + bit 0, a + jr nz, .playing + ld a, [Channel6Flags] + bit 0, a + jr nz, .playing + ld a, [Channel7Flags] + bit 0, a + jr nz, .playing + ld a, [Channel8Flags] + bit 0, a + jr nz, .playing + and a + ret +.playing + scf + ret +; 3dfe + +Function3dfe:: ; 3dfe + xor a + ld [$c1cc], a + ld [SoundInput], a + ld [rNR10], a + ld [rNR11], a + ld [rNR12], a + ld [rNR13], a + ld [rNR14], a + ret +; 3e10 + + +ChannelsOff:: ; 3e10 +; Quickly turn off music channels + xor a + ld [Channel1Flags], a + ld [Channel2Flags], a + ld [Channel3Flags], a + ld [Channel4Flags], a + ld [SoundInput], a + ret +; 3e21 + +SFXChannelsOff:: ; 3e21 +; Quickly turn off sound effect channels + xor a + ld [Channel5Flags], a + ld [Channel6Flags], a + ld [Channel7Flags], a + ld [Channel8Flags], a + ld [SoundInput], a + ret +; 3e32 diff --git a/home/battle.asm b/home/battle.asm new file mode 100644 index 000000000..fc670d927 --- /dev/null +++ b/home/battle.asm @@ -0,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 diff --git a/home/init.asm b/home/init.asm index b879b9802..3d83a03cf 100644 --- a/home/init.asm +++ b/home/init.asm @@ -172,7 +172,7 @@ Init:: ; 17d call SoundRestart xor a - ld [CurMusic], a + ld [wMapMusic], a jp GameInit ; 245 diff --git a/home/map.asm b/home/map.asm index d581eb6b4..6c7a79592 100644 --- a/home/map.asm +++ b/home/map.asm @@ -1034,7 +1034,7 @@ Function2653:: ; 2653 ; 2674 Function2674:: ; 2674 - callba Unknown_0x974f3 + callba Function974f3 ld a, [ScriptMode] push af ld hl, ScriptFlags @@ -2021,8 +2021,8 @@ Function2bae:: ; 2bae callba Function8c001 call Function2173 call Function2821 - ld a, $9 - call Function3cb4 + ld a, 9 + call SkipMusic pop af rst Bankswitch @@ -2259,48 +2259,51 @@ GetWorldMapLocation:: ; 0x2caf ret ; 0x2cbd -Function2cbd:: ; 2cbd +GetMapHeaderMusic:: ; 2cbd +RADIO_TOWER_MUSIC EQU 7 + push hl push bc - ld de, $0006 + ld de, 6 ; music call GetMapHeaderMember ld a, c - cp $64 - jr z, .asm_2cee - bit 7, c - jr nz, .asm_2cda + cp MUSIC_MAHOGANY_MART + jr z, .mahoganymart + bit RADIO_TOWER_MUSIC, c + jr nz, .radiotower callba Function8b342 ld e, c - ld d, $0 -.asm_2cd7 + ld d, 0 +.done pop bc pop hl ret -.asm_2cda +.radiotower ld a, [StatusFlags2] bit 0, a - jr z, .asm_2ce6 - ld de, $0056 - jr .asm_2cd7 + jr z, .clearedradiotower + ld de, MUSIC_ROCKET_OVERTURE + jr .done -.asm_2ce6 +.clearedradiotower + ; the rest of the byte ld a, c - and $7f + and 1 << RADIO_TOWER_MUSIC - 1 ld e, a - ld d, $0 - jr .asm_2cd7 + ld d, 0 + jr .done -.asm_2cee +.mahoganymart ld a, [StatusFlags2] bit 7, a - jr z, .asm_2cfa - ld de, $0048 - jr .asm_2cd7 + jr z, .clearedmahogany + ld de, MUSIC_ROCKET_HIDEOUT + jr .done -.asm_2cfa - ld de, $0026 - jr .asm_2cd7 +.clearedmahogany + ld de, MUSIC_CHERRYGROVE_CITY + jr .done ; 2cff Function2cff:: ; 2cff diff --git a/main.asm b/main.asm index 3f7e52005..e40adf0d2 100644 --- a/main.asm +++ b/main.asm @@ -3747,7 +3747,7 @@ Function5ae8: ; 5ae8 call DelayFrame ld de, MUSIC_MAIN_MENU ld a, e - ld [CurMusic], a + ld [wMapMusic], a call PlayMusic callba MainMenu jp Function6219 @@ -7940,8 +7940,8 @@ SpecialsPointers: ; c029 dbw BANK(Functionc230), Functionc230 dbw BANK(SpecialSeenMon), SpecialSeenMon dbw BANK(WaitSFX),WaitSFX - dbw BANK(Function3cdf), Function3cdf - dbw BANK(Function3d47), Function3d47 + dbw BANK(PlayMapMusic), PlayMapMusic + dbw BANK(RestartMapMusic), RestartMapMusic dbw BANK(Function12324), Function12324 dbw BANK(Function8379), Function8379 dbw BANK(Functionc25a), Functionc25a @@ -8402,7 +8402,7 @@ SpecialSnorlaxAwake: ; 0xc43d ; ScriptVar is 1 if the conditions are met, otherwise 0. ; check background music - ld a, [CurMusic] + ld a, [wMapMusic] cp MUSIC_POKE_FLUTE_CHANNEL jr nz, .nope @@ -10774,7 +10774,7 @@ Functiond0bc: ; d0bc call MaxVolume ld de, MUSIC_BICYCLE ld a, e - ld [CurMusic], a + ld [wMapMusic], a call PlayMusic ld a, $1 ret @@ -21177,13 +21177,13 @@ Function1344a: ; 1344a ld a, e ld [$d03f], a ld a, d - ld [MartPointer], a + ld [$d040], a call Function1345a ret ; 1345a Function1345a: ; 1345a - ld de, CurMart + ld de, $d0f0 ld bc, $0004 ld hl, $d03f ld a, [hli] @@ -23072,6 +23072,8 @@ AddSpriteGFX: ; 142e5 LoadSpriteGFX: ; 14306 +; Bug: b is not preserved, so +; it's useless as a loop count. ld hl, UsedSprites ld b, $20 @@ -25882,11 +25884,11 @@ MapSetupCommands: ; 15440 dbw BANK(EnableLCD), EnableLCD dbw BANK(DisableLCD), DisableLCD dbw BANK(SoundRestart), SoundRestart - dbw BANK(Function3cdf), Function3cdf - dbw BANK(Function3d47), Function3d47 - dbw BANK(Function3cbc), Function3cbc + dbw BANK(PlayMapMusic), PlayMapMusic + dbw BANK(RestartMapMusic), RestartMapMusic + dbw BANK(FadeToMapMusic), FadeToMapMusic dbw BANK(Function15574), Function15574 - dbw BANK(Function3d03), Function3d03 + dbw BANK(EnterMapMusic), EnterMapMusic dbw BANK(Function15587), Function15587 dbw BANK(Function3cae), Function3cae dbw BANK(Function24cd), Function24cd @@ -26045,8 +26047,8 @@ Function1554e: ; 1554e (5:554e) ; 15567 Function15567: ; 15567 - ld a, $6 - call Function3cb4 + ld a, 6 + call SkipMusic ret ; 1556d @@ -27077,7 +27079,7 @@ Function15c25: ; 15c25 ld l, a push hl inc hl - ld bc, DefaultFlypoint + ld bc, $d002 ld de, CurMart + 1 .asm_15c33 ld a, [hli] @@ -27316,7 +27318,7 @@ Function15da5: ; 15da5 ld a, [$d107] ld e, a ld d, $0 - ld hl, MartPointer + ld hl, $d040 ld a, [hli] ld h, [hl] ld l, a @@ -27357,7 +27359,7 @@ Function15df9: ; 15df9 ld a, [$d107] ld e, a ld d, 0 - ld hl, MartPointer + ld hl, $d040 ld a, [hli] ld h, [hl] ld l, a @@ -29488,12 +29490,12 @@ Function16be4: ; 16be4 ld de, UnownDexATile ld hl, $8ef0 - ld bc, $0501 + lb bc, BANK(UnownDexBTile), 1 call Request1bpp ld de, UnownDexBTile ld hl, $8f50 - ld bc, $0501 + lb bc, BANK(UnownDexBTile), 1 call Request1bpp ld hl, TileMap @@ -29554,7 +29556,7 @@ Function16be4: ; 16be4 ld a, [$cf63] push af callba Function84560 - call Function3d47 + call RestartMapMusic pop af ld [$cf63], a jr .asm_16c6b @@ -29969,7 +29971,7 @@ Function16f5e:: ; 16f5e call Function1d6e call Function16f70 call Function2b4d - call Function3d47 + call RestartMapMusic jp Function2dcf ; 16f70 @@ -40609,7 +40611,7 @@ Function2a111: ; 2a111 Function2a124:: ; 2a124 ; Pokemon March and Ruins of Alph signal double encounter rate. ; Pokemon Lullaby halves encounter rate. - ld a, [CurMusic] + ld a, [wMapMusic] cp MUSIC_POKEMON_MARCH jr z, .asm_2a135 cp MUSIC_RUINS_OF_ALPH_RADIO @@ -47388,8 +47390,8 @@ Function414b7: ; 414b7 ld hl, PokedexSlowpokeLZ ld de, VTiles0 call Decompress - ld a, $6 - call Function3cb4 + ld a, 6 + call SkipMusic call EnableLCD ret @@ -47893,7 +47895,7 @@ Function423ff: ; 423ff ret nz ld a, [$d268] and a - call nz, Function3d47 + call nz, RestartMapMusic ret ; 42414 @@ -49099,7 +49101,7 @@ Function447fb: ; 0x447fb Function44806: ; 0x44806 xor a - ld [CurMart], a + ld [$d0f0], a ld a, $1 ld [$d0f1], a .asm_4480f @@ -49112,11 +49114,11 @@ Function44806: ; 0x44806 call Function1ad2 ld a, [$d0f1] ld [$cf88], a - ld a, [CurMart] + ld a, [$d0f0] ld [$d0e4], a call Function350c ld a, [$d0e4] - ld [CurMart], a + ld [$d0f0], a ld a, [$cfa9] ld [$d0f1], a ld a, [$cf73] @@ -52964,7 +52966,7 @@ MainMenu_MysteryGift: ; 49ef5 MainMenu_Mobile: ; 49efc call WhiteBGMap ld a, MUSIC_MOBILE_ADAPTER_MENU - ld [CurMusic], a + ld [wMapMusic], a ld de, MUSIC_MOBILE_ADAPTER_MENU call Function4a6c5 Function49f0a: ; 49f0a @@ -53031,7 +53033,7 @@ Function49f16: ; 49f16 call WhiteBGMap call ClearTileMap ld a, MUSIC_MAIN_MENU - ld [CurMusic], a + ld [wMapMusic], a ld de, MUSIC_MAIN_MENU call Function4a6c5 ret @@ -57194,7 +57196,7 @@ Function4ddd6: ; 4ddd6 (13:5dd6) ; no known jump sources Function4dde6: ; 4dde6 (13:5de6) - call Function3c74 + call IsSFXPlaying ret nc ld a, [$cf63] inc a @@ -61140,7 +61142,7 @@ Function50db9: ; 50db9 .asm_50dd8 cp $5 jr nz, .asm_50de6 - ld hl, CurMart + ld hl, $d0f0 ld de, PokemonNames ld a, $1 jr .asm_50dfc @@ -61154,7 +61156,7 @@ Function50db9: ; 50db9 jr .asm_50dfc .asm_50df4 - ld hl, CurMart + ld hl, $d0f0 ld de, Function50000 ld a, $4 @@ -62432,7 +62434,7 @@ TryStep: ; 8016b call CheckLandPermissions jr c, .asm_801be - call Function80341 + call IsNPCInFront and a jr z, .asm_801be cp 2 @@ -62490,17 +62492,17 @@ TryStep: ; 8016b TrySurfStep: ; 801c0 call CheckWaterPermissions - ld [MartPointer], a + ld [$d040], a jr c, .asm_801f1 - call Function80341 + call IsNPCInFront ld [$d03f], a and a jr z, .asm_801f1 cp 2 jr z, .asm_801f1 - ld a, [MartPointer] + ld a, [$d040] and a jr nz, .ExitWater @@ -62511,7 +62513,7 @@ TrySurfStep: ; 801c0 .ExitWater call WaterToLandSprite - call Function3cdf ; PlayMapMusic + call PlayMapMusic ld a, STEP_WALK call DoStep ld a, 6 @@ -62773,7 +62775,7 @@ GetMovementAction: ; 802ec ; 80341 -Function80341: ; 80341 +IsNPCInFront: ; 80341 ld a, 0 ld [hConnectionStripLength], a @@ -65883,7 +65885,7 @@ Function8474c: ; 8474c ; 84753 Function84753: ; 84753 - call Function3d47 + call RestartMapMusic ret ; 84757 @@ -69841,7 +69843,7 @@ Function89d0d: ; 89d0d (22:5d0d) call Function89240 ld c, $18 call DelayFrames - call Function3d47 + call RestartMapMusic ret ; 89d4e (22:5d4e) @@ -81610,8 +81612,8 @@ Function90bea: ; 90bea (24:4bea) call Function90c4e callba Function8cf53 call Function90d32 - ld a, $8 - call Function3cb4 + ld a, 8 + call SkipMusic ld a, $e3 ld [rLCDC], a call Function90d70 @@ -82923,13 +82925,13 @@ Function91492: ; 91492 cp $fe jr z, .asm_914a3 cp $ff - call z, Function3d03 + call z, EnterMapMusic xor a ld [$c6dc], a ret .asm_914a3 - call Function3d47 + call RestartMapMusic xor a ld [$c6dc], a ret @@ -83359,7 +83361,7 @@ Function91854: ; 91854 (24:5854) call PlayMusic pop de ld a, e - ld [CurMusic], a ; $c2c0 + ld [wMapMusic], a call PlayMusic ret @@ -83446,8 +83448,8 @@ Function9191c: ; 9191c call DisableLCD call Function90c4e callba Function8cf53 - ld a, $8 - call Function3cb4 + ld a, 8 + call SkipMusic ld a, $e3 ld [rLCDC], a call Function90d56 @@ -96955,8 +96957,8 @@ Functione33e8: ; e33e8 (38:73e8) ld hl, PCSelectLZ ld de, $8000 call Decompress - ld a, $6 - call Function3cb4 + ld a, 6 + call SkipMusic call EnableLCD ret ; e3419 (38:7419) @@ -97617,7 +97619,7 @@ Options_Sound: ; e43dd .SetMono res 5, [hl] - call Function3d47 ;reload the music + call RestartMapMusic .ToggleMono ld de, .Mono @@ -97625,7 +97627,7 @@ Options_Sound: ; e43dd .SetStereo set 5, [hl] - call Function3d47 ;reload the music + call RestartMapMusic .ToggleStereo ld de, .Stereo @@ -99934,7 +99936,7 @@ Functione5516: ; e5516 (39:5516) push af ld a, $5 ld [rSVBK], a ; $ff00+$70 - ld hl, CurMartEnd ; $d100 (aliases: LYOverrides) + ld hl, LYOverrides ld bc, $90 xor a call ByteFill @@ -99953,7 +99955,7 @@ Functione552f: ; e552f (39:552f) ld a, [$cf64] and $1 jr z, .asm_e5548 - ld hl, CurMartEnd ; $d100 (aliases: LYOverrides) + ld hl, LYOverrides ld a, [hl] inc a ld bc, $5f @@ -99965,7 +99967,7 @@ Functione552f: ; e552f (39:552f) inc a ld bc, $31 call ByteFill - ld a, [CurMartEnd] ; $d100 (aliases: LYOverrides) + ld a, [LYOverrides + 0] ld [hSCX], a ; $ff00+$cf pop af ld [rSVBK], a ; $ff00+$70 @@ -101561,7 +101563,7 @@ NPCTrade:: ; fcba8 ld hl, TradedForText call PrintText - call Function3d47 + call RestartMapMusic ld a, TRADE_COMPLETE @@ -112685,7 +112687,7 @@ Function11b7e5: ; 11b7e5 .asm_11b872 call Function2b3c - call Function3d47 + call RestartMapMusic ret ; 11b879 @@ -114152,7 +114154,7 @@ Function11c7bc: ; 11c7bc (47:47bc) jr nz, .asm_11c7d0 ret .asm_11c7e9 - ld hl, CurMartEnd ; $d100 (aliases: LYOverrides) + ld hl, $d100 ld a, [$cd26] ld e, a add hl, de @@ -114186,8 +114188,8 @@ Function11c7bc: ; 11c7bc (47:47bc) pop de ret .asm_11c814 - ld hl, BattleMonSpclDef ; $c648 - ld a, [CreditsTimer] ; $cd22 + ld hl, $c648 + ld a, [$cd22] ld e, a ld d, $0 add hl, de @@ -114336,13 +114338,13 @@ Function11c8f6: ; 11c8f6 (47:48f6) add [hl] ld c, a ld b, $0 - ld hl, CurMartEnd ; $d100 (aliases: LYOverrides) + ld hl, $d100 add hl, bc ld a, [hl] jr .asm_11c911 .asm_11c938 - ld hl, BattleMonSpclDef ; $c648 - ld a, [CreditsTimer] ; $cd22 + ld hl, $c648 + ld a, [$cd22] ld e, a ld d, $0 add hl, de @@ -117747,7 +117749,7 @@ Function17d2ce: ; 17d2ce ld [rSVBK], a ld de, MUSIC_MOBILE_CENTER ld a, e - ld [CurMusic], a + ld [wMapMusic], a ld [MusicFadeIDLo], a ld a, d ld [MusicFadeIDHi], a @@ -119158,7 +119160,7 @@ Function17ff23: ; 17ff23 ret z ld a, $8 ld [MusicFade], a - ld a, [CurMusic] + ld a, [wMapMusic] ld [MusicFadeIDLo], a xor a ld [MusicFadeIDHi], a diff --git a/misc/crystal_misc.asm b/misc/crystal_misc.asm index 2e27422fb..1b402b61c 100644 --- a/misc/crystal_misc.asm +++ b/misc/crystal_misc.asm @@ -257,7 +257,7 @@ Function17a7ff: ; 17a7ff (5e:67ff) ; no known jump sources Function17a81a: ; 17a81a (5e:681a) - call Function3c74 + call IsSFXPlaying ret nc ld a, [hJoyPressed] ; $ff00+$a7 and $3 diff --git a/wram.asm b/wram.asm index b2327d18a..bb510806a 100644 --- a/wram.asm +++ b/wram.asm @@ -365,8 +365,7 @@ CryTracks:: ; c2bd CurSFX:: ; c2bf ; id of sfx currently playing ds 1 -CurMusic:: ; c2c0 -; id of music currently playing +wMapMusic:: ; c2c0 ds 1 SECTION "auto",WRAM0[$c2c7]