diff options
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/main_menu.asm | 8 | ||||
-rwxr-xr-x | engine/specials.asm | 562 |
2 files changed, 420 insertions, 150 deletions
diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 764390ec..fef1ec35 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -303,13 +303,13 @@ Function5c41: ; 5c41 (1:5c41) call Function5d15 call CloseSRAM - ld hl, wd5b7 + ld hl, wNumItems call Function5d15 - ld hl, wd5e1 + ld hl, wNumKeyItems call Function5d15 - ld hl, wd5fc + ld hl, wNumBalls call Function5d15 - ld hl, wd616 + ld hl, wPCItems call Function5d15 xor a diff --git a/engine/specials.asm b/engine/specials.asm index 9e0917ba..c4cf737e 100755 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -149,9 +149,7 @@ Special_GameCornerPrizeMonCheckDex: ; c38a call FadeToMenu ld a, [wScriptVar] ld [wd151], a - ld a, $3e - ld hl, $7981 - rst FarCall + callba Functionfb981 call ExitAllMenus ret @@ -164,28 +162,28 @@ SpecialSeenMon: ; c3ac Special_FindGreaterThanThatLevel: ; c3b4 ld a, [wScriptVar] ld b, a - callba Functione6a9 + callba Functione6a9 ; same bank jr z, asm_c3f2 jr asm_c3ec Special_FindAtLeastThatHappy: ; c3c2 ld a, [wScriptVar] ld b, a - callba Functione6b0 + callba Functione6b0 ; same bank jr z, asm_c3f2 jr asm_c3ec Special_FindThatSpecies: ; c3d0 ld a, [wScriptVar] ld b, a - callba Functione6b7 + callba Functione6b7 ; same bank jr z, asm_c3f2 jr asm_c3ec Special_FindThatSpeciesYourTrainerID: ; c3de ld a, [wScriptVar] ld b, a - callba Functione6bd + callba Functione6bd ; same bank jr z, asm_c3f2 jr asm_c3ec @@ -211,188 +209,460 @@ Special_NameRival: ; c3f7 .DefaultName: IF DEF(GOLD) db "SILVER@" +ENDC -SpecialNameRater: ; c413 - dr $c413, $c41a - -Special_TownMap: ; c41a - dr $c41a, $c427 - -Special_UnownPrinter: ; c427 - dr $c427, $c434 - -Special_DisplayLinkRecord: ; c434 - dr $c434, $c441 - -Special_PlayerPC: ; c441 - dr $c441, $c450 - -Special_CheckMysteryGift: ; c450 - dr $c450, $c463 - -Special_GetMysteryGiftItem: ; c463 - dr $c463, $c4a4 - -BugContestJudging: ; c4a4 - dr $c4a4, $c4af - -MapRadio: ; c4af - dr $c4af, $c4ba - -Special_UnownPuzzle: ; c4ba - dr $c4ba, $c4cd - -Special_SlotMachine: ; c4cd - dr $c4cd, $c4da - -Special_CardFlip: ; c4da - dr $c4da, $c4e7 - -Special_DummyNonfunctionalGameCornerGame: ; c4e7 - dr $c4e7, $c535 - -Special_ClearBGPalettesBufferScreen: ; c535 - dr $c535, $c549 - -Special_CheckUnusedTwoDayTimer: ; c549 - dr $c549, $c556 - -Functionc556: ; c556 - dr $c556, $c588 +IF DEF(SILVER) + db "GOLD@" +ENDC -Functionc588: ; c588 - dr $c588, $c591 +SpecialNameRater: ; c413 (3:4413) + callba Functionfb7f7 + ret -Functionc591: ; c591 - dr $c591, $c5a3 +Special_TownMap: ; c41a (3:441a) + call FadeToMenu + callba Function9188a + call ExitAllMenus + ret -Functionc5a3: ; c5a3 - dr $c5a3, $c5ac +Special_UnownPrinter: ; c427 (3:4427) + call FadeToMenu + callba Function16e3a + call ExitAllMenus + ret -CountUnown: ; c5ac - dr $c5ac, $c5bb +Special_DisplayLinkRecord: ; c434 (3:4434) + call FadeToMenu + callba Function3f55d + call ExitAllMenus + ret -Functionc5bb: ; c5bb - dr $c5bb, $c5d6 +Special_PlayerPC: ; c441 (3:4441) + xor a + ld [wScriptVar], a + callba Function159b0 + ld a, c + ld [wScriptVar], a + ret -Functionc5d6: ; c5d6 - dr $c5d6, $c60b +Special_CheckMysteryGift: ; c450 (3:4450) + ld a, $0 + call OpenSRAM + ld a, [$abe2] + and a + jr z, .asm_c45c + inc a +.asm_c45c + ld [wScriptVar], a + call CloseSRAM + ret -Functionc60b: ; c60b - dr $c60b, $c611 +Special_GetMysteryGiftItem: ; c463 (3:4463) + ld a, $0 + call OpenSRAM + ld a, [$abe2] + ld [wd002], a + ld a, $1 + ld [wd009], a + ld hl, wNumItems + call ReceiveItem + jr nc, .asm_c497 + xor a + ld [$abe2], a + call CloseSRAM + ld a, [wd002] + ld [wd151], a + call GetItemName + ld hl, ReceivedMysteryGiftText ; $449f + call PrintText + ld a, $1 + ld [wScriptVar], a + ret -Functionc611: ; c611 - dr $c611, $c628 +.asm_c497 + call CloseSRAM + xor a + ld [wScriptVar], a + ret -Functionc628: ; c628 - dr $c628, $c638 +ReceivedMysteryGiftText: + text_jump ReceivedMysteryGiftText_ + db "@" -Functionc638: ; c638 - dr $c638, $c645 +BugContestJudging: ; c4a4 (3:44a4) + callba Function13a5f + ld a, b + ld [wScriptVar], a + ret -Functionc645: ; c645 - dr $c645, $c652 +MapRadio: ; c4af (3:44af) + ld a, [wScriptVar] + ld e, a + callba Function919c1 + ret -Functionc652: ; c652 - dr $c652, $c661 +Special_UnownPuzzle: ; c4ba (3:44ba) + call FadeToMenu + callba Functione199d + ld a, [wcfe4] + ld [wScriptVar], a + call ExitAllMenus + ret -FlagPredef: ; c661 - dr $c661, $c69d +Special_SlotMachine: ; c4cd (3:44cd) + call Functionc508 + ret c + ld a, BANK(Function92c36) + ld hl, Function92c36 + call Functionc4f4 + ret -HealParty: ; c69d - dr $c69d, $c6de -ENDC +Special_CardFlip: ; c4da (3:44da) + call Functionc508 + ret c + ld a, BANK(Functione0909) + ld hl, Functione0909 + call Functionc4f4 + ret -IF DEF(SILVER) - db "GOLD@" +Special_DummyNonfunctionalGameCornerGame: ; c4e7 (3:44e7) + call Functionc508 + ret c + ld a, BANK(Functione2668) + ld hl, Functione2668 + call Functionc4f4 + ret -SpecialNameRater: ; c411 - dr $c411, $c418 +Functionc4f4: ; c4f4 (3:44f4) + call Function3425 + call FadeToMenu + ld hl, wcfd8 + ld a, [hli] + push af + ld a, [hli] + ld h, [hl] + ld l, a + pop af + rst FarCall + call ExitAllMenus + ret -Special_TownMap: ; c418 - dr $c418, $c425 +Functionc508: ; c508 (3:4508) + ld hl, wCoins + ld a, [hli] + or [hl] + jr z, .asm_c51e + ld a, COIN_CASE + ld [wd002], a + ld hl, wNumItems + call CheckItem + jr nc, .asm_c523 + and a + ret -Special_UnownPrinter: ; c425 - dr $c425, $c432 +.asm_c51e + ld hl, .NoCoinsText + jr .asm_c526 -Special_DisplayLinkRecord: ; c432 - dr $c432, $c43f +.asm_c523 + ld hl, .NoCoinCaseText +.asm_c526 + call PrintText + scf + ret -Special_PlayerPC: ; c43f - dr $c43f, $c44e +.NoCoinsText: + text_jump NoCoinsText_ + db "@" -Special_CheckMysteryGift: ; c44e - dr $c44e, $c461 +.NoCoinCaseText: + text_jump NoCoinCaseText_ + db "@" -Special_GetMysteryGiftItem: ; c461 - dr $c461, $c4a2 +Special_ClearBGPalettesBufferScreen: ; c535 (3:4535) + call ClearBGPalettes + call BufferScreen + ret -BugContestJudging: ; c4a2 - dr $c4a2, $c4ad +Functionc53c: ; c53c (3:453c) + jr c, .asm_c543 + xor a + ld [wScriptVar], a + ret -MapRadio: ; c4ad - dr $c4ad, $c4b8 +.asm_c543 + ld a, $1 + ld [wScriptVar], a + ret -Special_UnownPuzzle: ; c4b8 - dr $c4b8, $c4cb +Special_CheckUnusedTwoDayTimer: ; c549 (3:4549) + callba Function118f8 + ld a, [wd984] + ld [wScriptVar], a + ret -Special_SlotMachine: ; c4cb - dr $c4cb, $c4d8 +Functionc556: ; c556 (3:4556) + ld a, [wScriptVar] + ld [wdd19], a + jr .asm_c566 + +.asm_c55e + ld a, d + ld [wdd17], a + ld a, e + ld [wdd18], a +.asm_c566 + ld hl, wDailyFlags + set 2, [hl] + ret -Special_CardFlip: ; c4d8 - dr $c4d8, $c4e5 +Functionc56c: + ld hl, wDailyFlags + bit 2, [hl] + jr z, .asm_c578 + xor a + ld [wScriptVar], a + ret -Special_DummyNonfunctionalGameCornerGame: ; c4e5 - dr $c4e5, $c533 +.asm_c578 + ld a, $1 + ld [wScriptVar], a + xor a + ld [wdd19], a + ld [wdd17], a + ld [wdd18], a + ret -Special_ClearBGPalettesBufferScreen: ; c533 - dr $c533, $c547 +Functionc588: ; c588 (3:4588) + callba Functionc7a40 + jp Functionc53c -Special_CheckUnusedTwoDayTimer: ; c547 - dr $c547, $c554 +Functionc591: ; c591 (3:4591) + callba Function11917 + ld hl, wLuckyNumberShowFlag + res 0, [hl] + callba LoadOrRegenerateLuckyIDNumber + ret -Functionc556: ; c554 - dr $c554, $c586 +Functionc5a3: ; c5a3 (3:45a3) + callba Function1192e + jp Functionc53c -Functionc588: ; c586 - dr $c586, $c58f +CountUnown: ; c5ac (3:45ac) + ld hl, wUnownDex + ld b, $0 +.asm_c5b1 + ld a, [hli] + and a + ret z + inc b + ld a, b + cp $1a + jr c, .asm_c5b1 + ret -Functionc591: ; c58f - dr $c58f, $c5a1 +Functionc5bb: ; c5bb (3:45bb) + callba Function24b8d + ld a, c + ld [wScriptVar], a + and a + ret z + ld [wd002], a + ld a, $1 + ld [wd009], a + ld hl, wNumItems + call TossItem + ret -Functionc5a3: ; c5a1 - dr $c5a1, $c5aa +Functionc5d6: ; c5d6 (3:45d6) + ld a, [wChannelsEnd] + cp $40 + jr nz, .asm_c5fb + ld a, [wda03] + ld b, a + ld a, [wda02] + ld c, a + ld hl, .ProximityCoords +.asm_c5e8 + ld a, [hli] + cp $ff + jr z, .asm_c5fb + cp b + jr nz, .asm_c5f8 + ld a, [hli] + cp c + jr nz, .asm_c5e8 + ld a, $1 + jr .asm_c5fc -CountUnown: ; c5aa - dr $c5aa, $c5b9 +.asm_c5f8 + inc hl + jr .asm_c5e8 -Functionc5bb: ; c5b9 - dr $c5b9, $c5d4 +.asm_c5fb + xor a +.asm_c5fc + ld [wScriptVar], a + ret -Functionc5d6: ; c5d4 - dr $c5d4, $c609 +.ProximityCoords: + ; x, y + db 33, 8 ; left + db 34, 10 ; below + db 35, 10 ; below + db 36, 8 ; right + db 36, 9 ; right + db -1 + +Functionc60b: ; c60b (3:460b) + ld a, [wCurPartySpecies] + jp PlayCry + +Functionc611: ; c611 (3:4611) + ld a, [hCGB] + and a + jr nz, .asm_c622 + ld a, [hSGB] + and a + jr nz, .asm_c61e + xor a + jr .asm_c624 -Functionc60b: ; c609 - dr $c609, $c60f +.asm_c61e + ld a, $1 + jr .asm_c624 -Functionc611: ; c60f - dr $c60f, $c626 +.asm_c622 + ld a, $2 +.asm_c624 + ld [wScriptVar], a + ret -Functionc628: ; c626 - dr $c626, $c636 +Functionc628: ; c628 (3:4628) + ld a, $0 + ld [wMusicFadeID], a + ld a, $0 + ld [wMusicFadeIDHi], a + ld a, $2 + ld [wMusicFade], a + ret -Functionc638: ; c636 - dr $c636, $c643 +Functionc638: ; c638 (3:4638) + call FadeToMenu + callba Functione0002 + call ExitAllMenus + ret -Functionc645: ; c643 - dr $c643, $c650 +Functionc645: ; c645 (3:4645) + call FadeToMenu + callba Function84684 + call ExitAllMenus + ret -Functionc652: ; c650 - dr $c650, $c65f +Functionc652: ; c652 (3:4652) + ld a, $0 + call OpenSRAM + ld a, [$abfd] + ld [wScriptVar], a + jp CloseSRAM + +FlagPredef: + nop + push hl + push bc + push bc + srl c + srl c + srl c + ld b, $0 + add hl, bc + pop bc + ld a, c + and $7 + ld c, a + ld a, $1 + jr z, .asm_c67a +.asm_c676 + add a + dec c + jr nz, .asm_c676 +.asm_c67a + ld c, a + dec b + jr z, .asm_c687 + dec b + jr z, .asm_c68c + ld a, c + cpl + and [hl] + ld [hl], a + jr .asm_c699 + +.asm_c687 + ld a, [hl] + or c + ld [hl], a + jr .asm_c699 + +.asm_c68c + ld a, d + cp $0 + jr nz, .asm_c695 + ld a, [hl] + and c + jr .asm_c699 + +.asm_c695 + call GetFarByte + and c +.asm_c699 + pop bc + pop hl + ld c, a + ret -FlagPredef: ; c65f - dr $c65f, $c69b +HealParty: ; c69d (3:469d) + xor a + ld [wd005], a + ld hl, wPartySpecies +.asm_c6a4 + ld a, [hli] + cp $ff + jr z, .asm_c6bb + cp $fd + jr z, .asm_c6b2 + push hl + call Functionc6bc + pop hl +.asm_c6b2 + ld a, [wd005] + inc a + ld [wd005], a + jr .asm_c6a4 + +.asm_c6bb + ret -HealParty: ; c69b - dr $c69b, $c6dc -ENDC +Functionc6bc: ; c6bc (3:46bc) + ld a, $0 + call GetPartyParamLocation + ld d, h + ld e, l + ld hl, $20 + add hl, de + xor a + ld [hli], a + ld [hl], a + ld hl, $24 + add hl, de + ld b, h + ld c, l + dec bc + dec bc + ld a, [hli] + ld [bc], a + inc bc + ld a, [hl] + ld [bc], a + callba Functionf900 + ret |