diff options
author | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:07:16 +0100 |
---|---|---|
committer | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:21:40 +0100 |
commit | baa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch) | |
tree | 968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/radio.asm | |
parent | 12070ca50067d3abe36a730190f88ee43f2cace9 (diff) |
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by
creating categorized subdirectories, in order to make it easier to
navigate and find things.
The directories created are as follows:
* engine/game: Contains all "minigames", things like the unown puzzle
and slot machine.
* engine/gfx: Contains all handling of graphics. From loading palettes
to playing animations.
* engine/link: Contains all multiplayer functionality.
* engine/menu: Contains all generic/misc. menus and menu code.
Other, more specialized menus are in their own subdirectories (pokedex,
pokegear, party menu, etc).
* engine/overworld: Contains all handling of the overworld. From loading
and connecting maps to wild encounters and the scripting engine.
* engine/pokegear: In the same vein as engine/pokedex, except it could
use some more splitting up.
* engine/pokemon: Contains everything related to manipulating pokemon
data. From the pokemon storage system to evolution and mail.
* engine/printer: Contains everything related to printing things as well
as the printer communication.
* engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/radio.asm')
-rw-r--r-- | engine/radio.asm | 1932 |
1 files changed, 0 insertions, 1932 deletions
diff --git a/engine/radio.asm b/engine/radio.asm deleted file mode 100644 index ffaef80f0..000000000 --- a/engine/radio.asm +++ /dev/null @@ -1,1932 +0,0 @@ -PlayRadioShow: -; If we're already in the radio program proper, we don't need to be here. - ld a, [wCurrentRadioLine] - cp POKE_FLUTE_RADIO - jr nc, .ok -; If Team Rocket is not occupying the radio tower, we don't need to be here. - ld a, [wStatusFlags2] - bit STATUSFLAGS2_ROCKETS_IN_RADIO_TOWER_F, a - jr z, .ok -; If we're in Kanto, we don't need to be here. - call IsInJohto - and a - jr nz, .ok -; Team Rocket broadcasts on all stations. - ld a, ROCKET_RADIO - ld [wCurrentRadioLine], a -.ok -; Jump to the currently loaded station. The index to which we need to jump is in wCurrentRadioLine. - ld a, [wCurrentRadioLine] - ld e, a - ld d, 0 - ld hl, RadioJumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -RadioJumptable: -; entries correspond to constants/radio_constants.asm - dw OaksPKMNTalk1 ; $00 - dw PokedexShow1 ; $01 - dw BenMonMusic1 ; $02 - dw LuckyNumberShow1 ; $03 - dw BuenasPassword1 ; $04 - dw PeoplePlaces1 ; $05 - dw FernMonMusic1 ; $06 - dw RocketRadio1 ; $07 - dw PokeFluteRadio ; $08 - dw UnownRadio ; $09 - dw EvolutionRadio ; $0a -; OaksPKMNTalk - dw OaksPKMNTalk2 ; $0b - dw OaksPKMNTalk3 ; $0c - dw OaksPKMNTalk4 ; $0d - dw OaksPKMNTalk5 ; $0e - dw OaksPKMNTalk6 ; $0f - dw OaksPKMNTalk7 ; $10 - dw OaksPKMNTalk8 ; $11 - dw OaksPKMNTalk9 ; $12 - dw PokedexShow2 ; $13 - dw PokedexShow3 ; $14 - dw PokedexShow4 ; $15 - dw PokedexShow5 ; $16 -; Ben Music - dw BenMonMusic2 ; $17 - dw BenMonMusic3 ; $18 - dw BenFernMusic4 ; $19 - dw BenFernMusic5 ; $1a - dw BenFernMusic6 ; $1b - dw BenFernMusic7 ; $1c - dw FernMonMusic2 ; $1d -; Lucky Number Show - dw LuckyNumberShow2 ; $1e - dw LuckyNumberShow3 ; $1f - dw LuckyNumberShow4 ; $20 - dw LuckyNumberShow5 ; $21 - dw LuckyNumberShow6 ; $22 - dw LuckyNumberShow7 ; $23 - dw LuckyNumberShow8 ; $24 - dw LuckyNumberShow9 ; $25 - dw LuckyNumberShow10 ; $26 - dw LuckyNumberShow11 ; $27 - dw LuckyNumberShow12 ; $28 - dw LuckyNumberShow13 ; $29 - dw LuckyNumberShow14 ; $2a - dw LuckyNumberShow15 ; $2b -; People & Places - dw PeoplePlaces2 ; $2c - dw PeoplePlaces3 ; $2d - dw PeoplePlaces4 ; $2e - dw PeoplePlaces5 ; $2f - dw PeoplePlaces6 ; $30 - dw PeoplePlaces7 ; $31 -; Rocket Radio - dw RocketRadio2 ; $32 - dw RocketRadio3 ; $33 - dw RocketRadio4 ; $34 - dw RocketRadio5 ; $35 - dw RocketRadio6 ; $36 - dw RocketRadio7 ; $37 - dw RocketRadio8 ; $38 - dw RocketRadio9 ; $39 - dw RocketRadio10 ; $3a -; More Pokemon Channel stuff - dw OaksPKMNTalk10 ; $3b - dw OaksPKMNTalk11 ; $3c - dw OaksPKMNTalk12 ; $3d - dw OaksPKMNTalk13 ; $3e - dw OaksPKMNTalk14 ; $3f -; Buenas Password - dw BuenasPassword2 ; $40 - dw BuenasPassword3 ; $41 - dw BuenasPassword4 ; $42 - dw BuenasPassword5 ; $43 - dw BuenasPassword6 ; $44 - dw BuenasPassword7 ; $45 - dw BuenasPassword8 ; $46 - dw BuenasPassword9 ; $47 - dw BuenasPassword10 ; $48 - dw BuenasPassword11 ; $49 - dw BuenasPassword12 ; $4a - dw BuenasPassword13 ; $4b - dw BuenasPassword14 ; $4c - dw BuenasPassword15 ; $4d - dw BuenasPassword16 ; $4e - dw BuenasPassword17 ; $4f - dw BuenasPassword18 ; $50 - dw BuenasPassword19 ; $51 - dw BuenasPassword20 ; $52 - dw BuenasPassword21 ; $53 - dw RadioScroll ; $54 -; More Pokemon Channel stuff - dw PokedexShow6 ; $55 - dw PokedexShow7 ; $56 - dw PokedexShow8 ; $57 - - -PrintRadioLine: - ld [wNextRadioLine], a - ld hl, wRadioText - ld a, [wNumRadioLinesPrinted] - cp 2 - jr nc, .print - inc hl - ld [hl], TX_START - inc a - ld [wNumRadioLinesPrinted], a - cp 2 - jr nz, .print - bccoord 1, 16 - call PlaceHLTextAtBC - jr .skip -.print - call PrintTextBoxText -.skip - ld a, RADIO_SCROLL - ld [wCurrentRadioLine], a - ld a, 100 - ld [wRadioTextDelay], a - ret - -ReplacePeriodsWithSpaces: - push hl - ld b, SCREEN_WIDTH * 2 -.loop - ld a, [hl] - cp "." - jr nz, .next - ld [hl], " " - -.next - inc hl - dec b - jr nz, .loop - pop hl - ret - -RadioScroll: - ld hl, wRadioTextDelay - ld a, [hl] - and a - jr z, .proceed - dec [hl] - ret -.proceed - ld a, [wNextRadioLine] - ld [wCurrentRadioLine], a - ld a, [wNumRadioLinesPrinted] - cp 1 - call nz, CopyBottomLineToTopLine - jp ClearBottomLine - -OaksPKMNTalk1: - ld a, 5 - ld [wOaksPKMNTalkSegmentCounter], a - call StartRadioStation - ld hl, OPT_IntroText1 - ld a, OAKS_POKEMON_TALK_2 - jp NextRadioLine - -OaksPKMNTalk2: - ld hl, OPT_IntroText2 - ld a, OAKS_POKEMON_TALK_3 - jp NextRadioLine - -OaksPKMNTalk3: - ld hl, OPT_IntroText3 - ld a, OAKS_POKEMON_TALK_4 - jp NextRadioLine - -OaksPKMNTalk4: -; Choose a random route, and a random Pokemon from that route. -.sample - call Random - and %11111 - cp (OaksPKMNTalkRoutes.End - OaksPKMNTalkRoutes) / 2 - jr nc, .sample - ; We now have a number between 0 and 14. - ld hl, OaksPKMNTalkRoutes - ld c, a - ld b, 0 - add hl, bc - add hl, bc - ld b, [hl] - inc hl - ld c, [hl] - ; bc now contains the chosen map's group and number indices. - push bc - - ; Search the JohtoGrassWildMons array for the chosen map. - ld hl, JohtoGrassWildMons -.loop - ld a, BANK(JohtoGrassWildMons) - call GetFarByte - cp -1 - jr z, .overflow - inc hl - cp b - jr nz, .next - ld a, BANK(JohtoGrassWildMons) - call GetFarByte - cp c - jr z, .done -.next - dec hl - ld de, GRASS_WILDDATA_LENGTH - add hl, de - jr .loop - -.done - ; Point hl to the list of morning Pokémon., skipping percentages -rept 4 - inc hl -endr - ; Generate a number, either 0, 1, or 2, to choose a time of day. -.loop2 - call Random - maskbits NUM_DAYTIMES - cp DARKNESS_F - jr z, .loop2 - - ld bc, 2 * NUM_GRASSMON - call AddNTimes -.loop3 - ; Choose one of the middle three Pokemon. - call Random - and NUM_GRASSMON - cp 2 - jr c, .loop3 - cp 5 - jr nc, .loop3 - ld e, a - ld d, 0 - add hl, de - add hl, de - inc hl ; skip level - ld a, BANK(JohtoGrassWildMons) - call GetFarByte - ld [wNamedObjectIndexBuffer], a - ld [wCurPartySpecies], a - call GetPokemonName - ld hl, wStringBuffer1 - ld de, wMonOrItemNameBuffer - ld bc, MON_NAME_LENGTH - call CopyBytes - - ; Now that we've chosen our wild Pokemon, - ; let's recover the map index info and get its name. - pop bc - call GetWorldMapLocation - ld e, a - farcall GetLandmarkName - ld hl, OPT_OakText1 - call CopyRadioTextToRAM - ld a, OAKS_POKEMON_TALK_5 - jp PrintRadioLine - -.overflow - pop bc - ld a, OAKS_POKEMON_TALK - jp PrintRadioLine - -INCLUDE "data/radio/oaks_pkmn_talk_routes.asm" - -OaksPKMNTalk5: - ld hl, OPT_OakText2 - ld a, OAKS_POKEMON_TALK_6 - jp NextRadioLine - -OaksPKMNTalk6: - ld hl, OPT_OakText3 - ld a, OAKS_POKEMON_TALK_7 - jp NextRadioLine - -OPT_IntroText1: - ; MARY: PROF.OAK'S - text_jump _OPT_IntroText1 - db "@" - -OPT_IntroText2: - ; #MON TALK! - text_jump _OPT_IntroText2 - db "@" - -OPT_IntroText3: - ; With me, MARY! - text_jump _OPT_IntroText3 - db "@" - -OPT_OakText1: - ; OAK: @ @ - text_jump _OPT_OakText1 - db "@" - -OPT_OakText2: - ; may be seen around - text_jump _OPT_OakText2 - db "@" - -OPT_OakText3: - ; @ . - text_jump _OPT_OakText3 - db "@" - -OaksPKMNTalk7: - ld a, [wCurPartySpecies] - ld [wNamedObjectIndexBuffer], a - call GetPokemonName - ld hl, OPT_MaryText1 - ld a, OAKS_POKEMON_TALK_8 - jp NextRadioLine - -OPT_MaryText1: - ; MARY: @ 's - text_jump _OPT_MaryText1 - db "@" - -OaksPKMNTalk8: - ; 0-15 are all valid indexes into .Adverbs, - ; so no need for a retry loop - call Random - maskbits NUM_OAKS_POKEMON_TALK_ADVERBS - ld e, a - ld d, 0 - ld hl, .Adverbs - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, OAKS_POKEMON_TALK_9 - jp NextRadioLine - -.Adverbs: -; there are NUM_OAKS_POKEMON_TALK_ADVERBS entries - dw .sweetadorably - dw .wigglyslickly - dw .aptlynamed - dw .undeniablykindof - dw .unbearably - dw .wowimpressively - dw .almostpoisonously - dw .sensually - dw .mischievously - dw .topically - dw .addictively - dw .looksinwater - dw .evolutionmustbe - dw .provocatively - dw .flippedout - dw .heartmeltingly - -.sweetadorably - ; sweet and adorably - text_jump OPT_SweetAdorably - db "@" - -.wigglyslickly - ; wiggly and slickly - text_jump OPT_WigglySlickly - db "@" - -.aptlynamed - ; aptly named and - text_jump OPT_AptlyNamed - db "@" - -.undeniablykindof - ; undeniably kind of - text_jump OPT_UndeniablyKindOf - db "@" - -.unbearably - ; so, so unbearably - text_jump OPT_Unbearably - db "@" - -.wowimpressively - ; wow, impressively - text_jump OPT_WowImpressively - db "@" - -.almostpoisonously - ; almost poisonously - text_jump OPT_AlmostPoisonously - db "@" - -.sensually - ; ooh, so sensually - text_jump OPT_Sensually - db "@" - -.mischievously - ; so mischievously - text_jump OPT_Mischievously - db "@" - -.topically - ; so very topically - text_jump OPT_Topically - db "@" - -.addictively - ; sure addictively - text_jump OPT_Addictively - db "@" - -.looksinwater - ; looks in water is - text_jump OPT_LooksInWater - db "@" - -.evolutionmustbe - ; evolution must be - text_jump OPT_EvolutionMustBe - db "@" - -.provocatively - ; provocatively - text_jump OPT_Provocatively - db "@" - -.flippedout - ; so flipped out and - text_jump OPT_FlippedOut - db "@" - -.heartmeltingly - ; heart-meltingly - text_jump OPT_HeartMeltingly - db "@" - -OaksPKMNTalk9: - ; 0-15 are all valid indexes into .Adjectives, - ; so no need for a retry loop - call Random - maskbits NUM_OAKS_POKEMON_TALK_ADJECTIVES - ld e, a - ld d, 0 - ld hl, .Adjectives - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wOaksPKMNTalkSegmentCounter] - dec a - ld [wOaksPKMNTalkSegmentCounter], a - ld a, OAKS_POKEMON_TALK_4 - jr nz, .ok - ld a, 5 - ld [wOaksPKMNTalkSegmentCounter], a - ld a, OAKS_POKEMON_TALK_10 -.ok - jp NextRadioLine - -.Adjectives: -; there are NUM_OAKS_POKEMON_TALK_ADJECTIVES entries - dw .cute - dw .weird - dw .pleasant - dw .boldsortof - dw .frightening - dw .suavedebonair - dw .powerful - dw .exciting - dw .groovy - dw .inspiring - dw .friendly - dw .hothothot - dw .stimulating - dw .guarded - dw .lovely - dw .speedy - -.cute - ; cute. - text_jump OPT_Cute - db "@" - -.weird - ; weird. - text_jump OPT_Weird - db "@" - -.pleasant - ; pleasant. - text_jump OPT_Pleasant - db "@" - -.boldsortof - ; bold, sort of. - text_jump OPT_BoldSortOf - db "@" - -.frightening - ; frightening. - text_jump OPT_Frightening - db "@" - -.suavedebonair - ; suave & debonair! - text_jump OPT_SuaveDebonair - db "@" - -.powerful - ; powerful. - text_jump OPT_Powerful - db "@" - -.exciting - ; exciting. - text_jump OPT_Exciting - db "@" - -.groovy - ; groovy! - text_jump OPT_Groovy - db "@" - -.inspiring - ; inspiring. - text_jump OPT_Inspiring - db "@" - -.friendly - ; friendly. - text_jump OPT_Friendly - db "@" - -.hothothot - ; hot, hot, hot! - text_jump OPT_HotHotHot - db "@" - -.stimulating - ; stimulating. - text_jump OPT_Stimulating - db "@" - -.guarded - ; guarded. - text_jump OPT_Guarded - db "@" - -.lovely - ; lovely. - text_jump OPT_Lovely - db "@" - -.speedy - ; speedy. - text_jump OPT_Speedy - db "@" - -OaksPKMNTalk10: - farcall RadioMusicRestartPokemonChannel - ld hl, OPT_RestartText - call PrintText - call WaitBGMap - ld hl, OPT_PokemonChannelText - call PrintText - ld a, OAKS_POKEMON_TALK_11 - ld [wCurrentRadioLine], a - ld a, 100 - ld [wRadioTextDelay], a - ret - -OPT_PokemonChannelText: - ; #MON - text_jump _OPT_PokemonChannelText - db "@" - -OPT_RestartText: - db "@" - -OaksPKMNTalk11: - ld hl, wRadioTextDelay - dec [hl] - ret nz - hlcoord 9, 14 - ld de, .pokemon_string - ld a, OAKS_POKEMON_TALK_12 - jp PlaceRadioString - -.pokemon_string - db "#MON@" - -OaksPKMNTalk12: - ld hl, wRadioTextDelay - dec [hl] - ret nz - hlcoord 1, 16 - ld de, .pokemon_channel_string - ld a, OAKS_POKEMON_TALK_13 - jp PlaceRadioString - -.pokemon_channel_string - db "#MON Channel@" - -OaksPKMNTalk13: - ld hl, wRadioTextDelay - dec [hl] - ret nz - hlcoord 12, 16 - ld de, .terminator - ld a, OAKS_POKEMON_TALK_14 - jp PlaceRadioString - -.terminator - db "@" - -OaksPKMNTalk14: - ld hl, wRadioTextDelay - dec [hl] - ret nz - ld de, MUSIC_POKEMON_TALK - callfar RadioMusicRestartDE - ld hl, .terminator - call PrintText - ld a, OAKS_POKEMON_TALK_4 - ld [wNextRadioLine], a - xor a - ld [wNumRadioLinesPrinted], a - ld a, RADIO_SCROLL - ld [wCurrentRadioLine], a - ld a, 10 - ld [wRadioTextDelay], a - ret - -.terminator - db "@" - -PlaceRadioString: - ld [wCurrentRadioLine], a - ld a, 100 - ld [wRadioTextDelay], a - jp PlaceString - -CopyBottomLineToTopLine: - hlcoord 0, 15 - decoord 0, 13 - ld bc, SCREEN_WIDTH * 2 - jp CopyBytes - -ClearBottomLine: - hlcoord 1, 15 - ld bc, SCREEN_WIDTH - 2 - ld a, " " - call ByteFill - hlcoord 1, 16 - ld bc, SCREEN_WIDTH - 2 - ld a, " " - jp ByteFill - -PokedexShow_GetDexEntryBank: - push hl - push de - ld a, [wCurPartySpecies] - dec a - rlca - rlca - maskbits NUM_DEX_ENTRY_BANKS - ld hl, .PokedexEntryBanks - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - pop de - pop hl - ret - -.PokedexEntryBanks: - db BANK(PokedexEntries1) - db BANK(PokedexEntries2) - db BANK(PokedexEntries3) - db BANK(PokedexEntries4) - -PokedexShow1: - call StartRadioStation -.loop - call Random - cp NUM_POKEMON - jr nc, .loop - ld c, a - push bc - ld a, c - call CheckCaughtMon - pop bc - jr z, .loop - inc c - ld a, c - ld [wCurPartySpecies], a - ld [wNamedObjectIndexBuffer], a - call GetPokemonName - ld hl, PokedexShowText - ld a, POKEDEX_SHOW_2 - jp NextRadioLine - -PokedexShow2: - ld a, [wCurPartySpecies] - dec a - ld hl, PokedexDataPointerTable - ld c, a - ld b, 0 - add hl, bc - add hl, bc - ld a, BANK(PokedexDataPointerTable) - call GetFarHalfword - call PokedexShow_GetDexEntryBank - push af - push hl - call CopyDexEntryPart1 - dec hl - ld [hl], "<DONE>" - ld hl, wPokedexShowPointerAddr - call CopyRadioTextToRAM - pop hl - pop af - call CopyDexEntryPart2 -rept 4 - inc hl -endr - ld a, l - ld [wPokedexShowPointerAddr], a - ld a, h - ld [wPokedexShowPointerAddr + 1], a - ld a, POKEDEX_SHOW_3 - jp PrintRadioLine - -PokedexShow3: - call CopyDexEntry - ld a, POKEDEX_SHOW_4 - jp PrintRadioLine - -PokedexShow4: - call CopyDexEntry - ld a, POKEDEX_SHOW_5 - jp PrintRadioLine - -PokedexShow5: - call CopyDexEntry - ld a, POKEDEX_SHOW_6 - jp PrintRadioLine - -PokedexShow6: - call CopyDexEntry - ld a, POKEDEX_SHOW_7 - jp PrintRadioLine - -PokedexShow7: - call CopyDexEntry - ld a, POKEDEX_SHOW_8 - jp PrintRadioLine - -PokedexShow8: - call CopyDexEntry - ld a, POKEDEX_SHOW - jp PrintRadioLine - -CopyDexEntry: - ld a, [wPokedexShowPointerAddr] - ld l, a - ld a, [wPokedexShowPointerAddr + 1] - ld h, a - ld a, [wPokedexShowPointerBank] - push af - push hl - call CopyDexEntryPart1 - dec hl - ld [hl], "<DONE>" - ld hl, wPokedexShowPointerAddr - call CopyRadioTextToRAM - pop hl - pop af - call CopyDexEntryPart2 - ret - -CopyDexEntryPart1: - ld de, wPokedexShowPointerBank - ld bc, SCREEN_WIDTH - 1 - call FarCopyBytes - ld hl, wPokedexShowPointerAddr - ld [hl], TX_START - inc hl - ld [hl], "<LINE>" - inc hl -.loop - ld a, [hli] - cp "@" - ret z - cp "<NEXT>" - ret z - cp "<DEXEND>" - ret z - jr .loop - -CopyDexEntryPart2: - ld d, a -.loop - ld a, d - call GetFarByte - inc hl - cp "@" - jr z, .okay - cp "<NEXT>" - jr z, .okay - cp "<DEXEND>" - jr nz, .loop -.okay - ld a, l - ld [wPokedexShowPointerAddr], a - ld a, h - ld [wPokedexShowPointerAddr + 1], a - ld a, d - ld [wPokedexShowPointerBank], a - ret - -PokedexShowText: - ; @ @ - text_jump _PokedexShowText - db "@" - -BenMonMusic1: - call StartPokemonMusicChannel - ld hl, BenIntroText1 - ld a, POKEMON_MUSIC_2 - jp NextRadioLine - -BenMonMusic2: - ld hl, BenIntroText2 - ld a, POKEMON_MUSIC_3 - jp NextRadioLine - -BenMonMusic3: - ld hl, BenIntroText3 - ld a, POKEMON_MUSIC_4 - jp NextRadioLine - -FernMonMusic1: - call StartPokemonMusicChannel - ld hl, FernIntroText1 - ld a, LETS_ALL_SING_2 - jp NextRadioLine - -FernMonMusic2: - ld hl, FernIntroMusic2 - ld a, POKEMON_MUSIC_4 - jp NextRadioLine - -BenFernMusic4: - ld hl, BenFernText1 - ld a, POKEMON_MUSIC_5 - jp NextRadioLine - -BenFernMusic5: - call GetWeekday - and 1 - ld hl, BenFernText2A - jr z, .SunTueThurSun - ld hl, BenFernText2B -.SunTueThurSun: - ld a, POKEMON_MUSIC_6 - jp NextRadioLine - -BenFernMusic6: - call GetWeekday - and 1 - ld hl, BenFernText3A - jr z, .SunTueThurSun - ld hl, BenFernText3B -.SunTueThurSun: - ld a, POKEMON_MUSIC_7 - jp NextRadioLine - -BenFernMusic7: - ret - -StartPokemonMusicChannel: - call RadioTerminator - call PrintText - ld de, MUSIC_POKEMON_MARCH - call GetWeekday - and 1 - jr z, .SunTueThurSun - ld de, MUSIC_POKEMON_LULLABY -.SunTueThurSun: - callfar RadioMusicRestartDE - ret - -BenIntroText1: - ; BEN: #MON MUSIC - text_jump _BenIntroText1 - db "@" - -BenIntroText2: - ; CHANNEL! - text_jump _BenIntroText2 - db "@" - -BenIntroText3: - ; It's me, DJ BEN! - text_jump _BenIntroText3 - db "@" - -FernIntroText1: - ; FERN: #MUSIC! - text_jump _FernIntroText1 - db "@" - -FernIntroMusic2: - ; With DJ FERN! - text_jump _FernIntroText2 - db "@" - -BenFernText1: - ; Today's @ , - text_jump _BenFernText1 - db "@" - -BenFernText2A: - ; so let us jam to - text_jump _BenFernText2A - db "@" - -BenFernText2B: - ; so chill out to - text_jump _BenFernText2B - db "@" - -BenFernText3A: - ; #MON March! - text_jump _BenFernText3A - db "@" - -BenFernText3B: - ; #MON Lullaby! - text_jump _BenFernText3B - db "@" - -LuckyNumberShow1: - call StartRadioStation - callfar CheckLuckyNumberShowFlag - jr nc, .dontreset - callfar ResetLuckyNumberShowFlag -.dontreset - ld hl, LC_Text1 - ld a, LUCKY_NUMBER_SHOW_2 - jp NextRadioLine - -LuckyNumberShow2: - ld hl, LC_Text2 - ld a, LUCKY_NUMBER_SHOW_3 - jp NextRadioLine - -LuckyNumberShow3: - ld hl, LC_Text3 - ld a, LUCKY_NUMBER_SHOW_4 - jp NextRadioLine - -LuckyNumberShow4: - ld hl, LC_Text4 - ld a, LUCKY_NUMBER_SHOW_5 - jp NextRadioLine - -LuckyNumberShow5: - ld hl, LC_Text5 - ld a, LUCKY_NUMBER_SHOW_6 - jp NextRadioLine - -LuckyNumberShow6: - ld hl, LC_Text6 - ld a, LUCKY_NUMBER_SHOW_7 - jp NextRadioLine - -LuckyNumberShow7: - ld hl, LC_Text7 - ld a, LUCKY_NUMBER_SHOW_8 - jp NextRadioLine - -LuckyNumberShow8: - ld hl, wStringBuffer1 - ld de, wLuckyIDNumber - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - ld a, "@" - ld [wStringBuffer1 + 5], a - ld hl, LC_Text8 - ld a, LUCKY_NUMBER_SHOW_9 - jp NextRadioLine - -LuckyNumberShow9: - ld hl, LC_Text9 - ld a, LUCKY_NUMBER_SHOW_10 - jp NextRadioLine - -LuckyNumberShow10: - ld hl, LC_Text7 - ld a, LUCKY_NUMBER_SHOW_11 - jp NextRadioLine - -LuckyNumberShow11: - ld hl, LC_Text8 - ld a, LUCKY_NUMBER_SHOW_12 - jp NextRadioLine - -LuckyNumberShow12: - ld hl, LC_Text10 - ld a, LUCKY_NUMBER_SHOW_13 - jp NextRadioLine - -LuckyNumberShow13: - ld hl, LC_Text11 - call Random - and a - ld a, LUCKY_CHANNEL - jr nz, .okay - ld a, LUCKY_NUMBER_SHOW_14 -.okay - jp NextRadioLine - -LuckyNumberShow14: - ld hl, LC_DragText1 - ld a, LUCKY_NUMBER_SHOW_15 - jp NextRadioLine - -LuckyNumberShow15: - ld hl, LC_DragText2 - ld a, LUCKY_CHANNEL - jp NextRadioLine - -LC_Text1: - ; REED: Yeehaw! How - text_jump _LC_Text1 - db "@" - -LC_Text2: - ; y'all doin' now? - text_jump _LC_Text2 - db "@" - -LC_Text3: - ; Whether you're up - text_jump _LC_Text3 - db "@" - -LC_Text4: - ; or way down low, - text_jump _LC_Text4 - db "@" - -LC_Text5: - ; don't you miss the - text_jump _LC_Text5 - db "@" - -LC_Text6: - ; LUCKY NUMBER SHOW! - text_jump _LC_Text6 - db "@" - -LC_Text7: - ; This week's Lucky - text_jump _LC_Text7 - db "@" - -LC_Text8: - ; Number is @ ! - text_jump _LC_Text8 - db "@" - -LC_Text9: - ; I'll repeat that! - text_jump _LC_Text9 - db "@" - -LC_Text10: - ; Match it and go to - text_jump _LC_Text10 - db "@" - -LC_Text11: - ; the RADIO TOWER! - text_jump _LC_Text11 - db "@" - -LC_DragText1: - ; …Repeating myself - text_jump _LC_DragText1 - db "@" - -LC_DragText2: - ; gets to be a drag… - text_jump _LC_DragText2 - db "@" - -PeoplePlaces1: - call StartRadioStation - ld hl, PnP_Text1 - ld a, PLACES_AND_PEOPLE_2 - jp NextRadioLine - -PeoplePlaces2: - ld hl, PnP_Text2 - ld a, PLACES_AND_PEOPLE_3 - jp NextRadioLine - -PeoplePlaces3: - ld hl, PnP_Text3 - call Random - cp 49 percent - 1 - ld a, PLACES_AND_PEOPLE_4 ; People - jr c, .ok - ld a, PLACES_AND_PEOPLE_6 ; Places -.ok - jp NextRadioLine - -PnP_Text1: - ; PLACES AND PEOPLE! - text_jump _PnP_Text1 - db "@" - -PnP_Text2: - ; Brought to you by - text_jump _PnP_Text2 - db "@" - -PnP_Text3: - ; me, DJ LILY! - text_jump _PnP_Text3 - db "@" - -PeoplePlaces4: ; People - call Random - maskbits NUM_TRAINER_CLASSES - inc a - cp NUM_TRAINER_CLASSES - 1 - jr nc, PeoplePlaces4 - push af - ld hl, PnP_HiddenPeople - ld a, [wStatusFlags] - bit STATUSFLAGS_HALL_OF_FAME_F, a - jr z, .ok - ld hl, PnP_HiddenPeople_BeatE4 - ld a, [wKantoBadges] - cp %11111111 ; all badges - jr nz, .ok - ld hl, PnP_HiddenPeople_BeatKanto -.ok - pop af - ld c, a - ld de, 1 - push bc - call IsInArray - pop bc - jr c, PeoplePlaces4 - push bc - callfar GetTrainerClassName - ld de, wStringBuffer1 - call CopyName1 - pop bc - ld b, 1 - callfar GetTrainerName - ld hl, PnP_Text4 - ld a, PLACES_AND_PEOPLE_5 - jp NextRadioLine - -INCLUDE "data/radio/pnp_hidden_people.asm" - -PnP_Text4: - ; @ @ @ - text_jump _PnP_Text4 - db "@" - -PeoplePlaces5: - ; 0-15 are all valid indexes into .Adjectives, - ; so no need for a retry loop - call Random - maskbits NUM_PNP_PEOPLE_ADJECTIVES - ld e, a - ld d, 0 - ld hl, .Adjectives - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call Random - cp 4 percent - ld a, PLACES_AND_PEOPLE - jr c, .ok - call Random - cp 49 percent - 1 - ld a, PLACES_AND_PEOPLE_4 ; People - jr c, .ok - ld a, PLACES_AND_PEOPLE_6 ; Places -.ok - jp NextRadioLine - -.Adjectives: -; there are NUM_PNP_PEOPLE_ADJECTIVES entries - dw PnP_cute - dw PnP_lazy - dw PnP_happy - dw PnP_noisy - dw PnP_precocious - dw PnP_bold - dw PnP_picky - dw PnP_sortofok - dw PnP_soso - dw PnP_great - dw PnP_mytype - dw PnP_cool - dw PnP_inspiring - dw PnP_weird - dw PnP_rightforme - dw PnP_odd - -PnP_cute: - ; is cute. - text_jump _PnP_cute - db "@" - -PnP_lazy: - ; is sort of lazy. - text_jump _PnP_lazy - db "@" - -PnP_happy: - ; is always happy. - text_jump _PnP_happy - db "@" - -PnP_noisy: - ; is quite noisy. - text_jump _PnP_noisy - db "@" - -PnP_precocious: - ; is precocious. - text_jump _PnP_precocious - db "@" - -PnP_bold: - ; is somewhat bold. - text_jump _PnP_bold - db "@" - -PnP_picky: - ; is too picky! - text_jump _PnP_picky - db "@" - -PnP_sortofok: - ; is sort of OK. - text_jump _PnP_sortofok - db "@" - -PnP_soso: - ; is just so-so. - text_jump _PnP_soso - db "@" - -PnP_great: - ; is actually great. - text_jump _PnP_great - db "@" - -PnP_mytype: - ; is just my type. - text_jump _PnP_mytype - db "@" - -PnP_cool: - ; is so cool, no? - text_jump _PnP_cool - db "@" - -PnP_inspiring: - ; is inspiring! - text_jump _PnP_inspiring - db "@" - -PnP_weird: - ; is kind of weird. - text_jump _PnP_weird - db "@" - -PnP_rightforme: - ; is right for me? - text_jump _PnP_rightforme - db "@" - -PnP_odd: - ; is definitely odd! - text_jump _PnP_odd - db "@" - -PeoplePlaces6: ; Places - call Random - cp (PnP_HiddenPlaces.End - PnP_HiddenPlaces) / 2 - jr nc, PeoplePlaces6 - ld hl, PnP_HiddenPlaces - ld c, a - ld b, 0 - add hl, bc - add hl, bc - ld b, [hl] - inc hl - ld c, [hl] - call GetWorldMapLocation - ld e, a - farcall GetLandmarkName - ld hl, PnP_Text5 - ld a, PLACES_AND_PEOPLE_7 - jp NextRadioLine - -INCLUDE "data/radio/pnp_hidden_places.asm" - -PnP_Text5: - ; @ @ - text_jump _PnP_Text5 - db "@" - -PeoplePlaces7: - ; 0-15 are all valid indexes into .Adjectives, - ; so no need for a retry loop - call Random - maskbits NUM_PNP_PLACES_ADJECTIVES - ld e, a - ld d, 0 - ld hl, .Adjectives - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call CopyRadioTextToRAM - call Random - cp 4 percent - ld a, PLACES_AND_PEOPLE - jr c, .ok - call Random - cp 49 percent - 1 - ld a, PLACES_AND_PEOPLE_4 ; People - jr c, .ok - ld a, PLACES_AND_PEOPLE_6 ; Places -.ok - jp PrintRadioLine - -.Adjectives: -; there are NUM_PNP_PLACES_ADJECTIVES entries - dw PnP_cute - dw PnP_lazy - dw PnP_happy - dw PnP_noisy - dw PnP_precocious - dw PnP_bold - dw PnP_picky - dw PnP_sortofok - dw PnP_soso - dw PnP_great - dw PnP_mytype - dw PnP_cool - dw PnP_inspiring - dw PnP_weird - dw PnP_rightforme - dw PnP_odd - -RocketRadio1: - call StartRadioStation - ld hl, RocketRadioText1 - ld a, ROCKET_RADIO_2 - jp NextRadioLine - -RocketRadio2: - ld hl, RocketRadioText2 - ld a, ROCKET_RADIO_3 - jp NextRadioLine - -RocketRadio3: - ld hl, RocketRadioText3 - ld a, ROCKET_RADIO_4 - jp NextRadioLine - -RocketRadio4: - ld hl, RocketRadioText4 - ld a, ROCKET_RADIO_5 - jp NextRadioLine - -RocketRadio5: - ld hl, RocketRadioText5 - ld a, ROCKET_RADIO_6 - jp NextRadioLine - -RocketRadio6: - ld hl, RocketRadioText6 - ld a, ROCKET_RADIO_7 - jp NextRadioLine - -RocketRadio7: - ld hl, RocketRadioText7 - ld a, ROCKET_RADIO_8 - jp NextRadioLine - -RocketRadio8: - ld hl, RocketRadioText8 - ld a, ROCKET_RADIO_9 - jp NextRadioLine - -RocketRadio9: - ld hl, RocketRadioText9 - ld a, ROCKET_RADIO_10 - jp NextRadioLine - -RocketRadio10: - ld hl, RocketRadioText10 - ld a, ROCKET_RADIO - jp NextRadioLine - -RocketRadioText1: - ; … …Ahem, we are - text_jump _RocketRadioText1 - db "@" - -RocketRadioText2: - ; TEAM ROCKET! - text_jump _RocketRadioText2 - db "@" - -RocketRadioText3: - ; After three years - text_jump _RocketRadioText3 - db "@" - -RocketRadioText4: - ; of preparation, we - text_jump _RocketRadioText4 - db "@" - -RocketRadioText5: - ; have risen again - text_jump _RocketRadioText5 - db "@" - -RocketRadioText6: - ; from the ashes! - text_jump _RocketRadioText6 - db "@" - -RocketRadioText7: - ; GIOVANNI! @ Can you - text_jump _RocketRadioText7 - db "@" - -RocketRadioText8: - ; hear?@ We did it! - text_jump _RocketRadioText8 - db "@" - -RocketRadioText9: - ; @ Where is our boss? - text_jump _RocketRadioText9 - db "@" - -RocketRadioText10: - ; @ Is he listening? - text_jump _RocketRadioText10 - db "@" - -PokeFluteRadio: - call StartRadioStation - ld a, 1 - ld [wNumRadioLinesPrinted], a - ret - -UnownRadio: - call StartRadioStation - ld a, 1 - ld [wNumRadioLinesPrinted], a - ret - -EvolutionRadio: - call StartRadioStation - ld a, 1 - ld [wNumRadioLinesPrinted], a - ret - -BuenasPassword1: -; Determine if we need to be here - call BuenasPasswordCheckTime - jp nc, .PlayPassword - ld a, [wNumRadioLinesPrinted] - and a - jp z, BuenasPassword20 - jp BuenasPassword8 - -.PlayPassword: - call StartRadioStation - ld a, [hBGMapMode] - push af - xor a - ld [hBGMapMode], a - ld de, BuenasPasswordChannelName - hlcoord 2, 9 - call PlaceString - pop af - ld [hBGMapMode], a - ld hl, BuenaRadioText1 - ld a, BUENAS_PASSWORD_2 - jp NextRadioLine - -BuenasPassword2: - ld hl, BuenaRadioText2 - ld a, BUENAS_PASSWORD_3 - jp NextRadioLine - -BuenasPassword3: - call BuenasPasswordCheckTime - ld hl, BuenaRadioText3 - jp c, BuenasPasswordAfterMidnight - ld a, BUENAS_PASSWORD_4 - jp NextRadioLine - -BuenasPassword4: - call BuenasPasswordCheckTime - jp c, BuenasPassword8 - ld a, [wBuenasPassword] -; If we already generated the password today, we don't need to generate a new one. - ld hl, wWeeklyFlags - bit WEEKLYFLAGS_BUENAS_PASSWORD_F, [hl] - jr nz, .AlreadyGotIt -; There are only 11 groups to choose from. -.greater_than_11 - call Random - maskbits NUM_PASSWORD_CATEGORIES - cp NUM_PASSWORD_CATEGORIES - jr nc, .greater_than_11 -; Store it in the high nybble of e. - swap a - ld e, a -; For each group, choose one of the three passwords. -.greater_than_three - call Random - maskbits NUM_PASSWORDS_PER_CATEGORY - cp NUM_PASSWORDS_PER_CATEGORY - jr nc, .greater_than_three -; The high nybble of wBuenasPassword will now contain the password group index, and the low nybble contains the actual password. - add e - ld [wBuenasPassword], a -; Set the flag so that we don't generate a new password this week. - ld hl, wWeeklyFlags - set WEEKLYFLAGS_BUENAS_PASSWORD_F, [hl] -.AlreadyGotIt: - ld c, a - call GetBuenasPassword - ld hl, BuenaRadioText4 - ld a, BUENAS_PASSWORD_5 - jp NextRadioLine - -GetBuenasPassword: -; The password indices are held in c. High nybble contains the group index, low nybble contains the word index. -; Load the password group pointer in hl. - ld a, c - swap a - and $f - ld hl, BuenasPasswordTable - ld d, 0 - ld e, a - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a -; Get the password type and store it in b. - ld a, [hli] - ld b, a - push hl - inc hl -; Get the password index. - ld a, c - and $f - ld c, a - push hl - ld hl, .StringFunctionJumpTable - ld e, b - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - pop de ; de now contains the pointer to the value of this week's password, in Blue Card Points. - call _hl_ - pop hl - ld c, [hl] - ret - -.StringFunctionJumpTable: -; entries correspond to BUENA_* constants - dw .Mon ; BUENA_MON - dw .Item ; BUENA_ITEM - dw .Move ; BUENA_MOVE - dw .RawString ; BUENA_STRING - -.Mon: - call .GetTheIndex - call GetPokemonName - ret - -.Item: - call .GetTheIndex - call GetItemName - ret - -.Move: - call .GetTheIndex - call GetMoveName - ret - -.GetTheIndex: - ld h, 0 - ld l, c - add hl, de - ld a, [hl] - ld [wNamedObjectIndexBuffer], a - ret - -.RawString: -; Get the string from the table... - ld a, c - and a - jr z, .skip -.read_loop - ld a, [de] - inc de - cp "@" - jr nz, .read_loop - dec c - jr nz, .read_loop -; ... and copy it into wStringBuffer1. -.skip - ld hl, wStringBuffer1 -.copy_loop - ld a, [de] - inc de - ld [hli], a - cp "@" - jr nz, .copy_loop - ld de, wStringBuffer1 - ret - -INCLUDE "data/radio/buenas_passwords.asm" - -BuenasPassword5: - ld hl, BuenaRadioText5 - ld a, BUENAS_PASSWORD_6 - jp NextRadioLine - -BuenasPassword6: - ld hl, BuenaRadioText6 - ld a, BUENAS_PASSWORD_7 - jp NextRadioLine - -BuenasPassword7: - call BuenasPasswordCheckTime - ld hl, BuenaRadioText7 - jr c, BuenasPasswordAfterMidnight - ld a, BUENAS_PASSWORD - jp NextRadioLine - -BuenasPasswordAfterMidnight: - push hl - ld hl, wWeeklyFlags - res WEEKLYFLAGS_BUENAS_PASSWORD_F, [hl] - pop hl - ld a, BUENAS_PASSWORD_8 - jp NextRadioLine - -BuenasPassword8: - ld hl, wWeeklyFlags - res WEEKLYFLAGS_BUENAS_PASSWORD_F, [hl] - ld hl, BuenaRadioMidnightText10 - ld a, BUENAS_PASSWORD_9 - jp NextRadioLine - -BuenasPassword9: - ld hl, BuenaRadioMidnightText1 - ld a, BUENAS_PASSWORD_10 - jp NextRadioLine - -BuenasPassword10: - ld hl, BuenaRadioMidnightText2 - ld a, BUENAS_PASSWORD_11 - jp NextRadioLine - -BuenasPassword11: - ld hl, BuenaRadioMidnightText3 - ld a, BUENAS_PASSWORD_12 - jp NextRadioLine - -BuenasPassword12: - ld hl, BuenaRadioMidnightText4 - ld a, BUENAS_PASSWORD_13 - jp NextRadioLine - -BuenasPassword13: - ld hl, BuenaRadioMidnightText5 - ld a, BUENAS_PASSWORD_14 - jp NextRadioLine - -BuenasPassword14: - ld hl, BuenaRadioMidnightText6 - ld a, BUENAS_PASSWORD_15 - jp NextRadioLine - -BuenasPassword15: - ld hl, BuenaRadioMidnightText7 - ld a, BUENAS_PASSWORD_16 - jp NextRadioLine - -BuenasPassword16: - ld hl, BuenaRadioMidnightText8 - ld a, BUENAS_PASSWORD_17 - jp NextRadioLine - -BuenasPassword17: - ld hl, BuenaRadioMidnightText9 - ld a, BUENAS_PASSWORD_18 - jp NextRadioLine - -BuenasPassword18: - ld hl, BuenaRadioMidnightText10 - ld a, BUENAS_PASSWORD_19 - jp NextRadioLine - -BuenasPassword19: - ld hl, BuenaRadioMidnightText10 - ld a, BUENAS_PASSWORD_20 - jp NextRadioLine - -BuenasPassword20: - ld a, [hBGMapMode] - push af - farcall NoRadioMusic - farcall NoRadioName - pop af - ld [hBGMapMode], a - ld hl, wWeeklyFlags - res WEEKLYFLAGS_BUENAS_PASSWORD_F, [hl] - ld a, BUENAS_PASSWORD - ld [wCurrentRadioLine], a - xor a - ld [wNumRadioLinesPrinted], a - ld hl, BuenaOffTheAirText - ld a, BUENAS_PASSWORD_21 - jp NextRadioLine - -BuenasPassword21: - ld a, BUENAS_PASSWORD - ld [wCurrentRadioLine], a - xor a - ld [wNumRadioLinesPrinted], a - call BuenasPasswordCheckTime - jp nc, BuenasPassword1 - ld hl, BuenaOffTheAirText - ld a, BUENAS_PASSWORD_21 - jp NextRadioLine - -BuenasPasswordCheckTime: - call UpdateTime - ld a, [hHours] - cp NITE_HOUR - ret - -BuenasPasswordChannelName: - db "BUENA'S PASSWORD@" - -BuenaRadioText1: - ; BUENA: BUENA here! - text_jump _BuenaRadioText1 - db "@" - -BuenaRadioText2: - ; Today's password! - text_jump _BuenaRadioText2 - db "@" - -BuenaRadioText3: - ; Let me think… It's - text_jump _BuenaRadioText3 - db "@" - -BuenaRadioText4: - ; @ ! - text_jump _BuenaRadioText4 - db "@" - -BuenaRadioText5: - ; Don't forget it! - text_jump _BuenaRadioText5 - db "@" - -BuenaRadioText6: - ; I'm in GOLDENROD's - text_jump _BuenaRadioText6 - db "@" - -BuenaRadioText7: - ; RADIO TOWER! - text_jump _BuenaRadioText7 - db "@" - -BuenaRadioMidnightText1: - ; BUENA: Oh my… - text_jump _BuenaRadioMidnightText1 - db "@" - -BuenaRadioMidnightText2: - ; It's midnight! I - text_jump _BuenaRadioMidnightText2 - db "@" - -BuenaRadioMidnightText3: - ; have to shut down! - text_jump _BuenaRadioMidnightText3 - db "@" - -BuenaRadioMidnightText4: - ; Thanks for tuning - text_jump _BuenaRadioMidnightText4 - db "@" - -BuenaRadioMidnightText5: - ; in to the end! But - text_jump _BuenaRadioMidnightText5 - db "@" - -BuenaRadioMidnightText6: - ; don't stay up too - text_jump _BuenaRadioMidnightText6 - db "@" - -BuenaRadioMidnightText7: - ; late! Presented to - text_jump _BuenaRadioMidnightText7 - db "@" - -BuenaRadioMidnightText8: - ; you by DJ BUENA! - text_jump _BuenaRadioMidnightText8 - db "@" - -BuenaRadioMidnightText9: - ; I'm outta here! - text_jump _BuenaRadioMidnightText9 - db "@" - -BuenaRadioMidnightText10: - ; … - text_jump _BuenaRadioMidnightText10 - db "@" - -BuenaOffTheAirText: - ; - text_jump _BuenaOffTheAirText - db "@" - -CopyRadioTextToRAM: - ld a, [hl] - cp TX_FAR - jp z, FarCopyRadioText - ld de, wRadioText - ld bc, SCREEN_WIDTH * 2 - jp CopyBytes - -StartRadioStation: - ld a, [wNumRadioLinesPrinted] - and a - ret nz - call RadioTerminator - call PrintText - ld hl, RadioChannelSongs - ld a, [wCurrentRadioLine] - ld c, a - ld b, 0 - add hl, bc - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - callfar RadioMusicRestartDE - ret - -INCLUDE "data/radio/channel_music.asm" - -NextRadioLine: - push af - call CopyRadioTextToRAM - pop af - jp PrintRadioLine |