diff options
Diffstat (limited to 'event')
-rw-r--r-- | event/buena.asm | 24 | ||||
-rw-r--r-- | event/buena_menu.asm | 58 | ||||
-rw-r--r-- | event/bug_contest/caught_mon.asm | 38 | ||||
-rw-r--r-- | event/bug_contest/contest.asm | 43 | ||||
-rwxr-xr-x | event/bug_contest/contest_2.asm (renamed from event/bug_contest_2.asm) | 0 | ||||
-rw-r--r-- | event/bug_contest/display_stats.asm | 107 | ||||
-rwxr-xr-x | event/bug_contest/judging.asm (renamed from event/bug_contest_judging.asm) | 0 | ||||
-rw-r--r-- | event/catch_tutorial.asm | 81 | ||||
-rw-r--r-- | event/catch_tutorial_input.asm | 43 | ||||
-rwxr-xr-x | event/celebi.asm | 11 | ||||
-rwxr-xr-x | event/heal_machine_anim.asm | 265 | ||||
-rw-r--r-- | event/lucky_number.asm | 226 | ||||
-rwxr-xr-x | event/misc_scripts.asm (renamed from event/itemball.asm) | 8 | ||||
-rw-r--r-- | event/misc_scripts_2.asm | 51 | ||||
-rwxr-xr-x | event/mom_phone.asm | 11 | ||||
-rw-r--r-- | event/move_tutor.asm | 103 | ||||
-rw-r--r-- | event/poisonstep_pals.asm | 48 | ||||
-rwxr-xr-x | event/print_photo.asm | 61 | ||||
-rw-r--r--[-rwxr-xr-x] | event/print_unown.asm (renamed from event/photo.asm) | 66 | ||||
-rw-r--r-- | event/print_unown_2.asm | 111 | ||||
-rwxr-xr-x | event/special.asm | 4 | ||||
-rw-r--r-- | event/std_collision.asm | 29 | ||||
-rw-r--r-- | event/unown.asm | 2 |
23 files changed, 1301 insertions, 89 deletions
diff --git a/event/buena.asm b/event/buena.asm index 4802943f9..2cb3b5a63 100644 --- a/event/buena.asm +++ b/event/buena.asm @@ -288,9 +288,15 @@ Buena_PrizeMenu: ; 8b0e2 dba .prizepoints ; 8b129 +NUM_BUENA_PRIZES EQU 9 ; ((BuenaPrizeItemsEnd - BuenaPrizeItems) / 2) + .indices ; 8b129 - db 9 - db 1, 2, 3, 4, 5, 6, 7, 8, 9 + db NUM_BUENA_PRIZES +x = 1 +rept NUM_BUENA_PRIZES + db x +x = x + 1 +endr db -1 ; 8b134 @@ -319,7 +325,7 @@ Buena_PrizeMenu: ; 8b0e2 Buena_getprize: ; 8b154 dec a - ld hl, .prizes + ld hl, BuenaPrizeItems ld b, 0 ld c, a add hl, bc @@ -327,14 +333,4 @@ Buena_getprize: ; 8b154 ret ; 8b15e -.prizes ; 8b15e - db ULTRA_BALL, 2 - db FULL_RESTORE, 2 - db NUGGET, 3 - db RARE_CANDY, 3 - db PROTEIN, 5 - db IRON, 5 - db CARBOS, 5 - db CALCIUM, 5 - db HP_UP, 5 -; 8b170 +INCLUDE "data/items/buena_prizes.asm" diff --git a/event/buena_menu.asm b/event/buena_menu.asm new file mode 100644 index 000000000..b453da783 --- /dev/null +++ b/event/buena_menu.asm @@ -0,0 +1,58 @@ +AskRememberPassword: ; 4ae12 + call .DoMenu + ld a, $0 + jr c, .okay + ld a, $1 + +.okay + ld [ScriptVar], a + ret + +.DoMenu: ; 4ae1f + lb bc, 14, 7 + push bc + ld hl, YesNoMenuDataHeader + call CopyMenuDataHeader + pop bc + ld a, b + ld [wMenuBorderLeftCoord], a + add $5 + ld [wMenuBorderRightCoord], a + ld a, c + ld [wMenuBorderTopCoord], a + add $4 + ld [wMenuBorderBottomCoord], a + call PushWindow + call VerticalMenu + push af + ld c, 15 + call DelayFrames + call Buena_ExitMenu + pop af + jr c, .refused + ld a, [wMenuCursorY] + cp $2 + jr z, .refused + and a + ret + +.refused + ld a, $2 + ld [wMenuCursorY], a + scf + ret + +Buena_ExitMenu: ; 4ae5e + ld a, [hOAMUpdate] + push af + call ExitMenu + call UpdateSprites + xor a + ld [hOAMUpdate], a + call DelayFrame + ld a, $1 + ld [hOAMUpdate], a + call ApplyTilemap + pop af + ld [hOAMUpdate], a + ret diff --git a/event/bug_contest/caught_mon.asm b/event/bug_contest/caught_mon.asm new file mode 100644 index 000000000..729033d8b --- /dev/null +++ b/event/bug_contest/caught_mon.asm @@ -0,0 +1,38 @@ +BugContest_SetCaughtContestMon: ; e6ce + ld a, [wContestMon] + and a + jr z, .firstcatch + ld [wd265], a + callba DisplayAlreadyCaughtText + callba DisplayCaughtContestMonStats + lb bc, 14, 7 + call PlaceYesNoBox + ret c + +.firstcatch + call .generatestats + ld a, [TempEnemyMonSpecies] + ld [wd265], a + call GetPokemonName + ld hl, .caughttext + call PrintText + ret + +.generatestats ; e6fd + ld a, [TempEnemyMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + xor a + ld bc, PARTYMON_STRUCT_LENGTH + ld hl, wContestMon + call ByteFill + xor a + ld [MonType], a + ld hl, wContestMon + jp GeneratePartyMonStats + +.caughttext ; 0xe71d + ; Caught @ ! + text_jump UnknownText_0x1c10c0 + db "@" diff --git a/event/bug_contest/contest.asm b/event/bug_contest/contest.asm new file mode 100644 index 000000000..2cb88ad30 --- /dev/null +++ b/event/bug_contest/contest.asm @@ -0,0 +1,43 @@ +Special_GiveParkBalls: ; 135db + xor a + ld [wContestMon], a + ld a, 20 + ld [wParkBallsRemaining], a + callba StartBugContestTimer + ret + +BugCatchingContestBattleScript:: ; 0x135eb + writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST + randomwildmon + startbattle + reloadmapafterbattle + copybytetovar wParkBallsRemaining + iffalse BugCatchingContestOutOfBallsScript + end + +BugCatchingContestOverScript:: ; 0x135f8 + playsound SFX_ELEVATOR_END + opentext + writetext BugCatchingContestText_BeeepTimesUp + waitbutton + jump BugCatchingContestReturnToGateScript + +BugCatchingContestOutOfBallsScript: ; 0x13603 + playsound SFX_ELEVATOR_END + opentext + writetext BugCatchingContestText_ContestIsOver + waitbutton + +BugCatchingContestReturnToGateScript: ; 0x1360b + closetext + jumpstd bugcontestresultswarp + +BugCatchingContestText_BeeepTimesUp: ; 0x1360f + ; ANNOUNCER: BEEEP! Time's up! + text_jump UnknownText_0x1bd2ca + db "@" + +BugCatchingContestText_ContestIsOver: ; 0x13614 + ; ANNOUNCER: The Contest is over! + text_jump UnknownText_0x1bd2e7 + db "@" diff --git a/event/bug_contest_2.asm b/event/bug_contest/contest_2.asm index 493c69d0c..493c69d0c 100755 --- a/event/bug_contest_2.asm +++ b/event/bug_contest/contest_2.asm diff --git a/event/bug_contest/display_stats.asm b/event/bug_contest/display_stats.asm new file mode 100644 index 000000000..d6ad3997e --- /dev/null +++ b/event/bug_contest/display_stats.asm @@ -0,0 +1,107 @@ +DisplayCaughtContestMonStats: ; cc000 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + call LoadFontsBattleExtra + + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + + hlcoord 0, 0 + ld b, 4 + ld c, 13 + call TextBox + + hlcoord 0, 6 + ld b, 4 + ld c, 13 + call TextBox + + hlcoord 2, 0 + ld de, .Stock + call PlaceString + + hlcoord 2, 6 + ld de, .This + call PlaceString + + hlcoord 5, 4 + ld de, .Health + call PlaceString + + hlcoord 5, 10 + ld de, .Health + call PlaceString + + ld a, [wContestMon] + ld [wd265], a + call GetPokemonName + ld de, StringBuffer1 + hlcoord 1, 2 + call PlaceString + + ld h, b + ld l, c + ld a, [wContestMonLevel] + ld [TempMonLevel], a + call PrintLevel + + ld de, EnemyMonNick + hlcoord 1, 8 + call PlaceString + + ld h, b + ld l, c + ld a, [EnemyMonLevel] + ld [TempMonLevel], a + call PrintLevel + + hlcoord 11, 4 + ld de, wContestMonMaxHP + lb bc, 2, 3 + call PrintNum + + hlcoord 11, 10 + ld de, EnemyMonMaxHP + call PrintNum + + ld hl, SwitchMonText + call PrintText + + pop af + ld [Options], a + + call WaitBGMap + ld b, SCGB_DIPLOMA + call GetSGBLayout + call SetPalettes + ret + +.Health: + db "HEALTH@" +.Stock: + db " STOCK ", $4a, " @" +.This: + db " THIS ", $4a, " @" + +SwitchMonText: ; cc0c2 + ; Switch #MON? + text_jump UnknownText_0x1c10cf + db "@" + +DisplayAlreadyCaughtText: ; cc0c7 + call GetPokemonName + ld hl, .AlreadyCaughtText + jp PrintText + +.AlreadyCaughtText: ; 0xcc0d0 + ; You already caught a @ . + text_jump UnknownText_0x1c10dd + db "@" + +Predef2F: +Predef38: +Predef39: ; cc0d5 + ret diff --git a/event/bug_contest_judging.asm b/event/bug_contest/judging.asm index a7a9eb022..a7a9eb022 100755 --- a/event/bug_contest_judging.asm +++ b/event/bug_contest/judging.asm diff --git a/event/catch_tutorial.asm b/event/catch_tutorial.asm new file mode 100644 index 000000000..8340d8c13 --- /dev/null +++ b/event/catch_tutorial.asm @@ -0,0 +1,81 @@ +CatchTutorial:: ; 4e554 + ld a, [BattleType] + dec a + ld c, a + ld hl, .dw + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.dw ; 4e564 (13:6564) + dw .DudeTutorial + dw .DudeTutorial + dw .DudeTutorial + +.DudeTutorial: ; 4e56a (13:656a) +; Back up your name to your Mom's name. + ld hl, PlayerName + ld de, MomsName + ld bc, NAME_LENGTH + call CopyBytes +; Copy Dude's name to your name + ld hl, .Dude + ld de, PlayerName + ld bc, NAME_LENGTH + call CopyBytes + + call .LoadDudeData + + xor a + ld [hJoyDown], a + ld [hJoyPressed], a + ld a, [Options] + push af + and $f8 + add $3 + ld [Options], a + ld hl, .AutoInput + ld a, BANK(.AutoInput) + call StartAutoInput + callab StartBattle + call StopAutoInput + pop af + + ld [Options], a + ld hl, MomsName + ld de, PlayerName + ld bc, NAME_LENGTH + call CopyBytes + ret + +.LoadDudeData: ; 4e5b7 (13:65b7) + ld hl, wDudeNumItems + ld [hl], 1 + inc hl + ld [hl], POTION + inc hl + ld [hl], 1 + inc hl + ld [hl], -1 + ld hl, wDudeNumKeyItems + ld [hl], 0 + inc hl + ld [hl], -1 + ld hl, wDudeNumBalls + ld a, 1 + ld [hli], a + ld a, POKE_BALL ; 5 + ld [hli], a + ld [hli], a + ld [hl], -1 + ret + +.Dude: ; 4e5da + db "DUDE@" + +.AutoInput: ; 4e5df + db NO_INPUT, $ff ; end diff --git a/event/catch_tutorial_input.asm b/event/catch_tutorial_input.asm new file mode 100644 index 000000000..9d2a03db2 --- /dev/null +++ b/event/catch_tutorial_input.asm @@ -0,0 +1,43 @@ +_DudeAutoInput_A:: ; 1de28a + ld hl, DudeAutoInput_A + jr _DudeAutoInput + +_DudeAutoInput_RightA: ; 1de28f + ld hl, DudeAutoInput_RightA + jr _DudeAutoInput + +_DudeAutoInput_DownA: ; 1de294 + ld hl, DudeAutoInput_DownA + jr _DudeAutoInput + +_DudeAutoInput: ; 1de299 + ld a, BANK(DudeAutoInputs) + call StartAutoInput + ret + +DudeAutoInputs: + +DudeAutoInput_A: ; 1de29f + db NO_INPUT, $50 + db A_BUTTON, $00 + db NO_INPUT, $ff ; end + +DudeAutoInput_RightA: ; 1de2a5 + db NO_INPUT, $08 + db D_RIGHT, $00 + db NO_INPUT, $08 + db A_BUTTON, $00 + db NO_INPUT, $ff ; end + +DudeAutoInput_DownA: ; 1de2af + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db D_DOWN, $00 + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db A_BUTTON, $00 + db NO_INPUT, $ff ; end diff --git a/event/celebi.asm b/event/celebi.asm index c9be9cb39..ab0a333f2 100755 --- a/event/celebi.asm +++ b/event/celebi.asm @@ -124,12 +124,13 @@ CelebiEvent_SpawnLeaf: ; 49944 ; 49962 SpecialCelebiLeafGFX: ; 49962 -INCBIN "gfx/special/celebi/leaf.2bpp" +INCBIN "gfx/overworld/cut_grass.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" +INCBIN "gfx/overworld/celebi/1.2bpp" +INCBIN "gfx/overworld/celebi/2.2bpp" +INCBIN "gfx/overworld/celebi/3.2bpp" +INCBIN "gfx/overworld/celebi/4.2bpp" UpdateCelebiPosition: ; 49aa2 (12:5aa2) diff --git a/event/heal_machine_anim.asm b/event/heal_machine_anim.asm new file mode 100755 index 000000000..4f543c0b3 --- /dev/null +++ b/event/heal_machine_anim.asm @@ -0,0 +1,265 @@ +HealMachineAnim: ; 12324 + ; If you have no Pokemon, don't change the buffer. This can lead to some glitchy effects if you have no Pokemon. + ld a, [PartyCount] + and a + ret z + ; The location of the healing machine relative to the player is stored in ScriptVar. + ; 0: Up and left (Pokemon Center) + ; 1: Left (Elm's Lab) + ; 2: Up (Hall of Fame) + ld a, [ScriptVar] + ld [Buffer1], a + ld a, [rOBP1] + ld [Buffer2], a + call .DoJumptableFunctions + ld a, [Buffer2] + call DmgToCgbObjPal1 + ret +; 1233e + +.DoJumptableFunctions: ; 1233e + xor a + ld [Buffer3], a +.jumpable_loop + ld a, [Buffer1] + ld e, a + ld d, 0 + ld hl, .Pointers + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [Buffer3] + ld e, a + inc a + ld [Buffer3], a + add hl, de + ld a, [hl] + cp 5 + jr z, .finish + ld hl, .Jumptable + rst JumpTable + jr .jumpable_loop + +.finish + ret +; 12365 + +.Pointers: ; 12365 + dw .Pokecenter + dw .ElmLab + dw .HallOfFame +; 1236b + +.Pokecenter: ; 1236b + db 0, 1, 3, 5 +.ElmLab: ; 1236f + db 0, 1, 3, 5 +.HallOfFame: ; 12373 + db 0, 2, 4, 5 +; 12377 + +.Jumptable: ; 12377 + dw .LoadGFX + dw .PC_LoadBallsOntoMachine + dw .HOF_LoadBallsOntoMachine + dw .PlayHealMusic + dw .HOF_PlaySFX + dw .dummy_5 ; never encountered +; 12383 + +.LoadGFX: ; 12383 + call .LoadPalettes + ld de, .HealMachineGFX + ld hl, VTiles0 tile $7c + lb bc, BANK(.HealMachineGFX), $2 + call Request2bpp + ret +; 12393 + +.PC_LoadBallsOntoMachine: ; 12393 + ld hl, Sprites + $80 + ld de, .PC_ElmsLab_OAM + call .PlaceHealingMachineTile + call .PlaceHealingMachineTile + jr .LoadBallsOntoMachine + +.HOF_LoadBallsOntoMachine: ; 123a1 + ld hl, Sprites + $80 + ld de, .HOF_OAM + +.LoadBallsOntoMachine: ; 123a7 + ld a, [PartyCount] + ld b, a +.party_loop + call .PlaceHealingMachineTile + push de + ld de, SFX_SECOND_PART_OF_ITEMFINDER + call PlaySFX + pop de + ld c, 30 + call DelayFrames + dec b + jr nz, .party_loop + ret +; 123bf + +.PlayHealMusic: ; 123bf + ld de, MUSIC_HEAL + call PlayMusic + jp .FlashPalettes8Times +; 123c8 + +.HOF_PlaySFX: ; 123c8 + ld de, SFX_GAME_FREAK_LOGO_GS + call PlaySFX + call .FlashPalettes8Times + call WaitSFX + ld de, SFX_BOOT_PC + call PlaySFX + ret +; 123db + +.dummy_5 ; 123db + ret +; 123dc + +.PC_ElmsLab_OAM: ; 123dc + dsprite 4, 0, 4, 2, $7c, $16 + dsprite 4, 0, 4, 6, $7c, $16 + dsprite 4, 6, 4, 0, $7d, $16 + dsprite 4, 6, 5, 0, $7d, $36 ; xflip + dsprite 5, 3, 4, 0, $7d, $16 + dsprite 5, 3, 5, 0, $7d, $36 ; xflip + dsprite 6, 0, 4, 0, $7d, $16 + dsprite 6, 0, 5, 0, $7d, $36 ; xflip +; 123fc + +.HealMachineGFX: ; 123fc +INCBIN "gfx/overworld/heal_machine.2bpp" +; 1241c + +.HOF_OAM: ; 1241c + dsprite 7, 4, 10, 1, $7d, $16 + dsprite 7, 4, 10, 6, $7d, $16 + dsprite 7, 3, 9, 5, $7d, $16 + dsprite 7, 3, 11, 2, $7d, $16 + dsprite 7, 1, 9, 1, $7d, $16 + dsprite 7, 1, 11, 5, $7d, $16 +; 12434 + +.LoadPalettes: ; 12434 + call IsCGB + jr nz, .cgb + ld a, %11100000 + ld [rOBP1], a + ret + +.cgb + ld hl, .palettes + ld de, OBPals + 8 * 6 + ld bc, 8 + ld a, $5 + call FarCopyWRAM + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 12451 + +.palettes ; 12451 + RGB 31, 31, 31 + RGB 31, 19, 10 + RGB 31, 07, 01 + RGB 00, 00, 00 +; 12459 + +.FlashPalettes8Times: ; 12459 + ld c, $8 +.palette_loop + push bc + call .FlashPalettes + ld c, 10 + call DelayFrames + pop bc + dec c + jr nz, .palette_loop + ret +; 12469 + +.FlashPalettes: ; 12469 + call IsCGB + jr nz, .go + ld a, [rOBP1] + xor %00101000 + ld [rOBP1], a + ret + +.go + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + + ld hl, OBPals + 8 * 6 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push de + ld c, $3 +.palette_loop_2 + ld a, [hli] + ld e, a + ld a, [hld] + ld d, a + dec hl + ld a, d + ld [hld], a + ld a, e + ld [hli], a + inc hl + inc hl + inc hl + dec c + jr nz, .palette_loop_2 + pop de + dec hl + ld a, d + ld [hld], a + ld a, e + ld [hl], a + + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 124a3 + +.PlaceHealingMachineTile: ; 124a3 + push bc + ld a, [Buffer1] + bcpixel 2, 4 + cp $1 ; ElmsLab + jr z, .okay + bcpixel 0, 0 + +.okay + ld a, [de] + add c + inc de + ld [hli], a + ld a, [de] + add b + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + pop bc + ret +; 124c1 diff --git a/event/lucky_number.asm b/event/lucky_number.asm new file mode 100644 index 000000000..8cec7599d --- /dev/null +++ b/event/lucky_number.asm @@ -0,0 +1,226 @@ +Special_CheckForLuckyNumberWinners: ; 4d87a + xor a + ld [ScriptVar], a + ld [wFoundMatchingIDInParty], a + ld a, [PartyCount] + and a + ret z + ld d, a + ld hl, PartyMon1ID + ld bc, PartySpecies +.PartyLoop: + ld a, [bc] + inc bc + cp EGG + call nz, .CompareLuckyNumberToMonID + push bc + ld bc, PARTYMON_STRUCT_LENGTH + add hl, bc + pop bc + dec d + jr nz, .PartyLoop + ld a, BANK(sBox) + call GetSRAMBank + ld a, [sBoxCount] + and a + jr z, .SkipOpenBox + ld d, a + ld hl, sBoxMon1ID + ld bc, sBoxSpecies +.OpenBoxLoop: + ld a, [bc] + inc bc + cp EGG + jr z, .SkipOpenBoxMon + call .CompareLuckyNumberToMonID + jr nc, .SkipOpenBoxMon + ld a, 1 + ld [wFoundMatchingIDInParty], a + +.SkipOpenBoxMon: + push bc + ld bc, BOXMON_STRUCT_LENGTH + add hl, bc + pop bc + dec d + jr nz, .OpenBoxLoop + +.SkipOpenBox: + call CloseSRAM + ld c, $0 +.BoxesLoop: + ld a, [wCurBox] + and $f + cp c + jr z, .SkipBox + ld hl, .BoxBankAddresses + ld b, 0 + add hl, bc + add hl, bc + add hl, bc + ld a, [hli] + call GetSRAMBank + ld a, [hli] + ld h, [hl] + ld l, a ; hl now contains the address of the loaded box in SRAM + ld a, [hl] + and a + jr z, .SkipBox ; no mons in this box + push bc + ld b, h + ld c, l + inc bc + ld de, sBoxMon1ID - sBox + add hl, de + ld d, a +.BoxNLoop: + ld a, [bc] + inc bc + cp EGG + jr z, .SkipBoxMon + + call .CompareLuckyNumberToMonID ; sets ScriptVar and CurPartySpecies appropriately + jr nc, .SkipBoxMon + ld a, 1 + ld [wFoundMatchingIDInParty], a + +.SkipBoxMon: + push bc + ld bc, BOXMON_STRUCT_LENGTH + add hl, bc + pop bc + dec d + jr nz, .BoxNLoop + pop bc + +.SkipBox: + inc c + ld a, c + cp NUM_BOXES + jr c, .BoxesLoop + + call CloseSRAM + ld a, [ScriptVar] + and a + ret z ; found nothing + callba TrainerRankings_LuckyNumberShow + ld a, [wFoundMatchingIDInParty] + and a + push af + ld a, [CurPartySpecies] + ld [wNamedObjectIndexBuffer], a + call GetPokemonName + ld hl, .FoundPartymonText + pop af + jr z, .print + ld hl, .FoundBoxmonText + +.print + jp PrintText + +.CompareLuckyNumberToMonID: ; 4d939 + push bc + push de + push hl + ld d, h + ld e, l + ld hl, Buffer1 + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ld hl, LuckyNumberDigit1Buffer + ld de, wLuckyIDNumber + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ld b, 5 + ld c, 0 + ld hl, LuckyNumberDigit5Buffer + ld de, Buffer5 +.loop + ld a, [de] + cp [hl] + jr nz, .done + dec de + dec hl + inc c + dec b + jr nz, .loop + +.done + pop hl + push hl + ld de, -6 + add hl, de + ld a, [hl] + pop hl + pop de + push af + ld a, c + ld b, 1 + cp 5 + jr z, .okay + ld b, 2 + cp 3 + jr nc, .okay + ld b, 3 + cp 2 + jr nz, .nomatch + +.okay + inc b + ld a, [ScriptVar] + and a + jr z, .bettermatch + cp b + jr c, .nomatch + +.bettermatch + dec b + ld a, b + ld [ScriptVar], a + pop bc + ld a, b + ld [CurPartySpecies], a + pop bc + scf + ret + +.nomatch + pop bc + pop bc + and a + ret + +.BoxBankAddresses: ; 4d99f + dba sBox1 + dba sBox2 + dba sBox3 + dba sBox4 + dba sBox5 + dba sBox6 + dba sBox7 + dba sBox8 + dba sBox9 + dba sBox10 + dba sBox11 + dba sBox12 + dba sBox13 + dba sBox14 + +.FoundPartymonText: ; 0x4d9c9 + ; Congratulations! We have a match with the ID number of @ in your party. + text_jump UnknownText_0x1c1261 + db "@" + +.FoundBoxmonText: ; 0x4d9ce + ; Congratulations! We have a match with the ID number of @ in your PC BOX. + text_jump UnknownText_0x1c12ae + db "@" + +Special_PrintTodaysLuckyNumber: ; 4d9d3 + ld hl, StringBuffer3 + ld de, wLuckyIDNumber + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ld a, "@" + ld [StringBuffer3 + 5], a + ret diff --git a/event/itemball.asm b/event/misc_scripts.asm index ed0c6a9e0..97372a57a 100755 --- a/event/itemball.asm +++ b/event/misc_scripts.asm @@ -1,3 +1,11 @@ +Script_AbortBugContest: ; 0x122c1 + checkflag ENGINE_BUG_CONTEST_TIMER + iffalse .finish + setflag ENGINE_DAILY_BUG_CONTEST + special ContestReturnMons +.finish + end + FindItemInBallScript:: ; 0x122ce callasm .TryReceiveItem iffalse .no_room diff --git a/event/misc_scripts_2.asm b/event/misc_scripts_2.asm new file mode 100644 index 000000000..c4c51d5e6 --- /dev/null +++ b/event/misc_scripts_2.asm @@ -0,0 +1,51 @@ +RepelWoreOffScript:: ; 0x13619 + opentext + writetext .text + waitbutton + closetext + end + +.text ; 0x13620 + ; REPEL's effect wore off. + text_jump UnknownText_0x1bd308 + db "@" + +HiddenItemScript:: ; 0x13625 + opentext + copybytetovar EngineBuffer3 + itemtotext 0, 0 + writetext .found_text + giveitem ITEM_FROM_MEM + iffalse .bag_full + callasm SetMemEvent + specialsound + itemnotify + jump .finish + +.bag_full ; 0x1363e + buttonsound + writetext .no_room_text + waitbutton + +.finish ; 13643 + closetext + end + +.found_text ; 0x13645 + ; found @ ! + text_jump UnknownText_0x1bd321 + db "@" + +.no_room_text ; 0x1364a + ; But has no space left… + text_jump UnknownText_0x1bd331 + db "@" + +SetMemEvent: ; 1364f + ld hl, EngineBuffer1 + ld a, [hli] + ld d, [hl] + ld e, a + ld b, SET_FLAG + call EventFlagAction + ret diff --git a/event/mom_phone.asm b/event/mom_phone.asm index 0d7a2366f..aab4abe4b 100755 --- a/event/mom_phone.asm +++ b/event/mom_phone.asm @@ -1,3 +1,6 @@ +NUM_MOM_ITEMS_1 EQUS "((MomItems_1End - MomItems_1) / 8)" +NUM_MOM_ITEMS_2 EQUS "((MomItems_2End - MomItems_2) / 8)" + const_value = 1 const MOM_ITEM const MOM_DOLL @@ -57,7 +60,7 @@ MomTriesToBuySomething:: ; fcfec CheckBalance_MomItem2: ; fd044 ld a, [wWhichMomItem] - cp 10 + cp NUM_MOM_ITEMS_2 jr nc, .nope call GetItemFromMom ld a, [hli] @@ -100,7 +103,7 @@ CheckBalance_MomItem2: ; fd044 .exact call .AddMoney - ld a, 5 + ld a, NUM_MOM_ITEMS_1 call RandomRange inc a ld [wWhichMomItemSet], a @@ -195,7 +198,7 @@ GetItemFromMom: ; fd117 .zero ld a, [wWhichMomItem] - cp 10 ; length of MomItems_2 + cp NUM_MOM_ITEMS_2 jr c, .ok xor a @@ -212,7 +215,7 @@ endr ret ; fd136 -INCLUDE "data/mom_phone_items.asm" +INCLUDE "data/items/mom_phone.asm" db 0, 0, 0 ; XXX diff --git a/event/move_tutor.asm b/event/move_tutor.asm new file mode 100644 index 000000000..b26114dd0 --- /dev/null +++ b/event/move_tutor.asm @@ -0,0 +1,103 @@ +Special_MoveTutor: ; 4925b + call FadeToMenu + call ClearBGPalettes + call ClearScreen + call DelayFrame + ld b, SCGB_PACKPALS + call GetSGBLayout + xor a + ld [wItemAttributeParamBuffer], a + call .GetMoveTutorMove + ld [wd265], a + ld [wPutativeTMHMMove], a + call GetMoveName + call CopyName1 + callba ChooseMonToLearnTMHM + jr c, .cancel + jr .enter_loop + +.loop + callba ChooseMonToLearnTMHM_NoRefresh + jr c, .cancel +.enter_loop + call CheckCanLearnMoveTutorMove + jr nc, .loop + xor a + ld [ScriptVar], a + jr .quit + +.cancel + ld a, -1 + ld [ScriptVar], a +.quit + call CloseSubmenu + ret + +.GetMoveTutorMove: ; 492a5 + ld a, [ScriptVar] + cp 1 + jr z, .flamethrower + cp 2 + jr z, .thunderbolt + ld a, ICE_BEAM + ret + +.flamethrower + ld a, FLAMETHROWER + ret + +.thunderbolt + ld a, THUNDERBOLT + ret + +CheckCanLearnMoveTutorMove: ; 492b9 + ld hl, .MenuDataHeader + call LoadMenuDataHeader + + predef CanLearnTMHMMove + + push bc + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + pop bc + + ld a, c + and a + jr nz, .can_learn + push de + ld de, SFX_WRONG + call PlaySFX + pop de + ld a, BANK(Text_TMHMNotCompatible) + ld hl, Text_TMHMNotCompatible + call FarPrintText + jr .didnt_learn + +.can_learn + callab KnowsMove + jr c, .didnt_learn + + predef LearnMove + ld a, b + and a + jr z, .didnt_learn + + ld c, HAPPINESS_LEARNMOVE + callab ChangeHappiness + jr .learned + +.didnt_learn + call ExitMenu + and a + ret + +.learned + call ExitMenu + scf + ret + +.MenuDataHeader: ; 0x4930a + db $40 ; flags + db 12, 00 ; start coords + db 17, 19 ; end coords diff --git a/event/poisonstep_pals.asm b/event/poisonstep_pals.asm new file mode 100644 index 000000000..c556ba498 --- /dev/null +++ b/event/poisonstep_pals.asm @@ -0,0 +1,48 @@ +LoadPoisonBGPals: ; cbcdd + call .LoadPals + ld a, [hCGB] + and a + ret nz + ret ; ???? + +.LoadPals: ; cbce5 + ld a, [hCGB] + and a + jr nz, .cgb + ld a, [TimeOfDayPal] + and $3 + cp $3 + ld a, %00000000 + jr z, .convert_pals + ld a, %10101010 + +.convert_pals + call DmgToCgbBGPals + ld c, 4 + call DelayFrames + callba _UpdateTimePals + ret + +.cgb + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld c, $20 +.loop +; RGB 28, 21, 31 + ld a, (palred 28 + palgreen 21 + palblue 31) % $100 + ld [hli], a + ld a, (palred 28 + palgreen 21 + palblue 31) / $100 + ld [hli], a + dec c + jr nz, .loop + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ld c, 4 + call DelayFrames + callba _UpdateTimePals + ret diff --git a/event/print_photo.asm b/event/print_photo.asm new file mode 100755 index 000000000..448910355 --- /dev/null +++ b/event/print_photo.asm @@ -0,0 +1,61 @@ +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 ReturnToMapWithSpeechTextbox + 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/photo.asm b/event/print_unown.asm index fea57a368..5e0162bad 100755..100644 --- a/event/photo.asm +++ b/event/print_unown.asm @@ -214,9 +214,9 @@ UnownDexVacantString: ; 16d9c UnownDexATile: ; 16d9c -INCBIN "gfx/unknown/bold_a.1bpp" +INCBIN "gfx/printer/bold_a.1bpp" UnownDexBTile: ; 16da4 -INCBIN "gfx/unknown/bold_b.1bpp" +INCBIN "gfx/printer/bold_b.1bpp" ; 16dac PlaceUnownPrinterFrontpic: ; 16dac @@ -231,65 +231,3 @@ PlaceUnownPrinterFrontpic: ; 16dac predef PlaceGraphic 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 ReturnToMapWithSpeechTextbox - 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/print_unown_2.asm b/event/print_unown_2.asm new file mode 100644 index 000000000..057db5176 --- /dev/null +++ b/event/print_unown_2.asm @@ -0,0 +1,111 @@ +RotateUnownFrontpic: ; e0000 +; something to do with Unown printer + push de + xor a + call GetSRAMBank + ld hl, sScratch + ld bc, 0 +.loop + push bc + push hl + push bc + ld de, wd002 + call .Copy + call .Rotate + ld hl, UnownPrinter_OverworldMapRectangle + pop bc + add hl, bc + add hl, bc + ld a, [hli] + ld e, a + ld d, [hl] + ld hl, wd012 + call .Copy + pop hl + ld bc, $10 + add hl, bc + pop bc + inc c + ld a, c + cp 7 * 7 + jr c, .loop + + ld hl, OverworldMap + ld de, sScratch + ld bc, 7 * 7 tiles + call CopyBytes + pop hl + ld de, sScratch + ld c, 7 * 7 + ld a, [hROMBank] + ld b, a + call Get2bpp + call CloseSRAM + ret + +.Copy: ; e004e + ld c, $10 +.loop_copy + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .loop_copy + ret + +.Rotate: ; e0057 + ld hl, wd012 + ld e, %10000000 + ld d, 8 +.loop_decompress + push hl + ld hl, wd002 + call .CountSetBit + pop hl + ld a, b + ld [hli], a + push hl + ld hl, wd003 + call .CountSetBit + pop hl + ld a, b + ld [hli], a + srl e + dec d + jr nz, .loop_decompress + ret + +.CountSetBit: ; e0078 + ld b, 0 + ld c, 8 +.loop_count + ld a, [hli] + and e + jr z, .clear + scf + jr .apply + +.clear + and a + +.apply + rr b + inc hl + dec c + jr nz, .loop_count + ret + +overworldmaprect: MACRO +y = 0 +rept \1 +x = \1 * (\2 +- 1) + y +rept \2 + dw OverworldMap tile x +x = x +- \2 +endr +y = y + 1 +endr +endm + +UnownPrinter_OverworldMapRectangle: ; e008b + overworldmaprect 7, 7 diff --git a/event/special.asm b/event/special.asm index f1228abc6..71323499e 100755 --- a/event/special.asm +++ b/event/special.asm @@ -229,3 +229,7 @@ CopyPokemonName_Buffer1_Buffer3: ; 746e ld de, StringBuffer3 ld bc, PKMN_NAME_LENGTH jp CopyBytes + +Predef1: ; 747a +; not used + ret diff --git a/event/std_collision.asm b/event/std_collision.asm new file mode 100644 index 000000000..17b1e49b2 --- /dev/null +++ b/event/std_collision.asm @@ -0,0 +1,29 @@ +CheckFacingTileForStd:: ; 1365b +; Checks to see if the tile you're facing has a std script associated with it. If so, executes the script and returns carry. + ld a, c + ld de, 3 + ld hl, TileCollisionStdScripts + call IsInArray + jr nc, .notintable + + ld a, jumpstd_command + ld [wJumpStdScriptBuffer], a + inc hl + ld a, [hli] + ld [wJumpStdScriptBuffer + 1], a + ld a, [hli] + ld [wJumpStdScriptBuffer + 2], a + ld a, BANK(Script_JumpStdFromRAM) + ld hl, Script_JumpStdFromRAM + call CallScript + scf + ret + +.notintable + xor a + ret + +INCLUDE "data/collision_stdscripts.asm" + +Script_JumpStdFromRAM: ; 0x1369a + jump wJumpStdScriptBuffer diff --git a/event/unown.asm b/event/unown.asm index efd4c74f5..1be858bd6 100644 --- a/event/unown.asm +++ b/event/unown.asm @@ -1,5 +1,3 @@ - - SpecialHoOhChamber: ; 0x8addb ld hl, PartySpecies ld a, [hl] |