diff options
| author | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
|---|---|---|
| committer | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
| commit | 794410352fd92ccf06974763e4b3be0b807641ab (patch) | |
| tree | 05f5dd861966762db9556082229cee82e8b5eed9 /event | |
| parent | 9c5473e965520f672640daf4ee76622640e0de15 (diff) | |
| parent | 4bcd71e3227181baa536357af3d87a8d02af3890 (diff) | |
Merge pull request #328 from PikalaxALT/master
Split out most of main.asm
Diffstat (limited to 'event')
| -rw-r--r-- | event/buena.asm | 8 | ||||
| -rwxr-xr-x | event/bug_contest_judging.asm | 117 | ||||
| -rwxr-xr-x | event/celebi.asm | 354 | ||||
| -rwxr-xr-x | event/daycare.asm | 768 | ||||
| -rwxr-xr-x | event/elevator.asm | 4 | ||||
| -rwxr-xr-x | event/field_moves.asm | 312 | ||||
| -rwxr-xr-x | event/forced_movement.asm | 24 | ||||
| -rwxr-xr-x | event/halloffame.asm | 628 | ||||
| -rw-r--r-- | event/kurt.asm | 6 | ||||
| -rwxr-xr-x | event/magnet_train.asm | 485 | ||||
| -rw-r--r-- | event/mom.asm | 20 | ||||
| -rwxr-xr-x | event/mom_phone.asm | 285 | ||||
| -rwxr-xr-x | event/photo.asm | 299 | ||||
| -rw-r--r-- | event/poke_seer.asm | 120 | ||||
| -rw-r--r-- | event/unown.asm | 2 | ||||
| -rwxr-xr-x | event/whiteout.asm | 4 |
16 files changed, 3283 insertions, 153 deletions
diff --git a/event/buena.asm b/event/buena.asm index 3662f110d..76a378549 100644 --- a/event/buena.asm +++ b/event/buena.asm @@ -11,8 +11,8 @@ SpecialBuenasPassword: ; 8af6b add $2 ld [wMenuBorderRightCoord], a call BackUpTiles - call Function1e5d ; menu - callba Function4ae5e + call DoNthMenu ; menu + callba Buena_ExitMenu ld b, $0 ld a, [MenuSelection] ld c, a @@ -66,7 +66,7 @@ SpecialBuenasPassword: ; 8af6b SpecialBuenaPrize: ; 8afd4 xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a ld a, $1 ld [MenuSelection], a call Function8b0d6 @@ -250,7 +250,7 @@ Function8b0e2: ; 8b0e2 xor a ld [wcf76], a ld [hBGMapMode], a - call Function352f + call InitScrollingMenu call UpdateSprites call HandleScrollingMenu ld a, [MenuSelection] diff --git a/event/bug_contest_judging.asm b/event/bug_contest_judging.asm index 25b3805ee..4180391e1 100755 --- a/event/bug_contest_judging.asm +++ b/event/bug_contest_judging.asm @@ -2,24 +2,24 @@ _BugContestJudging: ; 1369d call ContestScore callba MobileFn_105f79 call Function13819 - ld a, [wd00a] + ld a, [wBugContestThirdPlacePersonID] call LoadContestantName - ld a, [wd00b] - ld [wd265], a + ld a, [wBugContestThirdPlaceMon] + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, BugContest_ThirdPlaceText call PrintText - ld a, [EndFlypoint] + ld a, [wBugContestSecondPlacePersonID] call LoadContestantName - ld a, [MovementBuffer] - ld [wd265], a + ld a, [wBugContestSecondPlaceMon] + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, BugContest_SecondPlaceText call PrintText - ld a, [wd002] + ld a, [wBugContestFirstPlacePersonID] call LoadContestantName - ld a, [wd003] - ld [wd265], a + ld a, [wBugContestFirstPlaceMon] + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, BugContest_FirstPlaceText call PrintText @@ -85,7 +85,7 @@ LoadContestantName: ; 13730 ; If a = 0, get your name. dec a - jr z, .done + jr z, .player ; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a. ld c, a ld b, 0 @@ -102,13 +102,13 @@ endr ; Save hl and bc for later. push hl push bc -; Get the Trainer Class name and copy it into wd016. +; Get the Trainer Class name and copy it into wBugContestWinnerName. callab GetTrainerClassName ld hl, StringBuffer1 - ld de, wd016 + ld de, wBugContestWinnerName ld bc, TRAINER_CLASS_NAME_LENGTH call CopyBytes - ld hl, wd016 + ld hl, wBugContestWinnerName ; Delete the trailing terminator and replace it with a space. .next ld a, [hli] @@ -127,15 +127,15 @@ endr ld a, [hl] ld b, a callab GetTrainerName -; Append the name to wd016. +; Append the name to wBugContestWinnerName. ld hl, StringBuffer1 pop de ld bc, NAME_LENGTH - 1 jp CopyBytes -.done +.player ld hl, PlayerName - ld de, wd016 + ld de, wBugContestWinnerName ld bc, NAME_LENGTH jp CopyBytes ; 13783 @@ -216,7 +216,7 @@ BugContestant_SchoolboyKipp: ; 13807 Function13807: ; 13807 - ld hl, wd00a + ld hl, wBugContestThirdPlacePersonID ld de, -4 ld b, 3 .loop @@ -232,9 +232,9 @@ Function13807: ; 13807 ; 13819 Function13819: ; 13819 - call Function13833 - call Function138b0 - ld hl, wd00e + call ClearContestResults + call ComputeAIContestantScores + ld hl, wBugContestTempPersonID ld a, 1 ld [hli], a ld a, [wContestMon] @@ -243,12 +243,12 @@ Function13819: ; 13819 ld [hli], a ld a, [hMultiplicand] ld [hl], a - call Function1383e + call DetermineContestWinners ret ; 13833 -Function13833: ; 13833 - ld hl, wd002 +ClearContestResults: ; 13833 + ld hl, wBugContestFirstPlacePersonID ld b, 12 xor a .loop @@ -258,69 +258,66 @@ Function13833: ; 13833 ret ; 1383e -Function1383e: ; 1383e - ld de, wd010 - ld hl, wd004 +DetermineContestWinners: ; 1383e + ld de, wBugContestTempScore + ld hl, wBugContestFirstPlaceScore ld c, 2 call StringCmp - jr c, .next - ld hl, EndFlypoint - ld de, wd00a + jr c, .not_first_place + ld hl, wBugContestSecondPlacePersonID + ld de, wBugContestThirdPlacePersonID ld bc, 4 call CopyBytes - ld hl, wd002 - ld de, EndFlypoint + ld hl, wBugContestFirstPlacePersonID + ld de, wBugContestSecondPlacePersonID ld bc, 4 call CopyBytes - ld hl, wd002 - call Function138a0 + ld hl, wBugContestFirstPlacePersonID + call CopyTempContestant jr .done -.next - ld de, wd010 - ld hl, wd008 +.not_first_place + ld de, wBugContestTempScore + ld hl, wBugContestSecondPlaceScore ld c, 2 call StringCmp - jr c, .next2 - ld hl, EndFlypoint - ld de, wd00a + jr c, .not_second_place + ld hl, wBugContestSecondPlacePersonID + ld de, wBugContestThirdPlacePersonID ld bc, 4 call CopyBytes - ld hl, EndFlypoint - call Function138a0 + ld hl, wBugContestSecondPlacePersonID + call CopyTempContestant jr .done -.next2 - ld de, wd010 - ld hl, wd00c +.not_second_place + ld de, wBugContestTempScore + ld hl, wBugContestThirdPlaceScore ld c, 2 call StringCmp jr c, .done - ld hl, wd00a - call Function138a0 + ld hl, wBugContestThirdPlacePersonID + call CopyTempContestant .done ret ; 138a0 -Function138a0: ; 138a0 - ld de, wd00e - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a +CopyTempContestant: ; 138a0 +; Could've just called CopyBytes. + ld de, wBugContestTempPersonID +rept 3 ld a, [de] inc de ld [hli], a +endr ld a, [de] inc de ld [hl], a ret ; 138b0 -Function138b0: ; 138b0 +ComputeAIContestantScores: ; 138b0 ld e, 0 .loop push de @@ -331,7 +328,7 @@ Function138b0: ; 138b0 rept 2 inc a endr - ld [wd00e], a + ld [wBugContestTempPersonID], a dec a ld c, a ld b, 0 @@ -356,7 +353,7 @@ rept 3 add hl, bc endr ld a, [hli] - ld [wd00f], a + ld [wBugContestTempMon], a ld a, [hli] ld h, [hl] ld l, a @@ -366,11 +363,11 @@ endr ld b, 0 add hl, bc ld a, h - ld [wd010], a + ld [wBugContestTempScore], a ld a, l - ld [wd011], a + ld [wBugContestTempScore + 1], a push de - call Function1383e + call DetermineContestWinners pop de .done diff --git a/event/celebi.asm b/event/celebi.asm new file mode 100755 index 000000000..46c78ed91 --- /dev/null +++ b/event/celebi.asm @@ -0,0 +1,354 @@ +Special_CelebiShrineEvent: ; 4989a + call DelayFrame + ld a, [VramState] + push af + xor a + ld [VramState], a + call LoadCelebiGFX + depixel 0, 10, 7, 0 + ld a, SPRITE_ANIM_INDEX_2C + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $84 + ld hl, $2 + add hl, bc + ld [hl], $1f + ld hl, $f + add hl, bc + ld a, $80 + ld [hl], a + ld a, $a0 + ld [wcf64], a + ld d, $0 +.loop + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done + push bc + call Function49bae + inc d + push de + ld a, $90 + ld [wc3b5], a + callba Function8cf7a + call Function49935 + ld c, 2 + call DelayFrames + pop de + pop bc + jr .loop + +.done + pop af + ld [VramState], a + call Function498f9 + call Function49bf3 + ret +; 498f9 + +Function498f9: ; 498f9 + ld hl, Sprites + 2 + xor a + ld c, $4 +.loop + ld [hli], a +rept 3 + inc hl +endr + inc a + dec c + jr nz, .loop + ld hl, Sprites + $10 + ld bc, $90 + xor a + call ByteFill + ret +; 49912 + +LoadCelebiGFX: ; 49912 + callba Function8cf53 + ld de, SpecialCelebiLeafGFX + ld hl, VTiles1 + lb bc, BANK(SpecialCelebiLeafGFX), 4 + call Request2bpp + ld de, SpecialCelebiGFX + ld hl, VTiles1 tile $04 + lb bc, BANK(SpecialCelebiGFX), $10 + call Request2bpp + xor a + ld [wJumptableIndex], a + ret +; 49935 + +Function49935: ; 49935 + ld hl, wcf64 + ld a, [hl] + and a + jr z, .asm_4993e + dec [hl] + ret + +.asm_4993e + ld hl, wJumptableIndex + set 7, [hl] + ret +; 49944 + +Function49944: ; 49944 + ld hl, wcf65 + ld a, [hl] + inc [hl] + and $7 + ret nz + ld a, [hl] + and $18 + sla a + add $40 + ld d, a + ld e, $0 + ld a, SPRITE_ANIM_INDEX_18 ; fly land + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $80 + ret +; 49962 + +SpecialCelebiLeafGFX: ; 49962 +INCBIN "gfx/special/celebi/leaf.2bpp" +SpecialCelebiGFX: ; 499a2 +INCBIN "gfx/special/celebi/1.2bpp" +INCBIN "gfx/special/celebi/2.2bpp" +INCBIN "gfx/special/celebi/3.2bpp" +INCBIN "gfx/special/celebi/4.2bpp" + + +Function49aa2: ; 49aa2 (12:5aa2) + ld hl, $6 + add hl, bc + ld a, [hl] + push af + ld hl, $5 + add hl, bc + ld a, [hl] + cp $52 + jp nc, Function49b30 + ld hl, $5 + add hl, bc + inc [hl] + ld hl, $f + add hl, bc + ld a, [hl] + ld d, a + cp $3a + jr c, .asm_49ac6 + jr z, .asm_49ac6 + sub $3 + ld [hl], a +.asm_49ac6 + ld hl, $e + add hl, bc + ld a, [hl] + inc [hl] + call Function49b3b + ld hl, $6 + add hl, bc + ld [hl], a + ld d, a + ld hl, $4 + add hl, bc + add [hl] + cp $5c + jr nc, .asm_49ae2 + cp $44 + jr nc, .asm_49b0d +.asm_49ae2 + pop af + push af + cp d + jr nc, .asm_49af2 + ld hl, $4 + add hl, bc + add [hl] + cp $50 + jr c, .asm_49b05 + jr .asm_49afb +.asm_49af2 + ld hl, $4 + add hl, bc + add [hl] + cp $50 + jr nc, .asm_49b05 +.asm_49afb + ld hl, $5 + add hl, bc + ld a, [hl] + sub $2 + ld [hl], a + jr .asm_49b0d +.asm_49b05 + ld hl, $5 + add hl, bc + ld a, [hl] + add $1 + ld [hl], a +.asm_49b0d + pop af + ld hl, $4 + add hl, bc + add [hl] + cp $50 + jr c, .asm_49b26 + cp $e6 + jr nc, .asm_49b26 + ld hl, $1 + add hl, bc + ld a, $41 + call Function3b3c + jr .asm_49b2f +.asm_49b26 + ld hl, $1 + add hl, bc + ld a, $40 + call Function3b3c +.asm_49b2f + ret + +Function49b30: ; 49b30 (12:5b30) + pop af + ld hl, $1 + add hl, bc + ld a, $40 + call Function3b3c + ret + +Function49b3b: ; 49b3b (12:5b3b) + add $10 + and $3f + cp $20 + jr nc, .asm_49b48 + call Function49b52 + ld a, h + ret +.asm_49b48 + and $1f + call Function49b52 + ld a, h + xor $ff + inc a + ret + +Function49b52: ; 49b52 (12:5b52) + ld e, a + ld a, d + ld d, $0 + ld hl, Unknown_49b6e +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + ld hl, 0 +.asm_49b61 + srl a + jr nc, .asm_49b66 + add hl, de +.asm_49b66 + sla e + rl d + and a + jr nz, .asm_49b61 + ret +; 49b6e (12:5b6e) + +Unknown_49b6e: ; 49b6e + sine_wave $100 +; 49bae + +Function49bae: ; 49bae + push hl + push bc + push de + ld a, d + ld d, $3 + ld e, d + cp $0 + jr z, .asm_49bd0 + cp d + jr z, .asm_49bd4 + call Function49bed + cp d + jr z, .asm_49bd8 + call Function49bed + cp d + jr z, .asm_49bdc + call Function49bed + cp d + jr c, .asm_49be9 + jr .asm_49be5 + +.asm_49bd0 + ld a, $84 + jr .asm_49bde + +.asm_49bd4 + ld a, $88 + jr .asm_49bde + +.asm_49bd8 + ld a, $8c + jr .asm_49bde + +.asm_49bdc + ld a, $90 + +.asm_49bde + ld hl, $3 + add hl, bc + ld [hl], a + jr .asm_49be9 + +.asm_49be5 + pop de + ld d, $ff + push de + +.asm_49be9 + pop de + pop bc + pop hl + ret +; 49bed + +Function49bed: ; 49bed + push af + ld a, d + add e + ld d, a + pop af + ret +; 49bf3 + +Function49bf3: ; 49bf3 + ld a, BATTLETYPE_CELEBI + ld [BattleType], a + ret +; 49bf9 + +CheckCaughtCelebi: ; 49bf9 + ld a, [wBattleResult] + bit 6, a + jr z, .false + ld a, $1 + ld [ScriptVar], a + jr .done + +.false + xor a + ld [ScriptVar], a + +.done + ret +; 49c0c diff --git a/event/daycare.asm b/event/daycare.asm new file mode 100755 index 000000000..3ea64d38c --- /dev/null +++ b/event/daycare.asm @@ -0,0 +1,768 @@ +Special_DayCareMan: ; 166d6 + ld hl, wDaycareMan + bit 0, [hl] + jr nz, .asm_166fe + ld hl, wDaycareMan + ld a, $0 + call Function1678f + jr c, .asm_16724 + call Function16798 + jr c, .asm_16721 + callba Functionde2a + ld hl, wDaycareMan + set 0, [hl] + call Function167f6 + call Function16a3b + ret + +.asm_166fe + callba Functione698 + ld hl, wBreedMon1Nick + call Function1686d + call Function16807 + jr c, .asm_16721 + callba Functiondd21 + call Function16850 + ld hl, wDaycareMan + res 0, [hl] + res 5, [hl] + jr .asm_16724 + +.asm_16721 + call Function1689b + +.asm_16724 + ld a, $13 + call Function1689b + ret +; 1672a + +Special_DayCareLady: ; 1672a + ld hl, wDaycareLady + bit 0, [hl] + jr nz, .asm_16752 + ld hl, wDaycareLady + ld a, $2 + call Function16781 + jr c, .asm_1677b + call Function16798 + jr c, .asm_16778 + callba Functionde37 + ld hl, wDaycareLady + set 0, [hl] + call Function167f6 + call Function16a3b + ret + +.asm_16752 + callba Functione6b3 + ld hl, wBreedMon2Nick + call Function1686d + call Function16807 + jr c, .asm_16778 + callba Functiondd42 + call Function16850 + ld hl, wDaycareLady + res 0, [hl] + ld hl, wDaycareMan + res 5, [hl] + jr .asm_1677b + +.asm_16778 + call Function1689b + +.asm_1677b + ld a, $13 + call Function1689b + ret +; 16781 + +Function16781: ; 16781 + bit 7, [hl] + jr nz, .asm_16788 + set 7, [hl] + inc a + +.asm_16788 + call Function1689b + call YesNoBox + ret +; 1678f + +Function1678f: ; 1678f + set 7, [hl] + call Function1689b + call YesNoBox + ret +; 16798 + +Function16798: ; 16798 + ld a, [PartyCount] + cp 2 + jr c, .asm_167e5 + ld a, 4 + call Function1689b + ld b, 6 + callba Function5001d + jr c, .asm_167dd + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_167e1 + callba CheckCurPartyMonFainted + jr c, .asm_167e9 + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld d, [hl] + callba ItemIsMail + jr c, .asm_167ed + ld hl, PartyMonNicknames + ld a, [CurPartyMon] + call GetNick + and a + ret + +.asm_167dd + ld a, $12 + scf + ret + +.asm_167e1 + ld a, $6 + scf + ret + +.asm_167e5 + ld a, $7 + scf + ret + +.asm_167e9 + ld a, $8 + scf + ret + +.asm_167ed + ld a, $a + scf + ret +; 167f1 + +UnknownText_0x167f1: ; 0x167f1 + ; + text_jump UnknownText_0x1bdaa7 + db "@" +; 0x167f6 + +Function167f6: ; 167f6 + ld a, $5 + call Function1689b + ld a, [CurPartySpecies] + call PlayCry + ld a, $9 + call Function1689b + ret +; 16807 + +Function16807: ; 16807 + ld a, [StringBuffer2 + 1] + and a + jr nz, .asm_16819 + ld a, $f + call Function1689b + call YesNoBox + jr c, .asm_16844 + jr .asm_1682d + +.asm_16819 + ld a, $b + call Function1689b + call YesNoBox + jr c, .asm_16844 + ld a, $c + call Function1689b + call YesNoBox + jr c, .asm_16844 + +.asm_1682d + ld de, Money + ld bc, StringBuffer2 + 2 + callba CompareMoney + jr c, .asm_16848 + ld a, [PartyCount] + cp $6 + jr nc, .asm_1684c + and a + ret + +.asm_16844 + ld a, $12 + scf + ret + +.asm_16848 + ld a, $11 + scf + ret + +.asm_1684c + ld a, $10 + scf + ret +; 16850 + +Function16850: ; 16850 + ld bc, StringBuffer2 + 2 + ld de, Money + callba TakeMoney + ld a, $d + call Function1689b + ld a, [CurPartySpecies] + call PlayCry + ld a, $e + call Function1689b + ret +; 1686d + +Function1686d: ; 1686d + ld a, b + ld [StringBuffer2], a + ld a, d + ld [StringBuffer2 + 1], a + ld de, StringBuffer1 + ld bc, NAME_LENGTH + call CopyBytes + ld hl, 0 + ld bc, $64 + ld a, [StringBuffer2 + 1] + call AddNTimes + ld de, $64 + add hl, de + xor a + ld [StringBuffer2 + 2], a + ld a, h + ld [StringBuffer2 + 3], a + ld a, l + ld [StringBuffer2 + 4], a + ret +; 1689b + +Function1689b: ; 1689b + ld e, a + ld d, 0 + ld hl, TextTable_168aa +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; 168aa + +TextTable_168aa: ; 168aa + dw UnknownText_0x168d2 + dw UnknownText_0x168d7 + dw UnknownText_0x168dc + dw UnknownText_0x168e1 + dw UnknownText_0x168e6 + dw UnknownText_0x168ff + dw UnknownText_0x168f0 + dw UnknownText_0x168eb + dw UnknownText_0x168fa + dw UnknownText_0x16904 + dw UnknownText_0x168f5 + dw UnknownText_0x16909 + dw UnknownText_0x1690e + dw UnknownText_0x16913 + dw UnknownText_0x16918 + dw UnknownText_0x1691d + dw UnknownText_0x16922 + dw UnknownText_0x16927 + dw UnknownText_0x1692c + dw UnknownText_0x16931 +; 168d2 + +UnknownText_0x168d2: ; 0x168d2 + ; I'm the DAY-CARE MAN. Want me to raise a #MON? + text_jump UnknownText_0x1bdaa9 + db "@" +; 0x168d7 + +UnknownText_0x168d7: ; 0x168d7 + ; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON? + text_jump UnknownText_0x1bdad8 + db "@" +; 0x168dc + +UnknownText_0x168dc: ; 0x168dc + ; I'm the DAY-CARE LADY. Should I raise a #MON for you? + text_jump UnknownText_0x1bdb85 + db "@" +; 0x168e1 + +UnknownText_0x168e1: ; 0x168e1 + ; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you? + text_jump UnknownText_0x1bdbbb + db "@" +; 0x168e6 + +UnknownText_0x168e6: ; 0x168e6 + ; What should I raise for you? + text_jump UnknownText_0x1bdc79 + db "@" +; 0x168eb + +UnknownText_0x168eb: ; 0x168eb + ; Oh? But you have just one #MON. + text_jump UnknownText_0x1bdc97 + db "@" +; 0x168f0 + +UnknownText_0x168f0: ; 0x168f0 + ; Sorry, but I can't accept an EGG. + text_jump UnknownText_0x1bdcb8 + db "@" +; 0x168f5 + +UnknownText_0x168f5: ; 0x168f5 + ; Remove MAIL before you come see me. + text_jump UnknownText_0x1bdcda + db "@" +; 0x168fa + +UnknownText_0x168fa: ; 0x168fa + ; If you give me that, what will you battle with? + text_jump UnknownText_0x1bdcff + db "@" +; 0x168ff + +UnknownText_0x168ff: ; 0x168ff + ; OK. I'll raise your @ . + text_jump UnknownText_0x1bdd30 + db "@" +; 0x16904 + +UnknownText_0x16904: ; 0x16904 + ; Come back for it later. + text_jump UnknownText_0x1bdd4b + db "@" +; 0x16909 + +UnknownText_0x16909: ; 0x16909 + ; Are we geniuses or what? Want to see your @ ? + text_jump UnknownText_0x1bdd64 + db "@" +; 0x1690e + +UnknownText_0x1690e: ; 0x1690e + ; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ . + text_jump UnknownText_0x1bdd96 + db "@" +; 0x16913 + +UnknownText_0x16913: ; 0x16913 + ; Perfect! Here's your #MON. + text_jump UnknownText_0x1bde04 + db "@" +; 0x16918 + +UnknownText_0x16918: ; 0x16918 + ; got back @ . + text_jump UnknownText_0x1bde1f + db "@" +; 0x1691d + +UnknownText_0x1691d: ; 0x1691d + ; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100. + text_jump UnknownText_0x1bde32 + db "@" +; 0x16922 + +UnknownText_0x16922: ; 0x16922 + ; You have no room for it. + text_jump UnknownText_0x1bdea2 + db "@" +; 0x16927 + +UnknownText_0x16927: ; 0x16927 + ; You don't have enough money. + text_jump UnknownText_0x1bdebc + db "@" +; 0x1692c + +UnknownText_0x1692c: ; 0x1692c + ; Oh, fine then. + text_jump UnknownText_0x1bded9 + db "@" +; 0x16931 + +UnknownText_0x16931: ; 0x16931 + ; Come again. + text_jump UnknownText_0x1bdee9 + db "@" +; 0x16936 + +Special_DayCareManOutside: ; 16936 + ld hl, wDaycareMan + bit 6, [hl] + jr nz, Function16949 + ld hl, UnknownText_0x16944 + call PrintText + ret + +UnknownText_0x16944: ; 0x16944 + ; Not yet… + text_jump UnknownText_0x1bdef6 + db "@" +; 0x16949 + +Function16949: ; 16949 + ld hl, UnknownText_0x16993 + call PrintText + call YesNoBox + jr c, .asm_1697c + ld a, [PartyCount] + cp PARTY_LENGTH + jr nc, .asm_16987 + call Function169ac + ld hl, wDaycareMan + res 6, [hl] + call Function16a3b + ld hl, UnknownText_0x16998 + call PrintText + ld de, SFX_GET_EGG_FROM_DAYCARE_LADY + call PlaySFX + ld c, 120 + call DelayFrames + ld hl, UnknownText_0x1699d + jr .asm_1697f + +.asm_1697c + ld hl, UnknownText_0x169a2 + +.asm_1697f + call PrintText + xor a + ld [ScriptVar], a + ret + +.asm_16987 + ld hl, UnknownText_0x169a7 + call PrintText + ld a, $1 + ld [ScriptVar], a + ret +; 16993 + +UnknownText_0x16993: ; 0x16993 + ; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it? + text_jump UnknownText_0x1bdf00 + db "@" +; 0x16998 + +UnknownText_0x16998: ; 0x16998 + ; received the EGG! + text_jump UnknownText_0x1bdfa5 + db "@" +; 0x1699d + +UnknownText_0x1699d: ; 0x1699d + ; Take good care of it. + text_jump UnknownText_0x1bdfba + db "@" +; 0x169a2 + +UnknownText_0x169a2: ; 0x169a2 + ; Well then, I'll keep it. Thanks! + text_jump UnknownText_0x1bdfd1 + db "@" +; 0x169a7 + +UnknownText_0x169a7: ; 0x169a7 + ; You have no room in your party. Come back later. + text_jump UnknownText_0x1bdff2 + db "@" +; 0x169ac + +Function169ac: ; 169ac + ld a, [wEggMonLevel] + ld [CurPartyLevel], a + ld hl, PartyCount + ld a, [hl] + cp PARTY_LENGTH + jr nc, .asm_16a2f + inc a + ld [hl], a + ld c, a + ld b, 0 + add hl, bc + ld a, EGG + ld [hli], a + ld a, [wEggMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + ld a, $ff + ld [hl], a + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + call Function16a31 + ld hl, wEggNick + call CopyBytes + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call Function16a31 + ld hl, wEggOT + call CopyBytes + ld hl, PartyMon1 + ld bc, PARTYMON_STRUCT_LENGTH + call Function16a31 + ld hl, wEggMon + ld bc, wEggMonEnd - wEggMon + call CopyBytes + call GetBaseData + ld a, [PartyCount] + dec a + ld hl, PartyMon1 + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld b, h + ld c, l + ld hl, MON_ID + 1 + add hl, bc + push hl + ld hl, MON_MAXHP + add hl, bc + ld d, h + ld e, l + pop hl + push bc + ld b, $0 + predef CalcPkmnStats + pop bc + ld hl, MON_HP + add hl, bc + xor a + ld [hli], a + ld [hl], a + and a + ret + +.asm_16a2f + scf + ret +; 16a31 + +Function16a31: ; 16a31 + ld a, [PartyCount] + dec a + call AddNTimes + ld d, h + ld e, l + ret +; 16a3b + +Function16a3b: ; 16a3b + ld a, [wDaycareLady] + bit 0, a + ret z + ld a, [wDaycareMan] + bit 0, a + ret z + callab Function16e1d + ld a, [wd265] + and a + ret z + inc a + ret z + ld hl, wDaycareMan + set 5, [hl] +.asm_16a59 + call Random + cp 150 + jr c, .asm_16a59 + ld [wStepsToEgg], a + jp Function16a66 +; 16a66 + +Function16a66: ; 16a66 + xor a + ld hl, wEggMon + ld bc, wEggMonEnd - wEggMon + call ByteFill + ld hl, wEggNick + ld bc, PKMN_NAME_LENGTH + call ByteFill + ld hl, wEggOT + ld bc, NAME_LENGTH + call ByteFill + ld a, [wBreedMon1DVs] + ld [TempMonDVs], a + ld a, [wBreedMon1DVs + 1] + ld [TempMonDVs + 1], a + ld a, [wBreedMon1Species] + ld [CurPartySpecies], a + ld a, $3 + ld [MonType], a + ld a, [wBreedMon1Species] + cp DITTO + ld a, $1 + jr z, .asm_16ab6 + ld a, [wBreedMon2Species] + cp DITTO + ld a, $0 + jr z, .asm_16ab6 + callba GetGender + ld a, $0 + jr z, .asm_16ab6 + inc a + +.asm_16ab6 + ld [wDittoInDaycare], a + and a + ld a, [wBreedMon1Species] + jr z, .asm_16ac2 + ld a, [wBreedMon2Species] + +.asm_16ac2 + ld [CurPartySpecies], a + callab GetPreEvolution + callab GetPreEvolution + ld a, EGG_LEVEL + ld [CurPartyLevel], a + + ld a, [CurPartySpecies] + cp NIDORAN_F + jr nz, .asm_16ae8 + call Random + cp $80 + ld a, NIDORAN_F + jr c, .asm_16ae8 + ld a, NIDORAN_M +.asm_16ae8 + ld [CurPartySpecies], a + ld [CurSpecies], a + ld [wEggMonSpecies], a + + call GetBaseData + ld hl, wEggNick + ld de, String_16be0 + call CopyName2 + ld hl, PlayerName + ld de, wEggOT + ld bc, NAME_LENGTH + call CopyBytes + xor a + ld [wEggMonItem], a + ld de, wEggMonMoves + xor a + ld [Buffer1], a + predef FillMoves + callba Function170bf + ld hl, wEggMonID + ld a, [PlayerID] + ld [hli], a + ld a, [PlayerID + 1] + ld [hl], a + ld a, [CurPartyLevel] + ld d, a + callab CalcExpAtLevel + ld hl, wEggMonExp + ld a, [hMultiplicand] + ld [hli], a + ld a, [$ffb5] + ld [hli], a + ld a, [$ffb6] + ld [hl], a + xor a + ld b, $a + ld hl, wEggMonStatExp +.asm_16b46 + ld [hli], a + dec b + jr nz, .asm_16b46 + ld hl, wEggMonDVs + call Random + ld [hli], a + ld [TempMonDVs], a + call Random + ld [hld], a + ld [TempMonDVs + 1], a + ld de, wBreedMon1DVs + ld a, [wBreedMon1Species] + cp DITTO + jr z, .asm_16b98 + ld de, wBreedMon2DVs + ld a, [wBreedMon2Species] + cp DITTO + jr z, .asm_16b98 + ld a, $3 + ld [MonType], a + push hl + callba GetGender + pop hl + ld de, wBreedMon1DVs + ld bc, wBreedMon2DVs + jr c, .asm_16bab + jr z, .asm_16b90 + ld a, [wDittoInDaycare] + and a + jr z, .asm_16b98 + ld d, b + ld e, c + jr .asm_16b98 + +.asm_16b90 + ld a, [wDittoInDaycare] + and a + jr nz, .asm_16b98 + ld d, b + ld e, c + +.asm_16b98 + ld a, [de] + inc de + and $f + ld b, a + ld a, [hl] + and $f0 + add b + ld [hli], a + ld a, [de] + and $7 + ld b, a + ld a, [hl] + and $f8 + add b + ld [hl], a + +.asm_16bab + ld hl, StringBuffer1 + ld de, wd050 + ld bc, NAME_LENGTH + call CopyBytes + ld hl, wEggMonMoves + ld de, wEggMonPP + predef FillPP + ld hl, wd050 + ld de, StringBuffer1 + ld bc, NAME_LENGTH + call CopyBytes + ld a, [BaseEggSteps] + ld hl, wEggMonHappiness + ld [hli], a + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + ld a, [CurPartyLevel] + ld [wEggMonLevel], a + ret +; 16be0 + +String_16be0: ; 16be0 + db "EGG@" +; 16be4 diff --git a/event/elevator.asm b/event/elevator.asm index d43bc9d54..0aa5c1f05 100755 --- a/event/elevator.asm +++ b/event/elevator.asm @@ -127,10 +127,10 @@ Function134dd: ; 134dd call Elevator_GetCurrentFloorText ld hl, Elevator_MenuDataHeader call CopyMenuDataHeader - call Function352f + call InitScrollingMenu call UpdateSprites xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a call HandleScrollingMenu call WriteBackup ld a, [wcf73] diff --git a/event/field_moves.asm b/event/field_moves.asm new file mode 100755 index 000000000..d6fa4a0bb --- /dev/null +++ b/event/field_moves.asm @@ -0,0 +1,312 @@ +PlayWhirlpoolSound: ; 8c7d4 + call WaitSFX + ld de, SFX_SURF + call PlaySFX + call WaitSFX + ret +; 8c7e1 + +BlindingFlash: ; 8c7e1 + callba FadeOutPalettes + ld hl, StatusFlags + set 2, [hl] + callba Function8c0e5 + callba Function8c001 + ld b, SCGB_09 + call GetSGBLayout + callba Function49409 + callba FadeInPalettes + ret +; 8c80a + +ShakeHeadbuttTree: ; 8c80a + callba Function8cf53 + ld de, CutGrassGFX + ld hl, VTiles1 + lb bc, BANK(CutGrassGFX), 4 + call Request2bpp + ld de, HeadbuttTreeGFX + ld hl, VTiles1 tile $04 + lb bc, BANK(HeadbuttTreeGFX), 8 + call Request2bpp + call Function8cad3 + ld a, SPRITE_ANIM_INDEX_1B + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $84 + ld a, $90 + ld [wc3b5], a + callba Function8cf7a + call GetHeadbuttTreeRelativeLocation + ld a, $20 + ld [wcf64], a + call WaitSFX + ld de, SFX_SANDSTORM + call PlaySFX +.loop + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ld a, $90 + ld [wc3b5], a + callba Function8cf7a + call DelayFrame + jr .loop + +.done + call OverworldTextModeSwitch + call WaitBGMap + xor a + ld [hBGMapMode], a + callba Function8cf53 + ld hl, Sprites + $90 + ld bc, $10 + xor a + call ByteFill + ld de, Font + ld hl, VTiles1 + lb bc, BANK(Font), $c + call Get1bpp + call ReplaceKrisSprite + ret +; 8c893 + +HeadbuttTreeGFX: ; 8c893 +INCBIN "gfx/unknown/08c893.2bpp" +; 8c913 + +GetHeadbuttTreeRelativeLocation: ; 8c913 + xor a + ld [hBGMapMode], a + ld a, [PlayerDirection] + and %00001100 + srl a + ld e, a + ld d, 0 + ld hl, TreeRelativeLocationTable + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + + ld a, $5 + ld [hli], a + ld [hld], a + ld bc, SCREEN_WIDTH + add hl, bc + ld [hli], a + ld [hld], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ret +; 8c938 + +TreeRelativeLocationTable: ; 8c938 + dwcoord 8, 8 + 2 ; RIGHT + dwcoord 8, 8 - 2 ; LEFT + dwcoord 8 - 2, 8 ; DOWN + dwcoord 8 + 2, 8 ; UP +; 8c940 + +OWCutAnimation: ; 8c940 + ld a, e + and $1 + ld [wJumptableIndex], a + call .LoadCutGFX + call WaitSFX + ld de, SFX_PLACE_PUZZLE_PIECE_DOWN + call PlaySFX +.loop + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finish + ld a, $90 + ld [wc3b5], a + callab Function8cf7a + call OWCutJumptable + call DelayFrame + jr .loop + +.finish + ret +; 8c96d + +.LoadCutGFX: ; 8c96d + callab Function8cf53 ; pointless to farcall + ld de, CutGrassGFX + ld hl, VTiles1 + lb bc, BANK(CutGrassGFX), 4 + call Request2bpp + ld de, CutTreeGFX + ld hl, VTiles1 tile $4 + lb bc, BANK(CutTreeGFX), 4 + call Request2bpp + ret +; 8c98c + +CutTreeGFX: ; c898c +INCBIN "gfx/misc/cut_tree.2bpp" +; c89cc + +CutGrassGFX: ; 8c9cc +INCBIN "gfx/misc/cut_grass.2bpp" +; 8ca0c + +OWCutJumptable: ; 8ca0c + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8ca1b + + +.jumptable: ; 8ca1b (23:4a1b) + dw Function8ca23 + dw Function8ca3c + dw Function8ca5c + dw Function8ca64 + + +Function8ca23: ; 8ca23 (23:4a23) + call Function8cad3 + ld a, SPRITE_ANIM_INDEX_17 ; leaf + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $84 + ld a, $20 + ld [wcf64], a + ld hl, wJumptableIndex +rept 2 + inc [hl] +endr + ret + +Function8ca3c: ; 8ca3c (23:4a3c) + call Function8ca8e + xor a + call Function8ca73 + ld a, $10 + call Function8ca73 + ld a, $20 + call Function8ca73 + ld a, $30 + call Function8ca73 + ld a, $20 + ld [wcf64], a + ld hl, wJumptableIndex + inc [hl] + ret + +Function8ca5c: ; 8ca5c (23:4a5c) + ld a, $1 + ld [hBGMapMode], a + ld hl, wJumptableIndex + inc [hl] + +Function8ca64: ; 8ca64 (23:4a64) + ld hl, wcf64 + ld a, [hl] + and a + jr z, .asm_8ca6d + dec [hl] + ret +.asm_8ca6d + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function8ca73: ; 8ca73 (23:4a73) + push de + push af + ld a, SPRITE_ANIM_INDEX_16 ; fly takeoff + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $80 + ld hl, $e + add hl, bc + ld [hl], $4 + pop af + ld hl, $c + add hl, bc + ld [hl], a + pop de + ret + +Function8ca8e: ; 8ca8e (23:4a8e) + ld de, 0 + ld a, [wd197] + bit 0, a + jr z, .asm_8ca9a + set 0, e +.asm_8ca9a + ld a, [wd196] + bit 0, a + jr z, .asm_8caa3 + set 1, e +.asm_8caa3 + ld a, [PlayerDirection] + and $c + add e + ld e, a + ld hl, Unknown_8cab3 +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + ret +; 8cab3 (23:4ab3) + +Unknown_8cab3: ; 8cab3 + db $58, $60 + db $48, $60 + db $58, $70 + db $48, $70 + db $58, $40 + db $48, $40 + db $58, $50 + db $48, $50 + db $38, $60 + db $48, $60 + db $38, $50 + db $48, $50 + db $58, $60 + db $68, $60 + db $58, $50 + db $68, $50 +; 8cad3 + +Function8cad3: ; 8cad3 (23:4ad3) + ld a, [PlayerDirection] + and $c + srl a + ld e, a + ld d, 0 + ld hl, Unknown_8cae5 + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ret +; 8cae5 (23:4ae5) + +Unknown_8cae5: ; 8cae5 + db $50, $68 + db $50, $48 + db $40, $58 + db $60, $58 +; 8caed diff --git a/event/forced_movement.asm b/event/forced_movement.asm index 89a776d60..b6e6091ff 100755 --- a/event/forced_movement.asm +++ b/event/forced_movement.asm @@ -28,41 +28,33 @@ Script_ForcedMovement:: ; 0x1253d ; 0x12564 .MovementData_up: ; 0x12564 - step_wait5 - big_step_down + step_dig 16 turn_in_down - step_wait5 - big_step_down + step_dig 16 turn_head_down step_end ; 0x1256b .MovementData_down: ; 0x1256b - step_wait5 - big_step_down + step_dig 16 turn_in_up - step_wait5 - big_step_down + step_dig 16 turn_head_up step_end ; 0x12572 .MovementData_right: ; 0x12572 - step_wait5 - big_step_down + step_dig 16 turn_in_left - step_wait5 - big_step_down + step_dig 16 turn_head_left step_end ; 0x12579 .MovementData_left: ; 0x12579 - step_wait5 - big_step_down + step_dig 16 turn_in_right - step_wait5 - big_step_down + step_dig 16 turn_head_right step_end ; 0x12580 diff --git a/event/halloffame.asm b/event/halloffame.asm new file mode 100755 index 000000000..d4b86286d --- /dev/null +++ b/event/halloffame.asm @@ -0,0 +1,628 @@ +HallOfFame:: ; 0x8640e + call Function8648e + ld a, [StatusFlags] + push af + ld a, 1 + ld [wc2cd], a + call DisableSpriteUpdates + ld a, SPAWN_LANCE + ld [wSpawnAfterChampion], a + + ; Enable the Pokégear map to cycle through all of Kanto + ld hl, StatusFlags + set 6, [hl] ; hall of fame + + callba Function14da0 + + ld hl, wHallOfFameCount + ld a, [hl] + cp 200 + jr nc, .ok + inc [hl] +.ok + callba SaveGameData + call GetHallOfFameParty + callba AddHallOfFameEntry + + xor a + ld [wc2cd], a + call Function864c3 + pop af + ld b, a + callba Function109847 + ret +; 0x86455 + +RedCredits:: ; 86455 + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + ld a, $a + ld [MusicFade], a + callba FadeOutPalettes + xor a + ld [VramState], a + ld [hMapAnims], a + callba Function4e8c2 + ld c, 8 + call DelayFrames + call DisableSpriteUpdates + ld a, SPAWN_RED + ld [wSpawnAfterChampion], a + ld a, [StatusFlags] + ld b, a + callba Function109847 + ret +; 8648e + +Function8648e: ; 8648e + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + ld a, 10 + ld [MusicFade], a + callba FadeOutPalettes + xor a + ld [VramState], a + ld [hMapAnims], a + callba Function4e881 + ld c, 100 + jp DelayFrames +; 864b4 + +Function864b4: ; 864b4 + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + call PlayMusic + ret +; 864c3 + +Function864c3: ; 864c3 + xor a + ld [wJumptableIndex], a + call Function8671c + jr c, .done + ld de, SCREEN_WIDTH + call Function864b4 + xor a + ld [wcf64], a +.loop + ld a, [wcf64] + cp 6 + jr nc, .done + ld hl, wc608 + 1 + ld bc, $10 + call AddNTimes + ld a, [hl] + cp -1 + jr z, .done + push hl + call Function865b5 + pop hl + call Function8650c + jr c, .done + ld hl, wcf64 + inc [hl] + jr .loop + +.done + call Function86810 + ld a, $4 + ld [MusicFade], a + call RotateThreePalettesRight + ld c, 8 + call DelayFrames + ret +; 8650c + +Function8650c: ; 8650c + call Function86748 + ld de, String_8652c + hlcoord 1, 2 + call PlaceString + call WaitBGMap + decoord 6, 5 + ld c, $6 + predef Functiond066e + ld c, 60 + call DelayFrames + and a + ret +; 8652c + +String_8652c: + db "New Hall of Famer!@" +; 8653f + + +GetHallOfFameParty: ; 8653f + ld hl, OverworldMap + ld bc, HOF_LENGTH + xor a + call ByteFill + ld a, [wHallOfFameCount] + ld de, OverworldMap + ld [de], a + inc de + ld hl, PartySpecies + ld c, 0 +.next + ld a, [hli] + cp -1 + jr z, .done + cp EGG + jr nz, .mon + inc c + jr .next + +.mon + push hl + push de + push bc + + ld a, c + ld hl, PartyMons + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld c, l + ld b, h + + ld hl, MON_SPECIES + add hl, bc + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_ID + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_DVS + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + ld [de], a + inc de + + pop bc + push bc + ld a, c + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + call AddNTimes + ld bc, PKMN_NAME_LENGTH - 1 + call CopyBytes + + pop bc + inc c + pop de + ld hl, HOF_MON_LENGTH + add hl, de + ld e, l + ld d, h + pop hl + jr .next + +.done + ld a, $ff + ld [de], a + ret +; 865b5 + +Function865b5: ; 865b5 + push hl + call ClearBGPalettes + callba Function4e906 + pop hl + ld a, [hli] + ld [TempMonSpecies], a + ld [CurPartySpecies], a +rept 2 + inc hl +endr + ld a, [hli] + ld [TempMonDVs], a + ld a, [hli] + ld [TempMonDVs + 1], a + ld hl, TempMonDVs + predef GetUnownLetter + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ld de, VTiles2 tile $31 + predef GetBackpic + ld a, $31 + ld [hFillBox], a + hlcoord 6, 6 + lb bc, 6, 6 + predef FillBox + ld a, $d0 + ld [hSCY], a + ld a, $90 + ld [hSCX], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld b, SCGB_1A + call GetSGBLayout + call SetPalettes + call Function86635 + xor a + ld [wc2c6], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + hlcoord 6, 5 + call _PrepMonFrontpic + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [hSCY], a + call Function86643 + ret +; 86635 + +Function86635: ; 86635 +.loop + ld a, [hSCX] + cp $70 + ret z + add $4 + ld [hSCX], a + call DelayFrame + jr .loop +; 86643 + +Function86643: ; 86643 +.loop + ld a, [hSCX] + and a + ret z +rept 2 + dec a +endr + ld [hSCX], a + call DelayFrame + jr .loop +; 86650 + +_HallOfFamePC: ; 86650 + call LoadFontsBattleExtra + xor a + ld [wJumptableIndex], a +.loop + call Function8671c + ret c + call Function86665 + ret c + ld hl, wJumptableIndex + inc [hl] + jr .loop +; 86665 + +Function86665: ; 86665 + xor a + ld [wcf64], a +.next + call Function86692 + jr c, .start_button +.loop + call JoyTextDelay + ld hl, hJoyLast + ld a, [hl] + and B_BUTTON + jr nz, .b_button + ld a, [hl] + and A_BUTTON + jr nz, .a_button + ld a, [hl] + and START + jr nz, .start_button + call DelayFrame + jr .loop + +.a_button + ld hl, wcf64 + inc [hl] + jr .next + +.b_button + scf + ret + +.start_button + and a + ret +; 86692 + +Function86692: ; 86692 +; Print the number of times the player has entered the Hall of Fame. +; If that number is above 200, print "HOF Master!" instead. + ld a, [wcf64] + cp $6 + jr nc, .fail + ld hl, wc608 + 1 + ld bc, $10 + call AddNTimes + ld a, [hl] + cp $ff + jr nz, .okay + +.fail + scf + ret + +.okay + push hl + call ClearBGPalettes + pop hl + call Function86748 + ld a, [wc608] + cp 200 + 1 + jr c, .print_num_hof + ld de, String_866fc + hlcoord 1, 2 + call PlaceString + hlcoord 13, 2 + jr .finish + +.print_num_hof + ld de, String_8670c + hlcoord 1, 2 + call PlaceString + hlcoord 2, 2 + ld de, wc608 + lb bc, 1, 3 + call PrintNum + hlcoord 11, 2 + +.finish + ld de, String_866fb + call PlaceString + call WaitBGMap + ld b, SCGB_1A + call GetSGBLayout + call SetPalettes + decoord 6, 5 + ld c, $6 + predef Functiond066e + and a + ret +; 866fb + +String_866fb: + db "@" +; 866fc + +String_866fc: + db " HOF Master!@" +; 8670c + +String_8670c: + db " -Time Famer@" +; 8671c + + +Function8671c: ; 8671c + ld a, [wJumptableIndex] + cp NUM_HOF_TEAMS + jr nc, .full + ld hl, sHallOfFame + ld bc, HOF_LENGTH + call AddNTimes + ld a, BANK(sHallOfFame) + call GetSRAMBank + ld a, [hl] + and a + jr z, .fail + ld de, wc608 + ld bc, HOF_LENGTH + call CopyBytes + call CloseSRAM + and a + ret + +.fail + call CloseSRAM + +.full + scf + ret +; 86748 + +Function86748: ; 86748 + xor a + ld [hBGMapMode], a + ld a, [hli] + ld [TempMonSpecies], a + ld a, [hli] + ld [TempMonID], a + ld a, [hli] + ld [TempMonID + 1], a + ld a, [hli] + ld [TempMonDVs], a + ld a, [hli] + ld [TempMonDVs + 1], a + ld a, [hli] + ld [TempMonLevel], a + ld de, StringBuffer2 + ld bc, 10 + call CopyBytes + ld a, "@" + ld [StringBuffer2 + 10], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + hlcoord 0, 0 + lb bc, 3, SCREEN_WIDTH - 2 + call TextBox + hlcoord 0, 12 + lb bc, 4, SCREEN_WIDTH - 2 + call TextBox + ld a, [TempMonSpecies] + ld [CurPartySpecies], a + ld [wd265], a + ld hl, TempMonDVs + predef GetUnownLetter + xor a + ld [wc2c6], a + hlcoord 6, 5 + call _PrepMonFrontpic + ld a, [CurPartySpecies] + cp EGG + jr z, .print_id_no + hlcoord 1, 13 + ld a, "№" + ld [hli], a + ld [hl], "·" + hlcoord 3, 13 + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + call GetBasePokemonName + hlcoord 7, 13 + call PlaceString + ld a, BREEDMON + ld [MonType], a + callba GetGender + ld a, " " + jr c, .got_gender + ld a, "♂" + jr nz, .got_gender + ld a, "♀" + +.got_gender + hlcoord 18, 13 + ld [hli], a + hlcoord 8, 14 + ld a, "/" + ld [hli], a + ld de, StringBuffer2 + call PlaceString + hlcoord 1, 16 + call PrintLevel + +.print_id_no + hlcoord 7, 16 + ld a, "<ID>" + ld [hli], a + ld a, "№" + ld [hli], a + ld [hl], "/" + hlcoord 10, 16 + ld de, TempMonID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ret +; 86810 + +Function86810: ; 86810 + call ClearBGPalettes + ld hl, VTiles2 tile $63 + ld de, FontExtra + $d0 + lb bc, BANK(FontExtra), 1 + call Request2bpp + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + callba GetPlayerBackpic + ld a, $31 + ld [hFillBox], a + hlcoord 6, 6 + lb bc, 6, 6 + predef FillBox + ld a, $d0 + ld [hSCY], a + ld a, $90 + ld [hSCX], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [CurPartySpecies], a + ld b, SCGB_1A + call GetSGBLayout + call SetPalettes + call Function86635 + xor a + ld [wc2c6], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + callba Function88840 + xor a + ld [hFillBox], a + hlcoord 12, 5 + lb bc, 7, 7 + predef FillBox + ld a, $c0 + ld [hSCX], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [hSCY], a + call Function86643 + xor a + ld [hBGMapMode], a + hlcoord 0, 2 + lb bc, 8, 9 + call TextBox + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + hlcoord 2, 4 + ld de, PlayerName + call PlaceString + hlcoord 1, 6 + ld a, "<ID>" + ld [hli], a + ld a, "№" + ld [hli], a + ld [hl], "/" + hlcoord 4, 6 + ld de, PlayerID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + hlcoord 1, 8 + ld de, .PlayTime + call PlaceString + hlcoord 3, 9 + ld de, GameTimeHours + lb bc, 2, 3 + call PrintNum + ld [hl], 99 + inc hl + ld de, GameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + call WaitBGMap + callba Function26601 + ret +; 868ed + +.PlayTime + db "PLAY TIME@" +; 868f7 + diff --git a/event/kurt.asm b/event/kurt.asm index 8f9dd4fd6..bb24f26ab 100644 --- a/event/kurt.asm +++ b/event/kurt.asm @@ -26,7 +26,7 @@ Special_SelectApricornForKurt: ; 88018 call LoadStandardMenuDataHeader ld c, $1 xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a ld [wKurtApricornQuantity], a .loop push bc @@ -65,7 +65,7 @@ Kurt_SelectApricorn: ; 88055 ld [wMenuCursorBuffer], a xor a ld [hBGMapMode], a - call Function352f + call InitScrollingMenu call UpdateSprites call HandleScrollingMenu ld a, [wcf73] @@ -139,7 +139,7 @@ Kurt_SelectQuantity: ; 880c2 call UpdateSprites call .PlaceApricornName call PlaceApricornQuantity - call Function321c + call ApplyTilemap callba Function27a28 jr nc, .loop diff --git a/event/magnet_train.asm b/event/magnet_train.asm new file mode 100755 index 000000000..d9c1a3ae9 --- /dev/null +++ b/event/magnet_train.asm @@ -0,0 +1,485 @@ +Special_MagnetTrain: ; 8cc04 + ld a, [ScriptVar] + and a + jr nz, .ToGoldenrod + ld a, 1 ; forwards + lb bc, $40, $60 + ld de, $fca0 + jr .continue + +.ToGoldenrod + ld a, -1 ; backwards + lb bc, $c0, $a0 + ld de, $b460 + +.continue + ld h, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, h + ld [w5_d191], a + ld a, c + ld [w5_d192], a + ld a, b + ld [w5_d193], a + ld a, e + ld [w5_d194], a + ld a, d + ld [w5_d195], a + ld a, [hSCX] + push af + ld a, [hSCY] + push af + call Function8ccc9 + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $1 +.loop + ld a, [wJumptableIndex] + and a + jr z, .initialize + bit 7, a + jr nz, .done + callab Function8cf69 + call Function8cdf7 + call Function8cc99 + call Function3b0c + call DelayFrame + jr .loop + +.initialize + call Function8ceae + jr .loop + +.done + pop af + ld [hVBlank], a + call ClearBGPalettes + xor a + ld [hLCDStatCustom], a + ld [hLCDStatCustom + 1], a + ld [hLCDStatCustom + 2], a + ld [hSCX], a + ld [Requested2bppSource], a + ld [Requested2bppSource + 1], a + ld [Requested2bppDest], a + ld [Requested2bppDest + 1], a + ld [Requested2bpp], a + call ClearTileMap + pop af + ld [hSCY], a + pop af + ld [hSCX], a + xor a + ld [hBGMapMode], a + pop af + ld [rSVBK], a + ret +; 8cc99 + +Function8cc99: ; 8cc99 + ld hl, LYOverridesBackup + ld c, $2f + ld a, [wcf64] + add a + ld [hSCX], a + call Function8ccc4 + ld c, $30 + ld a, [wcf65] + call Function8ccc4 + ld c, $31 + ld a, [wcf64] + add a + call Function8ccc4 + ld a, [wd191] + ld d, a + ld hl, wcf64 + ld a, [hl] +rept 2 + add d +endr + ld [hl], a + ret +; 8ccc4 + +Function8ccc4: ; 8ccc4 +.asm_8ccc4 + ld [hli], a + dec c + jr nz, .asm_8ccc4 + ret +; 8ccc9 + +Function8ccc9: ; 8ccc9 + call ClearBGPalettes + call ClearSprites + call DisableLCD + callab Function8cf53 + call SetMagnetTrainPals + call DrawMagnetTrain + ld a, $90 + ld [hWY], a + call EnableLCD + xor a + ld [hBGMapMode], a + ld [hSCX], a + ld [hSCY], a + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + callba GetPlayerIcon + pop af + ld [rSVBK], a + ld hl, VTiles0 + ld c, $4 + call Request2bpp + ld hl, $c0 + add hl, de + ld d, h + ld e, l + ld hl, VTiles0 tile $04 + ld c, $4 + call Request2bpp + call Function8cda6 + ld hl, wJumptableIndex + xor a + ld [hli], a + ld a, [wd192] +rept 3 + ld [hli], a +endr + ld de, MUSIC_MAGNET_TRAIN + call PlayMusic2 + ret +; 8cd27 + +DrawMagnetTrain: ; 8cd27 + hlbgcoord 0, 0 + xor a +.asm_8cd2b + call GetMagnetTrainBGTiles + ld b, 32 / 2 + call .FillAlt + inc a + cp $12 + jr c, .asm_8cd2b + hlbgcoord 0, 6 + ld de, MagnetTrainTilemap1 + ld c, 20 + call .FillLine + hlbgcoord 0, 7 + ld de, MagnetTrainTilemap2 + ld c, 20 + call .FillLine + hlbgcoord 0, 8 + ld de, MagnetTrainTilemap3 + ld c, 20 + call .FillLine + hlbgcoord 0, 9 + ld de, MagnetTrainTilemap4 + ld c, 20 + call .FillLine + ret +; 8cd65 + +.FillLine ; 8cd65 + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .FillLine + ret +; 8cd6c + +.FillAlt ; 8cd6c + ld [hl], e + inc hl + ld [hl], d + inc hl + dec b + jr nz, .FillAlt + ret +; 8cd74 + +GetMagnetTrainBGTiles: ; 8cd74 + push hl + ld e, a + ld d, 0 + ld hl, MagnetTrainBGTiles +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + pop hl + ret +; 8cd82 + +MagnetTrainBGTiles: ; 8cd82 +; Alternating tiles for each line +; of the Magnet Train tilemap. + db $4c, $4d ; bush + db $5c, $5d ; bush + db $4c, $4d ; bush + db $5c, $5d ; bush + db $08, $08 ; fence + db $18, $18 ; fence + db $1f, $1f ; track + db $31, $31 ; track + db $11, $11 ; track + db $11, $11 ; track + db $0d, $0d ; track + db $31, $31 ; track + db $04, $04 ; fence + db $18, $18 ; fence + db $4c, $4d ; bush + db $5c, $5d ; bush + db $4c, $4d ; bush + db $5c, $5d ; bush +; 8cda6 + +Function8cda6: ; 8cda6 + ld hl, LYOverrides + ld bc, $90 + ld a, [wd192] + call ByteFill + ld hl, LYOverridesBackup + ld bc, $90 + ld a, [wd192] + call ByteFill + ld a, $43 + ld [hLCDStatCustom], a + ret +; 8cdc3 + +SetMagnetTrainPals: ; 8cdc3 + ld a, $1 + ld [rVBK], a + + ; bushes + hlbgcoord 0, 0 + ld bc, 4 bgrows + ld a, $2 + call ByteFill + + ; train + hlbgcoord 0, 4 + ld bc, 10 bgrows + xor a + call ByteFill + + ; more bushes + hlbgcoord 0, 14 + ld bc, 4 bgrows + ld a, $2 + call ByteFill + + ; train window + hlbgcoord 7, 8 + ld bc, 6 + ld a, $4 + call ByteFill + + ld a, $0 + ld [rVBK], a + ret +; 8cdf7 + +Function8cdf7: ; 8cdf7 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_8ce06 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8ce06 + +Jumptable_8ce06: ; 8ce06 + dw Function8ce19 + dw Function8ce6d + dw Function8ce47 + dw Function8ce6d + dw Function8ce7a + dw Function8ce6d + dw Function8cea2 +; 8ce14 + +Function8ce14: ; 8ce14 + ld hl, wJumptableIndex + inc [hl] + ret +; 8ce19 + +Function8ce19: ; 8ce19 + ld d, $55 + ld a, [wd194 + 1] + ld e, a + ld b, SPRITE_ANIM_INDEX_15 + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld a, [PlayerGender] + bit 0, a + jr z, .asm_8ce31 + ld b, SPRITE_ANIM_INDEX_1F + +.asm_8ce31 + pop af + ld [rSVBK], a + ld a, b + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $0 + call Function8ce14 + ld a, $80 + ld [wcf66], a + ret +; 8ce47 + +Function8ce47: ; 8ce47 + ld hl, wd193 + ld a, [wcf65] + cp [hl] + jr z, .asm_8ce64 + ld e, a + ld a, [wd191] + xor $ff + inc a + add e + ld [wcf65], a + ld hl, wc3c0 + ld a, [wd191] + add [hl] + ld [hl], a + ret + +.asm_8ce64 + call Function8ce14 + ld a, $80 + ld [wcf66], a + ret +; 8ce6d + +Function8ce6d: ; 8ce6d + ld hl, wcf66 + ld a, [hl] + and a + jr z, .asm_8ce76 + dec [hl] + ret + +.asm_8ce76 + call Function8ce14 + ret +; 8ce7a + +Function8ce7a: ; 8ce7a + ld hl, wd194 + ld a, [wcf65] + cp [hl] + jr z, .asm_8ce9e + ld e, a + ld a, [wd191] + xor $ff + inc a + ld d, a + ld a, e +rept 2 + add d +endr + ld [wcf65], a + ld hl, wc3c0 + ld a, [wd191] + ld d, a + ld a, [hl] +rept 2 + add d +endr + ld [hl], a + ret + + ret + +.asm_8ce9e + call Function8ce14 + ret +; 8cea2 + +Function8cea2: ; 8cea2 + ld a, $80 + ld [wJumptableIndex], a + ld de, SFX_TRAIN_ARRIVED + call PlaySFX + ret +; 8ceae + +Function8ceae: ; 8ceae + callba Function8cf69 + call Function8cdf7 + call Function8cc99 + call Function3b0c + call DelayFrame + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld a, [TimeOfDayPal] + push af + ld a, [wPermission] + push af + ld a, [TimeOfDay] + and $3 + ld [TimeOfDayPal], a + ld a, $1 + ld [wPermission], a + ld b, SCGB_09 + call GetSGBLayout + call UpdateTimePals + ld a, [rBGP] + ld [wcfc7], a + ld a, [rOBP0] + ld [wcfc8], a + ld a, [rOBP1] + ld [wcfc9], a + pop af + ld [wPermission], a + pop af + ld [TimeOfDayPal], a + pop af + ld [rSVBK], a + ret +; 8ceff + +MagnetTrainTilemap1: + db $1f, $05, $06, $0a, $0a + db $0a, $09, $0a, $0a, $0a + db $0a, $0a, $0a, $09, $0a + db $0a, $0a, $0b, $0c, $1f +MagnetTrainTilemap2: + db $14, $15, $16, $1a, $1a + db $1a, $19, $1a, $1a, $1a + db $1a, $1a, $1a, $19, $1a + db $1a, $1a, $1b, $1c, $1d +MagnetTrainTilemap3: + db $24, $25, $26, $27, $07 + db $2f, $29, $28, $28, $28 + db $28, $28, $28, $29, $07 + db $2f, $2a, $2b, $2c, $2d +MagnetTrainTilemap4: + db $20, $1f, $2e, $1f, $17 + db $00, $2e, $1f, $1f, $1f + db $1f, $1f, $1f, $2e, $17 + db $00, $1f, $2e, $1f, $0f +; 8cf4f diff --git a/event/mom.asm b/event/mom.asm index 987f4bf0c..61d374de9 100644 --- a/event/mom.asm +++ b/event/mom.asm @@ -45,11 +45,11 @@ endr ; 16254 .CheckIfBankInitialized: ; 16254 - ld a, [wBankOfMomMode] + ld a, [wMomSavingMoney] bit 7, a jr nz, .savingmoneyalready set 7, a - ld [wBankOfMomMode], a + ld [wMomSavingMoney], a ld a, $1 jr .done_0 @@ -75,7 +75,7 @@ endr ld a, %10000000 .done_1 - ld [wBankOfMomMode], a + ld [wMomSavingMoney], a ld hl, UnknownText_0x16653 call PrintText ld a, $8 @@ -168,7 +168,7 @@ endr ld de, StringBuffer2 + 3 ld bc, 3 call CopyBytes - ld bc, wd851 + ld bc, wMomsMoney ld de, StringBuffer2 callba GiveMoney jr c, .CantDepositThatMuch @@ -176,7 +176,7 @@ endr ld de, Money callba TakeMoney ld hl, StringBuffer2 - ld de, wd851 + ld de, wMomsMoney ld bc, 3 call CopyBytes ld de, SFX_TRANSACTION @@ -232,7 +232,7 @@ endr ld de, StringBuffer2 + 3 ld bc, 3 call CopyBytes - ld de, wd851 + ld de, wMomsMoney ld bc, StringBuffer2 callba CompareMoney jr c, .InsufficientFundsInBank @@ -241,7 +241,7 @@ endr callba GiveMoney jr c, .NotEnoughRoomInWallet ld bc, StringBuffer2 + 3 - ld de, wd851 + ld de, wMomsMoney callba TakeMoney ld hl, StringBuffer2 ld de, Money @@ -279,7 +279,7 @@ endr call YesNoBox jr c, .StopSavingMoney ld a, $81 - ld [wBankOfMomMode], a + ld [wMomSavingMoney], a ld hl, UnknownText_0x16685 call PrintText ld a, $8 @@ -288,7 +288,7 @@ endr .StopSavingMoney ld a, $80 - ld [wBankOfMomMode], a + ld [wMomSavingMoney], a ld a, $7 ld [wJumptableIndex], a ret @@ -461,7 +461,7 @@ Function1651a: ; 1651a ld de, String_16699 call PlaceString hlcoord 12, 2 - ld de, wd851 + ld de, wMomsMoney lb bc, PRINTNUM_MONEY | 3, 6 call PrintNum hlcoord 1, 4 diff --git a/event/mom_phone.asm b/event/mom_phone.asm new file mode 100755 index 000000000..b2bf0d2fd --- /dev/null +++ b/event/mom_phone.asm @@ -0,0 +1,285 @@ +MomTriesToBuySomething:: ; fcfec + ld a, [wMapReentryScriptQueueFlag] + and a + ret nz + call GetMapHeaderPhoneServiceNybble + and a + ret nz + xor a + ld [wdc18], a + call CheckBalance_MomItem2 + ret nc + call Functionfd0c3 + ret nc + ld b, BANK(UnknownScript_0xfd00f) + ld de, UnknownScript_0xfd00f + callba LoadScriptBDE + scf + ret +; fd00f + +UnknownScript_0xfd00f: ; 0xfd00f + callasm Functionfd017 + farjump Script_ReceivePhoneCall +; 0xfd017 + +Functionfd017: ; fd017 + call MomBuysItem_DeductFunds + call Functionfd0eb + ld a, [wdc18] + and a + jr nz, .ok + ld hl, wdc17 + inc [hl] +.ok + ld a, 1 + ld [wCurrentCaller], a + ld bc, wd03f + ld hl, 0 + add hl, bc + ld [hl], 0 + inc hl + ld [hl], 1 + ld hl, 9 + add hl, bc + ld a, $3f + ld [hli], a + ld a, e + ld [hli], a + ld a, d + ld [hl], a + ret +; fd044 + +CheckBalance_MomItem2: ; fd044 + ld a, [wdc17] + cp 10 + jr nc, .nope + call GetItemFromMom + ld a, [hli] + ld [hMoneyTemp], a + ld a, [hli] + ld [hMoneyTemp + 1], a + ld a, [hli] + ld [hMoneyTemp + 2], a + ld de, wMomsMoney + ld bc, hMoneyTemp + callba CompareMoney + jr nc, .have_enough_money + +.nope + jr .check_have_2300 + +.have_enough_money + scf + ret + +.check_have_2300 + ld hl, hMoneyTemp + ld [hl], (2300 / $10000) ; $00 + inc hl + ld [hl], ((2300 % $10000) / $100) ; $08 + inc hl + ld [hl], (2300 % $100) ; $fc +.loop + ld de, wdc19 + ld bc, wMomsMoney + callba CompareMoney + jr z, .exact + jr nc, .less_than + call Functionfd099 + jr .loop + +.less_than + xor a + ret + +.exact + call Functionfd099 + ld a, 5 + call RandomRange + inc a + ld [wdc18], a + scf + ret +; fd099 + +Functionfd099: ; fd099 + ld de, wdc19 + ld bc, hMoneyTemp + callba AddMoney + ret +; fd0a6 + + +MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6) + call GetItemFromMom + ld de, 3 + add hl, de + ld a, [hli] + ld [hMoneyTemp], a + ld a, [hli] + ld [hMoneyTemp + 1], a + ld a, [hli] + ld [hMoneyTemp + 2], a + ld de, wMomsMoney + ld bc, hMoneyTemp + callba TakeMoney + ret + + +Functionfd0c3: ; fd0c3 + call GetItemFromMom + ld de, 6 + add hl, de + ld a, [hli] + cp 1 + jr z, .not_doll + ld a, [hl] + ld c, a + ld b, 1 + callba DecorationFlagAction_c + scf + ret + +.not_doll + ld a, [hl] + ld [CurItem], a + ld a, $1 + ld [wItemQuantityChangeBuffer], a + ld hl, PCItems + call ReceiveItem + ret +; fd0eb + + +Functionfd0eb: ; fd0eb (3f:50eb) + call GetItemFromMom + ld de, 6 ; field + add hl, de + ld a, [hli] + ld de, Script_MomBoughtItem + cp 1 + ret z + ld de, Script_MomBoughtDoll + ret +; fd0fd (3f:50fd) + +Script_MomBoughtItem: ; 0xfd0fd + writetext _MomText_HiHowAreYou + writetext _MomText_FoundAnItem + writetext _MomText_BoughtWithYourMoney + writetext _MomText_ItsInPC + end +; 0xfd10a + +Script_MomBoughtDoll: ; 0xfd10a + writetext _MomText_HiHowAreYou + writetext _MomText_FoundADoll + writetext _MomText_BoughtWithYourMoney + writetext _MomText_ItsInRoom + end +; 0xfd117 + + +GetItemFromMom: ; fd117 + ld a, [wdc18] + and a + jr z, .zero + dec a + ld de, MomItems_1 + jr .incave + +.zero + ld a, [wdc17] + cp 10 ; length of MomItems_2 + jr c, .ok + xor a + +.ok + ld de, MomItems_2 + +.incave + ld l, a + ld h, 0 +rept 3 ; multiply hl by 8 + add hl, hl +endr + add hl, de + ret +; fd136 + +momitem: macro +; money to trigger, cost, kind, item + dt \1 + dt \2 + db \3, \4 +ENDM + + +MomItems_1: ; fd136 + momitem 0, 600, MOM_ITEM, SUPER_POTION + momitem 0, 90, MOM_ITEM, ANTIDOTE + momitem 0, 180, MOM_ITEM, POKE_BALL + momitem 0, 450, MOM_ITEM, ESCAPE_ROPE + momitem 0, 500, MOM_ITEM, GREAT_BALL +; fd15e + +MomItems_2: ; fd15e + momitem 900, 600, MOM_ITEM, SUPER_POTION + momitem 4000, 270, MOM_ITEM, REPEL + momitem 7000, 600, MOM_ITEM, SUPER_POTION + momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL + momitem 15000, 3000, MOM_ITEM, MOON_STONE + momitem 19000, 600, MOM_ITEM, SUPER_POTION + momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL + momitem 40000, 900, MOM_ITEM, HYPER_POTION + momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL + momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL +; fd1ae + + db 0, 0, 0 ; XXX + +_MomText_HiHowAreYou: ; 0xfd1b1 + ; Hi, ! How are you? + text_jump UnknownText_0x1bc615 + db "@" +; 0xfd1b6 + +_MomText_FoundAnItem: ; 0xfd1b6 + ; I found a useful item shopping, so + text_jump UnknownText_0x1bc62a + db "@" +; 0xfd1bb + +_MomText_BoughtWithYourMoney: ; 0xfd1bb + ; I bought it with your money. Sorry! + text_jump UnknownText_0x1bc64e + db "@" +; 0xfd1c0 + +_MomText_ItsInPC: ; 0xfd1c0 + ; It's in your PC. You'll like it! + text_jump UnknownText_0x1bc673 + db "@" +; 0xfd1c5 + +_MomText_FoundADoll: ; 0xfd1c5 + ; While shopping today, I saw this adorable doll, so + text_jump UnknownText_0x1bc693 + db "@" +; 0xfd1ca + +_MomText_ItsInRoom: ; 0xfd1ca + ; It's in your room. You'll love it! + text_jump UnknownText_0x1bc6c7 + db "@" +; 0xfd1cf + + db 0 ; XXX + +Functionfd1d0: ; fd1d0 + ret +; fd1d1 + + ret ; XXX diff --git a/event/photo.asm b/event/photo.asm new file mode 100755 index 000000000..712107ed0 --- /dev/null +++ b/event/photo.asm @@ -0,0 +1,299 @@ +UnownPrinter: ; 16be4 + ld a, [UnownDex] + and a + ret z + + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + ld a, [Options] + push af + set NO_TEXT_SCROLL, a + ld [Options], a + call ClearBGPalettes + call ClearTileMap + + ld de, UnownDexATile + ld hl, VTiles1 tile $6f + lb bc, BANK(UnownDexBTile), 1 + call Request1bpp + + ld de, UnownDexBTile + ld hl, VTiles1 tile $75 + lb bc, BANK(UnownDexBTile), 1 + call Request1bpp + + hlcoord 0, 0 + lb bc, 3, 18 + call TextBox + + hlcoord 0, 5 + lb bc, 7, 7 + call TextBox + + hlcoord 0, 14 + lb bc, 2, 18 + call TextBox + + hlcoord 1, 2 + ld de, AlphRuinsStampString + call PlaceString + + hlcoord 1, 16 + ld de, UnownDexDoWhatString + call PlaceString + + hlcoord 10, 6 + ld de, UnownDexMenuString + call PlaceString + + xor a + ld [wJumptableIndex], a + call Function16cc8 + call WaitBGMap + + ld a, UNOWN + ld [CurPartySpecies], a + xor a + ld [TempMonDVs], a + ld [TempMonDVs + 1], a + + ld b, SCGB_1C + call GetSGBLayout + call SetPalettes + +.joy_loop + call JoyTextDelay + + ld a, [hJoyPressed] + and B_BUTTON + jr nz, .pressed_b + + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .pressed_a + + call Function16ca0 + call DelayFrame + jr .joy_loop + +.pressed_a + ld a, [wJumptableIndex] + push af + callba PrintUnownStamp + call RestartMapMusic + pop af + ld [wJumptableIndex], a + jr .joy_loop + +.pressed_b + pop af + ld [Options], a + pop af + ld [hInMenu], a + call ReturnToMapFromSubmenu + ret +; 16ca0 + +Function16ca0: ; 16ca0 + ld a, [hJoyLast] + and D_RIGHT + jr nz, .press_right + ld a, [hJoyLast] + and D_LEFT + jr nz, .press_left + ret + +.press_left + ld hl, wJumptableIndex + ld a, [hl] + and a + jr nz, .wrap_around_left + ld [hl], $1b + +.wrap_around_left + dec [hl] + jr .return + +.press_right + ld hl, wJumptableIndex + ld a, [hl] + cp $1a + jr c, .wrap_around_right + ld [hl], $ff + +.wrap_around_right + inc [hl] + +.return + call Function16cc8 + ret +; 16cc8 + +Function16cc8: ; 16cc8 + ld a, [wJumptableIndex] + cp 26 + jr z, Function16d20 + inc a + ld [UnownLetter], a + ld a, UNOWN + ld [CurPartySpecies], a + xor a + ld [wc2c6], a + ld de, VTiles2 + predef GetFrontpic + call Function16cff + hlcoord 1, 6 + xor a + ld [hFillBox], a + lb bc, 7, 7 + predef FillBox + ld de, VTiles2 tile $31 + callba Functione0000 + ret +; 16cff + +Function16cff: ; 16cff + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + + ld a, BANK(sScratch) + call GetSRAMBank + ld de, w6_d000 + ld hl, sScratch + ld a, [hROMBank] + ld b, a + ld c, $31 + call Get2bpp + call CloseSRAM + + pop af + ld [rSVBK], a + ret +; 16d20 + +Function16d20: ; 16d20 + hlcoord 1, 6 + lb bc, 7, 7 + call ClearBox + hlcoord 1, 9 + ld de, UnownDexVacantString + call PlaceString + xor a + call GetSRAMBank + ld hl, sScratch + ld bc, $31 tiles + xor a + call ByteFill + ld hl, VTiles2 tile $31 + ld de, sScratch + ld c, $31 + ld a, [hROMBank] + ld b, a + call Get2bpp + call CloseSRAM + ld c, 20 + call DelayFrames + ret +; 16d57 + +AlphRuinsStampString: + db " ALPH RUINS STAMP@" + +UnownDexDoWhatString: + db "Do what?@" + +UnownDexMenuString: + db "♂ PRINT" + next "♀ CANCEL" + next "← PREVIOUS" + next "→ NEXT" + db "@" + +UnownDexVacantString: + db "VACANT@" +; 16d9c + +UnownDexATile: ; 16d9c +INCBIN "gfx/unknown/016d9c.1bpp" +UnownDexBTile: ; 16da4 +INCBIN "gfx/unknown/016da4.1bpp" +; 16dac + +Function16dac: ; 16dac + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + hlcoord 7, 11 + ld a, $31 + ld [hFillBox], a + lb bc, 7, 7 + predef FillBox + ret +; 16dc7 + +PhotoStudio: ; 16dc7 + ld hl, .Text_AskWhichMon + call PrintText + callba SelectMonFromParty + jr c, .cancel + ld a, [CurPartySpecies] + cp EGG + jr z, .egg + + ld hl, .Text_HoldStill + call PrintText + call DisableSpriteUpdates + callba PrintPartymon + call Function2b74 + ld a, [hPrinter] + and a + jr nz, .cancel + ld hl, .Text_Presto + jr .print_text + +.cancel + ld hl, .Text_NoPicture + jr .print_text + +.egg + ld hl, .Text_Egg + +.print_text + call PrintText + ret +; 16e04 + +.Text_AskWhichMon: ; 0x16e04 + ; Which #MON should I photo- graph? + text_jump UnknownText_0x1be024 + db "@" +; 0x16e09 + +.Text_HoldStill: ; 0x16e09 + ; All righty. Hold still for a bit. + text_jump UnknownText_0x1be047 + db "@" +; 0x16e0e + +.Text_Presto: ; 0x16e0e + ; Presto! All done. Come again, OK? + text_jump UnknownText_0x1be06a + db "@" +; 0x16e13 + +.Text_NoPicture: ; 0x16e13 + ; Oh, no picture? Come again, OK? + text_jump UnknownText_0x1c0000 + db "@" +; 0x16e18 + +.Text_Egg: ; 0x16e18 + ; An EGG? My talent is worth more… + text_jump UnknownText_0x1c0021 + db "@" +; 0x16e1d diff --git a/event/poke_seer.asm b/event/poke_seer.asm index b5364e67f..5f1a5d1ab 100644 --- a/event/poke_seer.asm +++ b/event/poke_seer.asm @@ -1,12 +1,19 @@ -SEER_INTRO EQU 0 -SEER_CANT_TELL EQU 1 -SEER_MET_AT EQU 2 -SEER_TIME_LEVEL EQU 3 -SEER_TRADED EQU 4 -SEER_CANCEL EQU 5 -SEER_EGG EQU 6 -SEER_LEVEL_ONLY EQU 7 - + const_def + const SEER_INTRO + const SEER_CANT_TELL + const SEER_MET_AT + const SEER_TIME_LEVEL + const SEER_TRADED + const SEER_CANCEL + const SEER_EGG + const SEER_LEVEL_ONLY + + const_def + const SEERACTION_MET + const SEERACTION_TRADED + const SEERACTION_CANT_TELL_1 + const SEERACTION_CANT_TELL_2 + const SEERACTION_LEVEL_ONLY SpecialPokeSeer: ; 4f0bc ld a, SEER_INTRO @@ -44,7 +51,7 @@ SpecialPokeSeer: ; 4f0bc SeerAction: ; 4f0ee - ld a, [wd002] + ld a, [wSeerAction] ld hl, SeerActions rst JumpTable ret @@ -100,29 +107,30 @@ ReadCaughtData: ; 4f134 ld a, MON_CAUGHTDATA call GetPartyParamLocation ld a, [hli] - ld [wd03b], a + ld [wSeerCaughtData], a ld a, [hld] - ld [wd03b + 1], a + ld [wSeerCaughtGender], a or [hl] - jr z, .asm_4f170 + jr z, .error - ld a, 1 - ld [wd002], a + ld a, SEERACTION_TRADED + ld [wSeerAction], a ld a, MON_ID call GetPartyParamLocation ld a, [PlayerID] cp [hl] - jr nz, .asm_4f15f + jr nz, .traded inc hl ld a, [PlayerID + 1] - jr nz, .asm_4f15f + ; cp [hl] + jr nz, .traded - ld a, 0 - ld [wd002], a + ld a, SEERACTION_MET + ld [wSeerAction], a -.asm_4f15f +.traded call GetCaughtLevel call GetCaughtOT call GetCaughtName @@ -131,9 +139,9 @@ ReadCaughtData: ; 4f134 and a ret -.asm_4f170 - ld a, 2 - ld [wd002], a +.error + ld a, SEERACTION_CANT_TELL_1 + ld [wSeerAction], a ret ; 4f176 @@ -142,7 +150,7 @@ GetCaughtName: ; 4f176 ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH call AddNTimes - ld de, wd003 + ld de, wSeerNickname ld bc, PKMN_NAME_LENGTH call CopyBytes ret @@ -150,12 +158,12 @@ GetCaughtName: ; 4f176 GetCaughtLevel: ; 4f18c ld a, "@" - ld hl, wd036 + ld hl, wSeerCaughtLevelString ld bc, 4 call ByteFill ; caught level - ld a, [wd03b] + ld a, [wSeerCaughtData] and $3f jr z, .unknown cp 1 ; hatched from an egg @@ -163,15 +171,15 @@ GetCaughtLevel: ; 4f18c ld a, 5 ; egg hatch level .print - ld [wd038 + 2], a - ld hl, wd036 - ld de, wd038 + 2 + ld [wSeerCaughtLevel], a + ld hl, wSeerCaughtLevelString + ld de, wSeerCaughtLevel lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum ret .unknown - ld de, wd036 + ld de, wSeerCaughtLevelString ld hl, .unknown_level ld bc, 4 call CopyBytes @@ -183,7 +191,7 @@ GetCaughtLevel: ; 4f18c ; 4f1c5 GetCaughtTime: ; 4f1c5 - ld a, [wd03b] + ld a, [wSeerCaughtData] and $c0 jr z, .none @@ -194,13 +202,13 @@ GetCaughtTime: ; 4f1c5 call GetNthString ld d, h ld e, l - ld hl, wd01f + ld hl, wSeerTimeOfDay call CopyName2 and a ret .none - ld de, wd01f + ld de, wSeerTimeOfDay call UnknownCaughtData ret ; 4f1e6 @@ -213,7 +221,7 @@ GetCaughtTime: ; 4f1c5 UnknownCaughtData: ; 4f1f8 ld hl, .unknown - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes ret ; 4f202 @@ -223,35 +231,35 @@ UnknownCaughtData: ; 4f1f8 ; 4f20a GetCaughtLocation: ; 4f20a - ld a, [wd03b + 1] + ld a, [wSeerCaughtGender] and $7f - jr z, .asm_4f22e + jr z, .Unknown cp $7f - jr z, .asm_4f234 + jr z, .event cp $7e - jr z, .asm_4f23b + jr z, .fail ld e, a callba GetLandmarkName ld hl, StringBuffer1 - ld de, wd00e - ld bc, $0011 + ld de, wSeerCaughtLocation + ld bc, 17 call CopyBytes and a ret -.asm_4f22e - ld de, wd00e +.Unknown + ld de, wSeerCaughtLocation jp UnknownCaughtData -.asm_4f234 - ld a, $4 - ld [wd002], a +.event + ld a, SEERACTION_LEVEL_ONLY + ld [wSeerAction], a scf ret -.asm_4f23b - ld a, $3 - ld [wd002], a +.fail + ld a, SEERACTION_CANT_TELL_2 + ld [wSeerAction], a scf ret ; 4f242 @@ -261,17 +269,19 @@ GetCaughtOT: ; 4f242 ld hl, PartyMonOT ld bc, NAME_LENGTH call AddNTimes - ld de, wd02a - ld bc, $000b + ld de, wSeerOTName + ld bc, NAME_LENGTH call CopyBytes + +; this routine is useless in Western localizations ld hl, .male - ld a, [wd03b + 1] + ld a, [wSeerCaughtGender] bit 7, a - jr z, .asm_4f264 + jr z, .got_grammar ld hl, .female -.asm_4f264 - ld de, wd034 + 1 +.got_grammar + ld de, wSeerOTNameGrammar ld a, "@" ld [de], a ret @@ -360,7 +370,7 @@ SeerCancelText: ; 0x4f2af SeerAdvice: ; 4f2b4 ld a, MON_LEVEL call GetPartyParamLocation - ld a, [wd038 + 2] + ld a, [wSeerCaughtLevel] ld c, a ld a, [hl] sub c diff --git a/event/unown.asm b/event/unown.asm index 2d48dc695..789629ae0 100644 --- a/event/unown.asm +++ b/event/unown.asm @@ -124,7 +124,7 @@ Special_DisplayUnownWords: ; 8ae68 ld [hBGMapMode], a call MenuBox call UpdateSprites - call Function321c + call ApplyTilemap call MenuBoxCoord2Tile inc hl ld d, $0 diff --git a/event/whiteout.asm b/event/whiteout.asm index 5cc0a07f9..2e8774b8f 100755 --- a/event/whiteout.asm +++ b/event/whiteout.asm @@ -37,12 +37,12 @@ OverworldBGMap: ; 124fa call ClearScreen call Function3200 call HideSprites - call Function4f0 + call RotateThreePalettesLeft ret ; 1250a BattleBGMap: ; 1250a - ld b, $0 + ld b, SCGB_00 call GetSGBLayout call SetPalettes ret |
