diff options
| author | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-19 18:07:20 -0500 |
|---|---|---|
| committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-19 18:09:11 -0500 |
| commit | 93a129eb6dc261faccaf2b2d58daf3db204ab3ba (patch) | |
| tree | 9095a3735deb1608ce6e4a23dcea4a5f43b4be95 /event | |
| parent | 8a6a1a7d77fdcd1f8468f0c411795a8f039d4bd8 (diff) | |
main.asm is now under 30k lines
Diffstat (limited to 'event')
| -rwxr-xr-x | event/halloffame.asm | 628 | ||||
| -rwxr-xr-x | event/mom_phone.asm | 285 |
2 files changed, 913 insertions, 0 deletions
diff --git a/event/halloffame.asm b/event/halloffame.asm new file mode 100755 index 000000000..c4c901229 --- /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 FadeToWhite + 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/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 |
