summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/main_menu.asm8
-rwxr-xr-xengine/specials.asm562
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