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 | |
parent | 8a6a1a7d77fdcd1f8468f0c411795a8f039d4bd8 (diff) |
main.asm is now under 30k lines
-rwxr-xr-x | engine/crystal_intro.asm | 2531 | ||||
-rwxr-xr-x | engine/debug.asm | 1517 | ||||
-rw-r--r-- | engine/engine_flags.asm | 87 | ||||
-rwxr-xr-x | engine/npctrade.asm | 620 | ||||
-rw-r--r-- | engine/party_menu.asm | 2 | ||||
-rwxr-xr-x | engine/printer.asm | 1493 | ||||
-rw-r--r-- | engine/scripting.asm | 4 | ||||
-rwxr-xr-x | engine/sprites.asm | 545 | ||||
-rwxr-xr-x | engine/startmenu.asm | 2 | ||||
-rwxr-xr-x | engine/time_capsule/conversion.asm | 684 | ||||
-rwxr-xr-x | engine/variables.asm | 150 | ||||
-rwxr-xr-x | event/halloffame.asm | 628 | ||||
-rwxr-xr-x | event/mom_phone.asm | 285 | ||||
-rwxr-xr-x | gfx/font.asm | 236 | ||||
-rwxr-xr-x | gfx/mail.asm | 1088 | ||||
-rw-r--r-- | home/map.asm | 2 | ||||
-rw-r--r-- | main.asm | 9893 | ||||
-rwxr-xr-x | misc/battle_tower_47.asm | 14 | ||||
-rw-r--r-- | misc/crystal_misc.asm | 2 | ||||
-rw-r--r-- | misc/mobile_22.asm | 2 | ||||
-rw-r--r-- | misc/mobile_40.asm | 6 | ||||
-rw-r--r-- | misc/mobile_45.asm | 24 | ||||
-rwxr-xr-x | misc/mobile_46.asm | 58 | ||||
-rwxr-xr-x | misc/mobile_5c.asm | 8 | ||||
-rw-r--r-- | misc/mobile_5f.asm | 10 | ||||
-rw-r--r-- | wram.asm | 6 |
26 files changed, 9947 insertions, 9950 deletions
diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm new file mode 100755 index 000000000..7849a9f48 --- /dev/null +++ b/engine/crystal_intro.asm @@ -0,0 +1,2531 @@ +Functione455c: ; e455c + hlcoord 1, 1 + ld de, SCREEN_WIDTH + ld c, $10 +.asm_e4564 + ld [hl], $7f + add hl, de + dec c + jr nz, .asm_e4564 + hlcoord 1, 2 + ld bc, $28 + ld a, [wJumptableIndex] + call AddNTimes + ld [hl], $ed + ret +; e4579 + + +Functione4579: ; e4579 + ld de, MUSIC_NONE + call PlayMusic + call ClearBGPalettes + call ClearTileMap + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + xor a + ld [hBGMapAddress], a + ld [hJoyDown], a + ld [hSCX], a + ld [hSCY], a + ld a, $90 + ld [hWY], a + call WaitBGMap + ld b, SCGB_19 + call GetSGBLayout + call SetPalettes + ld c, 10 + call DelayFrames + callab Copyright + call WaitBGMap + ld c, 100 + call DelayFrames + call ClearTileMap + callba GBCOnlyScreen + call Functione45e8 +.joy_loop + call JoyTextDelay + ld a, [hJoyLast] + and BUTTONS + jr nz, .pressed_button + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finish + call PlaceGameFreakPresents + callba Function8cf69 + call DelayFrame + jr .joy_loop + +.pressed_button + call Functione465e + scf + ret + +.finish + call Functione465e + and a + ret +; e45e8 + +Functione45e8: ; e45e8 + ld de, GameFreakLogo + ld hl, VTiles2 + lb bc, BANK(GameFreakLogo), $1c + call Get1bpp + + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + + ld hl, IntroLogoGFX + ld de, w6_d000 + ld a, BANK(IntroLogoGFX) + call FarDecompress + + ld hl, VTiles0 + ld de, w6_d000 + lb bc, 1, 8 tiles + call Request2bpp + + ld hl, VTiles1 + ld de, w6_d000 + $80 tiles + lb bc, 1, 8 tiles + call Request2bpp + + pop af + ld [rSVBK], a + + callba Function8cf53 + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_03 + call _InitSpriteAnimStruct + ld hl, $7 + add hl, bc + ld [hl], $a0 + ld hl, $c + add hl, bc + ld [hl], $60 + ld hl, $d + add hl, bc + ld [hl], $30 + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [hSCX], a + ld [hSCY], a + ld a, $1 + ld [hBGMapMode], a + ld a, $90 + ld [hWY], a + ld de, $e4e4 + call DmgToCgbObjPals + ret +; e465e + +Functione465e: ; e465e + callba Function8cf53 + call ClearTileMap + call ClearSprites + ld c, 16 + call DelayFrames + ret +; e4670 + +PlaceGameFreakPresents: ; e4670 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e467f + +.jumptable: ; e467f + dw PlaceGameFreakPresents_0 + dw PlaceGameFreakPresents_1 + dw PlaceGameFreakPresents_2 + dw PlaceGameFreakPresents_3 +; e4687 + +PlaceGameFreakPresents_AdvanceIndex: ; e4687 + ld hl, wJumptableIndex + inc [hl] + ret +; e468c + +PlaceGameFreakPresents_0: ; e468c + ret +; e468d + +PlaceGameFreakPresents_1: ; e468d + ld hl, wcf65 + ld a, [hl] + cp $20 + jr nc, .PlaceGameFreak + inc [hl] + ret + +.PlaceGameFreak + ld [hl], 0 + ld hl, .GAME_FREAK + decoord 5, 10 + ld bc, .end - .GAME_FREAK + call CopyBytes + call PlaceGameFreakPresents_AdvanceIndex + ld de, SFX_GAME_FREAK_PRESENTS + call PlaySFX + ret +; e46af + +.GAME_FREAK + ; G A M E _ F R E A K + db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6 +.end + db "@" +; e46ba + +PlaceGameFreakPresents_2: ; e46ba + ld hl, wcf65 + ld a, [hl] + cp $40 + jr nc, .place_presents + inc [hl] + ret + +.place_presents + ld [hl], 0 + ld hl, .presents + decoord 7,11 + ld bc, .end - .presents + call CopyBytes + call PlaceGameFreakPresents_AdvanceIndex + ret +; e46d6 + +.presents + db 7, 8, 9, 10, 11, 12 +.end + db "@" +; e46dd + +PlaceGameFreakPresents_3: ; e46dd + ld hl, wcf65 + ld a, [hl] + cp $80 + jr nc, .finish + inc [hl] + ret + +.finish + ld hl, wJumptableIndex + set 7, [hl] + ret +; e46ed + + + +GameFreakLogoJumper: ; e46ed (39:46ed) + ld hl, $b + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, GameFreakLogoScenes +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +GameFreakLogoScenes: ; e46fd (39:46fd) + dw GameFreakLogoScene1 + dw GameFreakLogoScene2 + dw GameFreakLogoScene3 + dw GameFreakLogoScene4 + dw GameFreakLogoScene5 + + +GameFreakLogoScene1: ; e4707 (39:4707) + ld hl, $b + add hl, bc + inc [hl] + ret + +GameFreakLogoScene2: ; e470d (39:470d) + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_e4747 + ld d, a + ld hl, $d + add hl, bc + ld a, [hl] + and $3f + cp $20 + jr nc, .asm_e4723 + add $20 +.asm_e4723 + ld e, a + callba Functionce765 + ld hl, $7 + add hl, bc + ld [hl], e + ld hl, $d + add hl, bc + ld a, [hl] + dec [hl] + and $1f + ret nz + ld hl, $c + add hl, bc + ld a, [hl] + sub $30 + ld [hl], a + ld de, SFX_DITTO_BOUNCE + call PlaySFX + ret +.asm_e4747 + ld hl, $b + add hl, bc + inc [hl] + ld hl, $d + add hl, bc + ld [hl], $0 + ld de, SFX_DITTO_POP_UP + call PlaySFX + ret + +GameFreakLogoScene3: ; e4759 (39:4759) + ld hl, $d + add hl, bc + ld a, [hl] + cp $20 + jr nc, .asm_e4764 + inc [hl] + ret +.asm_e4764 + ld hl, $b + add hl, bc + inc [hl] + ld hl, $d + add hl, bc + ld [hl], $0 + ld de, SFX_DITTO_TRANSFORM + call PlaySFX + ret + +GameFreakLogoScene4: ; e4776 (39:4776) + ld hl, $d + add hl, bc + ld a, [hl] + cp $40 + jr z, .asm_e47a3 + inc [hl] + srl a + srl a + ld e, a + ld d, $0 + ld hl, GameFreakLogoPalettes +rept 2 + add hl, de +endr + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [hli] + ld [OBPals + 12], a + ld a, [hli] + ld [OBPals + 13], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +.asm_e47a3 + ld hl, $b + add hl, bc + inc [hl] + call PlaceGameFreakPresents_AdvanceIndex + +GameFreakLogoScene5: ; e47ab (39:47ab) + ret +; e47ac (39:47ac) + +GameFreakLogoPalettes: ; e47ac +; Ditto's color as it turns into the Game Freak logo. +; Fade from pink to orange. +; One color per step. + RGB 23, 12, 28 + RGB 23, 12, 27 + RGB 23, 13, 26 + RGB 23, 13, 24 + RGB 24, 14, 22 + RGB 24, 14, 20 + RGB 24, 15, 18 + RGB 24, 15, 16 + RGB 25, 16, 14 + RGB 25, 16, 12 + RGB 25, 17, 10 + RGB 25, 17, 08 + RGB 26, 18, 06 + RGB 26, 18, 04 + RGB 26, 19, 02 + RGB 26, 19, 00 +;' e47cc + +GameFreakLogo: ; e47cc +INCBIN "gfx/splash/logo.1bpp" +; e48ac + +CrystalIntro: ; e48ac + ld a, [rSVBK] + push af + ld a, 5 + ld [rSVBK], a + ld a, [hInMenu] + push af + ld a, [hVBlank] + push af + call Functione4901 +.loop: ; e48bc + call JoyTextDelay + ld a, [hJoyLast] + and BUTTONS + jr nz, .ShutOffMusic + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done + call IntroSceneJumper + callba Function8cf69 + call DelayFrame + jp .loop + +.ShutOffMusic + ld de, MUSIC_NONE + call PlayMusic + +.done + call ClearBGPalettes + call ClearSprites + call ClearTileMap + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + pop af + ld [hVBlank], a + pop af + ld [hInMenu], a + pop af + ld [rSVBK], a + ret +; e4901 + +Functione4901: ; e4901 + xor a + ld [hVBlank], a + ld a, $1 + ld [hInMenu], a + xor a + ld [hMapAnims], a + ld [wJumptableIndex], a + ret +; e490f + +IntroSceneJumper: ; e490f + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, IntroScenes +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e491e + + +IntroScenes: ; e491e (39:491e) + dw IntroScene1 + dw IntroScene2 + dw IntroScene3 + dw IntroScene4 + dw IntroScene5 + dw IntroScene6 + dw IntroScene7 + dw IntroScene8 + dw IntroScene9 + dw IntroScene10 + dw IntroScene11 + dw IntroScene12 + dw IntroScene13 + dw IntroScene14 + dw IntroScene15 + dw IntroScene16 + dw IntroScene17 + dw IntroScene18 + dw IntroScene19 + dw IntroScene20 + dw IntroScene21 + dw IntroScene22 + dw IntroScene23 + dw IntroScene24 + dw IntroScene25 + dw IntroScene26 + dw IntroScene27 + dw IntroScene28 + + +NextIntroScene: ; e4956 (39:4956) + ld hl, wJumptableIndex + inc [hl] + ret + +IntroScene1: ; e495b (39:495b) +; Setup the next scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap001 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroPulseGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld hl, IntroTilemap002 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene2: ; e49d6 (39:49d6) +; First Unown (A) fades in, pulses, then fades out. + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $80 + jr nc, .endscene + cp $60 + jr nz, .DontPlaySound + push af + ld de, $5858 + call Functione51dc + ld de, SFX_INTRO_UNOWN_1 + call PlaySFX + pop af +.DontPlaySound + ld [wcf65], a + xor a + call Functione5223 + ret +.endscene + call NextIntroScene + ret + +IntroScene3: ; e49fd (39:49fd) +; More setup. Transition to the outdoor scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call Functione5516 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + call NextIntroScene + ret + +IntroScene4: ; e4a69 (39:4a69) +; Scroll the outdoor panorama for a bit. + call Functione552f + ld hl, wIntroSceneFrameCounter + ld a, [hl] + cp $80 + jr z, .endscene + inc [hl] + ret +.endscene + call NextIntroScene + ret + +IntroScene5: ; e4a7a (39:4a7a) +; Go back to the Unown. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld [hLCDStatCustom], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap005 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroPulseGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld hl, IntroTilemap006 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene6: ; e4af7 (39:4af7) +; Two more Unown (I, H) fade in. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .endscene + cp $60 + jr z, .SecondUnown + cp $40 + jr nc, .StopUnown + cp $20 + jr z, .FirstUnown + jr .NoUnown +.FirstUnown + push af + ld de, $3878 + call Functione51dc + ld de, SFX_INTRO_UNOWN_2 + call PlaySFX + pop af +.NoUnown + ld [wcf65], a + xor a + call Functione5223 + ret +.SecondUnown + push af + ld de, $7030 + call Functione51dc + ld de, SFX_INTRO_UNOWN_1 + call PlaySFX + pop af +.StopUnown + ld [wcf65], a + ld a, $1 + call Functione5223 + ret +.endscene + call NextIntroScene + ret + +IntroScene7: ; e4b3f (39:4b3f) +; Back to the outdoor scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld hl, IntroPichuWooperGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneRunGFX + ld de, VTiles0 tile $00 + call Functione54de + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call Functione5516 + callba Function8cf53 + depixel 13, 27, 4, 0 + ld a, SPRITE_ANIM_INDEX_26 + call _InitSpriteAnimStruct + ld a, $f0 + ld [wc3c0], a + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene8: ; e4bd3 (39:4bd3) +; Scroll the scene, then show Suicune running across the screen. + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $40 + jr z, .asm_e4be2 + jr nc, .asm_e4be8 + call Functione552f + ret +.asm_e4be2 + ld de, SFX_INTRO_SUICUNE_3 + call PlaySFX +.asm_e4be8 + ld a, [wc3c0] + and a + jr z, .asm_e4bf4 + sub $8 + ld [wc3c0], a + ret +.asm_e4bf4 + ld de, SFX_INTRO_SUICUNE_2 + call PlaySFX + callba Function8d03d + call NextIntroScene + ret + +IntroScene9: ; e4c04 (39:4c04) +; Set up the next scene (same bg). + xor a + ld [hLCDStatCustom], a + call ClearSprites + hlcoord 0, 0, AttrMap + ld bc, $f0 + ld a, $1 + call ByteFill + ld bc, $3c + ld a, $2 + call ByteFill + ld bc, $3c + ld a, $3 + call ByteFill + ld a, $2 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + ld a, $c + ld [hBGMapAddress], a + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ld [hBGMapMode], a + ld [hBGMapAddress], a + ld [wc3c0], a + xor a + ld [wcf64], a + call NextIntroScene + ret + +IntroScene10: ; e4c4f (39:4c4f) +; Wooper and Pichu enter. + call Functione546d + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $c0 + jr z, .done + cp $20 + jr z, .wooper + cp $40 + jr z, .pichu + ret + +.pichu + depixel 21, 16, 1, 0 + ld a, SPRITE_ANIM_INDEX_27 + call _InitSpriteAnimStruct + ld de, SFX_INTRO_PICHU + call PlaySFX + ret + +.wooper + depixel 22, 6 + ld a, SPRITE_ANIM_INDEX_28 + call _InitSpriteAnimStruct + ld de, SFX_INTRO_PICHU + call PlaySFX + ret +.done + call NextIntroScene + ret + +IntroScene11: ; e4c86 (39:4c86) +; Back to Unown again. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld [hLCDStatCustom], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap007 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap008 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene12: ; e4cfa (39:4cfa) +; Even more Unown. + call Functione4d36 + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $c0 + jr nc, .asm_e4d32 + cp $80 + jr nc, .asm_e4d1d + ld c, a + and $1f + sla a + ld [wcf65], a + ld a, c + and $e0 + srl a + swap a + call Functione5223 + ret +.asm_e4d1d + ld c, a + and $f + sla a + sla a + ld [wcf65], a + ld a, c + and $70 + or $40 + swap a + call Functione5223 + ret +.asm_e4d32 + call NextIntroScene + ret + +Functione4d36: ; e4d36 (39:4d36) + ld a, [wIntroSceneFrameCounter] + ld c, a + ld hl, .UnownSounds +.loop + ld a, [hli] + cp -1 + ret z + cp c + jr z, .playsound +rept 2 + inc hl +endr + jr .loop +.playsound + ld a, [hli] + ld d, [hl] + ld e, a + push de + call SFXChannelsOff + pop de + call PlaySFX + ret +; e4d54 (39:4d54) + +.UnownSounds: ; e4d54 + dbw $00, SFX_INTRO_UNOWN_3 + dbw $20, SFX_INTRO_UNOWN_2 + dbw $40, SFX_INTRO_UNOWN_1 + dbw $60, SFX_INTRO_UNOWN_2 + dbw $80, SFX_INTRO_UNOWN_3 + dbw $90, SFX_INTRO_UNOWN_2 + dbw $a0, SFX_INTRO_UNOWN_1 + dbw $b0, SFX_INTRO_UNOWN_2 + db $ff +; e4d6d + +IntroScene13: ; e4d6d (39:4d6d) +; Switch scenes again. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneRunGFX + ld de, VTiles0 tile $00 + call Functione54de + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + depixel 13, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_26 + call _InitSpriteAnimStruct + ld de, MUSIC_CRYSTAL_OPENING + call PlayMusic + xor a + ld [wc3c0], a + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene14: ; e4dfa (39:4dfa) +; Suicune runs then jumps. + ld a, [hSCX] + sub 10 + ld [hSCX], a + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr z, .done + cp $60 + jr z, .jump + jr nc, .asm_e4e1a + cp $40 + jr nc, .asm_e4e33 + ret + +.jump + ld de, SFX_INTRO_SUICUNE_4 + call PlaySFX + +.asm_e4e1a + ld a, $1 + ld [wcf65], a + ld a, [wc3c0] + cp $88 + jr c, .asm_e4e2c + sub $8 + ld [wc3c0], a + ret + +.asm_e4e2c + callba Function8d03d + ret + +.asm_e4e33 + ld a, [wc3c0] + sub $2 + ld [wc3c0], a + ret + +.done + call NextIntroScene + ret + +IntroScene15: ; e4e40 (39:4e40) +; Transition to a new scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap009 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneJumpGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroUnownBackGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld de, GFX_e7a5d + ld hl, VTiles1 tile $00 + lb bc, BANK(GFX_e7a5d), 1 + call Request2bpp + ld hl, IntroTilemap010 + ld de, VBGMap0 tile $00 + call Functione54fa + call Functione541b + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e77dd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e77dd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld a, $90 + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + depixel 8, 5 + ld a, SPRITE_ANIM_INDEX_2A + call _InitSpriteAnimStruct + depixel 12, 0 + ld a, SPRITE_ANIM_INDEX_2B + call _InitSpriteAnimStruct + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene16: ; e4edc (39:4edc) +; Suicune shows its face. An Unown appears in front. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .done + call Functione5441 + ld a, [hSCY] + and a + ret z + add 8 + ld [hSCY], a + ret +.done + call NextIntroScene + ret + +IntroScene17: ; e4ef5 (39:4ef5) +; ... + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap011 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneCloseGFX + ld de, VTiles1 tile $00 + call Functione54de + ld hl, IntroTilemap012 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e6d6d + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e6d6d + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene18: ; e4f67 (39:4f67) +; Suicune close up. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $60 + jr nc, .done + ld a, [hSCX] + cp $60 + ret z + add 8 + ld [hSCX], a + ret +.done + call NextIntroScene + ret + +IntroScene19: ; e4f7e (39:4f7e) +; More setup. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap013 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneBackGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroUnownsGFX + ld de, VTiles1 tile $00 + call Functione54c2 + ld de, GFX_e7a5d + ld hl, VTiles1 tile $7f + lb bc, BANK(GFX_e7a5d), 1 + call Request2bpp + ld hl, IntroTilemap014 + ld de, VBGMap0 tile $00 + call Functione54fa + call Functione541b + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e77dd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e77dd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld a, $d8 + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + ld hl, wc300 + xor a + ld [hli], a + ld [hl], $7f + call Functione549e + depixel 12, 0 + ld a, SPRITE_ANIM_INDEX_2B + call _InitSpriteAnimStruct + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene20: ; e5019 (39:5019) +; Suicune running away. A bunch of Unown appear. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $98 + jr nc, .asm_e5059 + cp $58 + ret nc + cp $40 + jr nc, .asm_e5032 + cp $28 + ret nc + ld a, [hSCY] + inc a + ld [hSCY], a + ret + +.asm_e5032 + sub $18 + ld c, a + and $3 + cp $3 + ret nz + ld a, c + and $1c + srl a + srl a + ld [wcf65], a + xor a + call Functione5348 + ret +; e5049 (39:5049) + + ld a, c + and $1c + srl a + srl a + ld [wcf65], a + ld a, 1 + call Functione5348 + ret + +.asm_e5059 + call NextIntroScene + ret + +IntroScene21: ; e505d (39:505d) +; Suicune gets more distant and turns black. + call Functione5451 + ld c, 3 + call DelayFrames + xor a + ld [hBGMapMode], a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene22: ; e5072 (39:5072) + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $8 + jr nc, .done + ret +.done + callba Function8d03d + call NextIntroScene + ret + +IntroScene23: ; e5086 (39:5086) + xor a + ld [wcf64], a + call NextIntroScene + ret + +IntroScene24: ; e508e (39:508e) +; Fade to white. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $20 + jr nc, .done + + ld c, a + and $3 + ret nz + ld a, c + and $1c + sla a + call Functione5172 + ret + +.done + ld a, $40 + ld [wcf64], a + call NextIntroScene + ret + +IntroScene25: ; e50ad (39:50ad) +; Wait around a bit. + ld a, [wcf64] + dec a + jr z, .done + ld [wcf64], a + ret +.done + call NextIntroScene + ret + +IntroScene26: ; e50bb (39:50bb) +; Load the final scene. + call ClearBGPalettes + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap015 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroCrystalUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap017 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e679d + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e679d + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene27: ; e512d (39:512d) +; Spell out C R Y S T A L with Unown. + ld hl, wcf65 + inc [hl] + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .done + + ld c, a + and $f + ld [wcf65], a + ld a, c + and $70 + swap a + call Functione539d + ret + +.done + call NextIntroScene + ld a, $80 + ld [wcf64], a + ret + +IntroScene28: ; e5152 (39:5152) +; Cut out when the music ends, and lead into the title screen. + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + cp $18 + jr z, .clear + cp $8 + ret nz + + ld de, SFX_UNKNOWN_CB + call PlaySFX + ret + +.clear + call ClearBGPalettes + ret + +.done + ld hl, wJumptableIndex + set 7, [hl] + ret + + +Functione5172: ; e5172 (39:5172) + ld hl, Unknown_e519c + add l + ld l, a + ld a, $0 + adc h + ld h, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld de, BGPals + ld b, $8 +.asm_e5187 + push hl + ld c, $8 +.asm_e518a + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_e518a + pop hl + dec b + jr nz, .asm_e5187 + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e519c (39:519c) + +Unknown_e519c: ; e519c +; Fade to white. + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 12, 00, 31 + RGB 00, 00, 00 + + RGB 31, 19, 05 + RGB 31, 31, 31 + RGB 15, 05, 31 + RGB 07, 07, 07 + + RGB 31, 21, 09 + RGB 31, 31, 31 + RGB 18, 09, 31 + RGB 11, 11, 11 + + RGB 31, 23, 13 + RGB 31, 31, 31 + RGB 21, 13, 31 + RGB 15, 15, 15 + + RGB 31, 25, 17 + RGB 31, 31, 31 + RGB 25, 17, 31 + RGB 19, 19, 19 + + RGB 31, 27, 21 + RGB 31, 31, 31 + RGB 27, 21, 31 + RGB 23, 23, 23 + + RGB 31, 29, 25 + RGB 31, 31, 31 + RGB 29, 26, 31 + RGB 27, 27, 27 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 +; e51dc + +Functione51dc: ; e51dc (39:51dc) + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $8 + ld a, $3c + call Function3b3c + pop de + + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $18 + ld a, $3b + call Function3b3c + pop de + + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $28 + ld a, $39 + call Function3b3c + pop de + + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $38 + ld a, $3a + call Function3b3c + ret + +Functione5223: ; e5223 (39:5223) +rept 3 + add a +endr + ld e, a + ld d, $0 + ld hl, BGPals + add hl, de +rept 2 + inc hl +endr + ld a, [wcf65] + and $3f + cp $1f + jr z, .asm_e523e + jr c, .asm_e523e + ld c, a + ld a, $3f + sub c +.asm_e523e + ld c, a + ld b, $0 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push hl + push bc + ld hl, BGPals + ld bc, $40 + xor a + call ByteFill + pop bc + pop hl + push hl + ld hl, Unknown_e5288 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Unknown_e52c8 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Unknown_e5308 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e5288 (39:5288) + +Unknown_e5288: ; e5288 +; Fade between black and white. +hue = 0 +rept 32 + RGB hue, hue, hue +hue = hue + 1 +endr +; e52c8 + +Unknown_e52c8: ; e52c8 +; Fade between black and light blue. +hue = 0 +rept 32 + RGB 0, hue / 2, hue +hue = hue + 1 +endr +; e5308 + +Unknown_e5308: ; e5308 +; Fade between black and blue. +hue = 0 +rept 32 + RGB 0, 0, hue +hue = hue + 1 +endr +; e5348 + +Functione5348: ; e5348 (39:5348) + and a + jr nz, .asm_e5350 + ld hl, Palette_e538d + jr .asm_e5353 +.asm_e5350 + ld hl, Palette_e5395 +.asm_e5353 + ld a, [wcf65] + and $7 +rept 3 + add a +endr + ld c, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push bc + ld de, BGPals + ld a, c + add e + ld e, a + ld a, $0 + adc d + ld d, a + ld bc, $8 + call CopyBytes + pop bc + ld de, wMapPals + ld a, c + add e + ld e, a + ld a, $0 + adc d + ld d, a + ld bc, $8 + call CopyBytes + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e538d (39:538d) + +Palette_e538d: ; e538d + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 12, 00, 31 + RGB 00, 00, 00 +; e5395 + +Palette_e5395: ; e5395 + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 +; e539d + +Functione539d: ; e539d (39:539d) +rept 3 + add a +endr + ld e, a + ld d, $0 + ld hl, BGPals + add hl, de +rept 4 + inc hl +endr + ld a, [wcf65] + add a + ld c, a + ld b, $0 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push hl + ld hl, Palette_e53db + add hl, bc + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Palette_e53fb + add hl, bc + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e53db (39:53db) + +Palette_e53db: ; e53db +hue = 31 +rept 8 + RGB hue, hue, hue +hue = hue + -1 + RGB hue, hue, hue +hue = hue + -2 +endr +; e53fb + +Palette_e53fb: ; e53fb +hue = 31 +rept 16 + RGB hue, hue, hue +hue = hue + -1 +endr +; e541b + +Functione541b: ; e541b (39:541b) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, w6_d000 + decoord 0, 0 + ld b, SCREEN_HEIGHT +.asm_e542a + ld c, SCREEN_WIDTH +.asm_e542c + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_e542c + ld a, $c + add l + ld l, a + ld a, $0 + adc h + ld h, a + dec b + jr nz, .asm_e542a + pop af + ld [rSVBK], a + ret + +Functione5441: ; e5441 (39:5441) + ld a, [wcf64] + and $3 + jr z, Functione5451 + cp $3 + jr z, .asm_e544d + ret +.asm_e544d + xor a + ld [hBGMapMode], a + ret + +Functione5451: ; e5451 (39:5451) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH +.asm_e5457 + ld a, [hl] + and a + jr z, .asm_e5462 + cp $80 + jr nc, .asm_e5462 + xor $8 + ld [hl], a +.asm_e5462 + inc hl + dec bc + ld a, c + or b + jr nz, .asm_e5457 + ld a, $1 + ld [hBGMapMode], a + ret + +Functione546d: ; e546d (39:546d) + ld a, [wcf64] + cp $24 + ret nc + and $c + srl a + ld e, a + ld d, $0 + ld hl, Unknown_e5496 + add hl, de + ld a, [hli] + ld [Requested2bppSource], a + ld a, [hli] + ld [Requested2bppSource + 1], a + ld a, (VTiles2 tile $09) % $100 + ld [Requested2bppDest], a + ld a, (VTiles2 tile $09) / $100 + ld [Requested2bppDest + 1], a + ld a, $4 + ld [Requested2bpp], a + ret +; e5496 (39:5496) + +Unknown_e5496: ; e5496 + dw GFX_e799d + dw GFX_e79dd + dw GFX_e7a1d + dw GFX_e79dd +; e549e + +Functione549e: ; e549e (39:549e) + ld a, $1 + ld [hCGBPalUpdate], a + ret + +Functione54a3: ; e54a3 (39:54a3) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld bc, $80 + xor a + call ByteFill + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + call DelayFrame + call DelayFrame + ret + +Functione54c2: ; e54c2 (39:54c2) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $180 + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione54de: ; e54de (39:54de) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $1ff + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione54fa: ; e54fa (39:54fa) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $140 + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione5516: ; e5516 (39:5516) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, LYOverrides + ld bc, $90 + xor a + call ByteFill + pop af + ld [rSVBK], a + ld a, $43 + ld [hLCDStatCustom], a + ret + +Functione552f: ; e552f (39:552f) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [wcf64] + and $1 + jr z, .asm_e5548 + ld hl, LYOverrides + ld a, [hl] + inc a + ld bc, $5f + call ByteFill +.asm_e5548 + ld hl, LYOverrides + $5f + ld a, [hl] +rept 2 + inc a +endr + ld bc, $31 + call ByteFill + ld a, [LYOverrides + 0] + ld [hSCX], a + pop af + ld [rSVBK], a + ret + +IntroSuicuneRunGFX: ; e555d +INCBIN "gfx/intro/suicune_run.2bpp.lz" +; e592d + +IntroPichuWooperGFX: ; e592d +INCBIN "gfx/intro/pichu_wooper.2bpp.lz" +; e5c7d + +IntroBackgroundGFX: ; e5c7d +INCBIN "gfx/intro/background.2bpp.lz" +; e5e6d + +IntroTilemap004: ; e5e6d +INCBIN "gfx/intro/004.tilemap.lz" +; e5ecd + +IntroTilemap003: ; e5ecd +INCBIN "gfx/intro/003.tilemap.lz" +; e5edd + +Palette_e5edd: ; e5edd + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 0, 4, 5 + RGB 1, 8, 5 + RGB 4, 12, 9 + RGB 24, 12, 9 + RGB 0, 4, 5 + RGB 9, 6, 8 + RGB 8, 16, 5 + RGB 5, 10, 4 + RGB 31, 31, 31 + RGB 9, 6, 8 + RGB 18, 9, 9 + RGB 13, 8, 9 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 2, 5, 22 + RGB 1, 5, 12 + RGB 31, 31, 31 + RGB 31, 10, 25 + RGB 31, 21, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 21, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroUnownsGFX: ; e5f5d +INCBIN "gfx/intro/unowns.2bpp.lz" +; e634d + +IntroPulseGFX: ; e634d +INCBIN "gfx/intro/pulse.2bpp.lz" +; e63dd + +IntroTilemap002: ; e63dd +INCBIN "gfx/intro/002.tilemap.lz" +; e641d + +IntroTilemap001: ; e641d +INCBIN "gfx/intro/001.tilemap.lz" +; e642d + +IntroTilemap006: ; e642d +INCBIN "gfx/intro/006.tilemap.lz" +; e647d + +IntroTilemap005: ; e647d +INCBIN "gfx/intro/005.tilemap.lz" +; e649d + +IntroTilemap008: ; e649d +INCBIN "gfx/intro/008.tilemap.lz" +; e655d + +IntroTilemap007: ; e655d +INCBIN "gfx/intro/007.tilemap.lz" +; e65ad + +Palette_365ad: ; e65ad + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 10, 0, 10 + RGB 19, 0, 19 + RGB 31, 0, 31 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroCrystalUnownsGFX: ; e662d +INCBIN "gfx/intro/crystal_unowns.2bpp.lz" +; e672d + +IntroTilemap017: ; e672d +INCBIN "gfx/intro/017.tilemap.lz" +; e676d + +IntroTilemap015: ; e676d +INCBIN "gfx/intro/015.tilemap.lz" +; e679d + +Palette_e679d: ; e679d + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroSuicuneCloseGFX: ; e681d +INCBIN "gfx/intro/suicune_close.2bpp.lz" +; e6c3d + +IntroTilemap012: ; e6c3d +INCBIN "gfx/intro/012.tilemap.lz" +; e6d0d + +IntroTilemap011: ; e6d0d +INCBIN "gfx/intro/011.tilemap.lz" +; e6d6d + +Palette_e6d6d: ; e6d6d + RGB 24, 12, 9 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 12, 20, 31 + RGB 19, 8, 31 + RGB 0, 0, 0 + RGB 12, 20, 31 + RGB 8, 9, 31 + RGB 19, 8, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 12, 20, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroSuicuneJumpGFX: ; e6ded +INCBIN "gfx/intro/suicune_jump.2bpp.lz" +; e72ad + +IntroSuicuneBackGFX: ; e72ad +INCBIN "gfx/intro/suicune_back.2bpp.lz" +; e764d + +IntroTilemap010: ; e764d +INCBIN "gfx/intro/010.tilemap.lz" +; e76ad + +IntroTilemap009: ; e76ad +INCBIN "gfx/intro/009.tilemap.lz" +; e76bd + +IntroTilemap014: ; e76bd +INCBIN "gfx/intro/014.tilemap.lz" +; e778d + +IntroTilemap013: ; e778d +INCBIN "gfx/intro/013.tilemap.lz" +; e77dd + +Palette_e77dd: ; e77dd + RGB 24, 12, 9 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 12, 0, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 21, 9, 0 + RGB 21, 9, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroUnownBackGFX: ; e785d +INCBIN "gfx/intro/unown_back.2bpp.lz" +; e799d + +GFX_e799d: ; e799d +INCBIN "gfx/unknown/0e799d.2bpp" +GFX_e79dd: ; e79dd +INCBIN "gfx/unknown/0e79dd.2bpp" +GFX_e7a1d: ; e7a1d +INCBIN "gfx/unknown/0e7a1d.2bpp" + +GFX_e7a5d: ; e7a5d +INCBIN "gfx/unknown/0e7a5d.2bpp" + + diff --git a/engine/debug.asm b/engine/debug.asm new file mode 100755 index 000000000..913ea0a8d --- /dev/null +++ b/engine/debug.asm @@ -0,0 +1,1517 @@ +ColorTest: ; 818ac +; A debug menu to test monster and trainer palettes at runtime. + + ld a, [hCGB] + and a + jr nz, .asm_818b5 + ld a, [hSGB] + and a + ret z + +.asm_818b5 + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + call DisableLCD + call Function81948 + call Function8197c + call Function819a7 + call Function818f4 + call EnableLCD + ld de, MUSIC_NONE + call PlayMusic + xor a + ld [wJumptableIndex], a + ld [wcf66], a + ld [wd003], a +.asm_818de + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_818f0 + call Function81a74 + call Function81f5e + call DelayFrame + jr .asm_818de + +.asm_818f0 + pop af + ld [hInMenu], a + ret +; 818f4 + +Function818f4: ; 818f4 + ld a, [wd002] + and a + jr nz, Function81911 + ld hl, PokemonPalettes + +Function818fd: ; 818fd + ld de, OverworldMap + ld c, NUM_POKEMON + 1 +.asm_81902 + push bc + push hl + call Function81928 + pop hl + ld bc, 8 + add hl, bc + pop bc + dec c + jr nz, .asm_81902 + ret + +Function81911: ; 81911 + ld hl, TrainerPalettes + ld de, OverworldMap + ld c, NUM_TRAINER_CLASSES +.asm_81919 + push bc + push hl + call Function81928 + pop hl + ld bc, 4 + add hl, bc + pop bc + dec c + jr nz, .asm_81919 + ret +; 81928 + +Function81928: ; 81928 + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + ret +; 81948 + +Function81948: ; 81948 + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + call ClearSprites + ret +; 8197c + +Function8197c: ; 8197c + ld hl, DebugColorTestGFX + $10 + ld de, VTiles2 tile $6a + ld bc, $160 + call CopyBytes + ld hl, DebugColorTestGFX + ld de, VTiles0 + ld bc, $10 + call CopyBytes + call LoadStandardFont + ld hl, VTiles1 + lb bc, 8, 0 +.asm_8199d + ld a, [hl] + xor $ff + ld [hli], a + dec bc + ld a, c + or b + jr nz, .asm_8199d + ret +; 819a7 + +Function819a7: ; 819a7 + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_819f4 + ld de, BGPals + ld bc, $80 + call CopyBytes + ld a, $80 + ld [rBGPI], a + ld hl, Palette_819f4 + ld c, $40 + xor a +.asm_819c8 + ld [rBGPD], a + dec c + jr nz, .asm_819c8 + ld a, $80 + ld [rOBPI], a + ld hl, Palette_81a34 + ld c, $40 +.asm_819d6 + ld a, [hli] + ld [rOBPD], a + dec c + jr nz, .asm_819d6 + ld a, $94 + ld [wc608], a + ld a, $52 + ld [wc608 + 1], a + ld a, $4a + ld [wc608 + 2], a + ld a, $29 + ld [wc608 + 3], a + pop af + ld [rSVBK], a + ret +; 819f4 + +Palette_819f4: ; 819f4 + ; white + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + ; red + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 00, 00, 00 + + ; green + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 00, 00 + + ; blue + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + +Palette_81a34: ; 81a34 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + ; red + RGB 31, 31, 31 + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 00, 00, 00 + + ; green + RGB 31, 31, 31 + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 00, 00 + + ; blue + RGB 31, 31, 31 + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 +; 81a74 + +Function81a74: ; 81a74 + call JoyTextDelay + ld a, [wJumptableIndex] + cp $4 + jr nc, .asm_81a8b + ld hl, hJoyLast + ld a, [hl] + and SELECT + jr nz, .asm_81a9a + ld a, [hl] + and START + jr nz, .asm_81aab + +.asm_81a8b + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_81acf +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_81a9a + call Function81eca + call Function81ac3 + ld e, a + ld a, [wcf66] + inc a + cp e + jr c, .asm_81aba + xor a + jr .asm_81aba + +.asm_81aab + call Function81eca + ld a, [wcf66] + dec a + cp $ff + jr nz, .asm_81aba + call Function81ac3 + dec a + +.asm_81aba + ld [wcf66], a + ld a, $0 + ld [wJumptableIndex], a + ret +; 81ac3 + +Function81ac3: ; 81ac3 +; Looping back around the pic set. + ld a, [wd002] + and a + jr nz, .asm_81acc + ld a, NUM_POKEMON ; CELEBI + ret + +.asm_81acc + ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN + ret +; 81acf + +Jumptable_81acf: ; 81acf + dw Function81adb + dw Function81c18 + dw Function81c33 + dw Function81cc2 + dw Function81d8e + dw Function81daf +; 81adb + +Function81adb: ; 81adb + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $6f + call ByteFill + hlcoord 1, 3 + lb bc, 7, 18 + ld a, $6c + call Bank20_FillBoxWithByte + hlcoord 11, 0 + lb bc, 2, 3 + ld a, $6d + call Bank20_FillBoxWithByte + hlcoord 16, 0 + lb bc, 2, 3 + ld a, $6e + call Bank20_FillBoxWithByte + call Function81bc0 + call Function81bf4 + ld a, [wcf66] + inc a + ld [CurPartySpecies], a + ld [wd265], a + hlcoord 0, 1 + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + ld a, [wd002] + and a + jr nz, .asm_81b7a + ld a, $1 + ld [UnownLetter], a + call GetPokemonName + hlcoord 4, 1 + call PlaceString + xor a + ld [wc2c6], a + hlcoord 12, 3 + call _PrepMonFrontpic + ld de, VTiles2 tile $31 + predef GetBackpic + ld a, $31 + ld [hFillBox], a + hlcoord 2, 4 + lb bc, 6, 6 + predef FillBox + ld a, [wd003] + and a + jr z, .asm_81b66 + ld de, String_81baf + jr .asm_81b69 + +.asm_81b66 + ld de, String_81bb4 + +.asm_81b69 + hlcoord 7, 17 + call PlaceString + hlcoord 0, 17 + ld de, String_81bb9 + call PlaceString + jr .asm_81ba9 + +.asm_81b7a + ld a, [wd265] + ld [TrainerClass], a + callab Function3957b + ld de, StringBuffer1 + hlcoord 4, 1 + call PlaceString + ld de, VTiles2 + callab GetTrainerPic + xor a + ld [TempEnemyMonSpecies], a + ld [hFillBox], a + hlcoord 2, 3 + lb bc, 7, 7 + predef FillBox + +.asm_81ba9 + ld a, $1 + ld [wJumptableIndex], a + ret +; 81baf + +String_81baf: db "レア", $6f, $6f, "@" ; rare (shiny) +String_81bb4: db "ノーマル@" ; normal +String_81bb9: db $7a, "きりかえ▶@" ; (A) switches +; 81bc0 + +Function81bc0: ; 81bc0 + decoord 0, 11, AttrMap + hlcoord 2, 11 + ld a, $1 + call Function81bde + decoord 0, 13, AttrMap + hlcoord 2, 13 + ld a, $2 + call Function81bde + decoord 0, 15, AttrMap + hlcoord 2, 15 + ld a, $3 + +Function81bde: ; 81bde + push af + ld a, $6a + ld [hli], a + ld bc, $f + ld a, $6b + call ByteFill + ld l, e + ld h, d + pop af + ld bc, $28 + call ByteFill + ret +; 81bf4 + +Function81bf4: ; 81bf4 + ld a, [wcf66] + inc a + ld l, a + ld h, $0 +rept 2 + add hl, hl +endr + ld de, OverworldMap + add hl, de + ld de, wc608 + ld bc, 4 + call CopyBytes + xor a + ld [wcf64], a + ld [wcf65], a + ld de, wc608 + call Function81ea5 + ret +; 81c18 + +Function81c18: ; 81c18 + ld a, [hCGB] + and a + jr z, .asm_81c2a + ld a, $2 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + +.asm_81c2a + call WaitBGMap + ld a, $2 + ld [wJumptableIndex], a + ret +; 81c33 + +Function81c33: ; 81c33 + ld a, [hCGB] + and a + jr z, .asm_81c69 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld de, wc608 + ld c, $1 + call Function81ee3 + hlcoord 10, 2 + ld de, wc608 + call Function81ca7 + hlcoord 15, 2 + ld de, wc608 + 2 + call Function81ca7 + ld a, $1 + ld [hCGBPalUpdate], a + ld a, $3 + ld [wJumptableIndex], a + pop af + ld [rSVBK], a + ret + +.asm_81c69 + ld hl, wcda9 + ld a, $1 + ld [hli], a + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + ld a, [wc608] + ld [hli], a + ld a, [wc608 + 1] + ld [hli], a + ld a, [wc608 + 2] + ld [hli], a + ld a, [wc608 + 3] + ld [hli], a + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + ld hl, wcda9 + call Function81f0c + hlcoord 10, 2 + ld de, wc608 + call Function81ca7 + hlcoord 15, 2 + ld de, wc608 + 2 + call Function81ca7 + ld a, $3 + ld [wJumptableIndex], a + ret +; 81ca7 + +Function81ca7: ; 81ca7 +rept 3 + inc hl +endr + ld a, [de] + call Function81cbc + ld a, [de] + swap a + call Function81cbc + inc de + ld a, [de] + call Function81cbc + ld a, [de] + swap a + +Function81cbc: ; 81cbc + and $f + add $70 + ld [hld], a + ret +; 81cc2 + +Function81cc2: ; 81cc2 + ld a, [hJoyLast] + and B_BUTTON + jr nz, .asm_81cdf + ld a, [hJoyLast] + and A_BUTTON + jr nz, .asm_81ce5 + ld a, [wcf64] + and $3 + ld e, a + ld d, 0 + ld hl, Jumptable_81d02 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_81cdf + ld a, $4 + ld [wJumptableIndex], a + ret + +.asm_81ce5 + ld a, [wd002] + and a + ret nz + ld a, [wd003] + xor $4 + ld [wd003], a + ld c, a + ld b, 0 + ld hl, PokemonPalettes + add hl, bc + call Function818fd + ld a, $0 + ld [wJumptableIndex], a + ret +; 81d02 + +Jumptable_81d02: ; 81d02 + dw Function81d0a + dw Function81d34 + dw Function81d46 + dw Function81d58 +; 81d0a + +Function81d0a: ; 81d0a + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_LEFT + jr nz, .asm_81d1d + ld a, [hl] + and D_RIGHT + jr nz, .asm_81d28 + ret + +.asm_81d1d + xor a + ld [wcf65], a + ld de, wc608 + call Function81ea5 + ret + +.asm_81d28 + ld a, $1 + ld [wcf65], a + ld de, wc608 + 2 + call Function81ea5 + ret + +Function81d34: ; 81d34 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 10 + jr Function81d63 + +Function81d46: ; 81d46 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 11 + jr Function81d63 + +Function81d58: ; 81d58 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 12 + +Function81d63: ; 81d63 + ld a, [hJoyLast] + and D_RIGHT + jr nz, Function81d70 + ld a, [hJoyLast] + and D_LEFT + jr nz, Function81d77 + ret + +Function81d70: ; 81d70 + ld a, [hl] + cp $1f + ret nc + inc [hl] + jr Function81d7b + +Function81d77: ; 81d77 + ld a, [hl] + and a + ret z + dec [hl] + +Function81d7b: ; 81d7b + call Function81e67 + ld a, $2 + ld [wJumptableIndex], a + ret + +Function81d84: ; 81d84 + ld hl, wcf64 + dec [hl] + ret + +Function81d89: ; 81d89 + ld hl, wcf64 + inc [hl] + ret +; 81d8e + +Function81d8e: ; 81d8e + hlcoord 0, 10 + ld bc, $a0 + ld a, $6f + call ByteFill + hlcoord 2, 12 + ld de, String_81fcd + call PlaceString + xor a + ld [wd004], a + call Function81df4 + ld a, $5 + ld [wJumptableIndex], a + ret +; 81daf + +Function81daf: ; 81daf + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .asm_81dbb + call Function81dc7 + ret + +.asm_81dbb + ld a, $0 + ld [wJumptableIndex], a + ret +; 81dc1 + +Function81dc1: ; 81dc1 + ld hl, wJumptableIndex + set 7, [hl] + ret +; 81dc7 + +Function81dc7: ; 81dc7 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_81dd5 + ld a, [hl] + and D_DOWN + jr nz, .asm_81de2 + ret + +.asm_81dd5 + ld a, [wd004] + cp $3b + jr z, .asm_81ddf + inc a + jr .asm_81ded + +.asm_81ddf + xor a + jr .asm_81ded + +.asm_81de2 + ld a, [wd004] + and a + jr z, .asm_81deb + dec a + jr .asm_81ded + +.asm_81deb + ld a, $3b + +.asm_81ded + ld [wd004], a + call Function81df4 + ret +; 81df4 + +Function81df4: ; 81df4 + hlcoord 10, 11 + call Function81e5e + hlcoord 10, 12 + call Function81e5e + hlcoord 10, 13 + call Function81e5e + hlcoord 10, 14 + call Function81e5e + ld a, [wd004] + inc a + ld [wd265], a + predef GetTMHMMove + ld a, [wd265] + ld [wd262], a + call GetMoveName + hlcoord 10, 12 + call PlaceString + ld a, [wd004] + call Function81e55 + ld [CurItem], a + predef CanLearnTMHMMove + ld a, c + and a + ld de, String_81e46 + jr nz, .asm_81e3f + ld de, String_81e4d + +.asm_81e3f + hlcoord 10, 14 + call PlaceString + ret +; 81e46 + +String_81e46: db "おぼえられる@" ; can be taught +String_81e4d: db "おぼえられない@" ; cannot be taught +; 81e55 + +Function81e55: ; 81e55 + cp $32 + jr c, .asm_81e5b +rept 2 + inc a +endr + +.asm_81e5b + add $bf + ret +; 81e5e + +Function81e5e: ; 81e5e + ld bc, $a + ld a, $6f + call ByteFill + ret +; 81e67 + +Function81e67: ; 81e67 + ld a, [wc608 + 10] + and $1f + ld e, a + ld a, [wc608 + 11] + and $7 + sla a + swap a + or e + ld e, a + ld a, [wc608 + 11] + and $18 + sla a + swap a + ld d, a + ld a, [wc608 + 12] + and $1f + sla a + sla a + or d + ld d, a + ld a, [wcf65] + and a + jr z, .asm_81e9c + ld a, e + ld [wc608 + 2], a + ld a, d + ld [wc608 + 3], a + ret + +.asm_81e9c + ld a, e + ld [wc608], a + ld a, d + ld [wc608 + 1], a + ret +; 81ea5 + +Function81ea5: ; 81ea5 + ld a, [de] + and $1f + ld [wc608 + 10], a + ld a, [de] + and $e0 + swap a + srl a + ld b, a + inc de + ld a, [de] + and $3 + swap a + srl a + or b + ld [wc608 + 11], a + ld a, [de] + and $7c + srl a + srl a + ld [wc608 + 12], a + ret +; 81eca + +Function81eca: ; 81eca + ld a, [wcf66] + inc a + ld l, a + ld h, $0 +rept 2 + add hl, hl +endr + ld de, OverworldMap + add hl, de + ld e, l + ld d, h + ld hl, wc608 + ld bc, 4 + call CopyBytes + ret +; 81ee3 + +Function81ee3: ; 81ee3 +.asm_81ee3 + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + xor a +rept 2 + ld [hli], a +endr + dec c + jr nz, .asm_81ee3 + ret +; 81efc + +Bank20_FillBoxWithByte: ; 81efc +; For some reason, we have another copy of FillBoxWithByte here +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + ret +; 81f0c + +Function81f0c: ; 81f0c + ld a, [wcfbe] + push af + set 7, a + ld [wcfbe], a + call Function81f1d + pop af + ld [wcfbe], a + ret +; 81f1d + +Function81f1d: ; 81f1d + ld a, [hl] + and $7 + ret z + ld b, a +.asm_81f22 + push bc + xor a + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + ld b, $10 +.asm_81f2c + ld e, $8 + ld a, [hli] + ld d, a +.asm_81f30 + bit 0, d + ld a, $10 + jr nz, .asm_81f38 + ld a, $20 + +.asm_81f38 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + rr d + dec e + jr nz, .asm_81f30 + dec b + jr nz, .asm_81f2c + ld a, $20 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + ld de, 7000 +.asm_81f51 + nop + nop + nop + dec de + ld a, d + or e + jr nz, .asm_81f51 + pop bc + dec b + jr nz, .asm_81f22 + ret +; 81f5e + +Function81f5e: ; 81f5e + ld a, $6f + hlcoord 10, 0 + ld [hl], a + hlcoord 15, 0 + ld [hl], a + hlcoord 1, 11 + ld [hl], a + hlcoord 1, 13 + ld [hl], a + hlcoord 1, 15 + ld [hl], a + ld a, [wJumptableIndex] + cp $3 + jr nz, .asm_81fc9 + ld a, [wcf64] + and a + jr z, .asm_81f8d + dec a + hlcoord 1, 11 + ld bc, 2 * SCREEN_WIDTH + call AddNTimes + ld [hl], $ed + +.asm_81f8d + ld a, [wcf65] + and a + jr z, .asm_81f98 + hlcoord 15, 0 + jr .asm_81f9b + +.asm_81f98 + hlcoord 10, 0 + +.asm_81f9b + ld [hl], $ed + ld b, $70 + ld c, $5 + ld hl, Sprites + ld de, wc608 + 10 + call .asm_81fb7 + ld de, wc608 + 11 + call .asm_81fb7 + ld de, wc608 + 12 + call .asm_81fb7 + ret + +.asm_81fb7 + ld a, b + ld [hli], a + ld a, [de] +rept 2 + add a +endr + add $18 + ld [hli], a + xor a + ld [hli], a + ld a, c + ld [hli], a + ld a, $10 + add b + ld b, a + inc c + ret + +.asm_81fc9 + call ClearSprites + ret +; 81fcd + +String_81fcd: ; 81fcd + db "おわりますか?" ; Are you finished? + next "はい", $f2, $f2, $f2, $7a ; YES (A) + next "いいえ", $f2, $f2, $7b ; NO (B) + db "@" +; 81fe3 + +DebugColorTestGFX: +INCBIN "gfx/debug/color_test.2bpp" + + +TilesetColorTest: + ret + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [wcf66], a + ld [hMapAnims], a + call ClearSprites + call OverworldTextModeSwitch + call Function3200 + xor a + ld [hBGMapMode], a + ld de, DebugColorTestGFX + $10 + ld hl, VTiles2 tile $6a + lb bc, BANK(DebugColorTestGFX), $16 + call Request2bpp + ld de, DebugColorTestGFX + ld hl, VTiles1 + lb bc, BANK(DebugColorTestGFX), 1 + call Request2bpp + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $6f + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $7 + call ByteFill + ld de, $15 + ld a, $6c + call Function821d2 + ld de, $1a + ld a, $6d + call Function821d2 + ld de, $1f + ld a, $6e + call Function821d2 + ld de, $24 + ld a, $6f + call Function821d2 + call Function821f4 + call Function8220f + call Function3200 + ld [wJumptableIndex], a + ld a, $40 + ld [hWY], a + ret +; 821d2 + +Function821d2: ; 821d2 + hlcoord 0, 0 + call Function821de + +Function821d8: ; 821d8 + ld a, [wcf64] + hlcoord 0, 0, AttrMap + +Function821de: ; 821de + add hl, de +rept 4 + ld [hli], a +endr + ld bc, $10 + add hl, bc +rept 4 + ld [hli], a +endr + ld bc, $10 + add hl, bc +rept 4 + ld [hli], a +endr + ret +; 821f4 + +Function821f4: ; 821f4 + hlcoord 2, 4 + call Function82203 + hlcoord 2, 6 + call Function82203 + hlcoord 2, 8 + +Function82203: ; 82203 + ld a, $6a + ld [hli], a + ld bc, $10 - 1 + ld a, $6b + call ByteFill + ret +; 8220f + +Function8220f: ; 8220f + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [wcf64] + ld l, a + ld h, $0 +rept 3 + add hl, hl +endr + ld de, wMapPals + add hl, de + ld de, wc608 + ld bc, 8 + call CopyBytes + ld de, wc608 + call Function81ea5 + pop af + ld [rSVBK], a + ret +; 82236 + + +Function82236: ; 82236 + ld hl, hJoyLast + ld a, [hl] + and SELECT + jr nz, .loop7 + ld a, [hl] + and B_BUTTON + jr nz, .asm_82299 + call Function822f0 + ret + +.loop7 + ld hl, wcf64 + ld a, [hl] + inc a + and $7 + cp $7 + jr nz, .asm_82253 + xor a + +.asm_82253 + ld [hl], a + ld de, $15 + call Function821d8 + ld de, $1a + call Function821d8 + ld de, $1f + call Function821d8 + ld de, $24 + call Function821d8 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld a, [wcf64] + ld bc, 8 + call AddNTimes + ld de, wc608 + ld bc, 8 + call CopyBytes + pop af + ld [rSVBK], a + ld a, $2 + ld [hBGMapMode], a + ld c, 3 + call DelayFrames + ld a, $1 + ld [hBGMapMode], a + ret + +.asm_82299 + call ClearSprites + ld a, [hWY] + xor $d0 + ld [hWY], a + ret +; 822a3 + +Function822a3: ; 822a3 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld a, [wcf64] + ld bc, 8 + call AddNTimes + ld e, l + ld d, h + ld hl, wc608 + ld bc, 8 + call CopyBytes + hlcoord 1, 0 + ld de, wc608 + call Function81ca7 + hlcoord 6, 0 + ld de, wc608 + 2 + call Function81ca7 + hlcoord 11, 0 + ld de, wc608 + 4 + call Function81ca7 + hlcoord 16, 0 + ld de, wc608 + 6 + call Function81ca7 + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + call DelayFrame + ret +; 822f0 + +Function822f0: ; 822f0 + ld a, [wcf65] + and 3 + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 82301 + +.jumptable: ; 82301 + dw Function82309 + dw Function82339 + dw Function8234b + dw Function8235d +; 82309 + +Function82309: ; 82309 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_LEFT + jr nz, .asm_8231c + ld a, [hl] + and D_RIGHT + jr nz, .asm_82322 + ret + +.asm_8231c + ld a, [wcf66] + dec a + jr .asm_82326 + +.asm_82322 + ld a, [wcf66] + inc a + +.asm_82326 + and $3 + ld [wcf66], a + ld e, a + ld d, $0 + ld hl, wc608 +rept 2 + add hl, de +endr + ld e, l + ld d, h + call Function81ea5 + ret + +Function82339: ; 82338 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 10 + jr Function82368 + +Function8234b: ; 8234b + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 11 + jr Function82368 + +Function8235d: ; 8235d + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 12 + +Function82368: ; 82368 + ld a, [hJoyLast] + and D_RIGHT + jr nz, .asm_82375 + ld a, [hJoyLast] + and D_LEFT + jr nz, .asm_8237c + ret + +.asm_82375 + ld a, [hl] + cp $1f + ret nc + inc [hl] + jr .asm_82380 + +.asm_8237c + ld a, [hl] + and a + ret z + dec [hl] + +.asm_82380 + call Function82391 + call Function822a3 + ret + +Function82387: ; 82387 + ld hl, wcf65 + dec [hl] + ret + +Function8238c: ; 8238c + ld hl, wcf65 + inc [hl] + ret +; 82391 + +Function82391: ; 82391 + ld a, [wc608 + 10] + and $1f + ld e, a + ld a, [wc608 + 11] + and $7 + sla a + swap a + or e + ld e, a + ld a, [wc608 + 11] + and $18 + sla a + swap a + ld d, a + ld a, [wc608 + 12] + and $1f + sla a + sla a + or d + ld d, a + ld a, [wcf66] + ld c, a + ld b, $0 + ld hl, wc608 +rept 2 + add hl, bc +endr + ld a, e + ld [hli], a + ld [hl], d + ret +; 823c6 + +Function823c6: ; 823c6 + ret + +Function823c7: ; 823c7 + ret +; 823c8 diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm index 49a7d82e1..74113b4a5 100644 --- a/engine/engine_flags.asm +++ b/engine/engine_flags.asm @@ -1,3 +1,90 @@ +EngineFlagAction:: ; 80430 +; Do action b on engine flag de +; +; b = 0: reset flag +; = 1: set flag +; > 1: check flag, result in c +; +; Setting/resetting does not return a result. + + +; 16-bit flag ids are considered invalid, but it's nice +; to know that the infrastructure is there. + + ld a, d + cp 0 + jr z, .ceiling + jr c, .read ; cp 0 can't set carry! + jr .invalid + +; There are only $a2 engine flags, so +; anything beyond that is invalid too. + +.ceiling + ld a, e + cp NUM_ENGINE_FLAGS + jr c, .read + +; Invalid flags are treated as flag 00. + +.invalid + xor a + ld e, a + ld d, a + +; Get this flag's location. + +.read + ld hl, EngineFlags +; location +rept 2 + add hl, de +endr +; bit + add hl, de + +; location + ld e, [hl] + inc hl + ld d, [hl] + inc hl +; bit + ld c, [hl] + +; What are we doing with this flag? + + ld a, b + cp 1 + jr c, .reset ; b = 0 + jr z, .set ; b = 1 + +; Return the given flag in c. +.check + ld a, [de] + and c + ld c, a + ret + +; Set the given flag. +.set + ld a, [de] + or c + ld [de], a + ret + +; Reset the given flag. +.reset + ld a, c + cpl ; AND all bits except the one in question + ld c, a + ld a, [de] + and c + ld [de], a + ret +; 80462 + + +EngineFlags: ; 80462 ; All locations are in WRAM bank 1. engine_flag: MACRO dwb \1, 1 << \2 diff --git a/engine/npctrade.asm b/engine/npctrade.asm new file mode 100755 index 000000000..97109cdd4 --- /dev/null +++ b/engine/npctrade.asm @@ -0,0 +1,620 @@ + +; Trade struct +TRADE_DIALOG EQU 0 +TRADE_GIVEMON EQU 1 +TRADE_GETMON EQU 2 +TRADE_NICK EQU 3 +TRADE_DVS EQU 14 +TRADE_ITEM EQU 16 +TRADE_OT_ID EQU 17 +TRADE_OT_NAME EQU 19 +TRADE_GENDER EQU 30 +TRADE_PADDING EQU 31 + +; Trade dialogs +TRADE_INTRO EQU 0 +TRADE_CANCEL EQU 1 +TRADE_WRONG EQU 2 +TRADE_COMPLETE EQU 3 +TRADE_AFTER EQU 4 + +NPCTrade:: ; fcba8 + ld a, e + ld [wJumptableIndex], a + call Functionfcc59 + ld b, CHECK_FLAG + call TradeFlagAction + ld a, TRADE_AFTER + jr nz, .done + + ld a, TRADE_INTRO + call PrintTradeText + + call YesNoBox + ld a, TRADE_CANCEL + jr c, .done + +; Select givemon from party + ld b, 6 + callba Function5001d + ld a, TRADE_CANCEL + jr c, .done + + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [CurPartySpecies] + cp [hl] + ld a, TRADE_WRONG + jr nz, .done + + call CheckTradeGender + ld a, TRADE_WRONG + jr c, .done + + ld b, SET_FLAG + call TradeFlagAction + + ld hl, ConnectLinkCableText + call PrintText + + call Functionfcc63 + call Functionfcc07 + call GetTradeMonNames + + ld hl, TradedForText + call PrintText + + call RestartMapMusic + + ld a, TRADE_COMPLETE + +.done + call PrintTradeText + ret +; fcc07 + +Functionfcc07: ; fcc07 + call DisableSpriteUpdates + ld a, [wJumptableIndex] + push af + ld a, [wcf64] + push af + predef Function28f24 + pop af + ld [wcf64], a + pop af + ld [wJumptableIndex], a + call Function2b74 + ret +; fcc23 + +CheckTradeGender: ; fcc23 + xor a + ld [MonType], a + + ld e, TRADE_GENDER + call GetTradeAttribute + ld a, [hl] + and a + jr z, .asm_fcc46 + cp 1 + jr z, .asm_fcc3e + + callba GetGender + jr nz, .asm_fcc48 + jr .asm_fcc46 + +.asm_fcc3e + callba GetGender + jr z, .asm_fcc48 + +.asm_fcc46 + and a + ret + +.asm_fcc48 + scf + ret +; fcc4a + +TradeFlagAction: ; fcc4a + ld hl, wd960 + ld a, [wJumptableIndex] + ld c, a + predef FlagPredef + ld a, c + and a + ret +; fcc59 + +Functionfcc59: ; fcc59 + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + ld [wcf64], a + ret +; fcc63 + +Functionfcc63: ; fcc63 + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [hl] + ld [wc6d0], a + + ld e, TRADE_GETMON + call GetTradeAttribute + ld a, [hl] + ld [wc702], a + + ld a, [wc6d0] + ld de, wc6d1 + call Functionfcde8 + call Functionfcdf4 + + ld a, [wc702] + ld de, wc703 + call Functionfcde8 + call Functionfcdf4 + + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call Functionfcdd7 + ld de, wc6f2 + call Functionfcdf4 + + ld hl, PlayerName + ld de, wc6e7 + call Functionfcdf4 + + ld hl, PartyMon1ID + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld de, wc6ff + call Functionfce0f + + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld de, wc6fd + call Functionfce0f + + ld hl, PartyMon1Species + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld b, h + ld c, l + callba GetCaughtGender + ld a, c + ld [wc701], a + + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + cp TRADE_COMPLETE + ld a, 1 + jr c, .asm_fcce6 + ld a, 2 +.asm_fcce6 + ld [wEnemyCharging], a + + ld hl, PartyMon1Level + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld a, [hl] + ld [CurPartyLevel], a + ld a, [wc702] + ld [CurPartySpecies], a + xor a + ld [MonType], a + ld [wPokemonWithdrawDepositParameter], a + callab Functione039 + predef TryAddMonToParty + + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + cp TRADE_COMPLETE + ld b, 0 + jr c, .asm_fcd1c + ld b, 1 +.asm_fcd1c + callba SetGiftPartyMonCaughtData + + ld e, TRADE_NICK + call GetTradeAttribute + ld de, wc70e + call Functionfcdf4 + + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + call Functionfcdde + ld hl, wc70e + call Functionfcdf4 + + ld e, TRADE_OT_NAME + call GetTradeAttribute + push hl + ld de, wc724 + call Functionfcdf4 + pop hl + ld de, wc719 + call Functionfcdf4 + + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call Functionfcdde + ld hl, wc724 + call Functionfcdf4 + + ld e, TRADE_DVS + call GetTradeAttribute + ld de, wEnemyTrappingMove + call Functionfce0f + + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + ld hl, wEnemyTrappingMove + call Functionfce0f + + ld e, TRADE_OT_ID + call GetTradeAttribute + ld de, wPlayerCharging + call Functionfce15 + + ld hl, PartyMon1ID + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + ld hl, wEnemyWrapCount + call Functionfce0f + + ld e, TRADE_ITEM + call GetTradeAttribute + push hl + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + pop hl + ld a, [hl] + ld [de], a + + push af + push bc + push de + push hl + ld a, [CurPartyMon] + push af + ld a, [PartyCount] + dec a + ld [CurPartyMon], a + callba Functione134 + pop af + ld [CurPartyMon], a + pop hl + pop de + pop bc + pop af + ret +; fcdc2 + + +GetTradeAttribute: ; 0xfcdc2 + ld d, 0 + push de + ld a, [wJumptableIndex] + and $f + swap a + ld e, a + ld d, 0 + ld hl, NPCTrades +rept 2 + add hl, de +endr + pop de + add hl, de + ret +; 0xfcdd7 + +Functionfcdd7: ; fcdd7 + ld a, [CurPartyMon] + call AddNTimes + ret +; fcdde + +Functionfcdde: ; fcdde + ld a, [PartyCount] + dec a + call AddNTimes + ld e, l + ld d, h + ret +; fcde8 + +Functionfcde8: ; fcde8 + push de + ld [wd265], a + call GetBasePokemonName + ld hl, StringBuffer1 + pop de + ret +; fcdf4 + +Functionfcdf4: ; fcdf4 + ld bc, NAME_LENGTH + call CopyBytes + ret +; fcdfb + +Functionfcdfb: ; fcdfb + ld bc, 4 + call CopyBytes + ld a, $50 + ld [de], a + ret +; fce05 + +Functionfce05: ; fce05 + ld bc, 3 + call CopyBytes + ld a, $50 + ld [de], a + ret +; fce0f + +Functionfce0f: ; fce0f + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ret +; fce15 + +Functionfce15: ; fce15 + ld a, [hli] + ld [de], a + dec de + ld a, [hl] + ld [de], a + ret +; fce1b + +GetTradeMonNames: ; fce1b + ld e, TRADE_GETMON + call GetTradeAttribute + ld a, [hl] + call Functionfcde8 + + ld de, StringBuffer2 + call Functionfcdf4 + + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [hl] + call Functionfcde8 + + ld de, wd050 + call Functionfcdf4 + + ld hl, StringBuffer1 +.loop + ld a, [hli] + cp "@" + jr nz, .loop + + dec hl + push hl + ld e, TRADE_GENDER + call GetTradeAttribute + ld a, [hl] + pop hl + and a + ret z + + cp 1 + ld a, "♂" + jr z, .done + ld a, "♀" +.done + ld [hli], a + ld [hl], "@" + ret +; fce58 + + +NPCTrades: ; fce58 + db 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, $54, $92, "MIKE@@@@@@@", 0, 0 + db 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, $1e, $bf, "KYLE@@@@@@@", 0, 0 + db 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, $05, $72, "TIM@@@@@@@@", 0, 0 + db 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, $1b, $01, "EMY@@@@@@@@", 2, 0 + db 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, $00, $3d, "CHRIS@@@@@@", 0, 0 + db 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, $7b, $67, "KIM@@@@@@@@", 0, 0 + db 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, $a2, $c3, "FOREST@@@@@", 0, 0 +; fcf38 + + +PrintTradeText: ; fcf38 + push af + call GetTradeMonNames + pop af + ld bc, 2 * 4 + ld hl, TradeTexts + call AddNTimes + ld a, [wcf64] + ld c, a +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; fcf53 + +TradeTexts: ; fcf53 +; intro + dw TradeIntroText1 + dw TradeIntroText2 + dw TradeIntroText3 + dw TradeIntroText4 + +; cancel + dw TradeCancelText1 + dw TradeCancelText2 + dw TradeCancelText3 + dw TradeCancelText4 + +; wrong mon + dw TradeWrongText1 + dw TradeWrongText2 + dw TradeWrongText3 + dw TradeWrongText4 + +; completed + dw TradeCompleteText1 + dw TradeCompleteText2 + dw TradeCompleteText3 + dw TradeCompleteText4 + +; after + dw TradeAfterText1 + dw TradeAfterText2 + dw TradeAfterText3 + dw TradeAfterText4 +; fcf7b + + +ConnectLinkCableText: ; 0xfcf7b + ; OK, connect the Game Link Cable. + text_jump UnknownText_0x1bd407 + db "@" +; 0xfcf80 + + +TradedForText: ; 0xfcf80 + ; traded givemon for getmon + text_jump UnknownText_0x1bd429 + start_asm + + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld hl, .done + ret + +.done + ; sound0x0A + ; interpret_data + text_jump UnknownText_0x1bd445 + db "@" +; 0xfcf97 + + +TradeIntroText1: ; 0xfcf97 + ; I collect #MON. Do you have @ ? Want to trade it for my @ ? + text_jump UnknownText_0x1bd449 + db "@" +; 0xfcf9c + +TradeCancelText1: ; 0xfcf9c + ; You don't want to trade? Aww… + text_jump UnknownText_0x1bd48c + db "@" +; 0xfcfa1 + +TradeWrongText1: ; 0xfcfa1 + ; Huh? That's not @ . What a letdown… + text_jump UnknownText_0x1bd4aa + db "@" +; 0xfcfa6 + +TradeCompleteText1: ; 0xfcfa6 + ; Yay! I got myself @ ! Thanks! + text_jump UnknownText_0x1bd4d2 + db "@" +; 0xfcfab + +TradeAfterText1: ; 0xfcfab + ; Hi, how's my old @ doing? + text_jump UnknownText_0x1bd4f4 + db "@" +; 0xfcfb0 + + +TradeIntroText2: +TradeIntroText3: ; 0xfcfb0 + ; Hi, I'm looking for this #MON. If you have @ , would you trade it for my @ ? + text_jump UnknownText_0x1bd512 + db "@" +; 0xfcfb5 + +TradeCancelText2: +TradeCancelText3: ; 0xfcfb5 + ; You don't have one either? Gee, that's really disappointing… + text_jump UnknownText_0x1bd565 + db "@" +; 0xfcfba + +TradeWrongText2: +TradeWrongText3: ; 0xfcfba + ; You don't have @ ? That's too bad, then. + text_jump UnknownText_0x1bd5a1 + db "@" +; 0xfcfbf + +TradeCompleteText2: ; 0xfcfbf + ; Great! Thank you! I finally got @ . + text_jump UnknownText_0x1bd5cc + db "@" +; 0xfcfc4 + +TradeAfterText2: ; 0xfcfc4 + ; Hi! The @ you traded me is doing great! + text_jump UnknownText_0x1bd5f4 + db "@" +; 0xfcfc9 + + +TradeIntroText4: ; 0xfcfc9 + ; 's cute, but I don't have it. Do you have @ ? Want to trade it for my @ ? + text_jump UnknownText_0x1bd621 + db "@" +; 0xfcfce + +TradeCancelText4: ; 0xfcfce + ; You don't want to trade? Oh, darn… + text_jump UnknownText_0x1bd673 + db "@" +; 0xfcfd3 + +TradeWrongText4: ; 0xfcfd3 + ; That's not @ . Please trade with me if you get one. + text_jump UnknownText_0x1bd696 + db "@" +; 0xfcfd8 + +TradeCompleteText4: ; 0xfcfd8 + ; Wow! Thank you! I always wanted @ ! + text_jump UnknownText_0x1bd6cd + db "@" +; 0xfcfdd + +TradeAfterText4: ; 0xfcfdd + ; How is that @ I traded you doing? Your @ 's so cute! + text_jump UnknownText_0x1bd6f5 + db "@" +; 0xfcfe2 + + +TradeCompleteText3: ; 0xfcfe2 + ; Uh? What happened? + text_jump UnknownText_0x1bd731 + db "@" +; 0xfcfe7 + +TradeAfterText3: ; 0xfcfe7 + ; Trading is so odd… I still have a lot to learn about it. + text_jump UnknownText_0x1bd745 + db "@" +; 0xfcfec diff --git a/engine/party_menu.asm b/engine/party_menu.asm index e81355c7a..356b07f8e 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -41,7 +41,7 @@ Function5003f: ; 5003f LoadPartyMenuGFX: ; 5004f call LoadFontsBattleExtra callab Function8ad1 ; engine/color.asm - callab InefficientlyClear121BytesAtwc300 + callab ClearSpriteAnims ret ; 5005f diff --git a/engine/printer.asm b/engine/printer.asm new file mode 100755 index 000000000..9c18d42fe --- /dev/null +++ b/engine/printer.asm @@ -0,0 +1,1493 @@ +Function84000: ; 84000 + ld hl, OverworldMap + lb bc, 4, 12 + xor a + call Function842ab + xor a + ld [rSB], a + ld [rSC], a + ld [wc2d5], a + ld hl, wc2d4 + set 0, [hl] + ld a, [GBPrinter] + ld [wcbfb], a + xor a + ld [wJumptableIndex], a + ret +; 84022 + +Function84022: ; 84022 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_84031 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 84031 + + +Jumptable_84031: ; 84031 (21:4031) + dw Function84077 + dw Function84143 + dw Function84120 + dw Function84099 + dw Function84180 + dw Function8412e + dw Function840c5 + dw Function84180 + dw Function84120 + dw Function840de + dw Function84180 + dw Function84120 + dw Function841a1 + dw Function84063 + dw Function8406d + dw Function84120 + dw Function84103 + dw Function84071 + dw Function841b0 + dw Function841b3 + + +Function84059: ; 84059 (21:4059) + ld hl, wJumptableIndex + inc [hl] + ret + +Function8405e: ; 8405e (21:405e) + ld hl, wJumptableIndex + dec [hl] + ret + +Function84063: ; 84063 (21:4063) + xor a + ld [wca89], a + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function8406d: ; 8406d (21:406d) + call Function84059 + ret + +Function84071: ; 84071 (21:4071) + ld a, $1 + ld [wJumptableIndex], a + ret + +Function84077: ; 84077 (21:4077) + call Function841fb + ld hl, Unknown_842b7 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + ld a, [wcf65] + ld [wca81], a + call Function84059 + call Function841c3 + ld a, $1 + ld [wcbf8], a + ret + +Function84099: ; 84099 (21:4099) + call Function841fb + ld hl, wca81 + ld a, [hl] + and a + jr z, Function840c5 + ld hl, Unknown_842c3 + call Function841e2 + call Function84260 + ld a, $80 + ld [wca8e], a + ld a, $2 + ld [wca8f], a + call Function84219 + call Function84059 + call Function841c3 + ld a, $2 + ld [wcbf8], a + ret + +Function840c5: ; 840c5 (21:40c5) + ld a, $6 + ld [wJumptableIndex], a + ld hl, Unknown_842c9 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + call Function84059 + call Function841c3 + ret + +Function840de: ; 840de (21:40de) + call Function841fb + ld hl, Unknown_842bd + call Function841e2 + call Function84249 + ld a, $4 + ld [wca8e], a + ld a, $0 + ld [wca8f], a + call Function84219 + call Function84059 + call Function841c3 + ld a, $3 + ld [wcbf8], a + ret + +Function84103: ; 84103 (21:4103) + call Function841fb + ld hl, Unknown_842b7 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + ld a, [wcf65] + ld [wca81], a + call Function84059 + call Function841c3 + ret + +Function84120: ; 84120 (21:4120) + ld hl, wca8b + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + call Function84059 + ret + +Function8412e: ; 8412e (21:412e) + ld hl, wca8b + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + ld hl, wca81 + dec [hl] + call Function8405e + call Function8405e + ret + +Function84143: ; 84143 (21:4143) + ld a, [wc2d5] + and a + ret nz + ld a, [wca88] + cp $ff + jr nz, .printer_connected + ld a, [wca89] + cp $ff + jr z, .printer_error + +.printer_connected + ld a, [wca88] + cp $81 + jr nz, .printer_error + ld a, [wca89] + cp $0 + jr nz, .printer_error + ld hl, wc2d4 + set 1, [hl] + ld a, $5 + ld [wca8a], a + call Function84059 + ret + +.printer_error + ld a, $ff + ld [wca88], a + ld [wca89], a + ld a, $e + ld [wJumptableIndex], a + ret + +Function84180: ; 84180 (21:4180) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f0 + jr nz, .asm_8419b + ld a, [wca89] + and $1 + jr nz, .asm_84197 + call Function84059 + ret +.asm_84197 + call Function8405e + ret +.asm_8419b + ld a, $12 + ld [wJumptableIndex], a + ret + +Function841a1: ; 841a1 (21:41a1) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f3 + ret nz + call Function84059 + ret + +Function841b0: ; 841b0 (21:41b0) + call Function84059 + +Function841b3: ; 841b3 (21:41b3) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f0 + ret nz + xor a + ld [wJumptableIndex], a + ret + +Function841c3: ; 841c3 (21:41c3) + ld a, [wc2d5] + and a + jr nz, Function841c3 + xor a + ld [wca8c], a + ld [wca8d], a + ld a, $1 + ld [wc2d5], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Function841e2: ; 841e2 (21:41e2) + ld a, [hli] + ld [wca82], a + ld a, [hli] + ld [wca83], a + ld a, [hli] + ld [wca84], a + ld a, [hli] + ld [wca85], a + ld a, [hli] + ld [wca86], a + ld a, [hl] + ld [wca87], a + ret + +Function841fb: ; 841fb (21:41fb) + xor a + ld hl, wca82 +rept 3 + ld [hli], a +endr + ld [hl], a + ld hl, wca86 + ld [hli], a + ld [hl], a + xor a + ld [wca8e], a + ld [wca8f], a + ld hl, OverworldMap + ld bc, $280 + call Function842ab + ret + +Function84219: ; 84219 (21:4219) + ld hl, 0 + ld bc, $4 + ld de, wca82 + call Function8423c + ld a, [wca8e] + ld c, a + ld a, [wca8f] + ld b, a + ld de, OverworldMap + call Function8423c + ld a, l + ld [wca86], a + ld a, h + ld [wca87], a + ret + +Function8423c: ; 8423c (21:423c) + ld a, [de] + inc de + add l + jr nc, .asm_84242 + inc h +.asm_84242 + ld l, a + dec bc + ld a, c + or b + jr nz, Function8423c + ret + +Function84249: ; 84249 (21:4249) + ld a, $1 + ld [OverworldMap], a + ld a, [wcbfa] + ld [wc801], a + ld a, $e4 + ld [wc802], a + ld a, [wcbfb] + ld [wc803], a + ret + +Function84260: ; 84260 (21:4260) + ld a, [wca81] + xor $ff + ld d, a + ld a, [wcf65] + inc a + add d + ld hl, wca90 + ld de, $28 +.asm_84271 + and a + jr z, .asm_84278 + add hl, de + dec a + jr .asm_84271 +.asm_84278 + ld e, l + ld d, h + ld hl, OverworldMap + ld c, $28 +.asm_8427f + ld a, [de] + inc de + push bc + push de + push hl + swap a + ld d, a + and $f0 + ld e, a + ld a, d + and $f + ld d, a + and $8 + ld a, d + jr nz, .asm_84297 + or $90 + jr .asm_84299 +.asm_84297 + or $80 +.asm_84299 + ld d, a + lb bc, $21, 1 + call Request2bpp + pop hl + ld de, $10 + add hl, de + pop de + pop bc + dec c + jr nz, .asm_8427f + ret + +Function842ab: ; 842ab + push de + ld e, a +.asm_842ad + ld [hl], e + inc hl + dec bc + ld a, c + or b + jr nz, .asm_842ad + ld a, e + pop de + ret +; 842b7 + +Unknown_842b7: db 1, 0, $00, 0, 1, 0 +Unknown_842bd: db 2, 0, $04, 0, 0, 0 +Unknown_842c3: db 4, 0, $80, 2, 0, 0 +Unknown_842c9: db 4, 0, $00, 0, 4, 0 +Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused +Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused +; 842db + + +Function842db:: ; 842db + ld a, [wc2d5] + add a + ld e, a + ld d, 0 + ld hl, Jumptable_842ea + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 842ea + + +Jumptable_842ea: ; 842ea (21:42ea) + dw Function8432f + dw Function84330 + dw Function84339 + dw Function84343 + dw Function8434d + dw Function84357 + dw Function84361 + dw Function8438b + dw Function84395 + dw Function8439f + dw Function843a8 + dw Function843b6 + dw Function84330 + dw Function843c0 + dw Function843c9 + dw Function843c9 + dw Function843c9 + dw Function843c0 + dw Function843c9 + dw Function8439f + dw Function843a8 + dw Function843e6 + dw Function84330 + dw Function843d2 + dw Function843c9 + dw Function843c9 + dw Function843c9 + dw Function843d2 + dw Function843c9 + dw Function8439f + dw Function843a8 + dw Function843b6 + + +Function8432a: ; 8432a (21:432a) + ld hl, wc2d5 + inc [hl] + ret + +Function8432f: ; 8432f (21:432f) + ret + +Function84330: ; 84330 (21:4330) + ld a, $33 + call Function843db + call Function8432a + ret + +Function84339: ; 84339 (21:4339) + ld a, [wca82] + call Function843db + call Function8432a + ret + +Function84343: ; 84343 (21:4343) + ld a, [wca83] + call Function843db + call Function8432a + ret + +Function8434d: ; 8434d (21:434d) + ld a, [wca84] + call Function843db + call Function8432a + ret + +Function84357: ; 84357 (21:4357) + ld a, [wca85] + call Function843db + call Function8432a + ret + +Function84361: ; 84361 (21:4361) + ld hl, wca8e + ld a, [hli] + ld d, [hl] + ld e, a + or d + jr z, .asm_84388 + dec de + ld [hl], d + dec hl + ld [hl], e + ld a, [wca8c] + ld e, a + ld a, [wca8d] + ld d, a + ld hl, OverworldMap + add hl, de + inc de + ld a, e + ld [wca8c], a + ld a, d + ld [wca8d], a + ld a, [hl] + call Function843db + ret +.asm_84388 + call Function8432a + +Function8438b: ; 8438b (21:438b) + ld a, [wca86] + call Function843db + call Function8432a + ret + +Function84395: ; 84395 (21:4395) + ld a, [wca87] + call Function843db + call Function8432a + ret + +Function8439f: ; 8439f (21:439f) + ld a, $0 + call Function843db + call Function8432a + ret + +Function843a8: ; 843a8 (21:43a8) + ld a, [rSB] + ld [wca88], a + ld a, $0 + call Function843db + call Function8432a + ret + +Function843b6: ; 843b6 (21:43b6) + ld a, [rSB] + ld [wca89], a + xor a + ld [wc2d5], a + ret + +Function843c0: ; 843c0 (21:43c0) + ld a, $f + call Function843db + call Function8432a + ret + +Function843c9: ; 843c9 (21:43c9) + ld a, $0 + call Function843db + call Function8432a + ret + +Function843d2: ; 843d2 (21:43d2) + ld a, $8 + call Function843db + call Function8432a + ret + +Function843db: ; 843db (21:43db) + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Function843e6: ; 843e6 (21:43e6) + ld a, [rSB] + ld [wca89], a + xor a + ld [wc2d5], a + ret + +Function843f0: ; 843f0 +.asm_843f0 + call JoyTextDelay + call Function846f6 + jr c, .asm_8440f + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_8440d + call Function84022 + call Function84757 + call Function84785 + call DelayFrame + jr .asm_843f0 + +.asm_8440d + and a + ret + +.asm_8440f + scf + ret +; 84411 + +Function84411: ; 84411 + xor a + ld [wc2d4], a + ld [wc2d5], a + ret +; 84419 + +Function84419: ; 84419 + push af + call Function84000 + pop af + ld [wcbfa], a + call Function84728 + ret +; 84425 + +Function84425: ; 84425 + call ReturnToMapFromSubmenu + call Function84753 + ret +; 8442c + +Function8442c: ; 8442c + ld a, [wcf65] + push af + ld hl, VTiles1 + ld de, FontInversed + lb bc, BANK(FontInversed), $80 + call Request1bpp + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + call Function84000 + ld a, $10 + ld [wcbfa], a + callba Function1dc1b0 + call ClearTileMap + ld a, $e4 + call DmgToCgbBGPals + call DelayFrame + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $8 + ld [wcf65], a + call Function84742 + call Function843f0 + jr c, .asm_8449d + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function84000 + ld a, $3 + ld [wcbfa], a + callba Function1dc213 + call Function84742 + ld a, $4 + ld [wcf65], a + call Function843f0 + +.asm_8449d + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + ld c, $8 +.asm_844ae + call LowVolume + call DelayFrame + dec c + jr nz, .asm_844ae + pop af + ld [wcf65], a + ret +; 844bc + +Function844bc: ; 844bc (21:44bc) + ld a, [wcf65] + push af + ld a, $9 + ld [wcf65], a + ld a, e + ld [wd004], a + ld a, d + ld [StartFlypoint], a + ld a, b + ld [EndFlypoint], a + ld a, c + ld [MovementBuffer], a + xor a + ld [$ffac], a + ld [wd003], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + xor a + ld [hBGMapMode], a + call Function84817 + ld a, $10 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function8486f + ld a, $0 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function84893 + ld a, $0 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function848b7 + ld a, $3 + call Function84419 + call Function84559 +.asm_84545 + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret + +Function84559: ; 84559 (21:4559) + call Function84742 + call Function843f0 + ret + +Function84560: ; 84560 + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + xor a + ld [hBGMapMode], a + call LoadTileMapToTempTileMap + callba Function16dac + ld a, $0 + call Function84419 + call Call_LoadTempTileMapToTileMap + call Function84742 + ld a, $9 + ld [wcf65], a +.asm_84597 + call JoyTextDelay + call Function846f6 + jr c, .asm_845c0 + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_845c0 + call Function84022 + ld a, [wJumptableIndex] + cp $2 + jr nc, .asm_845b5 + ld a, $3 + ld [wca81], a + +.asm_845b5 + call Function84757 + call Function84785 + call DelayFrame + jr .asm_84597 + +.asm_845c0 + pop af + ld [hVBlank], a + call Function84411 + call Call_LoadTempTileMapToTileMap + xor a + ld [rIF], a + pop af + ld [rIE], a + pop af + ld [wcf65], a + ret +; 845d4 + +Function845d4: ; 845d4 + call Function845db + call Function84425 + ret +; 845db + +Function845db: ; 845db + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + xor a + ld [hBGMapMode], a + ld a, $13 + call Function84419 + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $9 + ld [wcf65], a + call Function843f0 + pop af + ld [hVBlank], a + call Function84411 + call Function84735 + xor a + ld [rIF], a + pop af + ld [rIE], a + pop af + ld [wcf65], a + ret +; 8461a + +Function8461a: ; 8461a + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + xor a + ld [hBGMapMode], a + callba Function1dc381 + ld a, $10 + call Function84419 + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $8 + ld [wcf65], a + call Function84742 + call Function843f0 + jr c, .asm_84671 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + callba Function1dc47b + ld a, $3 + call Function84419 + ld a, $9 + ld [wcf65], a + call Function84742 + call Function843f0 + +.asm_84671 + pop af + ld [hVBlank], a + call Function84411 + call Function84735 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret +; 84688 + +_PrintDiploma: ; 84688 + ld a, [wcf65] + push af + callba Function1dd709 + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $10 + call Function84419 + call Function84742 + ld a, $9 + ld [wcf65], a + call Function843f0 + jr c, .asm_846e2 + call Function84411 + ld c, 12 + call DelayFrames + call LoadTileMapToTempTileMap + xor a + ld [hBGMapMode], a + callba Function1dd7ae + ld a, $3 + call Function84419 + call Call_LoadTempTileMapToTileMap + call Function84742 + ld a, $9 + ld [wcf65], a + call Function843f0 + +.asm_846e2 + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret +; 846f6 + +Function846f6: ; 846f6 + ld a, [hJoyDown] + and B_BUTTON + jr nz, .asm_846fe + and a + ret + +.asm_846fe + ld a, [wca80] + cp $c + jr nz, .asm_84722 +.asm_84705 + ld a, [wc2d5] + and a + jr nz, .asm_84705 + ld a, $16 + ld [wc2d5], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a +.asm_8471c + ld a, [wc2d5] + and a + jr nz, .asm_8471c + +.asm_84722 + ld a, $1 + ld [$ffac], a + scf + ret +; 84728 + +Function84728: ; 84728 + hlcoord 0, 0 + ld de, wca90 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret +; 84735 + +Function84735: ; 84735 + ld hl, wca90 + decoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret +; 84742 + +Function84742: ; 84742 + xor a + ld [hJoyReleased], a + ld [hJoyPressed], a + ld [hJoyDown], a + ld [hJoyLast], a + ret +; 8474c + +Function8474c: ; 8474c + ld de, MUSIC_PRINTER + call PlayMusic2 + ret +; 84753 + +Function84753: ; 84753 + call RestartMapMusic + ret +; 84757 + +Function84757: ; 84757 + ld a, [wca88] + cp -1 + jr nz, .printer_connected + ld a, [wca89] + cp -1 + jr z, .error_2 + +.printer_connected + ld a, [wca89] + and %11100000 + ret z ; no error + + bit 7, a + jr nz, .error_1 + bit 6, a + jr nz, .error_4 + ld a, 6 ; error 3 + jr .load_text_index + +.error_4 + ld a, 7 ; error 4 + jr .load_text_index + +.error_1 + ld a, 4 ; error 1 + jr .load_text_index + +.error_2 + ld a, 5 ; error 2 + +.load_text_index + ld [wcbf8], a + ret +; 84785 + +Function84785: ; 84785 + ld a, [wcbf8] + and a + ret z + push af + xor a + ld [hBGMapMode], a + hlcoord 0, 5 + lb bc, 10, 18 + call TextBox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 1, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 2, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ld [hBGMapMode], a + xor a + ld [wcbf8], a + ret +; 847bd + +Function847bd: ; 847bd + ld a, [wcbf8] + and a + ret z + push af + xor a + ld [hBGMapMode], a + hlcoord 2, 4 + lb bc, 13, 16 + call ClearBox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 4, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 4, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ld [hBGMapMode], a + xor a + ld [wcbf8], a + ret +; 847f5 + +String_PressBToCancel: + db "Press B to Cancel@" +; 84807 + +PrinterStatusStringPointers: ; 84807 + dw String_1dc275 ; @ + dw String_1dc276 ; CHECKING LINK + dw String_1dc289 ; TRANSMITTING + dw String_1dc29c ; PRINTING + dw String_1dc2ad ; error 1 + dw String_1dc2e2 ; error 2 + dw String_1dc317 ; error 3 + dw String_1dc34c ; error 4 +; 84817 + +Function84817: ; 84817 (21:4817) + xor a + ld [wd002], a + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + hlcoord 0, 0 + ld bc, 9 * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function849e9 + call Function849d7 + hlcoord 4, 3 + ld de, String_84865 + call PlaceString + ld a, [wd007] + ld bc, BOX_NAME_LENGTH + ld hl, wBoxNames + call AddNTimes + ld d, h + ld e, l + hlcoord 6, 5 + call PlaceString + ld a, $1 + call Function849c6 + hlcoord 2, 9 + ld c, $3 + call Function848e7 + ret +; 84865 (21:4865) + +String_84865: + db "#MON LIST@" +; 8486f + +Function8486f: ; 8486f (21:486f) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + call Function849e9 + ld a, [wd003] + and a + ret nz + ld a, $4 + call Function849c6 + hlcoord 2, 0 + ld c, $6 + call Function848e7 + ret + +Function84893: ; 84893 (21:4893) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + call Function849e9 + ld a, [wd003] + and a + ret nz + ld a, $a + call Function849c6 + hlcoord 2, 0 + ld c, $6 + call Function848e7 + ret + +Function848b7: ; 848b7 (21:48b7) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + hlcoord 1, 15 + lb bc, 2, 18 + call ClearBox + call Function849e9 + call Function849fc + ld a, [wd003] + and a + ret nz + ld a, $10 + call Function849c6 + hlcoord 2, 0 + ld c, $5 + call Function848e7 + ret + +Function848e7: ; 848e7 (21:48e7) + ld a, [EndFlypoint] + call GetSRAMBank + +Function848ed: ; 848ed (21:48ed) + ld a, c + and a + jp z, Function84986 + dec c + ld a, [de] + cp $ff + jp z, Function84981 + ld [wd265], a + ld [CurPartySpecies], a + push bc + push hl + push de + push hl + ld bc, $10 + ld a, " " + call ByteFill + pop hl + push hl + call GetBasePokemonName + pop hl + push hl + call PlaceString + ld a, [CurPartySpecies] + cp $fd + pop hl + jr z, .ok2 + ld bc, $b + add hl, bc + call Function8498a + ld bc, $9 + add hl, bc + ld a, $f3 + ld [hli], a + push hl + ld bc, $e + ld a, " " + call ByteFill + pop hl + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $372 + add hl, bc + ld bc, $b + ld a, [wd002] + call AddNTimes + ld e, l + ld d, h + pop hl + push hl + call PlaceString + pop hl + ld bc, $b + add hl, bc + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $35 + add hl, bc + ld bc, $20 + ld a, [wd002] + call AddNTimes + ld a, [hl] + pop hl + call Function383d +.ok2 + ld hl, wd002 + inc [hl] + pop de + pop hl + ld bc, $3c + add hl, bc + pop bc + inc de + jp Function848ed + +Function84981: ; 84981 (21:4981) + ld a, $1 + ld [wd003], a + +Function84986: ; 84986 (21:4986) + call CloseSRAM + ret + +Function8498a: ; 8498a (21:498a) + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $2b + add hl, bc + ld bc, $20 + ld a, [wd002] + call AddNTimes + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld a, [wd002] + ld [CurPartyMon], a + ld a, $3 + ld [MonType], a + callba GetGender + ld a, $7f + jr c, .asm_849c3 + ld a, $ef + jr nz, .asm_849c3 + ld a, $f5 +.asm_849c3 + pop hl + ld [hli], a + ret + +Function849c6: ; 849c6 (21:49c6) + push hl + ld e, a + ld d, $0 + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + add hl, de + ld e, l + ld d, h + pop hl + ret + +Function849d7: ; 849d7 (21:49d7) + hlcoord 0, 0 + ld a, "┌" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.asm_849e1 + ld [hli], a + dec c + jr nz, .asm_849e1 + ld a, "┐" + ld [hl], a + ret + +Function849e9: ; 849e9 (21:49e9) + hlcoord 0, 0 + ld de, SCREEN_WIDTH - 1 + ld c, SCREEN_HEIGHT +.asm_849f1 + ld a, "│" + ld [hl], a + add hl, de + ld a, "│" + ld [hli], a + dec c + jr nz, .asm_849f1 + ret + +Function849fc: ; 849fc (21:49fc) + hlcoord 0, 17 + ld a, "└" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.asm_84a06 + ld [hli], a + dec c + jr nz, .asm_84a06 + ld a, "┘" + ld [hl], a + ret + +Function84a0e: ; 84a0e (21:4a0e) + hlcoord 2, 0 + ld c, $6 +.asm_84a13 + push bc + push hl + ld de, String84a25 + call PlaceString + pop hl + ld bc, $3c + add hl, bc + pop bc + dec c + jr nz, .asm_84a13 + ret +; 84a25 (21:4a25) + +String84a25: ; 84a25 + db " ------@" +; 84a2e diff --git a/engine/scripting.asm b/engine/scripting.asm index 6d87c2f1b..945368e2b 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -2985,8 +2985,8 @@ Script_reloadmappart:: ; 97ae3 xor a ld [hBGMapMode], a call OverworldTextModeSwitch - call Function2914 - callba Function104061 + call GetMovementPermissions + callba ReloadMapPart call UpdateSprites ret ; 97af6 diff --git a/engine/sprites.asm b/engine/sprites.asm index b8b4b2a47..bf82659e8 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -174,7 +174,7 @@ endr ; Look up the third field from the table in the wc300 array (10x2). ; Take the value and load it in ld a, [de] - call LookUpInwDict_c300 + call LookUpInwSpriteAnimDict ld [hli], a pop de ; Set hl to field 4. Kinda pointless, because we're presumably already here. @@ -374,11 +374,11 @@ Function8d0ec: ; 8d0ec ret ; 8d109 -LookUpInwDict_c300: ; 8d109 -; a = wDict_c300[a] if a in wDict_c300 else 0 +LookUpInwSpriteAnimDict: ; 8d109 +; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0 push hl push bc - ld hl, wDict_c300 + ld hl, wSpriteAnimDict ld b, a ld c, 10 .loop @@ -2885,3 +2885,540 @@ endr Unknown_8e75d: ; 8e75d sine_wave $100 + + +Function8e79d: ; 8e79d + ld a, [hSGB] + ld de, GFX_8e7f4 + and a + jr z, .asm_8e7a8 + ld de, GFX_8e804 + +.asm_8e7a8 + ld hl, VTiles0 + lb bc, BANK(GFX_8e7f4), 1 + call Request2bpp + ld c, $8 + ld d, $0 +.asm_8e7b5 + push bc + call Function8e7c6 + call DelayFrame + pop bc +rept 2 + inc d +endr + dec c + jr nz, .asm_8e7b5 + call ClearSprites + ret +; 8e7c6 + +Function8e7c6: ; 8e7c6 + ld hl, Sprites + ld c, $8 +.asm_8e7cb + ld a, c + and a + ret z + dec c + ld a, c + sla a + sla a + sla a + push af + push de + push hl + call Function8e72c + pop hl + pop de + add $68 + ld [hli], a + pop af + push de + push hl + call Function8e72a + pop hl + pop de + add $54 + ld [hli], a + ld a, $0 + ld [hli], a + ld a, $6 + ld [hli], a + jr .asm_8e7cb +; 8e7f4 + +GFX_8e7f4: ; 8e7f4 +INCBIN "gfx/unknown/08e7f4.2bpp" +GFX_8e804: ; 8e804 +INCBIN "gfx/unknown/08e804.2bpp" + +ClearSpriteAnims: ; 8e814 + push hl + push de + push bc + push af + ld hl, wSpriteAnimDict + ld bc, wSpriteAnimsEnd - wSpriteAnimDict +.loop + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + pop af + pop bc + pop de + pop hl + ret +; 8e82b + +Function8e82b: ; 8e82b + ld a, e + call ReadMonMenuIcon + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld b, BANK(Icons) + ld c, 8 + ret +; 8e83f + +Function8e83f: ; 8e83f + push hl + push de + push bc + call Function8e849 + pop bc + pop de + pop hl + ret +; 8e849 + +Function8e849: ; 8e849 + ld d, 0 + ld hl, Jumptable_8e854 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8e854 + + +Jumptable_8e854: ; 8e854 (23:6854) + dw Function8e8d5 + dw Function8e961 + dw Function8e97d + dw Function8e99a + dw Function8e898 + dw Function8e8b1 + dw Function8e862 + + +Function8e862: ; 8e862 (23:6862) + call Function8e908 + call Function8e86c + call Function8e936 + ret + +Function8e86c: ; 8e86c (23:686c) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + jr z, .asm_8e890 + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e88e + ld a, $6 + jr .asm_8e892 +.asm_8e88e + ld a, $5 +.asm_8e890 + ld a, $4 +.asm_8e892 + ld hl, $1 + add hl, bc + ld [hl], a + ret + +Function8e898: ; 8e898 (23:6898) + call Function8e8d5 + ld hl, $2 + add hl, bc + ld a, $0 + ld [hl], a + ld hl, $4 + add hl, bc + ld a, $48 + ld [hl], a + ld hl, $5 + add hl, bc + ld a, $48 + ld [hl], a + ret + +Function8e8b1: ; 8e8b1 (23:68b1) + call Function8e908 + call Function8e936 + ld hl, $2 + add hl, bc + ld a, $0 + ld [hl], a + ld hl, $4 + add hl, bc + ld a, $18 + ld [hl], a + ld hl, $5 + add hl, bc + ld a, $60 + ld [hl], a + ld a, c + ld [wc608], a + ld a, b + ld [wc608 + 1], a + ret + +Function8e8d5: ; 8e8d5 (23:68d5) + call Function8e908 + call Function8e8df + call Function8e936 + ret + +Function8e8df: ; 8e8df (23:68df) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, $30 + call AddNTimes + pop bc + ld a, [hl] + and a + ret z + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e900 + ld a, $3 + jr .asm_8e902 +.asm_8e900 + ld a, $2 +.asm_8e902 + ld hl, $1 + add hl, bc + ld [hl], a + ret + +Function8e908: ; 8e908 (23:6908) + ld a, [wc3b7] + push af + ld a, [hObjectStructIndexBuffer] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call ReadMonMenuIcon + ld [CurIcon], a + call Function8e9db + ld a, [hObjectStructIndexBuffer] +; y coord +rept 4 + add a +endr + add $1c + ld d, a +; x coord + ld e, $10 +; type is partymon icon + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + pop af + ld hl, $3 + add hl, bc + ld [hl], a + ret + +Function8e936: ; 8e936 (23:6936) + push bc + ld a, [hObjectStructIndexBuffer] + ld b, a + call Function8e94c + ld a, b + pop bc + ld hl, $9 + add hl, bc + ld [hl], a + rlca + rlca + ld hl, $d + add hl, bc + ld [hl], a + ret + +Function8e94c: ; 8e94c (23:694c) + callba PlacePartymonHPBar + call GetHPPal + ld e, d + ld d, 0 + ld hl, Unknown_8e95e + add hl, de + ld b, [hl] + ret +; 8e95e (23:695e) + +Unknown_8e95e: ; 8e95e + db $00, $40, $80 +; 8e961 + +Function8e961: ; 8e961 (23:6961) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + lb de, $24, $20 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, $2 + add hl, bc + ld [hl], $0 + ret + +Function8e97d: ; 8e97d (23:697d) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + ld d, $1a + ld e, $24 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, $2 + add hl, bc + ld [hl], $0 + ret + +Function8e99a: ; 8e99a (23:699a) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + ld a, $62 + ld [wc3b7], a + call Function8e9db + ret + +GetSpeciesIcon: ; 8e9ac +; Load species icon into VRAM at tile a + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIconGFX + ret +; 8e9bc + + +Function8e9bc: ; 8e9bc (23:69bc) + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIcon_a + ret +; 8e9cc (23:69cc) + +Function8e9cc: ; 8e9cc + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + call GetIcon_de + ret +; 8e9db + +Function8e9db: ; 8e9db (23:69db) + ld a, [wc3b7] + +GetIconGFX: ; 8e9de + call GetIcon_a + ld de, $80 ; 8 tiles + add hl, de + ld de, HeldItemIcons + lb bc, BANK(HeldItemIcons), 2 + call GetGFXUnlessMobile + ld a, [wc3b7] + add 10 + ld [wc3b7], a + ret + +HeldItemIcons: +INCBIN "gfx/icon/mail.2bpp" +INCBIN "gfx/icon/item.2bpp" +; 8ea17 + +GetIcon_de: ; 8ea17 +; Load icon graphics into VRAM starting from tile de. + ld l, e + ld h, d + jr GetIcon + +GetIcon_a: ; 8ea1b +; Load icon graphics into VRAM starting from tile a. + ld l, a + ld h, 0 + +GetIcon: ; 8ea1e +; Load icon graphics into VRAM starting from tile hl. + +; One tile is 16 bytes long. +rept 4 + add hl, hl +endr + + ld de, VTiles0 + add hl, de + push hl + +; The icons are contiguous, in order and of the same +; size, so the pointer table is somewhat redundant. + ld a, [CurIcon] + push hl + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + + lb bc, BANK(Icons), 8 + call GetGFXUnlessMobile + + pop hl + ret +; 8ea3f + +GetGFXUnlessMobile: ; 8ea3f + ld a, [wLinkMode] + cp LINK_MOBILE + jp nz, Request2bpp + jp Get2bpp_2 +; 8ea4a + +Function8ea4a: ; 8ea4a + ld hl, wSpriteAnimationStructs + ld e, $6 + ld a, [MenuSelection2] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .loadwithtwo + ld a, $0 + jr .ok + +.loadwithtwo + ld a, $2 + +.ok + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], a + pop hl + +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea71 + +Function8ea71: ; 8ea71 + ld hl, wSpriteAnimationStructs + ld e, $6 +.loop + ld a, [hl] + and a + jr z, .zero + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], $1 + pop hl +.zero + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea8c (23:6a8c) + +Function8ea8c: ; 8ea8c + ld hl, wSpriteAnimationStructs + ld e, $6 + ld a, [wd0e3] + ld d, a +.asm_8ea95 + ld a, [hl] + and a + jr z, .asm_8eaab + cp d + jr z, .asm_8eaa0 + ld a, $3 + jr .asm_8eaa2 +.asm_8eaa0 + ld a, $2 +.asm_8eaa2 + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], a + pop hl +.asm_8eaab + ld bc, $10 + add hl, bc + dec e + jr nz, .asm_8ea95 + ret + +INCLUDE "menu/mon_icons.asm" diff --git a/engine/startmenu.asm b/engine/startmenu.asm index bcf2247af..ba5e2330c 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1761,7 +1761,7 @@ SetUpMoveScreenBG: ; 13172 xor a ld [hBGMapMode], a callba Functionfb571 - callba InefficientlyClear121BytesAtwc300 + callba ClearSpriteAnims ld a, [CurPartyMon] ld e, a ld d, $0 diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm new file mode 100755 index 000000000..4b5b1ef83 --- /dev/null +++ b/engine/time_capsule/conversion.asm @@ -0,0 +1,684 @@ +; These functions seem to be related to backwards compatibility + +Functionfb57e: ; fb57e + ld a, [wd003] + ld hl, OTPartyMon1Species + call GetPartyLocation + push hl + ld a, [wd003] + inc a + ld c, a + ld b, 0 + ld hl, OTPartyCount + add hl, bc + ld a, [hl] + pop hl + cp EGG + jr z, .asm_fb59c + cp [hl] + jr nz, .asm_fb5db + +.asm_fb59c + ld b, h + ld c, l + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + cp 101 + jr nc, .asm_fb5db + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr nz, .asm_fb5d9 + ld hl, OTPartySpecies + ld a, [wd003] + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + + ; Magnemite and Magneton's types changed + ; from Electric to Electric/Steel. + cp MAGNEMITE + jr z, .asm_fb5d9 + cp MAGNETON + jr z, .asm_fb5d9 + + ld [CurSpecies], a + call GetBaseData + ld hl, wcbea +rept 2 + add hl, bc +endr + ld a, [BaseType1] + cp [hl] + jr nz, .asm_fb5db + inc hl + ld a, [BaseType2] + cp [hl] + jr nz, .asm_fb5db + +.asm_fb5d9 + and a + ret + +.asm_fb5db + scf + ret +; fb5dd + +Functionfb5dd: ; fb5dd + ld a, [wd002] + ld d, a + ld a, [PartyCount] + ld b, a + ld c, $0 +.asm_fb5e7 + ld a, c + cp d + jr z, .asm_fb5f8 + push bc + ld a, c + ld hl, PartyMon1HP + call GetPartyLocation + pop bc + ld a, [hli] + or [hl] + jr nz, .asm_fb60b + +.asm_fb5f8 + inc c + dec b + jr nz, .asm_fb5e7 + ld a, [wd003] + ld hl, OTPartyMon1HP + call GetPartyLocation + ld a, [hli] + or [hl] + jr nz, .asm_fb60b + scf + ret + +.asm_fb60b + and a + ret +; fb60d + +Functionfb60d: ; fb60d + hlcoord 4, 0 + ld de, PlayerName + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 4, 8 + ld de, wd26b + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 7, 1 + ld de, PartySpecies + call Functionfb634 + hlcoord 7, 9 + ld de, OTPartySpecies + +Functionfb634: ; fb634 + ld c, $0 +.asm_fb636 + ld a, [de] + cp $ff + ret z + ld [wd265], a + push bc + push hl + push de + push hl + ld a, c + ld [hProduct], a + call GetPokemonName + pop hl + call PlaceString + pop de + inc de + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + inc c + jr .asm_fb636 +; fb656 + +KantoMonSpecials: ; fb656 +; The original special base stat for +; each Kanto monster from Red/Blue. + db 65 ; BULBASAUR + db 80 ; IVYSAUR + db 100 ; VENUSAUR + db 50 ; CHARMANDER + db 65 ; CHARMELEON + db 85 ; CHARIZARD + db 50 ; SQUIRTLE + db 65 ; WARTORTLE + db 85 ; BLASTOISE + db 20 ; CATERPIE + db 25 ; METAPOD + db 80 ; BUTTERFREE + db 20 ; WEEDLE + db 25 ; KAKUNA + db 45 ; BEEDRILL + db 35 ; PIDGEY + db 50 ; PIDGEOTTO + db 70 ; PIDGEOT + db 25 ; RATTATA + db 50 ; RATICATE + db 31 ; SPEAROW + db 61 ; FEAROW + db 40 ; EKANS + db 65 ; ARBOK + db 50 ; PIKACHU + db 90 ; RAICHU + db 30 ; SANDSHREW + db 55 ; SANDSLASH + db 40 ; NIDORAN_F + db 55 ; NIDORINA + db 75 ; NIDOQUEEN + db 40 ; NIDORAN_M + db 55 ; NIDORINO + db 75 ; NIDOKING + db 60 ; CLEFAIRY + db 85 ; CLEFABLE + db 65 ; VULPIX + db 100 ; NINETALES + db 25 ; JIGGLYPUFF + db 50 ; WIGGLYTUFF + db 40 ; ZUBAT + db 75 ; GOLBAT + db 75 ; ODDISH + db 85 ; GLOOM + db 100 ; VILEPLUME + db 55 ; PARAS + db 80 ; PARASECT + db 40 ; VENONAT + db 90 ; VENOMOTH + db 45 ; DIGLETT + db 70 ; DUGTRIO + db 40 ; MEOWTH + db 65 ; PERSIAN + db 50 ; PSYDUCK + db 80 ; GOLDUCK + db 35 ; MANKEY + db 60 ; PRIMEAPE + db 50 ; GROWLITHE + db 80 ; ARCANINE + db 40 ; POLIWAG + db 50 ; POLIWHIRL + db 70 ; POLIWRATH + db 105 ; ABRA + db 120 ; KADABRA + db 135 ; ALAKAZAM + db 35 ; MACHOP + db 50 ; MACHOKE + db 65 ; MACHAMP + db 70 ; BELLSPROUT + db 85 ; WEEPINBELL + db 100 ; VICTREEBEL + db 100 ; TENTACOOL + db 120 ; TENTACRUEL + db 30 ; GEODUDE + db 45 ; GRAVELER + db 55 ; GOLEM + db 65 ; PONYTA + db 80 ; RAPIDASH + db 40 ; SLOWPOKE + db 80 ; SLOWBRO + db 95 ; MAGNEMITE + db 120 ; MAGNETON + db 58 ; FARFETCH_D + db 35 ; DODUO + db 60 ; DODRIO + db 70 ; SEEL + db 95 ; DEWGONG + db 40 ; GRIMER + db 65 ; MUK + db 45 ; SHELLDER + db 85 ; CLOYSTER + db 100 ; GASTLY + db 115 ; HAUNTER + db 130 ; GENGAR + db 30 ; ONIX + db 90 ; DROWZEE + db 115 ; HYPNO + db 25 ; KRABBY + db 50 ; KINGLER + db 55 ; VOLTORB + db 80 ; ELECTRODE + db 60 ; EXEGGCUTE + db 125 ; EXEGGUTOR + db 40 ; CUBONE + db 50 ; MAROWAK + db 35 ; HITMONLEE + db 35 ; HITMONCHAN + db 60 ; LICKITUNG + db 60 ; KOFFING + db 85 ; WEEZING + db 30 ; RHYHORN + db 45 ; RHYDON + db 105 ; CHANSEY + db 100 ; TANGELA + db 40 ; KANGASKHAN + db 70 ; HORSEA + db 95 ; SEADRA + db 50 ; GOLDEEN + db 80 ; SEAKING + db 70 ; STARYU + db 100 ; STARMIE + db 100 ; MR__MIME + db 55 ; SCYTHER + db 95 ; JYNX + db 85 ; ELECTABUZZ + db 85 ; MAGMAR + db 55 ; PINSIR + db 70 ; TAUROS + db 20 ; MAGIKARP + db 100 ; GYARADOS + db 95 ; LAPRAS + db 48 ; DITTO + db 65 ; EEVEE + db 110 ; VAPOREON + db 110 ; JOLTEON + db 110 ; FLAREON + db 75 ; PORYGON + db 90 ; OMANYTE + db 115 ; OMASTAR + db 45 ; KABUTO + db 70 ; KABUTOPS + db 60 ; AERODACTYL + db 65 ; SNORLAX + db 125 ; ARTICUNO + db 125 ; ZAPDOS + db 125 ; MOLTRES + db 50 ; DRATINI + db 70 ; DRAGONAIR + db 100 ; DRAGONITE + db 154 ; MEWTWO + db 100 ; MEW +; fb6ed + + +INCLUDE "event/name_rater.asm" + + +PlaySlowCry: ; fb841 + ld a, [ScriptVar] + call LoadCryHeader + jr c, .done + + ld hl, CryPitch + ld a, [hli] + ld h, [hl] + ld l, a + ld bc, -$140 + add hl, bc + ld a, l + ld [CryPitch], a + ld a, h + ld [CryPitch + 1], a + ld hl, CryLength + ld a, [hli] + ld h, [hl] + ld l, a + ld bc, $60 + add hl, bc + ld a, l + ld [CryLength], a + ld a, h + ld [CryLength + 1], a + callba _PlayCryHeader + call WaitSFX + +.done + ret +; fb877 + +NewPokedexEntry: ; fb877 + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a + call LowVolume + call ClearBGPalettes + call ClearTileMap + call UpdateSprites + call ClearSprites + ld a, [wPokedexStatus] + push af + ld a, [hSCX] + add $5 + ld [hSCX], a + xor a + ld [wPokedexStatus], a + callba Function41a7f + call WaitPressAorB_BlinkCursor + ld a, $1 + ld [wPokedexStatus], a + callba Function4424d + call WaitPressAorB_BlinkCursor + pop af + ld [wPokedexStatus], a + call MaxVolume + call FadeToWhite + ld a, [hSCX] + add $fb + ld [hSCX], a + call Functionfb8c8 + pop af + ld [hMapAnims], a + ret +; fb8c8 + +Functionfb8c8: ; fb8c8 + call ClearTileMap + call LoadFontsExtra + call LoadStandardFont + callba Function40ab2 + call Function3200 + callba GetEnemyMonDVs + ld a, [hli] + ld [TempMonDVs], a + ld a, [hl] + ld [TempMonDVs + 1], a + ld b, SCGB_1C + call GetSGBLayout + call SetPalettes + ret +; fb8f1 + +ConvertMon_2to1: ; fb8f1 +; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265. + push bc + push hl + ld a, [wd265] + ld b, a + ld c, 0 + ld hl, Pokered_MonIndices +.loop + inc c + ld a, [hli] + cp b + jr nz, .loop + ld a, c + ld [wd265], a + pop hl + pop bc + ret +; fb908 + +ConvertMon_1to2: ; fb908 +; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265. + push bc + push hl + ld a, [wd265] + dec a + ld hl, Pokered_MonIndices + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + ld [wd265], a + pop hl + pop bc + ret +; fb91c + +Pokered_MonIndices: ; fb91c + db RHYDON + db KANGASKHAN + db NIDORAN_M + db CLEFAIRY + db SPEAROW + db VOLTORB + db NIDOKING + db SLOWBRO + db IVYSAUR + db EXEGGUTOR + db LICKITUNG + db EXEGGCUTE + db GRIMER + db GENGAR + db NIDORAN_F + db NIDOQUEEN + db CUBONE + db RHYHORN + db LAPRAS + db ARCANINE + db MEW + db GYARADOS + db SHELLDER + db TENTACOOL + db GASTLY + db SCYTHER + db STARYU + db BLASTOISE + db PINSIR + db TANGELA + db SCIZOR + db SHUCKLE + db GROWLITHE + db ONIX + db FEAROW + db PIDGEY + db SLOWPOKE + db KADABRA + db GRAVELER + db CHANSEY + db MACHOKE + db MR__MIME + db HITMONLEE + db HITMONCHAN + db ARBOK + db PARASECT + db PSYDUCK + db DROWZEE + db GOLEM + db HERACROSS + db MAGMAR + db HO_OH + db ELECTABUZZ + db MAGNETON + db KOFFING + db SNEASEL + db MANKEY + db SEEL + db DIGLETT + db TAUROS + db TEDDIURSA + db URSARING + db SLUGMA + db FARFETCH_D + db VENONAT + db DRAGONITE + db MAGCARGO + db SWINUB + db PILOSWINE + db DODUO + db POLIWAG + db JYNX + db MOLTRES + db ARTICUNO + db ZAPDOS + db DITTO + db MEOWTH + db KRABBY + db CORSOLA + db REMORAID + db OCTILLERY + db VULPIX + db NINETALES + db PIKACHU + db RAICHU + db DELIBIRD + db MANTINE + db DRATINI + db DRAGONAIR + db KABUTO + db KABUTOPS + db HORSEA + db SEADRA + db SKARMORY + db HOUNDOUR + db SANDSHREW + db SANDSLASH + db OMANYTE + db OMASTAR + db JIGGLYPUFF + db WIGGLYTUFF + db EEVEE + db FLAREON + db JOLTEON + db VAPOREON + db MACHOP + db ZUBAT + db EKANS + db PARAS + db POLIWHIRL + db POLIWRATH + db WEEDLE + db KAKUNA + db BEEDRILL + db HOUNDOOM + db DODRIO + db PRIMEAPE + db DUGTRIO + db VENOMOTH + db DEWGONG + db KINGDRA + db PHANPY + db CATERPIE + db METAPOD + db BUTTERFREE + db MACHAMP + db DONPHAN + db GOLDUCK + db HYPNO + db GOLBAT + db MEWTWO + db SNORLAX + db MAGIKARP + db PORYGON2 + db STANTLER + db MUK + db SMEARGLE + db KINGLER + db CLOYSTER + db TYROGUE + db ELECTRODE + db CLEFABLE + db WEEZING + db PERSIAN + db MAROWAK + db HITMONTOP + db HAUNTER + db ABRA + db ALAKAZAM + db PIDGEOTTO + db PIDGEOT + db STARMIE + db BULBASAUR + db VENUSAUR + db TENTACRUEL + db SMOOCHUM + db GOLDEEN + db SEAKING + db ELEKID + db MAGBY + db MILTANK + db BLISSEY + db PONYTA + db RAPIDASH + db RATTATA + db RATICATE + db NIDORINO + db NIDORINA + db GEODUDE + db PORYGON + db AERODACTYL + db RAIKOU + db MAGNEMITE + db ENTEI + db SUICUNE + db CHARMANDER + db SQUIRTLE + db CHARMELEON + db WARTORTLE + db CHARIZARD + db LARVITAR + db PUPITAR + db TYRANITAR + db LUGIA + db ODDISH + db GLOOM + db VILEPLUME + db BELLSPROUT + db WEEPINBELL + db VICTREEBEL + db CHIKORITA + db BAYLEEF + db MEGANIUM + db CYNDAQUIL + db QUILAVA + db TYPHLOSION + db TOTODILE + db CROCONAW + db FERALIGATR + db SENTRET + db FURRET + db HOOTHOOT + db NOCTOWL + db LEDYBA + db LEDIAN + db SPINARAK + db ARIADOS + db CROBAT + db CHINCHOU + db LANTURN + db PICHU + db CLEFFA + db IGGLYBUFF + db TOGEPI + db TOGETIC + db NATU + db XATU + db MAREEP + db FLAAFFY + db AMPHAROS + db BELLOSSOM + db MARILL + db AZUMARILL + db SUDOWOODO + db POLITOED + db HOPPIP + db SKIPLOOM + db JUMPLUFF + db AIPOM + db SUNKERN + db SUNFLORA + db YANMA + db WOOPER + db QUAGSIRE + db ESPEON + db UMBREON + db MURKROW + db SLOWKING + db MISDREAVUS + db UNOWN + db WOBBUFFET + db GIRAFARIG + db PINECO + db FORRETRESS + db DUNSPARCE + db GLIGAR + db STEELIX + db SNUBBULL + db GRANBULL + db QWILFISH + db WOBBUFFET + db WOBBUFFET +; fba18 diff --git a/engine/variables.asm b/engine/variables.asm new file mode 100755 index 000000000..a115e2c37 --- /dev/null +++ b/engine/variables.asm @@ -0,0 +1,150 @@ +_GetVarAction:: ; 80648 (20:4648) + ld a, c + cp NUM_VARS + jr c, .valid + xor a +.valid + ld c, a + ld b, 0 + ld hl, .VarActionTable +rept 3 + add hl, bc +endr + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld b, [hl] + ld a, b + and RETVAR_EXECUTE + jr nz, .call + ld a, b + and RETVAR_ADDR_DE + ret nz + ld a, [de] + jr .loadstringbuffer2 + +.call + call _de_ + ret + +.loadstringbuffer2: ; 8066c (20:466c) + ld de, StringBuffer2 + ld [de], a + ret +; 80671 (20:4671) + +.VarActionTable: ; 80671 +; $00: copy [de] to StringBuffer2 +; $40: return address in de +; $80: call function + dwb StringBuffer2, RETVAR_STRBUF2 + dwb PartyCount, RETVAR_STRBUF2 + dwb .BattleResult, RETVAR_EXECUTE + dwb BattleType, RETVAR_ADDR_DE + dwb TimeOfDay, RETVAR_STRBUF2 + dwb .CountCaughtMons, RETVAR_EXECUTE + dwb .CountSeenMons, RETVAR_EXECUTE + dwb .CountBadges, RETVAR_EXECUTE + dwb PlayerState, RETVAR_ADDR_DE + dwb .PlayerFacing, RETVAR_EXECUTE + dwb hHours, RETVAR_STRBUF2 + dwb .DayOfWeek, RETVAR_EXECUTE + dwb MapGroup, RETVAR_STRBUF2 + dwb MapNumber, RETVAR_STRBUF2 + dwb .UnownCaught, RETVAR_EXECUTE + dwb wPermission, RETVAR_STRBUF2 + dwb .BoxFreeSpace, RETVAR_EXECUTE + dwb wBugContestMinsRemaining, RETVAR_STRBUF2 + dwb XCoord, RETVAR_STRBUF2 + dwb YCoord, RETVAR_STRBUF2 + dwb wSpecialPhoneCallID, RETVAR_STRBUF2 + dwb wcf64, RETVAR_STRBUF2 + dwb wKurtApricornQuantity, RETVAR_STRBUF2 + dwb wCurrentCaller, RETVAR_ADDR_DE + dwb wBlueCardBalance, RETVAR_ADDR_DE + dwb wBuenasPassword, RETVAR_ADDR_DE + dwb wdc58, RETVAR_STRBUF2 + dwb NULL, RETVAR_STRBUF2 +; 806c5 + +.CountCaughtMons: ; 806c5 +; Caught mons. + ld hl, PokedexCaught + ld b, EndPokedexCaught - PokedexCaught + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806d3 + +.CountSeenMons: ; 806d3 +; Seen mons. + ld hl, PokedexSeen + ld b, EndPokedexSeen - PokedexSeen + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806e1 + +.CountBadges: ; 806e1 +; Number of owned badges. + ld hl, Badges + ld b, 2 + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806ef + +.PlayerFacing: ; 806ef +; The direction the player is facing. + ld a, [PlayerDirection] + and $c + rrca + rrca + jp .loadstringbuffer2 +; 806f9 + +.DayOfWeek: ; 806f9 +; The day of the week. + call GetWeekday + jp .loadstringbuffer2 +; 806ff + +.UnownCaught: ; 806ff +; Number of unique Unown caught. + call .count + ld a, b + jp .loadstringbuffer2 + +.count + ld hl, UnownDex + ld b, 0 +.loop + ld a, [hli] + and a + ret z + inc b + ld a, b + cp 26 + jr c, .loop + ret +; 80715 + +.BoxFreeSpace: ; 80715 +; Remaining slots in the current box. + ld a, BANK(sBoxCount) + call GetSRAMBank + ld hl, sBoxCount + ld a, MONS_PER_BOX + sub [hl] + ld b, a + call CloseSRAM + ld a, b + jp .loadstringbuffer2 +; 80728 + +.BattleResult: ; 80728 + ld a, [wBattleResult] + and $3f + jp .loadstringbuffer2 +; 80730 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 diff --git a/gfx/font.asm b/gfx/font.asm new file mode 100755 index 000000000..12e20e7f0 --- /dev/null +++ b/gfx/font.asm @@ -0,0 +1,236 @@ +FontExtra: +INCBIN "gfx/misc/font_extra.2bpp" + +Font: +INCBIN "gfx/misc/font.1bpp" + +FontBattleExtra: +INCBIN "gfx/misc/font_battle_extra.2bpp" + +Frames: ; f8800 +INCBIN "gfx/frames/1.1bpp" +INCBIN "gfx/frames/2.1bpp" +INCBIN "gfx/frames/3.1bpp" +INCBIN "gfx/frames/4.1bpp" +INCBIN "gfx/frames/5.1bpp" +INCBIN "gfx/frames/6.1bpp" +INCBIN "gfx/frames/7.1bpp" +INCBIN "gfx/frames/8.1bpp" +INCBIN "gfx/frames/9.1bpp" +; f89b0 + +; TODO: Various misc graphics here. + +GFX_f89b0: ; f89b0 +INCBIN "gfx/unknown/0f89b0.2bpp" +; f8a90 + +ShinyIcon: ; f8a90 +INCBIN "gfx/stats/shiny.2bpp" + +GFX_f8aa0: ; f8aa0 +INCBIN "gfx/unknown/0f8aa0.2bpp" +; f8ac0 + +EnemyHPBarBorderGFX: ; f8ac0 +INCBIN "gfx/battle/enemy_hp_bar_border.1bpp" +; f8ae0 + +HPExpBarBorderGFX: ; f8ae0 +INCBIN "gfx/battle/hp_exp_bar_border.1bpp" +; f8b10 + +ExpBarGFX: ; f8b10 +INCBIN "gfx/battle/expbar.2bpp" +; f8ba0 + +TownMapGFX: ; f8ba0 +INCBIN "gfx/misc/town_map.2bpp.lz" +; f8ea4 + +GFX_f8ea4: ; unused +INCBIN "gfx/unknown/0f8ea4.2bpp" +; f8f24 + +OverworldPhoneIconGFX: ; f8f24 +INCBIN "gfx/mobile/overworld_phone_icon.2bpp" +; f8f34 + +GFX_f8f34: ; unused +INCBIN "gfx/unknown/0f8f34.2bpp" +; f9204 + +TextBoxSpaceGFX: ; f9204 +INCBIN "gfx/frames/space.2bpp" +; f9214 + +MobilePhoneTilesGFX: ; f9214 +INCBIN "gfx/mobile/phone_tiles.2bpp" +; f9344 + +MapEntryFrameGFX: ; f9344 +INCBIN "gfx/frames/map_entry_sign.2bpp" +; f9424 + +GFX_f9424: ; f9424 +INCBIN "gfx/unknown/0f9424.2bpp" +; f9434 + +Footprints: ; f9434 +INCBIN "gfx/misc/footprints.1bpp" +; fb434 + +; This and the following two functions are unreferenced. +Unknown_fb434: + db 0 + +Functionfb435: ; 4b435 + ld a, [Unknown_fb434] + and a + jp nz, Get1bpp_2 + jp Get1bpp +; fb43f + +Functionfb43f: ; fb43f + ld a, [Unknown_fb434] + and a + jp nz, Get2bpp_2 + jp Get2bpp +; End unreferenced block +; fb449 + +_LoadStandardFont:: ; fb449 + ld de, Font + ld hl, VTiles1 + lb bc, BANK(Font), $80 + ld a, [rLCDC] + bit 7, a + jp z, Copy1bpp + + ld de, Font + ld hl, VTiles1 + lb bc, BANK(Font), $20 + call Get1bpp_2 + ld de, Font + $20 * LEN_1BPP_TILE + ld hl, VTiles1 tile $20 + lb bc, BANK(Font), $20 + call Get1bpp_2 + ld de, Font + $40 * LEN_1BPP_TILE + ld hl, VTiles1 tile $40 + lb bc, BANK(Font), $20 + call Get1bpp_2 + ld de, Font + $60 * LEN_1BPP_TILE + ld hl, VTiles1 tile $60 + lb bc, BANK(Font), $20 + call Get1bpp_2 + ret +; fb48a + +_LoadFontsExtra1:: ; fb48a + ld de, MobilePhoneTilesGFX + ld hl, VTiles2 tile $60 + lb bc, BANK(MobilePhoneTilesGFX), 1 + call Get1bpp_2 + ld de, OverworldPhoneIconGFX + ld hl, VTiles2 tile $62 + lb bc, BANK(OverworldPhoneIconGFX), 1 + call Get2bpp_2 + ld de, FontExtra + 3 * LEN_2BPP_TILE + ld hl, VTiles2 tile $63 + lb bc, BANK(FontExtra), $16 + call Get2bpp_2 + jr LoadFrame +; fb4b0 + +_LoadFontsExtra2:: ; fb4b0 + ld de, GFX_f9424 + ld hl, VTiles2 tile $61 + ld b, BANK(GFX_f9424) + ld c, 1 + call Get2bpp_2 + ret +; fb4be + +_LoadFontsBattleExtra:: ; fb4be + ld de, FontBattleExtra + ld hl, VTiles2 tile $60 + lb bc, BANK(FontBattleExtra), $19 + call Get2bpp_2 + jr LoadFrame +; fb4cc + +LoadFrame: ; fb4cc + ld a, [TextBoxFrame] + and 7 + ld bc, TILES_PER_FRAME * LEN_1BPP_TILE + ld hl, Frames + call AddNTimes + ld d, h + ld e, l + ld hl, VTiles2 tile $79 + lb bc, BANK(Frames), TILES_PER_FRAME + call Get1bpp_2 + ld hl, VTiles2 tile $7f + ld de, TextBoxSpaceGFX + lb bc, BANK(TextBoxSpaceGFX), 1 + call Get1bpp_2 + ret +; fb4f2 + +LoadBattleFontsHPBar: ; fb4f2 + ld de, FontBattleExtra + ld hl, VTiles2 tile $60 + lb bc, BANK(FontBattleExtra), $c + call Get2bpp_2 + ld hl, VTiles2 tile $70 + ld de, FontBattleExtra + $10 * LEN_2BPP_TILE + lb bc, BANK(FontBattleExtra), 3 + call Get2bpp_2 + call LoadFrame + +LoadHPBar: ; fb50d + ld de, EnemyHPBarBorderGFX + ld hl, VTiles2 tile $6c + lb bc, BANK(EnemyHPBarBorderGFX), 4 + call Get1bpp_2 + ld de, HPExpBarBorderGFX + ld hl, VTiles2 tile $73 + lb bc, BANK(HPExpBarBorderGFX), 6 + call Get1bpp_2 + ld de, ExpBarGFX + ld hl, VTiles2 tile $55 + lb bc, BANK(ExpBarGFX), 9 + call Get2bpp_2 + ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE + ld hl, VTiles2 tile $5e + lb bc, BANK(MobilePhoneTilesGFX), 2 + call Get2bpp_2 + ret +; fb53e + +Functionfb53e: ; fb53e + call _LoadFontsBattleExtra + ld de, EnemyHPBarBorderGFX + ld hl, VTiles2 tile $6c + lb bc, BANK(EnemyHPBarBorderGFX), 4 + call Get1bpp_2 + ld de, HPExpBarBorderGFX + ld hl, VTiles2 tile $78 + lb bc, BANK(HPExpBarBorderGFX), 1 + call Get1bpp_2 + ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE + ld hl, VTiles2 tile $76 + lb bc, BANK(HPExpBarBorderGFX), 2 + call Get1bpp_2 + ld de, ExpBarGFX + ld hl, VTiles2 tile $55 + lb bc, BANK(ExpBarGFX), 8 + call Get2bpp_2 + +Functionfb571: ; fb571 + ld de, GFX_f89b0 + ld hl, VTiles2 tile $31 + lb bc, BANK(GFX_f89b0), $11 + call Get2bpp_2 + ret +; fb57e diff --git a/gfx/mail.asm b/gfx/mail.asm new file mode 100755 index 000000000..1276f3fa1 --- /dev/null +++ b/gfx/mail.asm @@ -0,0 +1,1088 @@ +ReadPartyMonMail: ; b9229 + ld a, [CurPartyMon] + ld hl, sPartyMail + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld d, h + ld e, l +ReadAnyMail: ; b9237 + push de + call ClearBGPalettes + call ClearSprites + call ClearTileMap + call DisableLCD + call LoadFontsExtra + pop de + push de + ld a, BANK(sPartyMail) + call GetSRAMBank + callba Function1de5c8 + call CloseSRAM + ld a, c + ld de, GFX_1de5e6 + or a + jr z, .asm_b9268 + ld de, GFX_1de9e6 + sub $3 + jr c, .asm_b9268 + ld de, GFX_1dede6 + +.asm_b9268 + ld hl, VTiles1 + lb bc, BANK(GFX_1de5e6), $80 + call Get1bpp + pop de + call Functionb92b8 + call EnableLCD + call WaitBGMap + ld a, [wd1ec] + ld e, a + callba Function8cb4 + call SetPalettes + xor a + ld [hJoyPressed], a + call Functionb929a + call ClearBGPalettes + call DisableLCD + call LoadStandardFont + jp EnableLCD +; b929a + +Functionb929a: ; b929a +.asm_b929a + call GetJoypad + ld a, [hJoyPressed] + and A_BUTTON | B_BUTTON | START + jr z, .asm_b929a + and START + jr nz, .asm_b92a8 + ret + +.asm_b92a8 + ld a, [wJumptableIndex] + push af + callab Function845d4 + pop af + ld [wJumptableIndex], a + jr .asm_b929a +; b92b8 + +Functionb92b8: ; b92b8 + ld h, d + ld l, e + push hl + ld a, $0 + call GetSRAMBank + ld de, $2b + add hl, de + ld a, [hli] + ld [Buffer1], a + ld a, [hli] + ld [Buffer2], a + ld a, [hli] + ld [CurPartySpecies], a + ld b, [hl] + call CloseSRAM + ld hl, MailGFXPointers + ld c, 0 +.asm_b92d9 + ld a, [hli] + cp b + jr z, .asm_b92ea + cp $ff + jr z, .asm_b92e6 + inc c +rept 2 + inc hl +endr + jr .asm_b92d9 + +.asm_b92e6 + ld hl, MailGFXPointers + inc hl + +.asm_b92ea + ld a, c + ld [wd1ec], a + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .done + pop bc + push de + jp [hl] +.done + ret +; b92f8 + +MailGFXPointers: ; b92f8 + dbw FLOWER_MAIL, LoadFlowerMailGFX + dbw SURF_MAIL, LoadSurfMailGFX + dbw LITEBLUEMAIL, LoadLiteBlueMailGFX + dbw PORTRAITMAIL, LoadPortraitMailGFX + dbw LOVELY_MAIL, LoadLovelyMailGFX + dbw EON_MAIL, LoadEonMailGFX + dbw MORPH_MAIL, LoadMorphMailGFX + dbw BLUESKY_MAIL, LoadBlueSkyMailGFX + dbw MUSIC_MAIL, LoadMusicMailGFX + dbw MIRAGE_MAIL, LoadMirageMailGFX + db $ff +; b9317 + +LoadSurfMailGFX: ; b9317 + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9d46 + ld c, $40 + call Functionb9915 + ld de, MailLaprasGFX + ld c, $30 + call Functionb991e + ld de, Unknown_b994e + ld c, $8 + call Functionb9915 + jr Functionb9351 + +LoadLiteBlueMailGFX: ; b9335 + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9dc6 + ld c, $40 + call Functionb9915 + ld de, MailDratiniGFX + ld c, $30 + call Functionb991e + ld de, Unknown_b995e + ld c, $8 + call Functionb9915 + +Functionb9351: ; b9351 + ld de, Unknown_b9976 + ld c, $10 + call Functionb9915 + ld c, $10 + call Functionb990c + ld de, Unknown_b9c3e + ld c, $40 + call Functionb990c + ld c, $40 + call Functionb9915 + call Functionb9858 + hlcoord 2, 15 + ld a, $3f + call Functionb98d4 + ld a, $39 + hlcoord 15, 14 + call Functionb98fc + ld a, $44 + hlcoord 2, 2 + call Functionb98ee + hlcoord 15, 11 + call Functionb98ee + ld a, $4c + hlcoord 3, 12 + call Functionb98ee + hlcoord 15, 2 + call Functionb98ee + ld a, $50 + hlcoord 6, 3 + call Functionb98ee + ld a, $40 + hlcoord 13, 2 + ld [hli], a + hlcoord 6, 14 + ld [hl], a + ld a, $41 + hlcoord 4, 5 + ld [hli], a + hlcoord 17, 5 + ld [hli], a + hlcoord 13, 12 + ld [hl], a + ld a, $42 + hlcoord 9, 2 + ld [hli], a + hlcoord 14, 5 + ld [hli], a + hlcoord 3, 10 + ld [hl], a + ld a, $43 + hlcoord 6, 11 + ld [hli], a + pop hl + jp Functionb9803 +; b93d2 + +LoadEonMailGFX: ; b93d2 + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b997e + ld c, $8 + call Functionb9915 + ld de, Unknown_b998e + ld c, $8 + call Functionb990c + ld de, Unknown_b998e + ld c, $8 + call Functionb990c + ld de, Unknown_b997e + ld c, $8 + call Functionb9915 + ld de, Unknown_b9d76 + ld c, $8 + call Functionb9915 + ld de, MailPikaGFX + ld c, $30 + call Functionb991e + ld hl, VTiles2 tile $3d + ld de, Unknown_b9c9e + ld c, $20 + call Functionb990c + ld de, Unknown_b998e + ld c, $8 + call Functionb9915 + ld a, $31 + hlcoord 0, 0 + call Functionb98a8 + hlcoord 1, 17 + call Functionb98a8 + ld a, $33 + hlcoord 0, 1 + call Functionb98ba + hlcoord 19, 0 + call Functionb98ba + hlcoord 2, 15 + ld a, $35 + call Functionb98d4 + inc a + hlcoord 15, 14 + call Functionb98fc + call Functionb9491 + pop hl + jp Functionb9803 +; b944b + +LoadLovelyMailGFX: ; b944b + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9e26 + ld c, $28 + call Functionb9915 + ld de, MailPoliwagGFX + ld c, $30 + call Functionb991e + ld de, Unknown_b9966 + ld c, $8 + call Functionb9915 + ld de, Unknown_b9c5e + ld c, $20 + call Functionb9915 + ld de, Unknown_b996e + ld c, $8 + call Functionb990c + call Functionb987b + hlcoord 2, 15 + ld a, $3c + call Functionb98d4 + ld a, $36 + hlcoord 15, 14 + call Functionb98fc + call Functionb9491 + pop hl + jp Functionb9803 +; b9491 + +Functionb9491: ; b9491 + ld a, $3d + hlcoord 2, 2 + call Functionb98ee + hlcoord 16, 2 + call Functionb98ee + hlcoord 9, 4 + call Functionb98ee + hlcoord 2, 11 + call Functionb98ee + hlcoord 6, 12 + call Functionb98ee + hlcoord 12, 11 + call Functionb98ee + ld a, $41 + hlcoord 5, 4 + ld [hl], a + hlcoord 6, 2 + ld [hl], a + hlcoord 12, 4 + ld [hl], a + hlcoord 14, 2 + ld [hl], a + hlcoord 3, 13 + ld [hl], a + hlcoord 9, 11 + ld [hl], a + hlcoord 16, 12 + ld [hl], a + ret +; b94d6 + +LoadMorphMailGFX: ; b94d6 + push bc + ld hl, VTiles2 tile $31 + ld bc, $28 + call Functionb97f8 + ld de, Unknown_b9c96 + ld c, 8 + call Functionb9915 + ld de, Unknown_b9c7e + ld c, 8 + call Functionb9915 + ld de, Unknown_b993e + ld c, 8 + call Functionb9915 + ld de, Unknown_b997e + ld c, 8 + call Functionb990c + ld de, Unknown_b9926 + ld c, 8 + call Functionb9915 + ld de, MailDittoGFX + ld c, $30 + call Functionb991e + call Functionb987b + ld a, $31 + hlcoord 1, 1 + call Functionb98ee + hlcoord 17, 15 + call Functionb98ee + hlcoord 1, 3 + ld [hl], a + hlcoord 3, 1 + ld [hl], a + hlcoord 16, 16 + ld [hl], a + hlcoord 18, 14 + ld [hl], a + ld a, $36 + hlcoord 1, 4 + ld [hl], a + hlcoord 2, 3 + ld [hl], a + hlcoord 3, 2 + ld [hl], a + hlcoord 4, 1 + ld [hl], a + inc a + hlcoord 15, 16 + ld [hl], a + hlcoord 16, 15 + ld [hl], a + hlcoord 17, 14 + ld [hl], a + hlcoord 18, 13 + ld [hl], a + inc a + hlcoord 2, 15 + ld b, $e + call Functionb98de + inc a + hlcoord 2, 11 + call Functionb98d4 + hlcoord 2, 5 + call Functionb98d4 + inc a + hlcoord 6, 1 + call Functionb98d0 + hlcoord 1, 16 + call Functionb98d0 + inc a + hlcoord 3, 13 + call Functionb98fc + pop hl + jp Functionb9803 +; b9582 + +LoadBlueSkyMailGFX: ; b9582 + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b997e + ld c, $8 + call Functionb9915 + ld a, $ff + ld bc, $10 + call ByteFill + ld de, Unknown_b992e + ld c, $8 + call Functionb991e + ld de, MailDragoniteGFX + ld c, $b8 + call Functionb991e + ld de, MailCloudGFX + ld c, $30 + call Functionb990c + ld de, Unknown_b9db6 + ld c, $8 + call Functionb990c + ld de, MailCloudGFX + ld c, $8 + call Functionb990c + ld de, Unknown_b9d26 + ld c, $10 + call Functionb990c + ld de, Unknown_b9d3e + ld c, $8 + call Functionb990c + ld a, $31 + hlcoord 0, 0 + call Functionb98dc + hlcoord 0, 1 + call Functionb98e3 + hlcoord 19, 1 + call Functionb98e3 + inc a + hlcoord 0, 17 + call Functionb98dc + inc a + hlcoord 0, 16 + call Functionb98dc + inc a + hlcoord 2, 2 + call Functionb9636 + hlcoord 3, 3 + call Functionb9636 + hlcoord 4, 4 + call Functionb9636 + dec hl + ld [hl], $7f + dec a + hlcoord 15, 14 + call Functionb98ee + add $4 + hlcoord 15, 16 + ld [hli], a + inc a + ld [hl], a + inc a + push af + hlcoord 12, 1 + call Functionb98fc + pop af + hlcoord 15, 4 + call Functionb98fc + inc a + hlcoord 2, 11 + call Functionb98d4 + inc a + hlcoord 10, 3 + call Functionb98ee + pop hl + jp Functionb9803 +; b9636 + +Functionb9636: ; b9636 + ld b, $6 +.asm_b9638 + ld [hli], a + inc a + dec b + jr nz, .asm_b9638 + ret +; b963e + +LoadFlowerMailGFX: ; b963e + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9d86 + ld c, $40 + call Functionb990c + ld de, MailOddishGFX + ld c, $20 + call Functionb991e + ld de, Unknown_b9db6 + ld c, $8 + call Functionb9915 + ld de, Unknown_b9cbe + ld c, $20 + call Functionb990c + ld c, $20 + call Functionb9915 + call Functionb9858 + hlcoord 2, 15 + ld a, $3d + call Functionb98d4 + ld a, $39 + hlcoord 16, 13 + call Functionb98ee + hlcoord 2, 13 + call Functionb98ee + ld a, $3e + hlcoord 2, 2 + call Functionb98ee + hlcoord 5, 3 + call Functionb98ee + hlcoord 10, 2 + call Functionb98ee + hlcoord 16, 3 + call Functionb98ee + hlcoord 5, 11 + call Functionb98ee + hlcoord 16, 10 + call Functionb98ee + ld a, $42 + hlcoord 3, 4 + call Functionb98ee + hlcoord 12, 3 + call Functionb98ee + hlcoord 14, 2 + call Functionb98ee + hlcoord 2, 10 + call Functionb98ee + hlcoord 14, 11 + call Functionb98ee + pop hl + jp Functionb9803 +; b96ca + +LoadPortraitMailGFX: ; b96ca + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9e4e + ld c, $28 + call Functionb9915 + ld de, Unknown_b995e + ld c, $8 + call Functionb9915 + ld hl, VTiles2 tile $3d + ld de, Unknown_b9bfe + ld c, $20 + call Functionb990c + ld de, Unknown_b9936 + ld c, $8 + call Functionb9915 + call Functionb987b + hlcoord 8, 15 + ld a, $36 + ld b, $a + call Functionb98de + call Functionb9491 + ld a, $1 + ld [UnownLetter], a + hlcoord 1, 10 + call PrepMonFrontpic + pop hl + jp Functionb9803 +; b9710 + +LoadMusicMailGFX: ; b9710 + push bc + ld hl, VTiles2 tile $31 + ld de, Unknown_b9e06 + ld c, $20 + call Functionb9915 + ld de, Unknown_b993e + ld c, $10 + call Functionb9915 + ld de, Unknown_b9996 + ld c, $30 + call Functionb991e + xor a + ld bc, $10 + call ByteFill + ld de, Unknown_b9cfe + ld c, $18 + call Functionb990c + ld de, Unknown_b9946 + ld c, $8 + call Functionb990c + ld a, $31 + hlcoord 0, 0 + call Functionb98a8 + hlcoord 1, 17 + call Functionb98a8 + ld a, $33 + hlcoord 0, 1 + call Functionb98ba + hlcoord 19, 0 + call Functionb98ba + ld a, $35 + hlcoord 2, 15 + call Functionb989e + ld a, $37 + hlcoord 15, 14 + call Functionb98fc + call Functionb9491 + pop hl + jp Functionb9803 +; b9776 + +LoadMirageMailGFX: ; b9776 + push bc + ld hl, VTiles2 tile $31 + ld bc, $28 + call Functionb97f8 + ld de, Unknown_b992e + ld c, $8 + call Functionb9915 + ld de, MailMewGFX + ld c, $90 + call Functionb9915 + ld de, Unknown_b9dce + ld c, $8 + call Functionb990c + ld de, Unknown_b9df6 + ld c, $8 + call Functionb990c + call Functionb987b + ld a, $36 + hlcoord 1, 16 + call Functionb98d8 + inc a + hlcoord 15, 14 + call Functionb98fc + inc a + hlcoord 15, 16 + ld [hli], a + inc a + ld [hl], a + ld a, $3f + hlcoord 1, 1 + call Functionb98a8 + ld a, $41 + hlcoord 0, 2 + call Functionb98b5 + ld a, $43 + hlcoord 19, 2 + call Functionb98b5 + ld a, $45 + hlcoord 0, 1 + ld [hl], a + inc a + hlcoord 19, 1 + ld [hl], a + inc a + hlcoord 0, 16 + ld [hl], a + inc a + hlcoord 19, 16 + ld [hl], a + inc a + hlcoord 2, 5 + call Functionb98d4 + inc a + hlcoord 2, 11 + call Functionb98d4 + pop hl + jp Functionb9803 +; b97f8 + +Functionb97f8: ; b97f8 +.asm_b97f8 + xor a + ld [hli], a + ld a, $ff + ld [hli], a + dec bc + ld a, b + or c + jr nz, .asm_b97f8 + ret +; b9803 + +Functionb9803: ; b9803 + ld bc, $2f + ld de, wd002 + ld a, $0 + call GetSRAMBank + call CopyBytes + call CloseSRAM + ld hl, wd023 + ld de, wd050 + ld bc, $a + call CopyBytes + ld a, $50 + ld [wd023], a + ld [wd05a], a + ld de, wd002 + hlcoord 2, 7 + call PlaceString + ld de, wd050 + ld a, [de] + and a + ret z + ld a, [wd1ec] + hlcoord 8, 14 + cp $3 + jr z, .asm_b984b + hlcoord 6, 14 + cp $6 + jr z, .asm_b984b + hlcoord 5, 14 + +.asm_b984b + jp PlaceString +; b984e + +Functionb984e: ; b984e +.asm_b984e + ld a, [hl] + xor $ff + ld [hli], a + dec bc + ld a, b + or c + jr nz, .asm_b984e + ret +; b9858 + +Functionb9858: ; b9858 + hlcoord 0, 0 + ld a, $31 + ld [hli], a + inc a + call Functionb98d8 + inc a + ld [hli], a + inc a + call Functionb98e3 + ld a, $36 + ld [hli], a + inc a + call Functionb98d8 + hlcoord 19, 1 + ld a, $35 + call Functionb98e3 + ld a, $38 + ld [hl], a + ret +; b987b + +Functionb987b: ; b987b + hlcoord 0, 0 + ld a, $31 + ld [hli], a + inc a + call Functionb98d8 + ld [hl], $31 + inc hl + inc a + call Functionb98e3 + ld [hl], $31 + inc hl + inc a + call Functionb98d8 + hlcoord 19, 1 + ld a, $35 + call Functionb98e3 + ld [hl], $31 + ret +; b989e + +Functionb989e: ; b989e + push af + ld b, $7 + jr Functionb98ab + +Functionb98a3: ; b98a3 + push af + ld b, $8 + jr Functionb98ab + +Functionb98a8: ; b98a8 + push af + ld b, $9 + +Functionb98ab: ; b98ab + ld [hli], a + inc a + ld [hli], a + dec a + dec b + jr nz, Functionb98ab + ld [hl], a + pop af + ret +; b98b5 + +Functionb98b5: ; b98b5 + push af + ld b, $7 + jr Functionb98bd + +Functionb98ba: ; b98ba + push af + ld b, $8 + +Functionb98bd: ; b98bd + ld [hl], a + ld de, SCREEN_WIDTH + add hl, de + inc a + ld [hl], a + add hl, de + dec a + dec b + jr nz, Functionb98bd + ld [hl], a + pop af + ret +; b98cc + +Functionb98cc: ; b98cc + ld b, $7 + jr Functionb98de + +Functionb98d0: ; b98d0 + ld b, $d + jr Functionb98de + +Functionb98d4: ; b98d4 + ld b, $10 + jr Functionb98de + +Functionb98d8: ; b98d8 + ld b, $12 + jr Functionb98de + +Functionb98dc: ; b98dc + ld b, $14 + +Functionb98de: ; b98de + ld [hli], a + dec b + jr nz, Functionb98de + ret +; b98e3 + +Functionb98e3: ; b98e3 + ld b, $10 + ld de, SCREEN_WIDTH +.asm_b98e8 + ld [hl], a + add hl, de + dec b + jr nz, .asm_b98e8 + ret +; b98ee + +Functionb98ee: ; b98ee + push af + ld [hli], a + inc a + ld [hl], a + ld bc, $13 + add hl, bc + inc a + ld [hli], a + inc a + ld [hl], a + pop af + ret +; b98fc + +Functionb98fc: ; b98fc + ld [hli], a + inc a + ld [hli], a + inc a + ld [hl], a + ld bc, SCREEN_HEIGHT + add hl, bc + inc a + ld [hli], a + inc a + ld [hli], a + inc a + ld [hl], a + ret +; b990c + +Functionb990c: ; b990c +.asm_b990c + ld a, [de] + inc de + ld [hli], a + xor a + ld [hli], a + dec c + jr nz, .asm_b990c + ret +; b9915 + +Functionb9915: ; b9915 +.asm_b9915 + xor a + ld [hli], a + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .asm_b9915 + ret +; b991e + +Functionb991e: ; b991e +.asm_b991e + ld a, [de] + inc de +rept 2 + ld [hli], a +endr + dec c + jr nz, .asm_b991e + ret +; b9926 + +Unknown_b9926: ; b9926 +INCBIN "gfx/unknown/0b9926.1bpp" + +Unknown_b992e: ; b992e +INCBIN "gfx/unknown/0b992e.1bpp" + +Unknown_b9936: ; b9936 +INCBIN "gfx/unknown/0b9936.1bpp" + +Unknown_b993e: ; b993e +INCBIN "gfx/unknown/0b993e.1bpp" + +Unknown_b9946: ; b9946 +INCBIN "gfx/unknown/0b9946.1bpp" + +Unknown_b994e: ; b994e +INCBIN "gfx/unknown/0b994e.1bpp" + +Unknown_b995e: ; b995e +INCBIN "gfx/unknown/0b995e.1bpp" + +Unknown_b9966: ; b9966 +INCBIN "gfx/unknown/0b9966.1bpp" + +Unknown_b996e: ; b996e +INCBIN "gfx/unknown/0b996e.1bpp" + +Unknown_b9976: ; b9976 +INCBIN "gfx/unknown/0b9976.1bpp" + +Unknown_b997e: ; b997e +INCBIN "gfx/unknown/0b997e.1bpp" + +Unknown_b998e: ; b998e +INCBIN "gfx/unknown/0b998e.1bpp" + +Unknown_b9996: ; b9996 +INCBIN "gfx/unknown/0b9996.1bpp" + +MailDratiniGFX: ; b99c6 +INCBIN "gfx/unknown/0b99c6.1bpp" + +MailPoliwagGFX: ; b99f6 +INCBIN "gfx/unknown/0b99f6.1bpp" + +MailLaprasGFX: ; b9a26 +INCBIN "gfx/unknown/0b9a26.1bpp" + +MailPikaGFX: ; b9a56 +INCBIN "gfx/unknown/0b9a56.1bpp" + +MailDittoGFX: ; b9a86 +INCBIN "gfx/unknown/0b9a86.1bpp" + +MailMewGFX: ; b9ab6 +INCBIN "gfx/unknown/0b9ab6.1bpp" + +MailDragoniteGFX: ; b9b46 +INCBIN "gfx/unknown/0b9b46.1bpp" + +MailSentretGFX: ; b9bce +INCBIN "gfx/unknown/0b9bce.1bpp" + +Unknown_b9bee: ; b9bee +INCBIN "gfx/unknown/0b9bee.1bpp" + +Unknown_b9bfe: ; b9bfe +INCBIN "gfx/unknown/0b9bfe.1bpp" + +MailOddishGFX: ; b9c1e +INCBIN "gfx/unknown/0b9c1e.1bpp" + +Unknown_b9c3e: ; b9c3e +INCBIN "gfx/unknown/0b9c3e.1bpp" + +Unknown_b9c5e: ; b9c5e +INCBIN "gfx/unknown/0b9c5e.1bpp" + +Unknown_b9c7e: ; b9c7e +INCBIN "gfx/unknown/0b9c7e.1bpp" + +Unknown_b9c96: ; b9c96 +INCBIN "gfx/unknown/0b9c96.1bpp" + +Unknown_b9c9e: ; b9c9e +INCBIN "gfx/unknown/0b9c9e.1bpp" + +Unknown_b9cbe: ; b9cbe +INCBIN "gfx/unknown/0b9cbe.1bpp" + +Unknown_b9cde: ; b9cde +INCBIN "gfx/unknown/0b9cde.1bpp" + +Unknown_b9cfe: ; b9cfe +INCBIN "gfx/unknown/0b9cfe.1bpp" + +MailCloudGFX: ; b9d16 +INCBIN "gfx/unknown/0b9d16.1bpp" + +Unknown_b9d26: ; b9d26 +INCBIN "gfx/unknown/0b9d26.1bpp" + +Unknown_b9d3e: ; b9d3e +INCBIN "gfx/unknown/0b9d3e.1bpp" + +Unknown_b9d46: ; b9d46 +INCBIN "gfx/unknown/0b9d46.1bpp" + +Unknown_b9d76: ; b9d76 +INCBIN "gfx/unknown/0b9d76.1bpp" + +Unknown_b9d86: ; b9d86 +INCBIN "gfx/unknown/0b9d86.1bpp" + +Unknown_b9db6: ; b9db6 +INCBIN "gfx/unknown/0b9db6.1bpp" + +Unknown_b9dc6: ; b9dc6 +INCBIN "gfx/unknown/0b9dc6.1bpp" + +Unknown_b9dce: ; b9dce +INCBIN "gfx/unknown/0b9dce.1bpp" + +Unknown_b9df6: ; b9df6 +INCBIN "gfx/unknown/0b9df6.1bpp" + +Unknown_b9e06: ; b9e06 +INCBIN "gfx/unknown/0b9e06.1bpp" + +Unknown_b9e26: ; b9e26 +INCBIN "gfx/unknown/0b9e26.1bpp" + +Unknown_b9e4e: ; b9e4e +INCBIN "gfx/unknown/0b9e4e.1bpp" + + +ItemIsMail: ; b9e76 + ld a, d + ld hl, .items + ld de, 1 + jp IsInArray +; b9e80 + +.items + db FLOWER_MAIL + db SURF_MAIL + db LITEBLUEMAIL + db PORTRAITMAIL + db LOVELY_MAIL + db EON_MAIL + db MORPH_MAIL + db BLUESKY_MAIL + db MUSIC_MAIL + db MIRAGE_MAIL + db $ff +; b9e8b diff --git a/home/map.asm b/home/map.asm index b9b27168e..193f58bc6 100644 --- a/home/map.asm +++ b/home/map.asm @@ -1588,7 +1588,7 @@ Function28f7:: ; 28f7 ret ; 2914 -Function2914:: ; 2914 +GetMovementPermissions:: ; 2914 xor a ld [TilePermissions], a call GetLeftRightCollision @@ -4839,7 +4839,7 @@ CutDownTreeOrGrass: ; c810 ld e, a callba OWCutAnimation call BufferScreen - call Function2914 + call GetMovementPermissions call UpdateSprites call DelayFrame call LoadStandardFont @@ -5952,7 +5952,7 @@ DisappearWhirlpool: ; ce1d ld e, a callba PlayWhirlpoolSound call BufferScreen - call Function2914 + call GetMovementPermissions ret ; ce3e @@ -7350,7 +7350,7 @@ Functiond4e5: ; d4e5 (3:54e5) ret Jumptable_d4f2: ; d4f2 (3:54f2) - dw Function2914 + dw GetMovementPermissions dw BufferScreen dw .mobile dw .fail2 @@ -18307,7 +18307,7 @@ Function4aa7a: ; 4aa7a push hl cp -1 jr z, .done - ld hl, wc314 + ld hl, wSpriteAnimationStructs inc a ld d, a .inner_loop @@ -24674,3901 +24674,23 @@ Function80422:: ; 80422 -EngineFlagAction:: ; 80430 -; Do action b on engine flag de -; -; b = 0: reset flag -; = 1: set flag -; > 1: check flag, result in c -; -; Setting/resetting does not return a result. - - -; 16-bit flag ids are considered invalid, but it's nice -; to know that the infrastructure is there. - - ld a, d - cp 0 - jr z, .ceiling - jr c, .read ; cp 0 can't set carry! - jr .invalid - -; There are only $a2 engine flags, so -; anything beyond that is invalid too. - -.ceiling - ld a, e - cp NUM_ENGINE_FLAGS - jr c, .read - -; Invalid flags are treated as flag 00. - -.invalid - xor a - ld e, a - ld d, a - -; Get this flag's location. - -.read - ld hl, EngineFlags -; location -rept 2 - add hl, de -endr -; bit - add hl, de - -; location - ld e, [hl] - inc hl - ld d, [hl] - inc hl -; bit - ld c, [hl] - -; What are we doing with this flag? - - ld a, b - cp 1 - jr c, .reset ; b = 0 - jr z, .set ; b = 1 - -; Return the given flag in c. -.check - ld a, [de] - and c - ld c, a - ret - -; Set the given flag. -.set - ld a, [de] - or c - ld [de], a - ret - -; Reset the given flag. -.reset - ld a, c - cpl ; AND all bits except the one in question - ld c, a - ld a, [de] - and c - ld [de], a - ret -; 80462 - - -EngineFlags: ; 80462 INCLUDE "engine/engine_flags.asm" ; 80648 - - -_GetVarAction:: ; 80648 (20:4648) - ld a, c - cp NUM_VARS - jr c, .valid - xor a -.valid - ld c, a - ld b, 0 - ld hl, .VarActionTable -rept 3 - add hl, bc -endr - ld e, [hl] - inc hl - ld d, [hl] - inc hl - ld b, [hl] - ld a, b - and RETVAR_EXECUTE - jr nz, .call - ld a, b - and RETVAR_ADDR_DE - ret nz - ld a, [de] - jr .loadstringbuffer2 - -.call - call _de_ - ret - -.loadstringbuffer2: ; 8066c (20:466c) - ld de, StringBuffer2 - ld [de], a - ret -; 80671 (20:4671) - -.VarActionTable: ; 80671 -; $00: copy [de] to StringBuffer2 -; $40: return address in de -; $80: call function - dwb StringBuffer2, RETVAR_STRBUF2 - dwb PartyCount, RETVAR_STRBUF2 - dwb .BattleResult, RETVAR_EXECUTE - dwb BattleType, RETVAR_ADDR_DE - dwb TimeOfDay, RETVAR_STRBUF2 - dwb .CountCaughtMons, RETVAR_EXECUTE - dwb .CountSeenMons, RETVAR_EXECUTE - dwb .CountBadges, RETVAR_EXECUTE - dwb PlayerState, RETVAR_ADDR_DE - dwb .PlayerFacing, RETVAR_EXECUTE - dwb hHours, RETVAR_STRBUF2 - dwb .DayOfWeek, RETVAR_EXECUTE - dwb MapGroup, RETVAR_STRBUF2 - dwb MapNumber, RETVAR_STRBUF2 - dwb .UnownCaught, RETVAR_EXECUTE - dwb wPermission, RETVAR_STRBUF2 - dwb .BoxFreeSpace, RETVAR_EXECUTE - dwb wBugContestMinsRemaining, RETVAR_STRBUF2 - dwb XCoord, RETVAR_STRBUF2 - dwb YCoord, RETVAR_STRBUF2 - dwb wSpecialPhoneCallID, RETVAR_STRBUF2 - dwb wcf64, RETVAR_STRBUF2 - dwb wKurtApricornQuantity, RETVAR_STRBUF2 - dwb wCurrentCaller, RETVAR_ADDR_DE - dwb wBlueCardBalance, RETVAR_ADDR_DE - dwb wBuenasPassword, RETVAR_ADDR_DE - dwb wdc58, RETVAR_STRBUF2 - dwb NULL, RETVAR_STRBUF2 -; 806c5 - -.CountCaughtMons: ; 806c5 -; Caught mons. - ld hl, PokedexCaught - ld b, EndPokedexCaught - PokedexCaught - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806d3 - -.CountSeenMons: ; 806d3 -; Seen mons. - ld hl, PokedexSeen - ld b, EndPokedexSeen - PokedexSeen - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806e1 - -.CountBadges: ; 806e1 -; Number of owned badges. - ld hl, Badges - ld b, 2 - call CountSetBits - ld a, [wd265] - jp .loadstringbuffer2 -; 806ef - -.PlayerFacing: ; 806ef -; The direction the player is facing. - ld a, [PlayerDirection] - and $c - rrca - rrca - jp .loadstringbuffer2 -; 806f9 - -.DayOfWeek: ; 806f9 -; The day of the week. - call GetWeekday - jp .loadstringbuffer2 -; 806ff - -.UnownCaught: ; 806ff -; Number of unique Unown caught. - call .count - ld a, b - jp .loadstringbuffer2 - -.count - ld hl, UnownDex - ld b, 0 -.loop - ld a, [hli] - and a - ret z - inc b - ld a, b - cp 26 - jr c, .loop - ret -; 80715 - -.BoxFreeSpace: ; 80715 -; Remaining slots in the current box. - ld a, BANK(sBoxCount) - call GetSRAMBank - ld hl, sBoxCount - ld a, MONS_PER_BOX - sub [hl] - ld b, a - call CloseSRAM - ld a, b - jp .loadstringbuffer2 -; 80728 - -.BattleResult: ; 80728 - ld a, [wBattleResult] - and $3f - jp .loadstringbuffer2 -; 80730 - +INCLUDE "engine/variables.asm" BattleText:: INCLUDE "text/battle.asm" - -ColorTest: ; 818ac -; A debug menu to test monster and trainer palettes at runtime. - - ld a, [hCGB] - and a - jr nz, .asm_818b5 - ld a, [hSGB] - and a - ret z - -.asm_818b5 - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - call DisableLCD - call Function81948 - call Function8197c - call Function819a7 - call Function818f4 - call EnableLCD - ld de, MUSIC_NONE - call PlayMusic - xor a - ld [wJumptableIndex], a - ld [wcf66], a - ld [wd003], a -.asm_818de - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_818f0 - call Function81a74 - call Function81f5e - call DelayFrame - jr .asm_818de - -.asm_818f0 - pop af - ld [hInMenu], a - ret -; 818f4 - -Function818f4: ; 818f4 - ld a, [wd002] - and a - jr nz, Function81911 - ld hl, PokemonPalettes - -Function818fd: ; 818fd - ld de, OverworldMap - ld c, NUM_POKEMON + 1 -.asm_81902 - push bc - push hl - call Function81928 - pop hl - ld bc, 8 - add hl, bc - pop bc - dec c - jr nz, .asm_81902 - ret - -Function81911: ; 81911 - ld hl, TrainerPalettes - ld de, OverworldMap - ld c, NUM_TRAINER_CLASSES -.asm_81919 - push bc - push hl - call Function81928 - pop hl - ld bc, 4 - add hl, bc - pop bc - dec c - jr nz, .asm_81919 - ret -; 81928 - -Function81928: ; 81928 - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - inc hl - ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) - call GetFarByte - ld [de], a - inc de - ret -; 81948 - -Function81948: ; 81948 - ld a, $1 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - ld a, $0 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - call ClearSprites - ret -; 8197c - -Function8197c: ; 8197c - ld hl, DebugColorTestGFX + $10 - ld de, VTiles2 tile $6a - ld bc, $160 - call CopyBytes - ld hl, DebugColorTestGFX - ld de, VTiles0 - ld bc, $10 - call CopyBytes - call LoadStandardFont - ld hl, VTiles1 - lb bc, 8, 0 -.asm_8199d - ld a, [hl] - xor $ff - ld [hli], a - dec bc - ld a, c - or b - jr nz, .asm_8199d - ret -; 819a7 - -Function819a7: ; 819a7 - ld a, [hCGB] - and a - ret z - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_819f4 - ld de, BGPals - ld bc, $80 - call CopyBytes - ld a, $80 - ld [rBGPI], a - ld hl, Palette_819f4 - ld c, $40 - xor a -.asm_819c8 - ld [rBGPD], a - dec c - jr nz, .asm_819c8 - ld a, $80 - ld [rOBPI], a - ld hl, Palette_81a34 - ld c, $40 -.asm_819d6 - ld a, [hli] - ld [rOBPD], a - dec c - jr nz, .asm_819d6 - ld a, $94 - ld [wc608], a - ld a, $52 - ld [wc608 + 1], a - ld a, $4a - ld [wc608 + 2], a - ld a, $29 - ld [wc608 + 3], a - pop af - ld [rSVBK], a - ret -; 819f4 - -Palette_819f4: ; 819f4 - ; white - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - ; red - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 00, 00, 00 - - ; green - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 00, 00 - - ; blue - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - -Palette_81a34: ; 81a34 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 00, 00, 00 - - ; red - RGB 31, 31, 31 - RGB 31, 00, 00 - RGB 31, 00, 00 - RGB 00, 00, 00 - - ; green - RGB 31, 31, 31 - RGB 00, 31, 00 - RGB 00, 31, 00 - RGB 00, 00, 00 - - ; blue - RGB 31, 31, 31 - RGB 00, 00, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 -; 81a74 - -Function81a74: ; 81a74 - call JoyTextDelay - ld a, [wJumptableIndex] - cp $4 - jr nc, .asm_81a8b - ld hl, hJoyLast - ld a, [hl] - and SELECT - jr nz, .asm_81a9a - ld a, [hl] - and START - jr nz, .asm_81aab - -.asm_81a8b - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_81acf -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_81a9a - call Function81eca - call Function81ac3 - ld e, a - ld a, [wcf66] - inc a - cp e - jr c, .asm_81aba - xor a - jr .asm_81aba - -.asm_81aab - call Function81eca - ld a, [wcf66] - dec a - cp $ff - jr nz, .asm_81aba - call Function81ac3 - dec a - -.asm_81aba - ld [wcf66], a - ld a, $0 - ld [wJumptableIndex], a - ret -; 81ac3 - -Function81ac3: ; 81ac3 -; Looping back around the pic set. - ld a, [wd002] - and a - jr nz, .asm_81acc - ld a, NUM_POKEMON ; CELEBI - ret - -.asm_81acc - ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN - ret -; 81acf - -Jumptable_81acf: ; 81acf - dw Function81adb - dw Function81c18 - dw Function81c33 - dw Function81cc2 - dw Function81d8e - dw Function81daf -; 81adb - -Function81adb: ; 81adb - xor a - ld [hBGMapMode], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $6f - call ByteFill - hlcoord 1, 3 - lb bc, 7, 18 - ld a, $6c - call Bank20_FillBoxWithByte - hlcoord 11, 0 - lb bc, 2, 3 - ld a, $6d - call Bank20_FillBoxWithByte - hlcoord 16, 0 - lb bc, 2, 3 - ld a, $6e - call Bank20_FillBoxWithByte - call Function81bc0 - call Function81bf4 - ld a, [wcf66] - inc a - ld [CurPartySpecies], a - ld [wd265], a - hlcoord 0, 1 - ld de, wd265 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - ld a, [wd002] - and a - jr nz, .asm_81b7a - ld a, $1 - ld [UnownLetter], a - call GetPokemonName - hlcoord 4, 1 - call PlaceString - xor a - ld [wc2c6], a - hlcoord 12, 3 - call _PrepMonFrontpic - ld de, VTiles2 tile $31 - predef GetBackpic - ld a, $31 - ld [hFillBox], a - hlcoord 2, 4 - lb bc, 6, 6 - predef FillBox - ld a, [wd003] - and a - jr z, .asm_81b66 - ld de, String_81baf - jr .asm_81b69 - -.asm_81b66 - ld de, String_81bb4 - -.asm_81b69 - hlcoord 7, 17 - call PlaceString - hlcoord 0, 17 - ld de, String_81bb9 - call PlaceString - jr .asm_81ba9 - -.asm_81b7a - ld a, [wd265] - ld [TrainerClass], a - callab Function3957b - ld de, StringBuffer1 - hlcoord 4, 1 - call PlaceString - ld de, VTiles2 - callab GetTrainerPic - xor a - ld [TempEnemyMonSpecies], a - ld [hFillBox], a - hlcoord 2, 3 - lb bc, 7, 7 - predef FillBox - -.asm_81ba9 - ld a, $1 - ld [wJumptableIndex], a - ret -; 81baf - -String_81baf: db "レア", $6f, $6f, "@" ; rare (shiny) -String_81bb4: db "ノーマル@" ; normal -String_81bb9: db $7a, "きりかえ▶@" ; (A) switches -; 81bc0 - -Function81bc0: ; 81bc0 - decoord 0, 11, AttrMap - hlcoord 2, 11 - ld a, $1 - call Function81bde - decoord 0, 13, AttrMap - hlcoord 2, 13 - ld a, $2 - call Function81bde - decoord 0, 15, AttrMap - hlcoord 2, 15 - ld a, $3 - -Function81bde: ; 81bde - push af - ld a, $6a - ld [hli], a - ld bc, $f - ld a, $6b - call ByteFill - ld l, e - ld h, d - pop af - ld bc, $28 - call ByteFill - ret -; 81bf4 - -Function81bf4: ; 81bf4 - ld a, [wcf66] - inc a - ld l, a - ld h, $0 -rept 2 - add hl, hl -endr - ld de, OverworldMap - add hl, de - ld de, wc608 - ld bc, 4 - call CopyBytes - xor a - ld [wcf64], a - ld [wcf65], a - ld de, wc608 - call Function81ea5 - ret -; 81c18 - -Function81c18: ; 81c18 - ld a, [hCGB] - and a - jr z, .asm_81c2a - ld a, $2 - ld [hBGMapMode], a - call DelayFrame - call DelayFrame - call DelayFrame - -.asm_81c2a - call WaitBGMap - ld a, $2 - ld [wJumptableIndex], a - ret -; 81c33 - -Function81c33: ; 81c33 - ld a, [hCGB] - and a - jr z, .asm_81c69 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld de, wc608 - ld c, $1 - call Function81ee3 - hlcoord 10, 2 - ld de, wc608 - call Function81ca7 - hlcoord 15, 2 - ld de, wc608 + 2 - call Function81ca7 - ld a, $1 - ld [hCGBPalUpdate], a - ld a, $3 - ld [wJumptableIndex], a - pop af - ld [rSVBK], a - ret - -.asm_81c69 - ld hl, wcda9 - ld a, $1 - ld [hli], a - ld a, $ff - ld [hli], a - ld a, $7f - ld [hli], a - ld a, [wc608] - ld [hli], a - ld a, [wc608 + 1] - ld [hli], a - ld a, [wc608 + 2] - ld [hli], a - ld a, [wc608 + 3] - ld [hli], a - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - ld hl, wcda9 - call Function81f0c - hlcoord 10, 2 - ld de, wc608 - call Function81ca7 - hlcoord 15, 2 - ld de, wc608 + 2 - call Function81ca7 - ld a, $3 - ld [wJumptableIndex], a - ret -; 81ca7 - -Function81ca7: ; 81ca7 -rept 3 - inc hl -endr - ld a, [de] - call Function81cbc - ld a, [de] - swap a - call Function81cbc - inc de - ld a, [de] - call Function81cbc - ld a, [de] - swap a - -Function81cbc: ; 81cbc - and $f - add $70 - ld [hld], a - ret -; 81cc2 - -Function81cc2: ; 81cc2 - ld a, [hJoyLast] - and B_BUTTON - jr nz, .asm_81cdf - ld a, [hJoyLast] - and A_BUTTON - jr nz, .asm_81ce5 - ld a, [wcf64] - and $3 - ld e, a - ld d, 0 - ld hl, Jumptable_81d02 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_81cdf - ld a, $4 - ld [wJumptableIndex], a - ret - -.asm_81ce5 - ld a, [wd002] - and a - ret nz - ld a, [wd003] - xor $4 - ld [wd003], a - ld c, a - ld b, 0 - ld hl, PokemonPalettes - add hl, bc - call Function818fd - ld a, $0 - ld [wJumptableIndex], a - ret -; 81d02 - -Jumptable_81d02: ; 81d02 - dw Function81d0a - dw Function81d34 - dw Function81d46 - dw Function81d58 -; 81d0a - -Function81d0a: ; 81d0a - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_LEFT - jr nz, .asm_81d1d - ld a, [hl] - and D_RIGHT - jr nz, .asm_81d28 - ret - -.asm_81d1d - xor a - ld [wcf65], a - ld de, wc608 - call Function81ea5 - ret - -.asm_81d28 - ld a, $1 - ld [wcf65], a - ld de, wc608 + 2 - call Function81ea5 - ret - -Function81d34: ; 81d34 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 10 - jr Function81d63 - -Function81d46: ; 81d46 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function81d89 - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 11 - jr Function81d63 - -Function81d58: ; 81d58 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, Function81d84 - ld hl, wc608 + 12 - -Function81d63: ; 81d63 - ld a, [hJoyLast] - and D_RIGHT - jr nz, Function81d70 - ld a, [hJoyLast] - and D_LEFT - jr nz, Function81d77 - ret - -Function81d70: ; 81d70 - ld a, [hl] - cp $1f - ret nc - inc [hl] - jr Function81d7b - -Function81d77: ; 81d77 - ld a, [hl] - and a - ret z - dec [hl] - -Function81d7b: ; 81d7b - call Function81e67 - ld a, $2 - ld [wJumptableIndex], a - ret - -Function81d84: ; 81d84 - ld hl, wcf64 - dec [hl] - ret - -Function81d89: ; 81d89 - ld hl, wcf64 - inc [hl] - ret -; 81d8e - -Function81d8e: ; 81d8e - hlcoord 0, 10 - ld bc, $a0 - ld a, $6f - call ByteFill - hlcoord 2, 12 - ld de, String_81fcd - call PlaceString - xor a - ld [wd004], a - call Function81df4 - ld a, $5 - ld [wJumptableIndex], a - ret -; 81daf - -Function81daf: ; 81daf - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .asm_81dbb - call Function81dc7 - ret - -.asm_81dbb - ld a, $0 - ld [wJumptableIndex], a - ret -; 81dc1 - -Function81dc1: ; 81dc1 - ld hl, wJumptableIndex - set 7, [hl] - ret -; 81dc7 - -Function81dc7: ; 81dc7 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_81dd5 - ld a, [hl] - and D_DOWN - jr nz, .asm_81de2 - ret - -.asm_81dd5 - ld a, [wd004] - cp $3b - jr z, .asm_81ddf - inc a - jr .asm_81ded - -.asm_81ddf - xor a - jr .asm_81ded - -.asm_81de2 - ld a, [wd004] - and a - jr z, .asm_81deb - dec a - jr .asm_81ded - -.asm_81deb - ld a, $3b - -.asm_81ded - ld [wd004], a - call Function81df4 - ret -; 81df4 - -Function81df4: ; 81df4 - hlcoord 10, 11 - call Function81e5e - hlcoord 10, 12 - call Function81e5e - hlcoord 10, 13 - call Function81e5e - hlcoord 10, 14 - call Function81e5e - ld a, [wd004] - inc a - ld [wd265], a - predef GetTMHMMove - ld a, [wd265] - ld [wd262], a - call GetMoveName - hlcoord 10, 12 - call PlaceString - ld a, [wd004] - call Function81e55 - ld [CurItem], a - predef CanLearnTMHMMove - ld a, c - and a - ld de, String_81e46 - jr nz, .asm_81e3f - ld de, String_81e4d - -.asm_81e3f - hlcoord 10, 14 - call PlaceString - ret -; 81e46 - -String_81e46: db "おぼえられる@" ; can be taught -String_81e4d: db "おぼえられない@" ; cannot be taught -; 81e55 - -Function81e55: ; 81e55 - cp $32 - jr c, .asm_81e5b -rept 2 - inc a -endr - -.asm_81e5b - add $bf - ret -; 81e5e - -Function81e5e: ; 81e5e - ld bc, $a - ld a, $6f - call ByteFill - ret -; 81e67 - -Function81e67: ; 81e67 - ld a, [wc608 + 10] - and $1f - ld e, a - ld a, [wc608 + 11] - and $7 - sla a - swap a - or e - ld e, a - ld a, [wc608 + 11] - and $18 - sla a - swap a - ld d, a - ld a, [wc608 + 12] - and $1f - sla a - sla a - or d - ld d, a - ld a, [wcf65] - and a - jr z, .asm_81e9c - ld a, e - ld [wc608 + 2], a - ld a, d - ld [wc608 + 3], a - ret - -.asm_81e9c - ld a, e - ld [wc608], a - ld a, d - ld [wc608 + 1], a - ret -; 81ea5 - -Function81ea5: ; 81ea5 - ld a, [de] - and $1f - ld [wc608 + 10], a - ld a, [de] - and $e0 - swap a - srl a - ld b, a - inc de - ld a, [de] - and $3 - swap a - srl a - or b - ld [wc608 + 11], a - ld a, [de] - and $7c - srl a - srl a - ld [wc608 + 12], a - ret -; 81eca - -Function81eca: ; 81eca - ld a, [wcf66] - inc a - ld l, a - ld h, $0 -rept 2 - add hl, hl -endr - ld de, OverworldMap - add hl, de - ld e, l - ld d, h - ld hl, wc608 - ld bc, 4 - call CopyBytes - ret -; 81ee3 - -Function81ee3: ; 81ee3 -.asm_81ee3 - ld a, $ff - ld [hli], a - ld a, $7f - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - xor a -rept 2 - ld [hli], a -endr - dec c - jr nz, .asm_81ee3 - ret -; 81efc - -Bank20_FillBoxWithByte: ; 81efc -; For some reason, we have another copy of FillBoxWithByte here -.row - push bc - push hl -.col - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret -; 81f0c - -Function81f0c: ; 81f0c - ld a, [wcfbe] - push af - set 7, a - ld [wcfbe], a - call Function81f1d - pop af - ld [wcfbe], a - ret -; 81f1d - -Function81f1d: ; 81f1d - ld a, [hl] - and $7 - ret z - ld b, a -.asm_81f22 - push bc - xor a - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - ld b, $10 -.asm_81f2c - ld e, $8 - ld a, [hli] - ld d, a -.asm_81f30 - bit 0, d - ld a, $10 - jr nz, .asm_81f38 - ld a, $20 - -.asm_81f38 - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - rr d - dec e - jr nz, .asm_81f30 - dec b - jr nz, .asm_81f2c - ld a, $20 - ld [rJOYP], a - ld a, $30 - ld [rJOYP], a - ld de, 7000 -.asm_81f51 - nop - nop - nop - dec de - ld a, d - or e - jr nz, .asm_81f51 - pop bc - dec b - jr nz, .asm_81f22 - ret -; 81f5e - -Function81f5e: ; 81f5e - ld a, $6f - hlcoord 10, 0 - ld [hl], a - hlcoord 15, 0 - ld [hl], a - hlcoord 1, 11 - ld [hl], a - hlcoord 1, 13 - ld [hl], a - hlcoord 1, 15 - ld [hl], a - ld a, [wJumptableIndex] - cp $3 - jr nz, .asm_81fc9 - ld a, [wcf64] - and a - jr z, .asm_81f8d - dec a - hlcoord 1, 11 - ld bc, 2 * SCREEN_WIDTH - call AddNTimes - ld [hl], $ed - -.asm_81f8d - ld a, [wcf65] - and a - jr z, .asm_81f98 - hlcoord 15, 0 - jr .asm_81f9b - -.asm_81f98 - hlcoord 10, 0 - -.asm_81f9b - ld [hl], $ed - ld b, $70 - ld c, $5 - ld hl, Sprites - ld de, wc608 + 10 - call .asm_81fb7 - ld de, wc608 + 11 - call .asm_81fb7 - ld de, wc608 + 12 - call .asm_81fb7 - ret - -.asm_81fb7 - ld a, b - ld [hli], a - ld a, [de] -rept 2 - add a -endr - add $18 - ld [hli], a - xor a - ld [hli], a - ld a, c - ld [hli], a - ld a, $10 - add b - ld b, a - inc c - ret - -.asm_81fc9 - call ClearSprites - ret -; 81fcd - -String_81fcd: ; 81fcd - db "おわりますか?" ; Are you finished? - next "はい", $f2, $f2, $f2, $7a ; YES (A) - next "いいえ", $f2, $f2, $7b ; NO (B) - db "@" -; 81fe3 - -DebugColorTestGFX: -INCBIN "gfx/debug/color_test.2bpp" - - -TilesetColorTest: - ret - xor a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [wcf66], a - ld [hMapAnims], a - call ClearSprites - call OverworldTextModeSwitch - call Function3200 - xor a - ld [hBGMapMode], a - ld de, DebugColorTestGFX + $10 - ld hl, VTiles2 tile $6a - lb bc, BANK(DebugColorTestGFX), $16 - call Request2bpp - ld de, DebugColorTestGFX - ld hl, VTiles1 - lb bc, BANK(DebugColorTestGFX), 1 - call Request2bpp - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $6f - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $7 - call ByteFill - ld de, $15 - ld a, $6c - call Function821d2 - ld de, $1a - ld a, $6d - call Function821d2 - ld de, $1f - ld a, $6e - call Function821d2 - ld de, $24 - ld a, $6f - call Function821d2 - call Function821f4 - call Function8220f - call Function3200 - ld [wJumptableIndex], a - ld a, $40 - ld [hWY], a - ret -; 821d2 - -Function821d2: ; 821d2 - hlcoord 0, 0 - call Function821de - -Function821d8: ; 821d8 - ld a, [wcf64] - hlcoord 0, 0, AttrMap - -Function821de: ; 821de - add hl, de -rept 4 - ld [hli], a -endr - ld bc, $10 - add hl, bc -rept 4 - ld [hli], a -endr - ld bc, $10 - add hl, bc -rept 4 - ld [hli], a -endr - ret -; 821f4 - -Function821f4: ; 821f4 - hlcoord 2, 4 - call Function82203 - hlcoord 2, 6 - call Function82203 - hlcoord 2, 8 - -Function82203: ; 82203 - ld a, $6a - ld [hli], a - ld bc, $10 - 1 - ld a, $6b - call ByteFill - ret -; 8220f - -Function8220f: ; 8220f - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [wcf64] - ld l, a - ld h, $0 -rept 3 - add hl, hl -endr - ld de, wMapPals - add hl, de - ld de, wc608 - ld bc, 8 - call CopyBytes - ld de, wc608 - call Function81ea5 - pop af - ld [rSVBK], a - ret -; 82236 - - -Function82236: ; 82236 - ld hl, hJoyLast - ld a, [hl] - and SELECT - jr nz, .loop7 - ld a, [hl] - and B_BUTTON - jr nz, .asm_82299 - call Function822f0 - ret - -.loop7 - ld hl, wcf64 - ld a, [hl] - inc a - and $7 - cp $7 - jr nz, .asm_82253 - xor a - -.asm_82253 - ld [hl], a - ld de, $15 - call Function821d8 - ld de, $1a - call Function821d8 - ld de, $1f - call Function821d8 - ld de, $24 - call Function821d8 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld a, [wcf64] - ld bc, 8 - call AddNTimes - ld de, wc608 - ld bc, 8 - call CopyBytes - pop af - ld [rSVBK], a - ld a, $2 - ld [hBGMapMode], a - ld c, 3 - call DelayFrames - ld a, $1 - ld [hBGMapMode], a - ret - -.asm_82299 - call ClearSprites - ld a, [hWY] - xor $d0 - ld [hWY], a - ret -; 822a3 - -Function822a3: ; 822a3 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld a, [wcf64] - ld bc, 8 - call AddNTimes - ld e, l - ld d, h - ld hl, wc608 - ld bc, 8 - call CopyBytes - hlcoord 1, 0 - ld de, wc608 - call Function81ca7 - hlcoord 6, 0 - ld de, wc608 + 2 - call Function81ca7 - hlcoord 11, 0 - ld de, wc608 + 4 - call Function81ca7 - hlcoord 16, 0 - ld de, wc608 + 6 - call Function81ca7 - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - call DelayFrame - ret -; 822f0 - -Function822f0: ; 822f0 - ld a, [wcf65] - and 3 - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 82301 - -.jumptable: ; 82301 - dw Function82309 - dw Function82339 - dw Function8234b - dw Function8235d -; 82309 - -Function82309: ; 82309 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_LEFT - jr nz, .asm_8231c - ld a, [hl] - and D_RIGHT - jr nz, .asm_82322 - ret - -.asm_8231c - ld a, [wcf66] - dec a - jr .asm_82326 - -.asm_82322 - ld a, [wcf66] - inc a - -.asm_82326 - and $3 - ld [wcf66], a - ld e, a - ld d, $0 - ld hl, wc608 -rept 2 - add hl, de -endr - ld e, l - ld d, h - call Function81ea5 - ret - -Function82339: ; 82338 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 10 - jr Function82368 - -Function8234b: ; 8234b - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, Function8238c - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 11 - jr Function82368 - -Function8235d: ; 8235d - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, Function82387 - ld hl, wc608 + 12 - -Function82368: ; 82368 - ld a, [hJoyLast] - and D_RIGHT - jr nz, .asm_82375 - ld a, [hJoyLast] - and D_LEFT - jr nz, .asm_8237c - ret - -.asm_82375 - ld a, [hl] - cp $1f - ret nc - inc [hl] - jr .asm_82380 - -.asm_8237c - ld a, [hl] - and a - ret z - dec [hl] - -.asm_82380 - call Function82391 - call Function822a3 - ret - -Function82387: ; 82387 - ld hl, wcf65 - dec [hl] - ret - -Function8238c: ; 8238c - ld hl, wcf65 - inc [hl] - ret -; 82391 - -Function82391: ; 82391 - ld a, [wc608 + 10] - and $1f - ld e, a - ld a, [wc608 + 11] - and $7 - sla a - swap a - or e - ld e, a - ld a, [wc608 + 11] - and $18 - sla a - swap a - ld d, a - ld a, [wc608 + 12] - and $1f - sla a - sla a - or d - ld d, a - ld a, [wcf66] - ld c, a - ld b, $0 - ld hl, wc608 -rept 2 - add hl, bc -endr - ld a, e - ld [hli], a - ld [hl], d - ret -; 823c6 - -Function823c6: ; 823c6 - ret - -Function823c7: ; 823c7 - ret -; 823c8 - +INCLUDE "engine/debug.asm" SECTION "bank21", ROMX, BANK[$21] -Function84000: ; 84000 - ld hl, OverworldMap - lb bc, 4, 12 - xor a - call Function842ab - xor a - ld [rSB], a - ld [rSC], a - ld [wc2d5], a - ld hl, wc2d4 - set 0, [hl] - ld a, [GBPrinter] - ld [wcbfb], a - xor a - ld [wJumptableIndex], a - ret -; 84022 - -Function84022: ; 84022 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_84031 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 84031 - - -Jumptable_84031: ; 84031 (21:4031) - dw Function84077 - dw Function84143 - dw Function84120 - dw Function84099 - dw Function84180 - dw Function8412e - dw Function840c5 - dw Function84180 - dw Function84120 - dw Function840de - dw Function84180 - dw Function84120 - dw Function841a1 - dw Function84063 - dw Function8406d - dw Function84120 - dw Function84103 - dw Function84071 - dw Function841b0 - dw Function841b3 - - -Function84059: ; 84059 (21:4059) - ld hl, wJumptableIndex - inc [hl] - ret - -Function8405e: ; 8405e (21:405e) - ld hl, wJumptableIndex - dec [hl] - ret - -Function84063: ; 84063 (21:4063) - xor a - ld [wca89], a - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function8406d: ; 8406d (21:406d) - call Function84059 - ret - -Function84071: ; 84071 (21:4071) - ld a, $1 - ld [wJumptableIndex], a - ret - -Function84077: ; 84077 (21:4077) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ld a, $1 - ld [wcbf8], a - ret - -Function84099: ; 84099 (21:4099) - call Function841fb - ld hl, wca81 - ld a, [hl] - and a - jr z, Function840c5 - ld hl, Unknown_842c3 - call Function841e2 - call Function84260 - ld a, $80 - ld [wca8e], a - ld a, $2 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $2 - ld [wcbf8], a - ret - -Function840c5: ; 840c5 (21:40c5) - ld a, $6 - ld [wJumptableIndex], a - ld hl, Unknown_842c9 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - call Function84059 - call Function841c3 - ret - -Function840de: ; 840de (21:40de) - call Function841fb - ld hl, Unknown_842bd - call Function841e2 - call Function84249 - ld a, $4 - ld [wca8e], a - ld a, $0 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $3 - ld [wcbf8], a - ret - -Function84103: ; 84103 (21:4103) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ret - -Function84120: ; 84120 (21:4120) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - call Function84059 - ret - -Function8412e: ; 8412e (21:412e) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - ld hl, wca81 - dec [hl] - call Function8405e - call Function8405e - ret - -Function84143: ; 84143 (21:4143) - ld a, [wc2d5] - and a - ret nz - ld a, [wca88] - cp $ff - jr nz, .printer_connected - ld a, [wca89] - cp $ff - jr z, .printer_error - -.printer_connected - ld a, [wca88] - cp $81 - jr nz, .printer_error - ld a, [wca89] - cp $0 - jr nz, .printer_error - ld hl, wc2d4 - set 1, [hl] - ld a, $5 - ld [wca8a], a - call Function84059 - ret - -.printer_error - ld a, $ff - ld [wca88], a - ld [wca89], a - ld a, $e - ld [wJumptableIndex], a - ret - -Function84180: ; 84180 (21:4180) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - jr nz, .asm_8419b - ld a, [wca89] - and $1 - jr nz, .asm_84197 - call Function84059 - ret -.asm_84197 - call Function8405e - ret -.asm_8419b - ld a, $12 - ld [wJumptableIndex], a - ret - -Function841a1: ; 841a1 (21:41a1) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f3 - ret nz - call Function84059 - ret - -Function841b0: ; 841b0 (21:41b0) - call Function84059 - -Function841b3: ; 841b3 (21:41b3) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - ret nz - xor a - ld [wJumptableIndex], a - ret - -Function841c3: ; 841c3 (21:41c3) - ld a, [wc2d5] - and a - jr nz, Function841c3 - xor a - ld [wca8c], a - ld [wca8d], a - ld a, $1 - ld [wc2d5], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function841e2: ; 841e2 (21:41e2) - ld a, [hli] - ld [wca82], a - ld a, [hli] - ld [wca83], a - ld a, [hli] - ld [wca84], a - ld a, [hli] - ld [wca85], a - ld a, [hli] - ld [wca86], a - ld a, [hl] - ld [wca87], a - ret - -Function841fb: ; 841fb (21:41fb) - xor a - ld hl, wca82 -rept 3 - ld [hli], a -endr - ld [hl], a - ld hl, wca86 - ld [hli], a - ld [hl], a - xor a - ld [wca8e], a - ld [wca8f], a - ld hl, OverworldMap - ld bc, $280 - call Function842ab - ret - -Function84219: ; 84219 (21:4219) - ld hl, 0 - ld bc, $4 - ld de, wca82 - call Function8423c - ld a, [wca8e] - ld c, a - ld a, [wca8f] - ld b, a - ld de, OverworldMap - call Function8423c - ld a, l - ld [wca86], a - ld a, h - ld [wca87], a - ret - -Function8423c: ; 8423c (21:423c) - ld a, [de] - inc de - add l - jr nc, .asm_84242 - inc h -.asm_84242 - ld l, a - dec bc - ld a, c - or b - jr nz, Function8423c - ret - -Function84249: ; 84249 (21:4249) - ld a, $1 - ld [OverworldMap], a - ld a, [wcbfa] - ld [wc801], a - ld a, $e4 - ld [wc802], a - ld a, [wcbfb] - ld [wc803], a - ret - -Function84260: ; 84260 (21:4260) - ld a, [wca81] - xor $ff - ld d, a - ld a, [wcf65] - inc a - add d - ld hl, wca90 - ld de, $28 -.asm_84271 - and a - jr z, .asm_84278 - add hl, de - dec a - jr .asm_84271 -.asm_84278 - ld e, l - ld d, h - ld hl, OverworldMap - ld c, $28 -.asm_8427f - ld a, [de] - inc de - push bc - push de - push hl - swap a - ld d, a - and $f0 - ld e, a - ld a, d - and $f - ld d, a - and $8 - ld a, d - jr nz, .asm_84297 - or $90 - jr .asm_84299 -.asm_84297 - or $80 -.asm_84299 - ld d, a - lb bc, $21, 1 - call Request2bpp - pop hl - ld de, $10 - add hl, de - pop de - pop bc - dec c - jr nz, .asm_8427f - ret - -Function842ab: ; 842ab - push de - ld e, a -.asm_842ad - ld [hl], e - inc hl - dec bc - ld a, c - or b - jr nz, .asm_842ad - ld a, e - pop de - ret -; 842b7 - -Unknown_842b7: db 1, 0, $00, 0, 1, 0 -Unknown_842bd: db 2, 0, $04, 0, 0, 0 -Unknown_842c3: db 4, 0, $80, 2, 0, 0 -Unknown_842c9: db 4, 0, $00, 0, 4, 0 -Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused -Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused -; 842db - - -Function842db:: ; 842db - ld a, [wc2d5] - add a - ld e, a - ld d, 0 - ld hl, Jumptable_842ea - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 842ea - - -Jumptable_842ea: ; 842ea (21:42ea) - dw Function8432f - dw Function84330 - dw Function84339 - dw Function84343 - dw Function8434d - dw Function84357 - dw Function84361 - dw Function8438b - dw Function84395 - dw Function8439f - dw Function843a8 - dw Function843b6 - dw Function84330 - dw Function843c0 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843c0 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843e6 - dw Function84330 - dw Function843d2 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843d2 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843b6 - - -Function8432a: ; 8432a (21:432a) - ld hl, wc2d5 - inc [hl] - ret - -Function8432f: ; 8432f (21:432f) - ret - -Function84330: ; 84330 (21:4330) - ld a, $33 - call Function843db - call Function8432a - ret - -Function84339: ; 84339 (21:4339) - ld a, [wca82] - call Function843db - call Function8432a - ret - -Function84343: ; 84343 (21:4343) - ld a, [wca83] - call Function843db - call Function8432a - ret - -Function8434d: ; 8434d (21:434d) - ld a, [wca84] - call Function843db - call Function8432a - ret - -Function84357: ; 84357 (21:4357) - ld a, [wca85] - call Function843db - call Function8432a - ret - -Function84361: ; 84361 (21:4361) - ld hl, wca8e - ld a, [hli] - ld d, [hl] - ld e, a - or d - jr z, .asm_84388 - dec de - ld [hl], d - dec hl - ld [hl], e - ld a, [wca8c] - ld e, a - ld a, [wca8d] - ld d, a - ld hl, OverworldMap - add hl, de - inc de - ld a, e - ld [wca8c], a - ld a, d - ld [wca8d], a - ld a, [hl] - call Function843db - ret -.asm_84388 - call Function8432a - -Function8438b: ; 8438b (21:438b) - ld a, [wca86] - call Function843db - call Function8432a - ret - -Function84395: ; 84395 (21:4395) - ld a, [wca87] - call Function843db - call Function8432a - ret - -Function8439f: ; 8439f (21:439f) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843a8: ; 843a8 (21:43a8) - ld a, [rSB] - ld [wca88], a - ld a, $0 - call Function843db - call Function8432a - ret - -Function843b6: ; 843b6 (21:43b6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843c0: ; 843c0 (21:43c0) - ld a, $f - call Function843db - call Function8432a - ret - -Function843c9: ; 843c9 (21:43c9) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843d2: ; 843d2 (21:43d2) - ld a, $8 - call Function843db - call Function8432a - ret - -Function843db: ; 843db (21:43db) - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function843e6: ; 843e6 (21:43e6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843f0: ; 843f0 -.asm_843f0 - call JoyTextDelay - call Function846f6 - jr c, .asm_8440f - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_8440d - call Function84022 - call Function84757 - call Function84785 - call DelayFrame - jr .asm_843f0 - -.asm_8440d - and a - ret - -.asm_8440f - scf - ret -; 84411 - -Function84411: ; 84411 - xor a - ld [wc2d4], a - ld [wc2d5], a - ret -; 84419 - -Function84419: ; 84419 - push af - call Function84000 - pop af - ld [wcbfa], a - call Function84728 - ret -; 84425 - -Function84425: ; 84425 - call ReturnToMapFromSubmenu - call Function84753 - ret -; 8442c - -Function8442c: ; 8442c - ld a, [wcf65] - push af - ld hl, VTiles1 - ld de, FontInversed - lb bc, BANK(FontInversed), $80 - call Request1bpp - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - call Function84000 - ld a, $10 - ld [wcbfa], a - callba Function1dc1b0 - call ClearTileMap - ld a, $e4 - call DmgToCgbBGPals - call DelayFrame - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_8449d - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function84000 - ld a, $3 - ld [wcbfa], a - callba Function1dc213 - call Function84742 - ld a, $4 - ld [wcf65], a - call Function843f0 - -.asm_8449d - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - ld c, $8 -.asm_844ae - call LowVolume - call DelayFrame - dec c - jr nz, .asm_844ae - pop af - ld [wcf65], a - ret -; 844bc - -Function844bc: ; 844bc (21:44bc) - ld a, [wcf65] - push af - ld a, $9 - ld [wcf65], a - ld a, e - ld [wd004], a - ld a, d - ld [StartFlypoint], a - ld a, b - ld [EndFlypoint], a - ld a, c - ld [MovementBuffer], a - xor a - ld [$ffac], a - ld [wd003], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - xor a - ld [hBGMapMode], a - call Function84817 - ld a, $10 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function8486f - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function84893 - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - call Function848b7 - ld a, $3 - call Function84419 - call Function84559 -.asm_84545 - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret - -Function84559: ; 84559 (21:4559) - call Function84742 - call Function843f0 - ret - -Function84560: ; 84560 - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - xor a - ld [hBGMapMode], a - call LoadTileMapToTempTileMap - callba Function16dac - ld a, $0 - call Function84419 - call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a -.asm_84597 - call JoyTextDelay - call Function846f6 - jr c, .asm_845c0 - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_845c0 - call Function84022 - ld a, [wJumptableIndex] - cp $2 - jr nc, .asm_845b5 - ld a, $3 - ld [wca81], a - -.asm_845b5 - call Function84757 - call Function84785 - call DelayFrame - jr .asm_84597 - -.asm_845c0 - pop af - ld [hVBlank], a - call Function84411 - call Call_LoadTempTileMapToTileMap - xor a - ld [rIF], a - pop af - ld [rIE], a - pop af - ld [wcf65], a - ret -; 845d4 - -Function845d4: ; 845d4 - call Function845db - call Function84425 - ret -; 845db - -Function845db: ; 845db - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - xor a - ld [hBGMapMode], a - ld a, $13 - call Function84419 - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $9 - ld [wcf65], a - call Function843f0 - pop af - ld [hVBlank], a - call Function84411 - call Function84735 - xor a - ld [rIF], a - pop af - ld [rIE], a - pop af - ld [wcf65], a - ret -; 8461a - -Function8461a: ; 8461a - ld a, [wcf65] - push af - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - xor a - ld [hBGMapMode], a - callba Function1dc381 - ld a, $10 - call Function84419 - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_84671 - call Function84411 - ld c, 12 - call DelayFrames - xor a - ld [hBGMapMode], a - callba Function1dc47b - ld a, $3 - call Function84419 - ld a, $9 - ld [wcf65], a - call Function84742 - call Function843f0 - -.asm_84671 - pop af - ld [hVBlank], a - call Function84411 - call Function84735 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret -; 84688 - -_PrintDiploma: ; 84688 - ld a, [wcf65] - push af - callba Function1dd709 - xor a - ld [$ffac], a - call Function8474c - ld a, [rIE] - push af - xor a - ld [rIF], a - ld a, $9 - ld [rIE], a - ld hl, hVBlank - ld a, [hl] - push af - ld [hl], $4 - ld a, $10 - call Function84419 - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 - jr c, .asm_846e2 - call Function84411 - ld c, 12 - call DelayFrames - call LoadTileMapToTempTileMap - xor a - ld [hBGMapMode], a - callba Function1dd7ae - ld a, $3 - call Function84419 - call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 - -.asm_846e2 - pop af - ld [hVBlank], a - call Function84411 - xor a - ld [rIF], a - pop af - ld [rIE], a - call Function84425 - pop af - ld [wcf65], a - ret -; 846f6 - -Function846f6: ; 846f6 - ld a, [hJoyDown] - and B_BUTTON - jr nz, .asm_846fe - and a - ret - -.asm_846fe - ld a, [wca80] - cp $c - jr nz, .asm_84722 -.asm_84705 - ld a, [wc2d5] - and a - jr nz, .asm_84705 - ld a, $16 - ld [wc2d5], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a -.asm_8471c - ld a, [wc2d5] - and a - jr nz, .asm_8471c - -.asm_84722 - ld a, $1 - ld [$ffac], a - scf - ret -; 84728 - -Function84728: ; 84728 - hlcoord 0, 0 - ld de, wca90 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - call CopyBytes - ret -; 84735 - -Function84735: ; 84735 - ld hl, wca90 - decoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - call CopyBytes - ret -; 84742 - -Function84742: ; 84742 - xor a - ld [hJoyReleased], a - ld [hJoyPressed], a - ld [hJoyDown], a - ld [hJoyLast], a - ret -; 8474c - -Function8474c: ; 8474c - ld de, MUSIC_PRINTER - call PlayMusic2 - ret -; 84753 - -Function84753: ; 84753 - call RestartMapMusic - ret -; 84757 - -Function84757: ; 84757 - ld a, [wca88] - cp -1 - jr nz, .printer_connected - ld a, [wca89] - cp -1 - jr z, .error_2 - -.printer_connected - ld a, [wca89] - and %11100000 - ret z ; no error - - bit 7, a - jr nz, .error_1 - bit 6, a - jr nz, .error_4 - ld a, 6 ; error 3 - jr .load_text_index - -.error_4 - ld a, 7 ; error 4 - jr .load_text_index - -.error_1 - ld a, 4 ; error 1 - jr .load_text_index - -.error_2 - ld a, 5 ; error 2 - -.load_text_index - ld [wcbf8], a - ret -; 84785 - -Function84785: ; 84785 - ld a, [wcbf8] - and a - ret z - push af - xor a - ld [hBGMapMode], a - hlcoord 0, 5 - lb bc, 10, 18 - call TextBox - pop af - ld e, a - ld d, 0 - ld hl, PrinterStatusStringPointers -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 1, 7 - ld a, BANK(GBPrinterStrings) - call FarString - hlcoord 2, 15 - ld de, String_PressBToCancel - call PlaceString - ld a, $1 - ld [hBGMapMode], a - xor a - ld [wcbf8], a - ret -; 847bd - -Function847bd: ; 847bd - ld a, [wcbf8] - and a - ret z - push af - xor a - ld [hBGMapMode], a - hlcoord 2, 4 - lb bc, 13, 16 - call ClearBox - pop af - ld e, a - ld d, 0 - ld hl, PrinterStatusStringPointers -rept 2 - add hl, de -endr - ld e, [hl] - inc hl - ld d, [hl] - hlcoord 4, 7 - ld a, BANK(GBPrinterStrings) - call FarString - hlcoord 4, 15 - ld de, String_PressBToCancel - call PlaceString - ld a, $1 - ld [hBGMapMode], a - xor a - ld [wcbf8], a - ret -; 847f5 - -String_PressBToCancel: - db "Press B to Cancel@" -; 84807 - -PrinterStatusStringPointers: ; 84807 - dw String_1dc275 ; @ - dw String_1dc276 ; CHECKING LINK - dw String_1dc289 ; TRANSMITTING - dw String_1dc29c ; PRINTING - dw String_1dc2ad ; error 1 - dw String_1dc2e2 ; error 2 - dw String_1dc317 ; error 3 - dw String_1dc34c ; error 4 -; 84817 - -Function84817: ; 84817 (21:4817) - xor a - ld [wd002], a - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - hlcoord 0, 0 - ld bc, 9 * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function849e9 - call Function849d7 - hlcoord 4, 3 - ld de, String_84865 - call PlaceString - ld a, [wd007] - ld bc, BOX_NAME_LENGTH - ld hl, wBoxNames - call AddNTimes - ld d, h - ld e, l - hlcoord 6, 5 - call PlaceString - ld a, $1 - call Function849c6 - hlcoord 2, 9 - ld c, $3 - call Function848e7 - ret -; 84865 (21:4865) - -String_84865: - db "#MON LIST@" -; 8486f - -Function8486f: ; 8486f (21:486f) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - call Function849e9 - ld a, [wd003] - and a - ret nz - ld a, $4 - call Function849c6 - hlcoord 2, 0 - ld c, $6 - call Function848e7 - ret - -Function84893: ; 84893 (21:4893) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - call Function849e9 - ld a, [wd003] - and a - ret nz - ld a, $a - call Function849c6 - hlcoord 2, 0 - ld c, $6 - call Function848e7 - ret - -Function848b7: ; 848b7 (21:48b7) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - call Function84a0e - hlcoord 1, 15 - lb bc, 2, 18 - call ClearBox - call Function849e9 - call Function849fc - ld a, [wd003] - and a - ret nz - ld a, $10 - call Function849c6 - hlcoord 2, 0 - ld c, $5 - call Function848e7 - ret - -Function848e7: ; 848e7 (21:48e7) - ld a, [EndFlypoint] - call GetSRAMBank - -Function848ed: ; 848ed (21:48ed) - ld a, c - and a - jp z, Function84986 - dec c - ld a, [de] - cp $ff - jp z, Function84981 - ld [wd265], a - ld [CurPartySpecies], a - push bc - push hl - push de - push hl - ld bc, $10 - ld a, " " - call ByteFill - pop hl - push hl - call GetBasePokemonName - pop hl - push hl - call PlaceString - ld a, [CurPartySpecies] - cp $fd - pop hl - jr z, .ok2 - ld bc, $b - add hl, bc - call Function8498a - ld bc, $9 - add hl, bc - ld a, $f3 - ld [hli], a - push hl - ld bc, $e - ld a, " " - call ByteFill - pop hl - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $372 - add hl, bc - ld bc, $b - ld a, [wd002] - call AddNTimes - ld e, l - ld d, h - pop hl - push hl - call PlaceString - pop hl - ld bc, $b - add hl, bc - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $35 - add hl, bc - ld bc, $20 - ld a, [wd002] - call AddNTimes - ld a, [hl] - pop hl - call Function383d -.ok2 - ld hl, wd002 - inc [hl] - pop de - pop hl - ld bc, $3c - add hl, bc - pop bc - inc de - jp Function848ed - -Function84981: ; 84981 (21:4981) - ld a, $1 - ld [wd003], a - -Function84986: ; 84986 (21:4986) - call CloseSRAM - ret - -Function8498a: ; 8498a (21:498a) - push hl - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - ld bc, $2b - add hl, bc - ld bc, $20 - ld a, [wd002] - call AddNTimes - ld de, TempMonDVs - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ld a, [wd002] - ld [CurPartyMon], a - ld a, $3 - ld [MonType], a - callba GetGender - ld a, $7f - jr c, .asm_849c3 - ld a, $ef - jr nz, .asm_849c3 - ld a, $f5 -.asm_849c3 - pop hl - ld [hli], a - ret - -Function849c6: ; 849c6 (21:49c6) - push hl - ld e, a - ld d, $0 - ld a, [wd004] - ld l, a - ld a, [StartFlypoint] - ld h, a - add hl, de - ld e, l - ld d, h - pop hl - ret - -Function849d7: ; 849d7 (21:49d7) - hlcoord 0, 0 - ld a, $79 - ld [hli], a - ld a, $7a - ld c, $12 -.asm_849e1 - ld [hli], a - dec c - jr nz, .asm_849e1 - ld a, $7b - ld [hl], a - ret - -Function849e9: ; 849e9 (21:49e9) - hlcoord 0, 0 - ld de, $13 - ld c, $12 -.asm_849f1 - ld a, $7c - ld [hl], a - add hl, de - ld a, $7c - ld [hli], a - dec c - jr nz, .asm_849f1 - ret - -Function849fc: ; 849fc (21:49fc) - hlcoord 0, 17 - ld a, $7d - ld [hli], a - ld a, $7a - ld c, $12 -.asm_84a06 - ld [hli], a - dec c - jr nz, .asm_84a06 - ld a, $7e - ld [hl], a - ret - -Function84a0e: ; 84a0e (21:4a0e) - hlcoord 2, 0 - ld c, $6 -.asm_84a13 - push bc - push hl - ld de, String84a25 - call PlaceString - pop hl - ld bc, $3c - add hl, bc - pop bc - dec c - jr nz, .asm_84a13 - ret -; 84a25 (21:4a25) - -String84a25: ; 84a25 - db " ------@" -; 84a2e - +INCLUDE "engine/printer.asm" INCLUDE "battle/anim_gfx.asm" - -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, $74 - ld [hli], a - ld [hl], $f2 - hlcoord 3, 13 - ld de, wd265 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - call GetBasePokemonName - hlcoord 7, 13 - call PlaceString - ld a, $3 - 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, $73 - ld [hli], a - ld a, $74 - ld [hli], a - ld [hl], $f3 - 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], $63 - inc hl - ld de, GameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - call WaitBGMap - callba Function26601 - ret -; 868ed - -.PlayTime - db "PLAY TIME@" -; 868f7 - +INCLUDE "event/halloffame.asm" SECTION "bank22", ROMX, BANK[$22] @@ -29053,543 +25175,6 @@ Function8cf4f: ; 8cf4f INCLUDE "engine/sprites.asm" -Function8e79d: ; 8e79d - ld a, [hSGB] - ld de, GFX_8e7f4 - and a - jr z, .asm_8e7a8 - ld de, GFX_8e804 - -.asm_8e7a8 - ld hl, VTiles0 - lb bc, BANK(GFX_8e7f4), 1 - call Request2bpp - ld c, $8 - ld d, $0 -.asm_8e7b5 - push bc - call Function8e7c6 - call DelayFrame - pop bc -rept 2 - inc d -endr - dec c - jr nz, .asm_8e7b5 - call ClearSprites - ret -; 8e7c6 - -Function8e7c6: ; 8e7c6 - ld hl, Sprites - ld c, $8 -.asm_8e7cb - ld a, c - and a - ret z - dec c - ld a, c - sla a - sla a - sla a - push af - push de - push hl - call Function8e72c - pop hl - pop de - add $68 - ld [hli], a - pop af - push de - push hl - call Function8e72a - pop hl - pop de - add $54 - ld [hli], a - ld a, $0 - ld [hli], a - ld a, $6 - ld [hli], a - jr .asm_8e7cb -; 8e7f4 - -GFX_8e7f4: ; 8e7f4 -INCBIN "gfx/unknown/08e7f4.2bpp" -GFX_8e804: ; 8e804 -INCBIN "gfx/unknown/08e804.2bpp" - -InefficientlyClear121BytesAtwc300: ; 8e814 - push hl - push de - push bc - push af - ld hl, wc300 - ld bc, wc3c1 - wc300 -.loop - ld [hl], $0 - inc hl - dec bc - ld a, c - or b - jr nz, .loop - pop af - pop bc - pop de - pop hl - ret -; 8e82b - -Function8e82b: ; 8e82b - ld a, e - call ReadMonMenuIcon - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - ld b, BANK(Icons) - ld c, 8 - ret -; 8e83f - -Function8e83f: ; 8e83f - push hl - push de - push bc - call Function8e849 - pop bc - pop de - pop hl - ret -; 8e849 - -Function8e849: ; 8e849 - ld d, 0 - ld hl, Jumptable_8e854 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8e854 - - -Jumptable_8e854: ; 8e854 (23:6854) - dw Function8e8d5 - dw Function8e961 - dw Function8e97d - dw Function8e99a - dw Function8e898 - dw Function8e8b1 - dw Function8e862 - - -Function8e862: ; 8e862 (23:6862) - call Function8e908 - call Function8e86c - call Function8e936 - ret - -Function8e86c: ; 8e86c (23:686c) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - pop bc - ld a, [hl] - and a - jr z, .asm_8e890 - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e88e - ld a, $6 - jr .asm_8e892 -.asm_8e88e - ld a, $5 -.asm_8e890 - ld a, $4 -.asm_8e892 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e898: ; 8e898 (23:6898) - call Function8e8d5 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $48 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $48 - ld [hl], a - ret - -Function8e8b1: ; 8e8b1 (23:68b1) - call Function8e908 - call Function8e936 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $18 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $60 - ld [hl], a - ld a, c - ld [wc608], a - ld a, b - ld [wc608 + 1], a - ret - -Function8e8d5: ; 8e8d5 (23:68d5) - call Function8e908 - call Function8e8df - call Function8e936 - ret - -Function8e8df: ; 8e8df (23:68df) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, $30 - call AddNTimes - pop bc - ld a, [hl] - and a - ret z - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e900 - ld a, $3 - jr .asm_8e902 -.asm_8e900 - ld a, $2 -.asm_8e902 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e908: ; 8e908 (23:6908) - ld a, [wc3b7] - push af - ld a, [hObjectStructIndexBuffer] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call ReadMonMenuIcon - ld [CurIcon], a - call Function8e9db - ld a, [hObjectStructIndexBuffer] -; y coord -rept 4 - add a -endr - add $1c - ld d, a -; x coord - ld e, $10 -; type is partymon icon - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - pop af - ld hl, $3 - add hl, bc - ld [hl], a - ret - -Function8e936: ; 8e936 (23:6936) - push bc - ld a, [hObjectStructIndexBuffer] - ld b, a - call Function8e94c - ld a, b - pop bc - ld hl, $9 - add hl, bc - ld [hl], a - rlca - rlca - ld hl, $d - add hl, bc - ld [hl], a - ret - -Function8e94c: ; 8e94c (23:694c) - callba PlacePartymonHPBar - call GetHPPal - ld e, d - ld d, 0 - ld hl, Unknown_8e95e - add hl, de - ld b, [hl] - ret -; 8e95e (23:695e) - -Unknown_8e95e: ; 8e95e - db $00, $40, $80 -; 8e961 - -Function8e961: ; 8e961 (23:6961) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - lb de, $24, $20 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e97d: ; 8e97d (23:697d) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - ld d, $1a - ld e, $24 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e99a: ; 8e99a (23:699a) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - ld a, $62 - ld [wc3b7], a - call Function8e9db - ret - -GetSpeciesIcon: ; 8e9ac -; Load species icon into VRAM at tile a - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIconGFX - ret -; 8e9bc - - -Function8e9bc: ; 8e9bc (23:69bc) - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIcon_a - ret -; 8e9cc (23:69cc) - -Function8e9cc: ; 8e9cc - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - call GetIcon_de - ret -; 8e9db - -Function8e9db: ; 8e9db (23:69db) - ld a, [wc3b7] - -GetIconGFX: ; 8e9de - call GetIcon_a - ld de, $80 ; 8 tiles - add hl, de - ld de, HeldItemIcons - lb bc, BANK(HeldItemIcons), 2 - call GetGFXUnlessMobile - ld a, [wc3b7] - add 10 - ld [wc3b7], a - ret - -HeldItemIcons: -INCBIN "gfx/icon/mail.2bpp" -INCBIN "gfx/icon/item.2bpp" -; 8ea17 - -GetIcon_de: ; 8ea17 -; Load icon graphics into VRAM starting from tile de. - ld l, e - ld h, d - jr GetIcon - -GetIcon_a: ; 8ea1b -; Load icon graphics into VRAM starting from tile a. - ld l, a - ld h, 0 - -GetIcon: ; 8ea1e -; Load icon graphics into VRAM starting from tile hl. - -; One tile is 16 bytes long. -rept 4 - add hl, hl -endr - - ld de, VTiles0 - add hl, de - push hl - -; The icons are contiguous, in order and of the same -; size, so the pointer table is somewhat redundant. - ld a, [CurIcon] - push hl - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - - lb bc, BANK(Icons), 8 - call GetGFXUnlessMobile - - pop hl - ret -; 8ea3f - -GetGFXUnlessMobile: ; 8ea3f - ld a, [wLinkMode] - cp LINK_MOBILE - jp nz, Request2bpp - jp Get2bpp_2 -; 8ea4a - -Function8ea4a: ; 8ea4a - ld hl, wc314 - ld e, $6 - ld a, [MenuSelection2] - ld d, a -.loop - ld a, [hl] - and a - jr z, .next - cp d - jr z, .loadwithtwo - ld a, $0 - jr .ok - -.loadwithtwo - ld a, $2 - -.ok - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea71 - -Function8ea71: ; 8ea71 - ld hl, wc314 - ld e, $6 -.loop - ld a, [hl] - and a - jr z, .zero - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], $1 - pop hl -.zero - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea8c (23:6a8c) - -Function8ea8c: ; 8ea8c - ld hl, wc314 - ld e, $6 - ld a, [wd0e3] - ld d, a -.asm_8ea95 - ld a, [hl] - and a - jr z, .asm_8eaab - cp d - jr z, .asm_8eaa0 - ld a, $3 - jr .asm_8eaa2 -.asm_8eaa0 - ld a, $2 -.asm_8eaa2 - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl -.asm_8eaab - ld bc, $10 - add hl, bc - dec e - jr nz, .asm_8ea95 - ret - - -INCLUDE "menu/mon_icons.asm" - SECTION "bank24", ROMX, BANK[$24] @@ -29638,1095 +25223,7 @@ INCLUDE "engine/events_3.asm" INCLUDE "engine/radio.asm" -ReadPartyMonMail: ; b9229 - ld a, [CurPartyMon] - ld hl, sPartyMail - ld bc, MAIL_STRUCT_LENGTH - call AddNTimes - ld d, h - ld e, l -ReadAnyMail: ; b9237 - push de - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - call LoadFontsExtra - pop de - push de - ld a, BANK(sPartyMail) - call GetSRAMBank - callba Function1de5c8 - call CloseSRAM - ld a, c - ld de, GFX_1de5e6 - or a - jr z, .asm_b9268 - ld de, GFX_1de9e6 - sub $3 - jr c, .asm_b9268 - ld de, GFX_1dede6 - -.asm_b9268 - ld hl, VTiles1 - lb bc, BANK(GFX_1de5e6), $80 - call Get1bpp - pop de - call Functionb92b8 - call EnableLCD - call WaitBGMap - ld a, [wd1ec] - ld e, a - callba Function8cb4 - call SetPalettes - xor a - ld [hJoyPressed], a - call Functionb929a - call ClearBGPalettes - call DisableLCD - call LoadStandardFont - jp EnableLCD -; b929a - -Functionb929a: ; b929a -.asm_b929a - call GetJoypad - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON | START - jr z, .asm_b929a - and START - jr nz, .asm_b92a8 - ret - -.asm_b92a8 - ld a, [wJumptableIndex] - push af - callab Function845d4 - pop af - ld [wJumptableIndex], a - jr .asm_b929a -; b92b8 - -Functionb92b8: ; b92b8 - ld h, d - ld l, e - push hl - ld a, $0 - call GetSRAMBank - ld de, $2b - add hl, de - ld a, [hli] - ld [Buffer1], a - ld a, [hli] - ld [Buffer2], a - ld a, [hli] - ld [CurPartySpecies], a - ld b, [hl] - call CloseSRAM - ld hl, Unknown_b92f8 - ld c, 0 -.asm_b92d9 - ld a, [hli] - cp b - jr z, .asm_b92ea - cp $ff - jr z, .asm_b92e6 - inc c -rept 2 - inc hl -endr - jr .asm_b92d9 - -.asm_b92e6 - ld hl, Unknown_b92f8 - inc hl - -.asm_b92ea - ld a, c - ld [wd1ec], a - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .done - pop bc - push de - jp [hl] -.done - ret -; b92f8 - -Unknown_b92f8: ; b92f8 - dbw FLOWER_MAIL, Functionb963e - dbw SURF_MAIL, Functionb9317 - dbw LITEBLUEMAIL, Functionb9335 - dbw PORTRAITMAIL, Functionb96ca - dbw LOVELY_MAIL, Functionb944b - dbw EON_MAIL, Functionb93d2 - dbw MORPH_MAIL, Functionb94d6 - dbw BLUESKY_MAIL, Functionb9582 - dbw MUSIC_MAIL, Functionb9710 - dbw MIRAGE_MAIL, Functionb9776 - db $ff -; b9317 - -Functionb9317: ; b9317 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9d46 - ld c, $40 - call Functionb9915 - ld de, MailLaprasGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b994e - ld c, $8 - call Functionb9915 - jr Functionb9351 - -Functionb9335: ; b9335 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9dc6 - ld c, $40 - call Functionb9915 - ld de, MailDratiniGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b995e - ld c, $8 - call Functionb9915 - -Functionb9351: ; b9351 - ld de, Unknown_b9976 - ld c, $10 - call Functionb9915 - ld c, $10 - call Functionb990c - ld de, Unknown_b9c3e - ld c, $40 - call Functionb990c - ld c, $40 - call Functionb9915 - call Functionb9858 - hlcoord 2, 15 - ld a, $3f - call Functionb98d4 - ld a, $39 - hlcoord 15, 14 - call Functionb98fc - ld a, $44 - hlcoord 2, 2 - call Functionb98ee - hlcoord 15, 11 - call Functionb98ee - ld a, $4c - hlcoord 3, 12 - call Functionb98ee - hlcoord 15, 2 - call Functionb98ee - ld a, $50 - hlcoord 6, 3 - call Functionb98ee - ld a, $40 - hlcoord 13, 2 - ld [hli], a - hlcoord 6, 14 - ld [hl], a - ld a, $41 - hlcoord 4, 5 - ld [hli], a - hlcoord 17, 5 - ld [hli], a - hlcoord 13, 12 - ld [hl], a - ld a, $42 - hlcoord 9, 2 - ld [hli], a - hlcoord 14, 5 - ld [hli], a - hlcoord 3, 10 - ld [hl], a - ld a, $43 - hlcoord 6, 11 - ld [hli], a - pop hl - jp Functionb9803 -; b93d2 - -Functionb93d2: ; b93d2 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld de, Unknown_b998e - ld c, $8 - call Functionb990c - ld de, Unknown_b998e - ld c, $8 - call Functionb990c - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld de, Unknown_b9d76 - ld c, $8 - call Functionb9915 - ld de, MailPikaGFX - ld c, $30 - call Functionb991e - ld hl, VTiles2 tile $3d - ld de, Unknown_b9c9e - ld c, $20 - call Functionb990c - ld de, Unknown_b998e - ld c, $8 - call Functionb9915 - ld a, $31 - hlcoord 0, 0 - call Functionb98a8 - hlcoord 1, 17 - call Functionb98a8 - ld a, $33 - hlcoord 0, 1 - call Functionb98ba - hlcoord 19, 0 - call Functionb98ba - hlcoord 2, 15 - ld a, $35 - call Functionb98d4 - inc a - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b944b - -Functionb944b: ; b944b - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e26 - ld c, $28 - call Functionb9915 - ld de, MailPoliwagGFX - ld c, $30 - call Functionb991e - ld de, Unknown_b9966 - ld c, $8 - call Functionb9915 - ld de, Unknown_b9c5e - ld c, $20 - call Functionb9915 - ld de, Unknown_b996e - ld c, $8 - call Functionb990c - call Functionb987b - hlcoord 2, 15 - ld a, $3c - call Functionb98d4 - ld a, $36 - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b9491 - -Functionb9491: ; b9491 - ld a, $3d - hlcoord 2, 2 - call Functionb98ee - hlcoord 16, 2 - call Functionb98ee - hlcoord 9, 4 - call Functionb98ee - hlcoord 2, 11 - call Functionb98ee - hlcoord 6, 12 - call Functionb98ee - hlcoord 12, 11 - call Functionb98ee - ld a, $41 - hlcoord 5, 4 - ld [hl], a - hlcoord 6, 2 - ld [hl], a - hlcoord 12, 4 - ld [hl], a - hlcoord 14, 2 - ld [hl], a - hlcoord 3, 13 - ld [hl], a - hlcoord 9, 11 - ld [hl], a - hlcoord 16, 12 - ld [hl], a - ret -; b94d6 - -Functionb94d6: ; b94d6 - push bc - ld hl, VTiles2 tile $31 - ld bc, $28 - call Functionb97f8 - ld de, Unknown_b9c96 - ld c, 8 - call Functionb9915 - ld de, Unknown_b9c7e - ld c, 8 - call Functionb9915 - ld de, Unknown_b993e - ld c, 8 - call Functionb9915 - ld de, Unknown_b997e - ld c, 8 - call Functionb990c - ld de, Unknown_b9926 - ld c, 8 - call Functionb9915 - ld de, MailDittoGFX - ld c, $30 - call Functionb991e - call Functionb987b - ld a, $31 - hlcoord 1, 1 - call Functionb98ee - hlcoord 17, 15 - call Functionb98ee - hlcoord 1, 3 - ld [hl], a - hlcoord 3, 1 - ld [hl], a - hlcoord 16, 16 - ld [hl], a - hlcoord 18, 14 - ld [hl], a - ld a, $36 - hlcoord 1, 4 - ld [hl], a - hlcoord 2, 3 - ld [hl], a - hlcoord 3, 2 - ld [hl], a - hlcoord 4, 1 - ld [hl], a - inc a - hlcoord 15, 16 - ld [hl], a - hlcoord 16, 15 - ld [hl], a - hlcoord 17, 14 - ld [hl], a - hlcoord 18, 13 - ld [hl], a - inc a - hlcoord 2, 15 - ld b, $e - call Functionb98de - inc a - hlcoord 2, 11 - call Functionb98d4 - hlcoord 2, 5 - call Functionb98d4 - inc a - hlcoord 6, 1 - call Functionb98d0 - hlcoord 1, 16 - call Functionb98d0 - inc a - hlcoord 3, 13 - call Functionb98fc - pop hl - jp Functionb9803 -; b9582 - -Functionb9582: ; b9582 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b997e - ld c, $8 - call Functionb9915 - ld a, $ff - ld bc, $10 - call ByteFill - ld de, Unknown_b992e - ld c, $8 - call Functionb991e - ld de, MailDragoniteGFX - ld c, $b8 - call Functionb991e - ld de, MailCloudGFX - ld c, $30 - call Functionb990c - ld de, Unknown_b9db6 - ld c, $8 - call Functionb990c - ld de, MailCloudGFX - ld c, $8 - call Functionb990c - ld de, Unknown_b9d26 - ld c, $10 - call Functionb990c - ld de, Unknown_b9d3e - ld c, $8 - call Functionb990c - ld a, $31 - hlcoord 0, 0 - call Functionb98dc - hlcoord 0, 1 - call Functionb98e3 - hlcoord 19, 1 - call Functionb98e3 - inc a - hlcoord 0, 17 - call Functionb98dc - inc a - hlcoord 0, 16 - call Functionb98dc - inc a - hlcoord 2, 2 - call Functionb9636 - hlcoord 3, 3 - call Functionb9636 - hlcoord 4, 4 - call Functionb9636 - dec hl - ld [hl], $7f - dec a - hlcoord 15, 14 - call Functionb98ee - add $4 - hlcoord 15, 16 - ld [hli], a - inc a - ld [hl], a - inc a - push af - hlcoord 12, 1 - call Functionb98fc - pop af - hlcoord 15, 4 - call Functionb98fc - inc a - hlcoord 2, 11 - call Functionb98d4 - inc a - hlcoord 10, 3 - call Functionb98ee - pop hl - jp Functionb9803 -; b9636 - -Functionb9636: ; b9636 - ld b, $6 -.asm_b9638 - ld [hli], a - inc a - dec b - jr nz, .asm_b9638 - ret -; b963e - -Functionb963e: ; b963e - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9d86 - ld c, $40 - call Functionb990c - ld de, MailOddishGFX - ld c, $20 - call Functionb991e - ld de, Unknown_b9db6 - ld c, $8 - call Functionb9915 - ld de, Unknown_b9cbe - ld c, $20 - call Functionb990c - ld c, $20 - call Functionb9915 - call Functionb9858 - hlcoord 2, 15 - ld a, $3d - call Functionb98d4 - ld a, $39 - hlcoord 16, 13 - call Functionb98ee - hlcoord 2, 13 - call Functionb98ee - ld a, $3e - hlcoord 2, 2 - call Functionb98ee - hlcoord 5, 3 - call Functionb98ee - hlcoord 10, 2 - call Functionb98ee - hlcoord 16, 3 - call Functionb98ee - hlcoord 5, 11 - call Functionb98ee - hlcoord 16, 10 - call Functionb98ee - ld a, $42 - hlcoord 3, 4 - call Functionb98ee - hlcoord 12, 3 - call Functionb98ee - hlcoord 14, 2 - call Functionb98ee - hlcoord 2, 10 - call Functionb98ee - hlcoord 14, 11 - call Functionb98ee - pop hl - jp Functionb9803 -; b96ca - -Functionb96ca: ; b96ca - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e4e - ld c, $28 - call Functionb9915 - ld de, Unknown_b995e - ld c, $8 - call Functionb9915 - ld hl, VTiles2 tile $3d - ld de, Unknown_b9bfe - ld c, $20 - call Functionb990c - ld de, Unknown_b9936 - ld c, $8 - call Functionb9915 - call Functionb987b - hlcoord 8, 15 - ld a, $36 - ld b, $a - call Functionb98de - call Functionb9491 - ld a, $1 - ld [UnownLetter], a - hlcoord 1, 10 - call PrepMonFrontpic - pop hl - jp Functionb9803 -; b9710 - -Functionb9710: ; b9710 - push bc - ld hl, VTiles2 tile $31 - ld de, Unknown_b9e06 - ld c, $20 - call Functionb9915 - ld de, Unknown_b993e - ld c, $10 - call Functionb9915 - ld de, Unknown_b9996 - ld c, $30 - call Functionb991e - xor a - ld bc, $10 - call ByteFill - ld de, Unknown_b9cfe - ld c, $18 - call Functionb990c - ld de, Unknown_b9946 - ld c, $8 - call Functionb990c - ld a, $31 - hlcoord 0, 0 - call Functionb98a8 - hlcoord 1, 17 - call Functionb98a8 - ld a, $33 - hlcoord 0, 1 - call Functionb98ba - hlcoord 19, 0 - call Functionb98ba - ld a, $35 - hlcoord 2, 15 - call Functionb989e - ld a, $37 - hlcoord 15, 14 - call Functionb98fc - call Functionb9491 - pop hl - jp Functionb9803 -; b9776 - -Functionb9776: ; b9776 - push bc - ld hl, VTiles2 tile $31 - ld bc, $28 - call Functionb97f8 - ld de, Unknown_b992e - ld c, $8 - call Functionb9915 - ld de, MailMewGFX - ld c, $90 - call Functionb9915 - ld de, Unknown_b9dce - ld c, $8 - call Functionb990c - ld de, Unknown_b9df6 - ld c, $8 - call Functionb990c - call Functionb987b - ld a, $36 - hlcoord 1, 16 - call Functionb98d8 - inc a - hlcoord 15, 14 - call Functionb98fc - inc a - hlcoord 15, 16 - ld [hli], a - inc a - ld [hl], a - ld a, $3f - hlcoord 1, 1 - call Functionb98a8 - ld a, $41 - hlcoord 0, 2 - call Functionb98b5 - ld a, $43 - hlcoord 19, 2 - call Functionb98b5 - ld a, $45 - hlcoord 0, 1 - ld [hl], a - inc a - hlcoord 19, 1 - ld [hl], a - inc a - hlcoord 0, 16 - ld [hl], a - inc a - hlcoord 19, 16 - ld [hl], a - inc a - hlcoord 2, 5 - call Functionb98d4 - inc a - hlcoord 2, 11 - call Functionb98d4 - pop hl - jp Functionb9803 -; b97f8 - -Functionb97f8: ; b97f8 -.asm_b97f8 - xor a - ld [hli], a - ld a, $ff - ld [hli], a - dec bc - ld a, b - or c - jr nz, .asm_b97f8 - ret -; b9803 - -Functionb9803: ; b9803 - ld bc, $2f - ld de, wd002 - ld a, $0 - call GetSRAMBank - call CopyBytes - call CloseSRAM - ld hl, wd023 - ld de, wd050 - ld bc, $a - call CopyBytes - ld a, $50 - ld [wd023], a - ld [wd05a], a - ld de, wd002 - hlcoord 2, 7 - call PlaceString - ld de, wd050 - ld a, [de] - and a - ret z - ld a, [wd1ec] - hlcoord 8, 14 - cp $3 - jr z, .asm_b984b - hlcoord 6, 14 - cp $6 - jr z, .asm_b984b - hlcoord 5, 14 - -.asm_b984b - jp PlaceString -; b984e - -Functionb984e: ; b984e -.asm_b984e - ld a, [hl] - xor $ff - ld [hli], a - dec bc - ld a, b - or c - jr nz, .asm_b984e - ret -; b9858 - -Functionb9858: ; b9858 - hlcoord 0, 0 - ld a, $31 - ld [hli], a - inc a - call Functionb98d8 - inc a - ld [hli], a - inc a - call Functionb98e3 - ld a, $36 - ld [hli], a - inc a - call Functionb98d8 - hlcoord 19, 1 - ld a, $35 - call Functionb98e3 - ld a, $38 - ld [hl], a - ret -; b987b - -Functionb987b: ; b987b - hlcoord 0, 0 - ld a, $31 - ld [hli], a - inc a - call Functionb98d8 - ld [hl], $31 - inc hl - inc a - call Functionb98e3 - ld [hl], $31 - inc hl - inc a - call Functionb98d8 - hlcoord 19, 1 - ld a, $35 - call Functionb98e3 - ld [hl], $31 - ret -; b989e - -Functionb989e: ; b989e - push af - ld b, $7 - jr Functionb98ab - -Functionb98a3: ; b98a3 - push af - ld b, $8 - jr Functionb98ab - -Functionb98a8: ; b98a8 - push af - ld b, $9 - -Functionb98ab: ; b98ab - ld [hli], a - inc a - ld [hli], a - dec a - dec b - jr nz, Functionb98ab - ld [hl], a - pop af - ret -; b98b5 - -Functionb98b5: ; b98b5 - push af - ld b, $7 - jr Functionb98bd - -Functionb98ba: ; b98ba - push af - ld b, $8 - -Functionb98bd: ; b98bd - ld [hl], a - ld de, SCREEN_WIDTH - add hl, de - inc a - ld [hl], a - add hl, de - dec a - dec b - jr nz, Functionb98bd - ld [hl], a - pop af - ret -; b98cc - -Functionb98cc: ; b98cc - ld b, $7 - jr Functionb98de - -Functionb98d0: ; b98d0 - ld b, $d - jr Functionb98de - -Functionb98d4: ; b98d4 - ld b, $10 - jr Functionb98de - -Functionb98d8: ; b98d8 - ld b, $12 - jr Functionb98de - -Functionb98dc: ; b98dc - ld b, $14 - -Functionb98de: ; b98de - ld [hli], a - dec b - jr nz, Functionb98de - ret -; b98e3 - -Functionb98e3: ; b98e3 - ld b, $10 - ld de, SCREEN_WIDTH -.asm_b98e8 - ld [hl], a - add hl, de - dec b - jr nz, .asm_b98e8 - ret -; b98ee - -Functionb98ee: ; b98ee - push af - ld [hli], a - inc a - ld [hl], a - ld bc, $13 - add hl, bc - inc a - ld [hli], a - inc a - ld [hl], a - pop af - ret -; b98fc - -Functionb98fc: ; b98fc - ld [hli], a - inc a - ld [hli], a - inc a - ld [hl], a - ld bc, SCREEN_HEIGHT - add hl, bc - inc a - ld [hli], a - inc a - ld [hli], a - inc a - ld [hl], a - ret -; b990c - -Functionb990c: ; b990c -.asm_b990c - ld a, [de] - inc de - ld [hli], a - xor a - ld [hli], a - dec c - jr nz, .asm_b990c - ret -; b9915 - -Functionb9915: ; b9915 -.asm_b9915 - xor a - ld [hli], a - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .asm_b9915 - ret -; b991e - -Functionb991e: ; b991e -.asm_b991e - ld a, [de] - inc de -rept 2 - ld [hli], a -endr - dec c - jr nz, .asm_b991e - ret -; b9926 - -Unknown_b9926: ; b9926 -INCBIN "gfx/unknown/0b9926.1bpp" - -Unknown_b992e: ; b992e -INCBIN "gfx/unknown/0b992e.1bpp" - -Unknown_b9936: ; b9936 -INCBIN "gfx/unknown/0b9936.1bpp" - -Unknown_b993e: ; b993e -INCBIN "gfx/unknown/0b993e.1bpp" - -Unknown_b9946: ; b9946 -INCBIN "gfx/unknown/0b9946.1bpp" - -Unknown_b994e: ; b994e -INCBIN "gfx/unknown/0b994e.1bpp" - -Unknown_b995e: ; b995e -INCBIN "gfx/unknown/0b995e.1bpp" - -Unknown_b9966: ; b9966 -INCBIN "gfx/unknown/0b9966.1bpp" - -Unknown_b996e: ; b996e -INCBIN "gfx/unknown/0b996e.1bpp" - -Unknown_b9976: ; b9976 -INCBIN "gfx/unknown/0b9976.1bpp" - -Unknown_b997e: ; b997e -INCBIN "gfx/unknown/0b997e.1bpp" - -Unknown_b998e: ; b998e -INCBIN "gfx/unknown/0b998e.1bpp" - -Unknown_b9996: ; b9996 -INCBIN "gfx/unknown/0b9996.1bpp" - -MailDratiniGFX: ; b99c6 -INCBIN "gfx/unknown/0b99c6.1bpp" - -MailPoliwagGFX: ; b99f6 -INCBIN "gfx/unknown/0b99f6.1bpp" - -MailLaprasGFX: ; b9a26 -INCBIN "gfx/unknown/0b9a26.1bpp" - -MailPikaGFX: ; b9a56 -INCBIN "gfx/unknown/0b9a56.1bpp" - -MailDittoGFX: ; b9a86 -INCBIN "gfx/unknown/0b9a86.1bpp" - -MailMewGFX: ; b9ab6 -INCBIN "gfx/unknown/0b9ab6.1bpp" - -MailDragoniteGFX: ; b9b46 -INCBIN "gfx/unknown/0b9b46.1bpp" - -MailSentretGFX: ; b9bce -INCBIN "gfx/unknown/0b9bce.1bpp" - -Unknown_b9bee: ; b9bee -INCBIN "gfx/unknown/0b9bee.1bpp" - -Unknown_b9bfe: ; b9bfe -INCBIN "gfx/unknown/0b9bfe.1bpp" - -MailOddishGFX: ; b9c1e -INCBIN "gfx/unknown/0b9c1e.1bpp" - -Unknown_b9c3e: ; b9c3e -INCBIN "gfx/unknown/0b9c3e.1bpp" - -Unknown_b9c5e: ; b9c5e -INCBIN "gfx/unknown/0b9c5e.1bpp" - -Unknown_b9c7e: ; b9c7e -INCBIN "gfx/unknown/0b9c7e.1bpp" - -Unknown_b9c96: ; b9c96 -INCBIN "gfx/unknown/0b9c96.1bpp" - -Unknown_b9c9e: ; b9c9e -INCBIN "gfx/unknown/0b9c9e.1bpp" - -Unknown_b9cbe: ; b9cbe -INCBIN "gfx/unknown/0b9cbe.1bpp" - -Unknown_b9cde: ; b9cde -INCBIN "gfx/unknown/0b9cde.1bpp" - -Unknown_b9cfe: ; b9cfe -INCBIN "gfx/unknown/0b9cfe.1bpp" - -MailCloudGFX: ; b9d16 -INCBIN "gfx/unknown/0b9d16.1bpp" - -Unknown_b9d26: ; b9d26 -INCBIN "gfx/unknown/0b9d26.1bpp" - -Unknown_b9d3e: ; b9d3e -INCBIN "gfx/unknown/0b9d3e.1bpp" - -Unknown_b9d46: ; b9d46 -INCBIN "gfx/unknown/0b9d46.1bpp" - -Unknown_b9d76: ; b9d76 -INCBIN "gfx/unknown/0b9d76.1bpp" - -Unknown_b9d86: ; b9d86 -INCBIN "gfx/unknown/0b9d86.1bpp" - -Unknown_b9db6: ; b9db6 -INCBIN "gfx/unknown/0b9db6.1bpp" - -Unknown_b9dc6: ; b9dc6 -INCBIN "gfx/unknown/0b9dc6.1bpp" - -Unknown_b9dce: ; b9dce -INCBIN "gfx/unknown/0b9dce.1bpp" - -Unknown_b9df6: ; b9df6 -INCBIN "gfx/unknown/0b9df6.1bpp" - -Unknown_b9e06: ; b9e06 -INCBIN "gfx/unknown/0b9e06.1bpp" - -Unknown_b9e26: ; b9e26 -INCBIN "gfx/unknown/0b9e26.1bpp" - -Unknown_b9e4e: ; b9e4e -INCBIN "gfx/unknown/0b9e4e.1bpp" - - -ItemIsMail: ; b9e76 - ld a, d - ld hl, .items - ld de, 1 - jp IsInArray -; b9e80 - -.items - db FLOWER_MAIL - db SURF_MAIL - db LITEBLUEMAIL - db PORTRAITMAIL - db LOVELY_MAIL - db EON_MAIL - db MORPH_MAIL - db BLUESKY_MAIL - db MUSIC_MAIL - db MIRAGE_MAIL - db $ff -; b9e8b - +INCLUDE "gfx/mail.asm" SECTION "bank2F", ROMX, BANK[$2F] @@ -31159,3463 +25656,12 @@ INCBIN "gfx/misc/copyright.2bpp" ; e41d0 INCLUDE "engine/options_menu.asm" - -Functione455c: ; e455c - hlcoord 1, 1 - ld de, SCREEN_WIDTH - ld c, $10 -.asm_e4564 - ld [hl], $7f - add hl, de - dec c - jr nz, .asm_e4564 - hlcoord 1, 2 - ld bc, $28 - ld a, [wJumptableIndex] - call AddNTimes - ld [hl], $ed - ret -; e4579 - - -Functione4579: ; e4579 - ld de, MUSIC_NONE - call PlayMusic - call ClearBGPalettes - call ClearTileMap - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - xor a - ld [hBGMapAddress], a - ld [hJoyDown], a - ld [hSCX], a - ld [hSCY], a - ld a, $90 - ld [hWY], a - call WaitBGMap - ld b, SCGB_19 - call GetSGBLayout - call SetPalettes - ld c, 10 - call DelayFrames - callab Copyright - call WaitBGMap - ld c, 100 - call DelayFrames - call ClearTileMap - callba GBCOnlyScreen - call Functione45e8 -.joy_loop - call JoyTextDelay - ld a, [hJoyLast] - and BUTTONS - jr nz, .pressed_button - ld a, [wJumptableIndex] - bit 7, a - jr nz, .finish - call PlaceGameFreakPresents - callba Function8cf69 - call DelayFrame - jr .joy_loop - -.pressed_button - call Functione465e - scf - ret - -.finish - call Functione465e - and a - ret -; e45e8 - -Functione45e8: ; e45e8 - ld de, GameFreakLogo - ld hl, VTiles2 - lb bc, BANK(GameFreakLogo), $1c - call Get1bpp - - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - - ld hl, IntroLogoGFX - ld de, w6_d000 - ld a, BANK(IntroLogoGFX) - call FarDecompress - - ld hl, VTiles0 - ld de, w6_d000 - lb bc, 1, 8 tiles - call Request2bpp - - ld hl, VTiles1 - ld de, w6_d000 + $80 tiles - lb bc, 1, 8 tiles - call Request2bpp - - pop af - ld [rSVBK], a - - callba Function8cf53 - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_03 - call _InitSpriteAnimStruct - ld hl, $7 - add hl, bc - ld [hl], $a0 - ld hl, $c - add hl, bc - ld [hl], $60 - ld hl, $d - add hl, bc - ld [hl], $30 - xor a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [hSCX], a - ld [hSCY], a - ld a, $1 - ld [hBGMapMode], a - ld a, $90 - ld [hWY], a - ld de, $e4e4 - call DmgToCgbObjPals - ret -; e465e - -Functione465e: ; e465e - callba Function8cf53 - call ClearTileMap - call ClearSprites - ld c, 16 - call DelayFrames - ret -; e4670 - -PlaceGameFreakPresents: ; e4670 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; e467f - -.jumptable: ; e467f - dw PlaceGameFreakPresents_0 - dw PlaceGameFreakPresents_1 - dw PlaceGameFreakPresents_2 - dw PlaceGameFreakPresents_3 -; e4687 - -PlaceGameFreakPresents_AdvanceIndex: ; e4687 - ld hl, wJumptableIndex - inc [hl] - ret -; e468c - -PlaceGameFreakPresents_0: ; e468c - ret -; e468d - -PlaceGameFreakPresents_1: ; e468d - ld hl, wcf65 - ld a, [hl] - cp $20 - jr nc, .PlaceGameFreak - inc [hl] - ret - -.PlaceGameFreak - ld [hl], 0 - ld hl, .GAME_FREAK - decoord 5, 10 - ld bc, .end - .GAME_FREAK - call CopyBytes - call PlaceGameFreakPresents_AdvanceIndex - ld de, SFX_GAME_FREAK_PRESENTS - call PlaySFX - ret -; e46af - -.GAME_FREAK - ; G A M E _ F R E A K - db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6 -.end - db "@" -; e46ba - -PlaceGameFreakPresents_2: ; e46ba - ld hl, wcf65 - ld a, [hl] - cp $40 - jr nc, .place_presents - inc [hl] - ret - -.place_presents - ld [hl], 0 - ld hl, .presents - decoord 7,11 - ld bc, .end - .presents - call CopyBytes - call PlaceGameFreakPresents_AdvanceIndex - ret -; e46d6 - -.presents - db 7, 8, 9, 10, 11, 12 -.end - db "@" -; e46dd - -PlaceGameFreakPresents_3: ; e46dd - ld hl, wcf65 - ld a, [hl] - cp $80 - jr nc, .finish - inc [hl] - ret - -.finish - ld hl, wJumptableIndex - set 7, [hl] - ret -; e46ed - - - -GameFreakLogoJumper: ; e46ed (39:46ed) - ld hl, $b - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, GameFreakLogoScenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -GameFreakLogoScenes: ; e46fd (39:46fd) - dw GameFreakLogoScene1 - dw GameFreakLogoScene2 - dw GameFreakLogoScene3 - dw GameFreakLogoScene4 - dw GameFreakLogoScene5 - - -GameFreakLogoScene1: ; e4707 (39:4707) - ld hl, $b - add hl, bc - inc [hl] - ret - -GameFreakLogoScene2: ; e470d (39:470d) - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_e4747 - ld d, a - ld hl, $d - add hl, bc - ld a, [hl] - and $3f - cp $20 - jr nc, .asm_e4723 - add $20 -.asm_e4723 - ld e, a - callba Functionce765 - ld hl, $7 - add hl, bc - ld [hl], e - ld hl, $d - add hl, bc - ld a, [hl] - dec [hl] - and $1f - ret nz - ld hl, $c - add hl, bc - ld a, [hl] - sub $30 - ld [hl], a - ld de, SFX_DITTO_BOUNCE - call PlaySFX - ret -.asm_e4747 - ld hl, $b - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld [hl], $0 - ld de, SFX_DITTO_POP_UP - call PlaySFX - ret - -GameFreakLogoScene3: ; e4759 (39:4759) - ld hl, $d - add hl, bc - ld a, [hl] - cp $20 - jr nc, .asm_e4764 - inc [hl] - ret -.asm_e4764 - ld hl, $b - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld [hl], $0 - ld de, SFX_DITTO_TRANSFORM - call PlaySFX - ret - -GameFreakLogoScene4: ; e4776 (39:4776) - ld hl, $d - add hl, bc - ld a, [hl] - cp $40 - jr z, .asm_e47a3 - inc [hl] - srl a - srl a - ld e, a - ld d, $0 - ld hl, GameFreakLogoPalettes -rept 2 - add hl, de -endr - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [hli] - ld [OBPals + 12], a - ld a, [hli] - ld [OBPals + 13], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -.asm_e47a3 - ld hl, $b - add hl, bc - inc [hl] - call PlaceGameFreakPresents_AdvanceIndex - -GameFreakLogoScene5: ; e47ab (39:47ab) - ret -; e47ac (39:47ac) - -GameFreakLogoPalettes: ; e47ac -; Ditto's color as it turns into the Game Freak logo. -; Fade from pink to orange. -; One color per step. - RGB 23, 12, 28 - RGB 23, 12, 27 - RGB 23, 13, 26 - RGB 23, 13, 24 - RGB 24, 14, 22 - RGB 24, 14, 20 - RGB 24, 15, 18 - RGB 24, 15, 16 - RGB 25, 16, 14 - RGB 25, 16, 12 - RGB 25, 17, 10 - RGB 25, 17, 08 - RGB 26, 18, 06 - RGB 26, 18, 04 - RGB 26, 19, 02 - RGB 26, 19, 00 -;' e47cc - -GameFreakLogo: ; e47cc -INCBIN "gfx/splash/logo.1bpp" -; e48ac - -CrystalIntro: ; e48ac - ld a, [rSVBK] - push af - ld a, 5 - ld [rSVBK], a - ld a, [hInMenu] - push af - ld a, [hVBlank] - push af - call Functione4901 -.loop: ; e48bc - call JoyTextDelay - ld a, [hJoyLast] - and BUTTONS - jr nz, .ShutOffMusic - ld a, [wJumptableIndex] - bit 7, a - jr nz, .done - call IntroSceneJumper - callba Function8cf69 - call DelayFrame - jp .loop - -.ShutOffMusic - ld de, MUSIC_NONE - call PlayMusic - -.done - call ClearBGPalettes - call ClearSprites - call ClearTileMap - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - pop af - ld [hVBlank], a - pop af - ld [hInMenu], a - pop af - ld [rSVBK], a - ret -; e4901 - -Functione4901: ; e4901 - xor a - ld [hVBlank], a - ld a, $1 - ld [hInMenu], a - xor a - ld [hMapAnims], a - ld [wJumptableIndex], a - ret -; e490f - -IntroSceneJumper: ; e490f - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, IntroScenes -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; e491e - - -IntroScenes: ; e491e (39:491e) - dw IntroScene1 - dw IntroScene2 - dw IntroScene3 - dw IntroScene4 - dw IntroScene5 - dw IntroScene6 - dw IntroScene7 - dw IntroScene8 - dw IntroScene9 - dw IntroScene10 - dw IntroScene11 - dw IntroScene12 - dw IntroScene13 - dw IntroScene14 - dw IntroScene15 - dw IntroScene16 - dw IntroScene17 - dw IntroScene18 - dw IntroScene19 - dw IntroScene20 - dw IntroScene21 - dw IntroScene22 - dw IntroScene23 - dw IntroScene24 - dw IntroScene25 - dw IntroScene26 - dw IntroScene27 - dw IntroScene28 - - -NextIntroScene: ; e4956 (39:4956) - ld hl, wJumptableIndex - inc [hl] - ret - -IntroScene1: ; e495b (39:495b) -; Setup the next scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap001 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroPulseGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld hl, IntroTilemap002 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene2: ; e49d6 (39:49d6) -; First Unown (A) fades in, pulses, then fades out. - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $80 - jr nc, .endscene - cp $60 - jr nz, .DontPlaySound - push af - ld de, $5858 - call Functione51dc - ld de, SFX_INTRO_UNOWN_1 - call PlaySFX - pop af -.DontPlaySound - ld [wcf65], a - xor a - call Functione5223 - ret -.endscene - call NextIntroScene - ret - -IntroScene3: ; e49fd (39:49fd) -; More setup. Transition to the outdoor scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Functione5516 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - call NextIntroScene - ret - -IntroScene4: ; e4a69 (39:4a69) -; Scroll the outdoor panorama for a bit. - call Functione552f - ld hl, wIntroSceneFrameCounter - ld a, [hl] - cp $80 - jr z, .endscene - inc [hl] - ret -.endscene - call NextIntroScene - ret - -IntroScene5: ; e4a7a (39:4a7a) -; Go back to the Unown. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld [hLCDStatCustom], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap005 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroPulseGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld hl, IntroTilemap006 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene6: ; e4af7 (39:4af7) -; Two more Unown (I, H) fade in. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .endscene - cp $60 - jr z, .SecondUnown - cp $40 - jr nc, .StopUnown - cp $20 - jr z, .FirstUnown - jr .NoUnown -.FirstUnown - push af - ld de, $3878 - call Functione51dc - ld de, SFX_INTRO_UNOWN_2 - call PlaySFX - pop af -.NoUnown - ld [wcf65], a - xor a - call Functione5223 - ret -.SecondUnown - push af - ld de, $7030 - call Functione51dc - ld de, SFX_INTRO_UNOWN_1 - call PlaySFX - pop af -.StopUnown - ld [wcf65], a - ld a, $1 - call Functione5223 - ret -.endscene - call NextIntroScene - ret - -IntroScene7: ; e4b3f (39:4b3f) -; Back to the outdoor scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld hl, IntroPichuWooperGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneRunGFX - ld de, VTiles0 tile $00 - call Functione54de - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Functione5516 - callba Function8cf53 - depixel 13, 27, 4, 0 - ld a, SPRITE_ANIM_INDEX_26 - call _InitSpriteAnimStruct - ld a, $f0 - ld [wc3c0], a - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene8: ; e4bd3 (39:4bd3) -; Scroll the scene, then show Suicune running across the screen. - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $40 - jr z, .asm_e4be2 - jr nc, .asm_e4be8 - call Functione552f - ret -.asm_e4be2 - ld de, SFX_INTRO_SUICUNE_3 - call PlaySFX -.asm_e4be8 - ld a, [wc3c0] - and a - jr z, .asm_e4bf4 - sub $8 - ld [wc3c0], a - ret -.asm_e4bf4 - ld de, SFX_INTRO_SUICUNE_2 - call PlaySFX - callba Function8d03d - call NextIntroScene - ret - -IntroScene9: ; e4c04 (39:4c04) -; Set up the next scene (same bg). - xor a - ld [hLCDStatCustom], a - call ClearSprites - hlcoord 0, 0, AttrMap - ld bc, $f0 - ld a, $1 - call ByteFill - ld bc, $3c - ld a, $2 - call ByteFill - ld bc, $3c - ld a, $3 - call ByteFill - ld a, $2 - ld [hBGMapMode], a - call DelayFrame - call DelayFrame - call DelayFrame - ld a, $c - ld [hBGMapAddress], a - call DelayFrame - call DelayFrame - call DelayFrame - xor a - ld [hBGMapMode], a - ld [hBGMapAddress], a - ld [wc3c0], a - xor a - ld [wcf64], a - call NextIntroScene - ret - -IntroScene10: ; e4c4f (39:4c4f) -; Wooper and Pichu enter. - call Functione546d - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $c0 - jr z, .done - cp $20 - jr z, .wooper - cp $40 - jr z, .pichu - ret - -.pichu - depixel 21, 16, 1, 0 - ld a, SPRITE_ANIM_INDEX_27 - call _InitSpriteAnimStruct - ld de, SFX_INTRO_PICHU - call PlaySFX - ret - -.wooper - depixel 22, 6 - ld a, SPRITE_ANIM_INDEX_28 - call _InitSpriteAnimStruct - ld de, SFX_INTRO_PICHU - call PlaySFX - ret -.done - call NextIntroScene - ret - -IntroScene11: ; e4c86 (39:4c86) -; Back to Unown again. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld [hLCDStatCustom], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap007 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap008 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_365ad - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_365ad - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wIntroSceneFrameCounter], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene12: ; e4cfa (39:4cfa) -; Even more Unown. - call Functione4d36 - ld hl, wIntroSceneFrameCounter - ld a, [hl] - inc [hl] - cp $c0 - jr nc, .asm_e4d32 - cp $80 - jr nc, .asm_e4d1d - ld c, a - and $1f - sla a - ld [wcf65], a - ld a, c - and $e0 - srl a - swap a - call Functione5223 - ret -.asm_e4d1d - ld c, a - and $f - sla a - sla a - ld [wcf65], a - ld a, c - and $70 - or $40 - swap a - call Functione5223 - ret -.asm_e4d32 - call NextIntroScene - ret - -Functione4d36: ; e4d36 (39:4d36) - ld a, [wIntroSceneFrameCounter] - ld c, a - ld hl, .UnownSounds -.loop - ld a, [hli] - cp -1 - ret z - cp c - jr z, .playsound -rept 2 - inc hl -endr - jr .loop -.playsound - ld a, [hli] - ld d, [hl] - ld e, a - push de - call SFXChannelsOff - pop de - call PlaySFX - ret -; e4d54 (39:4d54) - -.UnownSounds: ; e4d54 - dbw $00, SFX_INTRO_UNOWN_3 - dbw $20, SFX_INTRO_UNOWN_2 - dbw $40, SFX_INTRO_UNOWN_1 - dbw $60, SFX_INTRO_UNOWN_2 - dbw $80, SFX_INTRO_UNOWN_3 - dbw $90, SFX_INTRO_UNOWN_2 - dbw $a0, SFX_INTRO_UNOWN_1 - dbw $b0, SFX_INTRO_UNOWN_2 - db $ff -; e4d6d - -IntroScene13: ; e4d6d (39:4d6d) -; Switch scenes again. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneRunGFX - ld de, VTiles0 tile $00 - call Functione54de - ld hl, IntroBackgroundGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e5edd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e5edd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - depixel 13, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_26 - call _InitSpriteAnimStruct - ld de, MUSIC_CRYSTAL_OPENING - call PlayMusic - xor a - ld [wc3c0], a - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene14: ; e4dfa (39:4dfa) -; Suicune runs then jumps. - ld a, [hSCX] - sub 10 - ld [hSCX], a - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr z, .done - cp $60 - jr z, .jump - jr nc, .asm_e4e1a - cp $40 - jr nc, .asm_e4e33 - ret - -.jump - ld de, SFX_INTRO_SUICUNE_4 - call PlaySFX - -.asm_e4e1a - ld a, $1 - ld [wcf65], a - ld a, [wc3c0] - cp $88 - jr c, .asm_e4e2c - sub $8 - ld [wc3c0], a - ret - -.asm_e4e2c - callba Function8d03d - ret - -.asm_e4e33 - ld a, [wc3c0] - sub $2 - ld [wc3c0], a - ret - -.done - call NextIntroScene - ret - -IntroScene15: ; e4e40 (39:4e40) -; Transition to a new scene. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap009 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneJumpGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroUnownBackGFX - ld de, VTiles0 tile $00 - call Functione54c2 - ld de, GFX_e7a5d - ld hl, VTiles1 tile $00 - lb bc, BANK(GFX_e7a5d), 1 - call Request2bpp - ld hl, IntroTilemap010 - ld de, VBGMap0 tile $00 - call Functione54fa - call Functione541b - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e77dd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e77dd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld a, $90 - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - depixel 8, 5 - ld a, SPRITE_ANIM_INDEX_2A - call _InitSpriteAnimStruct - depixel 12, 0 - ld a, SPRITE_ANIM_INDEX_2B - call _InitSpriteAnimStruct - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene16: ; e4edc (39:4edc) -; Suicune shows its face. An Unown appears in front. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .done - call Functione5441 - ld a, [hSCY] - and a - ret z - add 8 - ld [hSCY], a - ret -.done - call NextIntroScene - ret - -IntroScene17: ; e4ef5 (39:4ef5) -; ... - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap011 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneCloseGFX - ld de, VTiles1 tile $00 - call Functione54de - ld hl, IntroTilemap012 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e6d6d - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e6d6d - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene18: ; e4f67 (39:4f67) -; Suicune close up. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $60 - jr nc, .done - ld a, [hSCX] - cp $60 - ret z - add 8 - ld [hSCX], a - ret -.done - call NextIntroScene - ret - -IntroScene19: ; e4f7e (39:4f7e) -; More setup. - call Functione54a3 - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap013 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroSuicuneBackGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroUnownsGFX - ld de, VTiles1 tile $00 - call Functione54c2 - ld de, GFX_e7a5d - ld hl, VTiles1 tile $7f - lb bc, BANK(GFX_e7a5d), 1 - call Request2bpp - ld hl, IntroTilemap014 - ld de, VBGMap0 tile $00 - call Functione54fa - call Functione541b - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e77dd - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e77dd - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld a, $d8 - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - ld hl, wc300 - xor a - ld [hli], a - ld [hl], $7f - call Functione549e - depixel 12, 0 - ld a, SPRITE_ANIM_INDEX_2B - call _InitSpriteAnimStruct - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene20: ; e5019 (39:5019) -; Suicune running away. A bunch of Unown appear. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $98 - jr nc, .asm_e5059 - cp $58 - ret nc - cp $40 - jr nc, .asm_e5032 - cp $28 - ret nc - ld a, [hSCY] - inc a - ld [hSCY], a - ret - -.asm_e5032 - sub $18 - ld c, a - and $3 - cp $3 - ret nz - ld a, c - and $1c - srl a - srl a - ld [wcf65], a - xor a - call Functione5348 - ret -; e5049 (39:5049) - - ld a, c - and $1c - srl a - srl a - ld [wcf65], a - ld a, 1 - call Functione5348 - ret - -.asm_e5059 - call NextIntroScene - ret - -IntroScene21: ; e505d (39:505d) -; Suicune gets more distant and turns black. - call Functione5451 - ld c, 3 - call DelayFrames - xor a - ld [hBGMapMode], a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene22: ; e5072 (39:5072) - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $8 - jr nc, .done - ret -.done - callba Function8d03d - call NextIntroScene - ret - -IntroScene23: ; e5086 (39:5086) - xor a - ld [wcf64], a - call NextIntroScene - ret - -IntroScene24: ; e508e (39:508e) -; Fade to white. - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $20 - jr nc, .done - - ld c, a - and $3 - ret nz - ld a, c - and $1c - sla a - call Functione5172 - ret - -.done - ld a, $40 - ld [wcf64], a - call NextIntroScene - ret - -IntroScene25: ; e50ad (39:50ad) -; Wait around a bit. - ld a, [wcf64] - dec a - jr z, .done - ld [wcf64], a - ret -.done - call NextIntroScene - ret - -IntroScene26: ; e50bb (39:50bb) -; Load the final scene. - call ClearBGPalettes - call ClearSprites - call ClearTileMap - xor a - ld [hBGMapMode], a - ld a, $1 - ld [rVBK], a - ld hl, IntroTilemap015 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, $0 - ld [rVBK], a - ld hl, IntroCrystalUnownsGFX - ld de, VTiles2 tile $00 - call Functione54c2 - ld hl, IntroTilemap017 - ld de, VBGMap0 tile $00 - call Functione54fa - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, Palette_e679d - ld de, wMapPals - ld bc, $80 - call CopyBytes - ld hl, Palette_e679d - ld de, BGPals - ld bc, $80 - call CopyBytes - pop af - ld [rSVBK], a - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba Function8cf53 - call Functione549e - xor a - ld [wcf64], a - ld [wcf65], a - call NextIntroScene - ret - -IntroScene27: ; e512d (39:512d) -; Spell out C R Y S T A L with Unown. - ld hl, wcf65 - inc [hl] - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp $80 - jr nc, .done - - ld c, a - and $f - ld [wcf65], a - ld a, c - and $70 - swap a - call Functione539d - ret - -.done - call NextIntroScene - ld a, $80 - ld [wcf64], a - ret - -IntroScene28: ; e5152 (39:5152) -; Cut out when the music ends, and lead into the title screen. - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - cp $18 - jr z, .clear - cp $8 - ret nz - - ld de, SFX_UNKNOWN_CB - call PlaySFX - ret - -.clear - call ClearBGPalettes - ret - -.done - ld hl, wJumptableIndex - set 7, [hl] - ret - - -Functione5172: ; e5172 (39:5172) - ld hl, Unknown_e519c - add l - ld l, a - ld a, $0 - adc h - ld h, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld de, BGPals - ld b, $8 -.asm_e5187 - push hl - ld c, $8 -.asm_e518a - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_e518a - pop hl - dec b - jr nz, .asm_e5187 - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e519c (39:519c) - -Unknown_e519c: ; e519c -; Fade to white. - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 12, 00, 31 - RGB 00, 00, 00 - - RGB 31, 19, 05 - RGB 31, 31, 31 - RGB 15, 05, 31 - RGB 07, 07, 07 - - RGB 31, 21, 09 - RGB 31, 31, 31 - RGB 18, 09, 31 - RGB 11, 11, 11 - - RGB 31, 23, 13 - RGB 31, 31, 31 - RGB 21, 13, 31 - RGB 15, 15, 15 - - RGB 31, 25, 17 - RGB 31, 31, 31 - RGB 25, 17, 31 - RGB 19, 19, 19 - - RGB 31, 27, 21 - RGB 31, 31, 31 - RGB 27, 21, 31 - RGB 23, 23, 23 - - RGB 31, 29, 25 - RGB 31, 31, 31 - RGB 29, 26, 31 - RGB 27, 27, 27 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 -; e51dc - -Functione51dc: ; e51dc (39:51dc) - push de - ld a, SPRITE_ANIM_INDEX_29 - call _InitSpriteAnimStruct - ld hl, $c - add hl, bc - ld [hl], $8 - ld a, $3c - call Function3b3c - pop de - - push de - ld a, SPRITE_ANIM_INDEX_29 - call _InitSpriteAnimStruct - ld hl, $c - add hl, bc - ld [hl], $18 - ld a, $3b - call Function3b3c - pop de - - push de - ld a, SPRITE_ANIM_INDEX_29 - call _InitSpriteAnimStruct - ld hl, $c - add hl, bc - ld [hl], $28 - ld a, $39 - call Function3b3c - pop de - - ld a, SPRITE_ANIM_INDEX_29 - call _InitSpriteAnimStruct - ld hl, $c - add hl, bc - ld [hl], $38 - ld a, $3a - call Function3b3c - ret - -Functione5223: ; e5223 (39:5223) -rept 3 - add a -endr - ld e, a - ld d, $0 - ld hl, BGPals - add hl, de -rept 2 - inc hl -endr - ld a, [wcf65] - and $3f - cp $1f - jr z, .asm_e523e - jr c, .asm_e523e - ld c, a - ld a, $3f - sub c -.asm_e523e - ld c, a - ld b, $0 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push hl - push bc - ld hl, BGPals - ld bc, $40 - xor a - call ByteFill - pop bc - pop hl - push hl - ld hl, Unknown_e5288 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Unknown_e52c8 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Unknown_e5308 -rept 2 - add hl, bc -endr - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e5288 (39:5288) - -Unknown_e5288: ; e5288 -; Fade between black and white. -hue = 0 -rept 32 - RGB hue, hue, hue -hue = hue + 1 -endr -; e52c8 - -Unknown_e52c8: ; e52c8 -; Fade between black and light blue. -hue = 0 -rept 32 - RGB 0, hue / 2, hue -hue = hue + 1 -endr -; e5308 - -Unknown_e5308: ; e5308 -; Fade between black and blue. -hue = 0 -rept 32 - RGB 0, 0, hue -hue = hue + 1 -endr -; e5348 - -Functione5348: ; e5348 (39:5348) - and a - jr nz, .asm_e5350 - ld hl, Palette_e538d - jr .asm_e5353 -.asm_e5350 - ld hl, Palette_e5395 -.asm_e5353 - ld a, [wcf65] - and $7 -rept 3 - add a -endr - ld c, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push bc - ld de, BGPals - ld a, c - add e - ld e, a - ld a, $0 - adc d - ld d, a - ld bc, $8 - call CopyBytes - pop bc - ld de, wMapPals - ld a, c - add e - ld e, a - ld a, $0 - adc d - ld d, a - ld bc, $8 - call CopyBytes - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e538d (39:538d) - -Palette_e538d: ; e538d - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 12, 00, 31 - RGB 00, 00, 00 -; e5395 - -Palette_e5395: ; e5395 - RGB 24, 12, 09 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 -; e539d - -Functione539d: ; e539d (39:539d) -rept 3 - add a -endr - ld e, a - ld d, $0 - ld hl, BGPals - add hl, de -rept 4 - inc hl -endr - ld a, [wcf65] - add a - ld c, a - ld b, $0 - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - push hl - ld hl, Palette_e53db - add hl, bc - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - push hl - ld hl, Palette_e53fb - add hl, bc - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - ld a, e - ld [hli], a - ld a, d - ld [hli], a - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; e53db (39:53db) - -Palette_e53db: ; e53db -hue = 31 -rept 8 - RGB hue, hue, hue -hue = hue + -1 - RGB hue, hue, hue -hue = hue + -2 -endr -; e53fb - -Palette_e53fb: ; e53fb -hue = 31 -rept 16 - RGB hue, hue, hue -hue = hue + -1 -endr -; e541b - -Functione541b: ; e541b (39:541b) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - ld hl, w6_d000 - decoord 0, 0 - ld b, SCREEN_HEIGHT -.asm_e542a - ld c, SCREEN_WIDTH -.asm_e542c - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_e542c - ld a, $c - add l - ld l, a - ld a, $0 - adc h - ld h, a - dec b - jr nz, .asm_e542a - pop af - ld [rSVBK], a - ret - -Functione5441: ; e5441 (39:5441) - ld a, [wcf64] - and $3 - jr z, Functione5451 - cp $3 - jr z, .asm_e544d - ret -.asm_e544d - xor a - ld [hBGMapMode], a - ret - -Functione5451: ; e5451 (39:5451) - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH -.asm_e5457 - ld a, [hl] - and a - jr z, .asm_e5462 - cp $80 - jr nc, .asm_e5462 - xor $8 - ld [hl], a -.asm_e5462 - inc hl - dec bc - ld a, c - or b - jr nz, .asm_e5457 - ld a, $1 - ld [hBGMapMode], a - ret - -Functione546d: ; e546d (39:546d) - ld a, [wcf64] - cp $24 - ret nc - and $c - srl a - ld e, a - ld d, $0 - ld hl, Unknown_e5496 - add hl, de - ld a, [hli] - ld [Requested2bppSource], a - ld a, [hli] - ld [Requested2bppSource + 1], a - ld a, (VTiles2 tile $09) % $100 - ld [Requested2bppDest], a - ld a, (VTiles2 tile $09) / $100 - ld [Requested2bppDest + 1], a - ld a, $4 - ld [Requested2bpp], a - ret -; e5496 (39:5496) - -Unknown_e5496: ; e5496 - dw GFX_e799d - dw GFX_e79dd - dw GFX_e7a1d - dw GFX_e79dd -; e549e - -Functione549e: ; e549e (39:549e) - ld a, $1 - ld [hCGBPalUpdate], a - ret - -Functione54a3: ; e54a3 (39:54a3) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld bc, $80 - xor a - call ByteFill - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - call DelayFrame - call DelayFrame - ret - -Functione54c2: ; e54c2 (39:54c2) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $180 - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione54de: ; e54de (39:54de) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $1ff - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione54fa: ; e54fa (39:54fa) - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - push de - ld de, w6_d000 - call Decompress - pop hl - ld de, w6_d000 - ld bc, $140 - call Request2bpp - pop af - ld [rSVBK], a - ret - -Functione5516: ; e5516 (39:5516) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, LYOverrides - ld bc, $90 - xor a - call ByteFill - pop af - ld [rSVBK], a - ld a, $43 - ld [hLCDStatCustom], a - ret - -Functione552f: ; e552f (39:552f) - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, [wcf64] - and $1 - jr z, .asm_e5548 - ld hl, LYOverrides - ld a, [hl] - inc a - ld bc, $5f - call ByteFill -.asm_e5548 - ld hl, LYOverrides + $5f - ld a, [hl] -rept 2 - inc a -endr - ld bc, $31 - call ByteFill - ld a, [LYOverrides + 0] - ld [hSCX], a - pop af - ld [rSVBK], a - ret - -IntroSuicuneRunGFX: ; e555d -INCBIN "gfx/intro/suicune_run.2bpp.lz" -; e592d - -IntroPichuWooperGFX: ; e592d -INCBIN "gfx/intro/pichu_wooper.2bpp.lz" -; e5c7d - -IntroBackgroundGFX: ; e5c7d -INCBIN "gfx/intro/background.2bpp.lz" -; e5e6d - -IntroTilemap004: ; e5e6d -INCBIN "gfx/intro/004.tilemap.lz" -; e5ecd - -IntroTilemap003: ; e5ecd -INCBIN "gfx/intro/003.tilemap.lz" -; e5edd - -Palette_e5edd: ; e5edd - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 0, 4, 5 - RGB 1, 8, 5 - RGB 4, 12, 9 - RGB 24, 12, 9 - RGB 0, 4, 5 - RGB 9, 6, 8 - RGB 8, 16, 5 - RGB 5, 10, 4 - RGB 31, 31, 31 - RGB 9, 6, 8 - RGB 18, 9, 9 - RGB 13, 8, 9 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 2, 5, 22 - RGB 1, 5, 12 - RGB 31, 31, 31 - RGB 31, 10, 25 - RGB 31, 21, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 21, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroUnownsGFX: ; e5f5d -INCBIN "gfx/intro/unowns.2bpp.lz" -; e634d - -IntroPulseGFX: ; e634d -INCBIN "gfx/intro/pulse.2bpp.lz" -; e63dd - -IntroTilemap002: ; e63dd -INCBIN "gfx/intro/002.tilemap.lz" -; e641d - -IntroTilemap001: ; e641d -INCBIN "gfx/intro/001.tilemap.lz" -; e642d - -IntroTilemap006: ; e642d -INCBIN "gfx/intro/006.tilemap.lz" -; e647d - -IntroTilemap005: ; e647d -INCBIN "gfx/intro/005.tilemap.lz" -; e649d - -IntroTilemap008: ; e649d -INCBIN "gfx/intro/008.tilemap.lz" -; e655d - -IntroTilemap007: ; e655d -INCBIN "gfx/intro/007.tilemap.lz" -; e65ad - -Palette_365ad: ; e65ad - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 10, 0, 10 - RGB 19, 0, 19 - RGB 31, 0, 31 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroCrystalUnownsGFX: ; e662d -INCBIN "gfx/intro/crystal_unowns.2bpp.lz" -; e672d - -IntroTilemap017: ; e672d -INCBIN "gfx/intro/017.tilemap.lz" -; e676d - -IntroTilemap015: ; e676d -INCBIN "gfx/intro/015.tilemap.lz" -; e679d - -Palette_e679d: ; e679d - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroSuicuneCloseGFX: ; e681d -INCBIN "gfx/intro/suicune_close.2bpp.lz" -; e6c3d - -IntroTilemap012: ; e6c3d -INCBIN "gfx/intro/012.tilemap.lz" -; e6d0d - -IntroTilemap011: ; e6d0d -INCBIN "gfx/intro/011.tilemap.lz" -; e6d6d - -Palette_e6d6d: ; e6d6d - RGB 24, 12, 9 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 12, 20, 31 - RGB 19, 8, 31 - RGB 0, 0, 0 - RGB 12, 20, 31 - RGB 8, 9, 31 - RGB 19, 8, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 12, 20, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroSuicuneJumpGFX: ; e6ded -INCBIN "gfx/intro/suicune_jump.2bpp.lz" -; e72ad - -IntroSuicuneBackGFX: ; e72ad -INCBIN "gfx/intro/suicune_back.2bpp.lz" -; e764d - -IntroTilemap010: ; e764d -INCBIN "gfx/intro/010.tilemap.lz" -; e76ad - -IntroTilemap009: ; e76ad -INCBIN "gfx/intro/009.tilemap.lz" -; e76bd - -IntroTilemap014: ; e76bd -INCBIN "gfx/intro/014.tilemap.lz" -; e778d - -IntroTilemap013: ; e778d -INCBIN "gfx/intro/013.tilemap.lz" -; e77dd - -Palette_e77dd: ; e77dd - RGB 24, 12, 9 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 8, 9, 31 - RGB 0, 0, 0 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 24, 12, 9 - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 12, 0, 31 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 21, 9, 0 - RGB 21, 9, 0 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - RGB 31, 31, 31 - RGB 20, 20, 20 - RGB 11, 11, 11 - RGB 0, 0, 0 - -IntroUnownBackGFX: ; e785d -INCBIN "gfx/intro/unown_back.2bpp.lz" -; e799d - -GFX_e799d: ; e799d -INCBIN "gfx/unknown/0e799d.2bpp" -GFX_e79dd: ; e79dd -INCBIN "gfx/unknown/0e79dd.2bpp" -GFX_e7a1d: ; e7a1d -INCBIN "gfx/unknown/0e7a1d.2bpp" - -GFX_e7a5d: ; e7a5d -INCBIN "gfx/unknown/0e7a5d.2bpp" - - +INCLUDE "engine/crystal_intro.asm" SECTION "bank3E", ROMX, BANK[$3E] -FontExtra: -INCBIN "gfx/misc/font_extra.2bpp" - -Font: -INCBIN "gfx/misc/font.1bpp" - -FontBattleExtra: -INCBIN "gfx/misc/font_battle_extra.2bpp" - -Frames: ; f8800 -INCBIN "gfx/frames/1.1bpp" -INCBIN "gfx/frames/2.1bpp" -INCBIN "gfx/frames/3.1bpp" -INCBIN "gfx/frames/4.1bpp" -INCBIN "gfx/frames/5.1bpp" -INCBIN "gfx/frames/6.1bpp" -INCBIN "gfx/frames/7.1bpp" -INCBIN "gfx/frames/8.1bpp" -INCBIN "gfx/frames/9.1bpp" -; f89b0 - -; TODO: Various misc graphics here. - -GFX_f89b0: ; f89b0 -INCBIN "gfx/unknown/0f89b0.2bpp" -; f8a90 - -ShinyIcon: ; f8a90 -INCBIN "gfx/stats/shiny.2bpp" - -GFX_f8aa0: ; f8aa0 -INCBIN "gfx/unknown/0f8aa0.2bpp" -; f8ac0 - -EnemyHPBarBorderGFX: ; f8ac0 -INCBIN "gfx/battle/enemy_hp_bar_border.1bpp" -; f8ae0 - -HPExpBarBorderGFX: ; f8ae0 -INCBIN "gfx/battle/hp_exp_bar_border.1bpp" -; f8b10 - -ExpBarGFX: ; f8b10 -INCBIN "gfx/battle/expbar.2bpp" -; f8ba0 - -TownMapGFX: ; f8ba0 -INCBIN "gfx/misc/town_map.2bpp.lz" -; f8ea4 - -GFX_f8ea4: ; unused -INCBIN "gfx/unknown/0f8ea4.2bpp" -; f8f24 - -OverworldPhoneIconGFX: ; f8f24 -INCBIN "gfx/mobile/overworld_phone_icon.2bpp" -; f8f34 - -GFX_f8f34: ; unused -INCBIN "gfx/unknown/0f8f34.2bpp" -; f9204 - -TextBoxSpaceGFX: ; f9204 -INCBIN "gfx/frames/space.2bpp" -; f9214 - -MobilePhoneTilesGFX: ; f9214 -INCBIN "gfx/mobile/phone_tiles.2bpp" -; f9344 - -MapEntryFrameGFX: ; f9344 -INCBIN "gfx/frames/map_entry_sign.2bpp" -; f9424 - -GFX_f9424: ; f9424 -INCBIN "gfx/unknown/0f9424.2bpp" -; f9434 - -Footprints: ; f9434 -INCBIN "gfx/misc/footprints.1bpp" -; fb434 - -; This and the following two functions are unreferenced. -Unknown_fb434: - db 0 - -Functionfb435: ; 4b435 - ld a, [Unknown_fb434] - and a - jp nz, Get1bpp_2 - jp Get1bpp -; fb43f - -Functionfb43f: ; fb43f - ld a, [Unknown_fb434] - and a - jp nz, Get2bpp_2 - jp Get2bpp -; End unreferenced block -; fb449 - -_LoadStandardFont:: ; fb449 - ld de, Font - ld hl, VTiles1 - lb bc, BANK(Font), $80 - ld a, [rLCDC] - bit 7, a - jp z, Copy1bpp - - ld de, Font - ld hl, VTiles1 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $20 * LEN_1BPP_TILE - ld hl, VTiles1 tile $20 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $40 * LEN_1BPP_TILE - ld hl, VTiles1 tile $40 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ld de, Font + $60 * LEN_1BPP_TILE - ld hl, VTiles1 tile $60 - lb bc, BANK(Font), $20 - call Get1bpp_2 - ret -; fb48a - -_LoadFontsExtra1:: ; fb48a - ld de, MobilePhoneTilesGFX - ld hl, VTiles2 tile $60 - lb bc, BANK(MobilePhoneTilesGFX), 1 - call Get1bpp_2 - ld de, OverworldPhoneIconGFX - ld hl, VTiles2 tile $62 - lb bc, BANK(OverworldPhoneIconGFX), 1 - call Get2bpp_2 - ld de, FontExtra + 3 * LEN_2BPP_TILE - ld hl, VTiles2 tile $63 - lb bc, BANK(FontExtra), $16 - call Get2bpp_2 - jr LoadFrame -; fb4b0 - -_LoadFontsExtra2:: ; fb4b0 - ld de, GFX_f9424 - ld hl, VTiles2 tile $61 - ld b, BANK(GFX_f9424) - ld c, 1 - call Get2bpp_2 - ret -; fb4be - -_LoadFontsBattleExtra:: ; fb4be - ld de, FontBattleExtra - ld hl, VTiles2 tile $60 - lb bc, BANK(FontBattleExtra), $19 - call Get2bpp_2 - jr LoadFrame -; fb4cc - -LoadFrame: ; fb4cc - ld a, [TextBoxFrame] - and 7 - ld bc, TILES_PER_FRAME * LEN_1BPP_TILE - ld hl, Frames - call AddNTimes - ld d, h - ld e, l - ld hl, VTiles2 tile $79 - lb bc, BANK(Frames), TILES_PER_FRAME - call Get1bpp_2 - ld hl, VTiles2 tile $7f - ld de, TextBoxSpaceGFX - lb bc, BANK(TextBoxSpaceGFX), 1 - call Get1bpp_2 - ret -; fb4f2 - -LoadBattleFontsHPBar: ; fb4f2 - ld de, FontBattleExtra - ld hl, VTiles2 tile $60 - lb bc, BANK(FontBattleExtra), $c - call Get2bpp_2 - ld hl, VTiles2 tile $70 - ld de, FontBattleExtra + $10 * LEN_2BPP_TILE - lb bc, BANK(FontBattleExtra), 3 - call Get2bpp_2 - call LoadFrame - -LoadHPBar: ; fb50d - ld de, EnemyHPBarBorderGFX - ld hl, VTiles2 tile $6c - lb bc, BANK(EnemyHPBarBorderGFX), 4 - call Get1bpp_2 - ld de, HPExpBarBorderGFX - ld hl, VTiles2 tile $73 - lb bc, BANK(HPExpBarBorderGFX), 6 - call Get1bpp_2 - ld de, ExpBarGFX - ld hl, VTiles2 tile $55 - lb bc, BANK(ExpBarGFX), 9 - call Get2bpp_2 - ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE - ld hl, VTiles2 tile $5e - lb bc, BANK(MobilePhoneTilesGFX), 2 - call Get2bpp_2 - ret -; fb53e - -Functionfb53e: ; fb53e - call _LoadFontsBattleExtra - ld de, EnemyHPBarBorderGFX - ld hl, VTiles2 tile $6c - lb bc, BANK(EnemyHPBarBorderGFX), 4 - call Get1bpp_2 - ld de, HPExpBarBorderGFX - ld hl, VTiles2 tile $78 - lb bc, BANK(HPExpBarBorderGFX), 1 - call Get1bpp_2 - ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE - ld hl, VTiles2 tile $76 - lb bc, BANK(HPExpBarBorderGFX), 2 - call Get1bpp_2 - ld de, ExpBarGFX - ld hl, VTiles2 tile $55 - lb bc, BANK(ExpBarGFX), 8 - call Get2bpp_2 - -Functionfb571: ; fb571 - ld de, GFX_f89b0 - ld hl, VTiles2 tile $31 - lb bc, BANK(GFX_f89b0), $11 - call Get2bpp_2 - ret -; fb57e - -; These functions seem to be related to backwards compatibility - -Functionfb57e: ; fb57e - ld a, [wd003] - ld hl, OTPartyMon1Species - call GetPartyLocation - push hl - ld a, [wd003] - inc a - ld c, a - ld b, 0 - ld hl, OTPartyCount - add hl, bc - ld a, [hl] - pop hl - cp EGG - jr z, .asm_fb59c - cp [hl] - jr nz, .asm_fb5db - -.asm_fb59c - ld b, h - ld c, l - ld hl, MON_LEVEL - add hl, bc - ld a, [hl] - cp 101 - jr nc, .asm_fb5db - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr nz, .asm_fb5d9 - ld hl, OTPartySpecies - ld a, [wd003] - ld c, a - ld b, 0 - add hl, bc - ld a, [hl] - - ; Magnemite and Magneton's types changed - ; from Electric to Electric/Steel. - cp MAGNEMITE - jr z, .asm_fb5d9 - cp MAGNETON - jr z, .asm_fb5d9 - - ld [CurSpecies], a - call GetBaseData - ld hl, wcbea -rept 2 - add hl, bc -endr - ld a, [BaseType1] - cp [hl] - jr nz, .asm_fb5db - inc hl - ld a, [BaseType2] - cp [hl] - jr nz, .asm_fb5db - -.asm_fb5d9 - and a - ret - -.asm_fb5db - scf - ret -; fb5dd - -Functionfb5dd: ; fb5dd - ld a, [wd002] - ld d, a - ld a, [PartyCount] - ld b, a - ld c, $0 -.asm_fb5e7 - ld a, c - cp d - jr z, .asm_fb5f8 - push bc - ld a, c - ld hl, PartyMon1HP - call GetPartyLocation - pop bc - ld a, [hli] - or [hl] - jr nz, .asm_fb60b - -.asm_fb5f8 - inc c - dec b - jr nz, .asm_fb5e7 - ld a, [wd003] - ld hl, OTPartyMon1HP - call GetPartyLocation - ld a, [hli] - or [hl] - jr nz, .asm_fb60b - scf - ret - -.asm_fb60b - and a - ret -; fb60d - -Functionfb60d: ; fb60d - hlcoord 4, 0 - ld de, PlayerName - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 4, 8 - ld de, wd26b - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 7, 1 - ld de, PartySpecies - call Functionfb634 - hlcoord 7, 9 - ld de, OTPartySpecies - -Functionfb634: ; fb634 - ld c, $0 -.asm_fb636 - ld a, [de] - cp $ff - ret z - ld [wd265], a - push bc - push hl - push de - push hl - ld a, c - ld [hProduct], a - call GetPokemonName - pop hl - call PlaceString - pop de - inc de - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - inc c - jr .asm_fb636 -; fb656 - -KantoMonSpecials: ; fb656 -; The original special base stat for -; each Kanto monster from Red/Blue. - db 65 ; BULBASAUR - db 80 ; IVYSAUR - db 100 ; VENUSAUR - db 50 ; CHARMANDER - db 65 ; CHARMELEON - db 85 ; CHARIZARD - db 50 ; SQUIRTLE - db 65 ; WARTORTLE - db 85 ; BLASTOISE - db 20 ; CATERPIE - db 25 ; METAPOD - db 80 ; BUTTERFREE - db 20 ; WEEDLE - db 25 ; KAKUNA - db 45 ; BEEDRILL - db 35 ; PIDGEY - db 50 ; PIDGEOTTO - db 70 ; PIDGEOT - db 25 ; RATTATA - db 50 ; RATICATE - db 31 ; SPEAROW - db 61 ; FEAROW - db 40 ; EKANS - db 65 ; ARBOK - db 50 ; PIKACHU - db 90 ; RAICHU - db 30 ; SANDSHREW - db 55 ; SANDSLASH - db 40 ; NIDORAN_F - db 55 ; NIDORINA - db 75 ; NIDOQUEEN - db 40 ; NIDORAN_M - db 55 ; NIDORINO - db 75 ; NIDOKING - db 60 ; CLEFAIRY - db 85 ; CLEFABLE - db 65 ; VULPIX - db 100 ; NINETALES - db 25 ; JIGGLYPUFF - db 50 ; WIGGLYTUFF - db 40 ; ZUBAT - db 75 ; GOLBAT - db 75 ; ODDISH - db 85 ; GLOOM - db 100 ; VILEPLUME - db 55 ; PARAS - db 80 ; PARASECT - db 40 ; VENONAT - db 90 ; VENOMOTH - db 45 ; DIGLETT - db 70 ; DUGTRIO - db 40 ; MEOWTH - db 65 ; PERSIAN - db 50 ; PSYDUCK - db 80 ; GOLDUCK - db 35 ; MANKEY - db 60 ; PRIMEAPE - db 50 ; GROWLITHE - db 80 ; ARCANINE - db 40 ; POLIWAG - db 50 ; POLIWHIRL - db 70 ; POLIWRATH - db 105 ; ABRA - db 120 ; KADABRA - db 135 ; ALAKAZAM - db 35 ; MACHOP - db 50 ; MACHOKE - db 65 ; MACHAMP - db 70 ; BELLSPROUT - db 85 ; WEEPINBELL - db 100 ; VICTREEBEL - db 100 ; TENTACOOL - db 120 ; TENTACRUEL - db 30 ; GEODUDE - db 45 ; GRAVELER - db 55 ; GOLEM - db 65 ; PONYTA - db 80 ; RAPIDASH - db 40 ; SLOWPOKE - db 80 ; SLOWBRO - db 95 ; MAGNEMITE - db 120 ; MAGNETON - db 58 ; FARFETCH_D - db 35 ; DODUO - db 60 ; DODRIO - db 70 ; SEEL - db 95 ; DEWGONG - db 40 ; GRIMER - db 65 ; MUK - db 45 ; SHELLDER - db 85 ; CLOYSTER - db 100 ; GASTLY - db 115 ; HAUNTER - db 130 ; GENGAR - db 30 ; ONIX - db 90 ; DROWZEE - db 115 ; HYPNO - db 25 ; KRABBY - db 50 ; KINGLER - db 55 ; VOLTORB - db 80 ; ELECTRODE - db 60 ; EXEGGCUTE - db 125 ; EXEGGUTOR - db 40 ; CUBONE - db 50 ; MAROWAK - db 35 ; HITMONLEE - db 35 ; HITMONCHAN - db 60 ; LICKITUNG - db 60 ; KOFFING - db 85 ; WEEZING - db 30 ; RHYHORN - db 45 ; RHYDON - db 105 ; CHANSEY - db 100 ; TANGELA - db 40 ; KANGASKHAN - db 70 ; HORSEA - db 95 ; SEADRA - db 50 ; GOLDEEN - db 80 ; SEAKING - db 70 ; STARYU - db 100 ; STARMIE - db 100 ; MR__MIME - db 55 ; SCYTHER - db 95 ; JYNX - db 85 ; ELECTABUZZ - db 85 ; MAGMAR - db 55 ; PINSIR - db 70 ; TAUROS - db 20 ; MAGIKARP - db 100 ; GYARADOS - db 95 ; LAPRAS - db 48 ; DITTO - db 65 ; EEVEE - db 110 ; VAPOREON - db 110 ; JOLTEON - db 110 ; FLAREON - db 75 ; PORYGON - db 90 ; OMANYTE - db 115 ; OMASTAR - db 45 ; KABUTO - db 70 ; KABUTOPS - db 60 ; AERODACTYL - db 65 ; SNORLAX - db 125 ; ARTICUNO - db 125 ; ZAPDOS - db 125 ; MOLTRES - db 50 ; DRATINI - db 70 ; DRAGONAIR - db 100 ; DRAGONITE - db 154 ; MEWTWO - db 100 ; MEW -; fb6ed - - -INCLUDE "event/name_rater.asm" - - -PlaySlowCry: ; fb841 - ld a, [ScriptVar] - call LoadCryHeader - jr c, .done - - ld hl, CryPitch - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, -$140 - add hl, bc - ld a, l - ld [CryPitch], a - ld a, h - ld [CryPitch + 1], a - ld hl, CryLength - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, $60 - add hl, bc - ld a, l - ld [CryLength], a - ld a, h - ld [CryLength + 1], a - callba _PlayCryHeader - call WaitSFX - -.done - ret -; fb877 - -NewPokedexEntry: ; fb877 - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - call LowVolume - call ClearBGPalettes - call ClearTileMap - call UpdateSprites - call ClearSprites - ld a, [wPokedexStatus] - push af - ld a, [hSCX] - add $5 - ld [hSCX], a - xor a - ld [wPokedexStatus], a - callba Function41a7f - call WaitPressAorB_BlinkCursor - ld a, $1 - ld [wPokedexStatus], a - callba Function4424d - call WaitPressAorB_BlinkCursor - pop af - ld [wPokedexStatus], a - call MaxVolume - call FadeToWhite - ld a, [hSCX] - add $fb - ld [hSCX], a - call Functionfb8c8 - pop af - ld [hMapAnims], a - ret -; fb8c8 - -Functionfb8c8: ; fb8c8 - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - callba Function40ab2 - call Function3200 - callba GetEnemyMonDVs - ld a, [hli] - ld [TempMonDVs], a - ld a, [hl] - ld [TempMonDVs + 1], a - ld b, SCGB_1C - call GetSGBLayout - call SetPalettes - ret -; fb8f1 - -ConvertMon_2to1: ; fb8f1 -; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265. - push bc - push hl - ld a, [wd265] - ld b, a - ld c, 0 - ld hl, Pokered_MonIndices -.loop - inc c - ld a, [hli] - cp b - jr nz, .loop - ld a, c - ld [wd265], a - pop hl - pop bc - ret -; fb908 - -ConvertMon_1to2: ; fb908 -; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265. - push bc - push hl - ld a, [wd265] - dec a - ld hl, Pokered_MonIndices - ld b, 0 - ld c, a - add hl, bc - ld a, [hl] - ld [wd265], a - pop hl - pop bc - ret -; fb91c - -Pokered_MonIndices: ; fb91c - db RHYDON - db KANGASKHAN - db NIDORAN_M - db CLEFAIRY - db SPEAROW - db VOLTORB - db NIDOKING - db SLOWBRO - db IVYSAUR - db EXEGGUTOR - db LICKITUNG - db EXEGGCUTE - db GRIMER - db GENGAR - db NIDORAN_F - db NIDOQUEEN - db CUBONE - db RHYHORN - db LAPRAS - db ARCANINE - db MEW - db GYARADOS - db SHELLDER - db TENTACOOL - db GASTLY - db SCYTHER - db STARYU - db BLASTOISE - db PINSIR - db TANGELA - db SCIZOR - db SHUCKLE - db GROWLITHE - db ONIX - db FEAROW - db PIDGEY - db SLOWPOKE - db KADABRA - db GRAVELER - db CHANSEY - db MACHOKE - db MR__MIME - db HITMONLEE - db HITMONCHAN - db ARBOK - db PARASECT - db PSYDUCK - db DROWZEE - db GOLEM - db HERACROSS - db MAGMAR - db HO_OH - db ELECTABUZZ - db MAGNETON - db KOFFING - db SNEASEL - db MANKEY - db SEEL - db DIGLETT - db TAUROS - db TEDDIURSA - db URSARING - db SLUGMA - db FARFETCH_D - db VENONAT - db DRAGONITE - db MAGCARGO - db SWINUB - db PILOSWINE - db DODUO - db POLIWAG - db JYNX - db MOLTRES - db ARTICUNO - db ZAPDOS - db DITTO - db MEOWTH - db KRABBY - db CORSOLA - db REMORAID - db OCTILLERY - db VULPIX - db NINETALES - db PIKACHU - db RAICHU - db DELIBIRD - db MANTINE - db DRATINI - db DRAGONAIR - db KABUTO - db KABUTOPS - db HORSEA - db SEADRA - db SKARMORY - db HOUNDOUR - db SANDSHREW - db SANDSLASH - db OMANYTE - db OMASTAR - db JIGGLYPUFF - db WIGGLYTUFF - db EEVEE - db FLAREON - db JOLTEON - db VAPOREON - db MACHOP - db ZUBAT - db EKANS - db PARAS - db POLIWHIRL - db POLIWRATH - db WEEDLE - db KAKUNA - db BEEDRILL - db HOUNDOOM - db DODRIO - db PRIMEAPE - db DUGTRIO - db VENOMOTH - db DEWGONG - db KINGDRA - db PHANPY - db CATERPIE - db METAPOD - db BUTTERFREE - db MACHAMP - db DONPHAN - db GOLDUCK - db HYPNO - db GOLBAT - db MEWTWO - db SNORLAX - db MAGIKARP - db PORYGON2 - db STANTLER - db MUK - db SMEARGLE - db KINGLER - db CLOYSTER - db TYROGUE - db ELECTRODE - db CLEFABLE - db WEEZING - db PERSIAN - db MAROWAK - db HITMONTOP - db HAUNTER - db ABRA - db ALAKAZAM - db PIDGEOTTO - db PIDGEOT - db STARMIE - db BULBASAUR - db VENUSAUR - db TENTACRUEL - db SMOOCHUM - db GOLDEEN - db SEAKING - db ELEKID - db MAGBY - db MILTANK - db BLISSEY - db PONYTA - db RAPIDASH - db RATTATA - db RATICATE - db NIDORINO - db NIDORINA - db GEODUDE - db PORYGON - db AERODACTYL - db RAIKOU - db MAGNEMITE - db ENTEI - db SUICUNE - db CHARMANDER - db SQUIRTLE - db CHARMELEON - db WARTORTLE - db CHARIZARD - db LARVITAR - db PUPITAR - db TYRANITAR - db LUGIA - db ODDISH - db GLOOM - db VILEPLUME - db BELLSPROUT - db WEEPINBELL - db VICTREEBEL - db CHIKORITA - db BAYLEEF - db MEGANIUM - db CYNDAQUIL - db QUILAVA - db TYPHLOSION - db TOTODILE - db CROCONAW - db FERALIGATR - db SENTRET - db FURRET - db HOOTHOOT - db NOCTOWL - db LEDYBA - db LEDIAN - db SPINARAK - db ARIADOS - db CROBAT - db CHINCHOU - db LANTURN - db PICHU - db CLEFFA - db IGGLYBUFF - db TOGEPI - db TOGETIC - db NATU - db XATU - db MAREEP - db FLAAFFY - db AMPHAROS - db BELLOSSOM - db MARILL - db AZUMARILL - db SUDOWOODO - db POLITOED - db HOPPIP - db SKIPLOOM - db JUMPLUFF - db AIPOM - db SUNKERN - db SUNFLORA - db YANMA - db WOOPER - db QUAGSIRE - db ESPEON - db UMBREON - db MURKROW - db SLOWKING - db MISDREAVUS - db UNOWN - db WOBBUFFET - db GIRAFARIG - db PINECO - db FORRETRESS - db DUNSPARCE - db GLIGAR - db STEELIX - db SNUBBULL - db GRANBULL - db QWILFISH - db WOBBUFFET - db WOBBUFFET -; fba18 - +INCLUDE "gfx/font.asm" +INCLUDE "engine/time_capsule/conversion.asm" UpdateUnownDex: ; fba18 ld a, [UnownLetter] @@ -34747,914 +25793,9 @@ SECTION "bank3F", ROMX, BANK[$3F] INCLUDE "tilesets/animations.asm" +INCLUDE "engine/npctrade.asm" -; Trade struct -TRADE_DIALOG EQU 0 -TRADE_GIVEMON EQU 1 -TRADE_GETMON EQU 2 -TRADE_NICK EQU 3 -TRADE_DVS EQU 14 -TRADE_ITEM EQU 16 -TRADE_OT_ID EQU 17 -TRADE_OT_NAME EQU 19 -TRADE_GENDER EQU 30 -TRADE_PADDING EQU 31 - -; Trade dialogs -TRADE_INTRO EQU 0 -TRADE_CANCEL EQU 1 -TRADE_WRONG EQU 2 -TRADE_COMPLETE EQU 3 -TRADE_AFTER EQU 4 - -NPCTrade:: ; fcba8 - ld a, e - ld [wJumptableIndex], a - call Functionfcc59 - ld b, CHECK_FLAG - call TradeFlagAction - ld a, TRADE_AFTER - jr nz, .done - - ld a, TRADE_INTRO - call PrintTradeText - - call YesNoBox - ld a, TRADE_CANCEL - jr c, .done - -; Select givemon from party - ld b, 6 - callba Function5001d - ld a, TRADE_CANCEL - jr c, .done - - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [CurPartySpecies] - cp [hl] - ld a, TRADE_WRONG - jr nz, .done - - call CheckTradeGender - ld a, TRADE_WRONG - jr c, .done - - ld b, SET_FLAG - call TradeFlagAction - - ld hl, ConnectLinkCableText - call PrintText - - call Functionfcc63 - call Functionfcc07 - call GetTradeMonNames - - ld hl, TradedForText - call PrintText - - call RestartMapMusic - - ld a, TRADE_COMPLETE - -.done - call PrintTradeText - ret -; fcc07 - -Functionfcc07: ; fcc07 - call DisableSpriteUpdates - ld a, [wJumptableIndex] - push af - ld a, [wcf64] - push af - predef Function28f24 - pop af - ld [wcf64], a - pop af - ld [wJumptableIndex], a - call Function2b74 - ret -; fcc23 - -CheckTradeGender: ; fcc23 - xor a - ld [MonType], a - - ld e, TRADE_GENDER - call GetTradeAttribute - ld a, [hl] - and a - jr z, .asm_fcc46 - cp 1 - jr z, .asm_fcc3e - - callba GetGender - jr nz, .asm_fcc48 - jr .asm_fcc46 - -.asm_fcc3e - callba GetGender - jr z, .asm_fcc48 - -.asm_fcc46 - and a - ret - -.asm_fcc48 - scf - ret -; fcc4a - -TradeFlagAction: ; fcc4a - ld hl, wd960 - ld a, [wJumptableIndex] - ld c, a - predef FlagPredef - ld a, c - and a - ret -; fcc59 - -Functionfcc59: ; fcc59 - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - ld [wcf64], a - ret -; fcc63 - -Functionfcc63: ; fcc63 - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [hl] - ld [wc6d0], a - - ld e, TRADE_GETMON - call GetTradeAttribute - ld a, [hl] - ld [wc702], a - - ld a, [wc6d0] - ld de, wc6d1 - call Functionfcde8 - call Functionfcdf4 - - ld a, [wc702] - ld de, wc703 - call Functionfcde8 - call Functionfcdf4 - - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call Functionfcdd7 - ld de, wc6f2 - call Functionfcdf4 - - ld hl, PlayerName - ld de, wc6e7 - call Functionfcdf4 - - ld hl, PartyMon1ID - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6ff - call Functionfce0f - - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6fd - call Functionfce0f - - ld hl, PartyMon1Species - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld b, h - ld c, l - callba GetCaughtGender - ld a, c - ld [wc701], a - - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - cp TRADE_COMPLETE - ld a, 1 - jr c, .asm_fcce6 - ld a, 2 -.asm_fcce6 - ld [wEnemyCharging], a - - ld hl, PartyMon1Level - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld a, [hl] - ld [CurPartyLevel], a - ld a, [wc702] - ld [CurPartySpecies], a - xor a - ld [MonType], a - ld [wPokemonWithdrawDepositParameter], a - callab Functione039 - predef TryAddMonToParty - - ld e, TRADE_DIALOG - call GetTradeAttribute - ld a, [hl] - cp TRADE_COMPLETE - ld b, 0 - jr c, .asm_fcd1c - ld b, 1 -.asm_fcd1c - callba SetGiftPartyMonCaughtData - - ld e, TRADE_NICK - call GetTradeAttribute - ld de, wc70e - call Functionfcdf4 - - ld hl, PartyMonNicknames - ld bc, PKMN_NAME_LENGTH - call Functionfcdde - ld hl, wc70e - call Functionfcdf4 - - ld e, TRADE_OT_NAME - call GetTradeAttribute - push hl - ld de, wc724 - call Functionfcdf4 - pop hl - ld de, wc719 - call Functionfcdf4 - - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call Functionfcdde - ld hl, wc724 - call Functionfcdf4 - - ld e, TRADE_DVS - call GetTradeAttribute - ld de, wEnemyTrappingMove - call Functionfce0f - - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyTrappingMove - call Functionfce0f - - ld e, TRADE_OT_ID - call GetTradeAttribute - ld de, wPlayerCharging - call Functionfce15 - - ld hl, PartyMon1ID - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyWrapCount - call Functionfce0f - - ld e, TRADE_ITEM - call GetTradeAttribute - push hl - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - pop hl - ld a, [hl] - ld [de], a - - push af - push bc - push de - push hl - ld a, [CurPartyMon] - push af - ld a, [PartyCount] - dec a - ld [CurPartyMon], a - callba Functione134 - pop af - ld [CurPartyMon], a - pop hl - pop de - pop bc - pop af - ret -; fcdc2 - - -GetTradeAttribute: ; 0xfcdc2 - ld d, 0 - push de - ld a, [wJumptableIndex] - and $f - swap a - ld e, a - ld d, 0 - ld hl, NPCTrades -rept 2 - add hl, de -endr - pop de - add hl, de - ret -; 0xfcdd7 - -Functionfcdd7: ; fcdd7 - ld a, [CurPartyMon] - call AddNTimes - ret -; fcdde - -Functionfcdde: ; fcdde - ld a, [PartyCount] - dec a - call AddNTimes - ld e, l - ld d, h - ret -; fcde8 - -Functionfcde8: ; fcde8 - push de - ld [wd265], a - call GetBasePokemonName - ld hl, StringBuffer1 - pop de - ret -; fcdf4 - -Functionfcdf4: ; fcdf4 - ld bc, NAME_LENGTH - call CopyBytes - ret -; fcdfb - -Functionfcdfb: ; fcdfb - ld bc, 4 - call CopyBytes - ld a, $50 - ld [de], a - ret -; fce05 - -Functionfce05: ; fce05 - ld bc, 3 - call CopyBytes - ld a, $50 - ld [de], a - ret -; fce0f - -Functionfce0f: ; fce0f - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ret -; fce15 - -Functionfce15: ; fce15 - ld a, [hli] - ld [de], a - dec de - ld a, [hl] - ld [de], a - ret -; fce1b - -GetTradeMonNames: ; fce1b - ld e, TRADE_GETMON - call GetTradeAttribute - ld a, [hl] - call Functionfcde8 - - ld de, StringBuffer2 - call Functionfcdf4 - - ld e, TRADE_GIVEMON - call GetTradeAttribute - ld a, [hl] - call Functionfcde8 - - ld de, wd050 - call Functionfcdf4 - - ld hl, StringBuffer1 -.loop - ld a, [hli] - cp "@" - jr nz, .loop - - dec hl - push hl - ld e, TRADE_GENDER - call GetTradeAttribute - ld a, [hl] - pop hl - and a - ret z - - cp 1 - ld a, "♂" - jr z, .done - ld a, "♀" -.done - ld [hli], a - ld [hl], "@" - ret -; fce58 - - -NPCTrades: ; fce58 - db 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, $54, $92, "MIKE@@@@@@@", 0, 0 - db 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, $1e, $bf, "KYLE@@@@@@@", 0, 0 - db 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, $05, $72, "TIM@@@@@@@@", 0, 0 - db 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, $1b, $01, "EMY@@@@@@@@", 2, 0 - db 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, $00, $3d, "CHRIS@@@@@@", 0, 0 - db 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, $7b, $67, "KIM@@@@@@@@", 0, 0 - db 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, $a2, $c3, "FOREST@@@@@", 0, 0 -; fcf38 - - -PrintTradeText: ; fcf38 - push af - call GetTradeMonNames - pop af - ld bc, 2 * 4 - ld hl, TradeTexts - call AddNTimes - ld a, [wcf64] - ld c, a -rept 2 - add hl, bc -endr - ld a, [hli] - ld h, [hl] - ld l, a - call PrintText - ret -; fcf53 - -TradeTexts: ; fcf53 -; intro - dw TradeIntroText1 - dw TradeIntroText2 - dw TradeIntroText3 - dw TradeIntroText4 - -; cancel - dw TradeCancelText1 - dw TradeCancelText2 - dw TradeCancelText3 - dw TradeCancelText4 - -; wrong mon - dw TradeWrongText1 - dw TradeWrongText2 - dw TradeWrongText3 - dw TradeWrongText4 - -; completed - dw TradeCompleteText1 - dw TradeCompleteText2 - dw TradeCompleteText3 - dw TradeCompleteText4 - -; after - dw TradeAfterText1 - dw TradeAfterText2 - dw TradeAfterText3 - dw TradeAfterText4 -; fcf7b - - -ConnectLinkCableText: ; 0xfcf7b - ; OK, connect the Game Link Cable. - text_jump UnknownText_0x1bd407 - db "@" -; 0xfcf80 - - -TradedForText: ; 0xfcf80 - ; traded givemon for getmon - text_jump UnknownText_0x1bd429 - start_asm - - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld hl, .done - ret - -.done - ; sound0x0A - ; interpret_data - text_jump UnknownText_0x1bd445 - db "@" -; 0xfcf97 - - -TradeIntroText1: ; 0xfcf97 - ; I collect #MON. Do you have @ ? Want to trade it for my @ ? - text_jump UnknownText_0x1bd449 - db "@" -; 0xfcf9c - -TradeCancelText1: ; 0xfcf9c - ; You don't want to trade? Aww… - text_jump UnknownText_0x1bd48c - db "@" -; 0xfcfa1 - -TradeWrongText1: ; 0xfcfa1 - ; Huh? That's not @ . What a letdown… - text_jump UnknownText_0x1bd4aa - db "@" -; 0xfcfa6 - -TradeCompleteText1: ; 0xfcfa6 - ; Yay! I got myself @ ! Thanks! - text_jump UnknownText_0x1bd4d2 - db "@" -; 0xfcfab - -TradeAfterText1: ; 0xfcfab - ; Hi, how's my old @ doing? - text_jump UnknownText_0x1bd4f4 - db "@" -; 0xfcfb0 - - -TradeIntroText2: -TradeIntroText3: ; 0xfcfb0 - ; Hi, I'm looking for this #MON. If you have @ , would you trade it for my @ ? - text_jump UnknownText_0x1bd512 - db "@" -; 0xfcfb5 - -TradeCancelText2: -TradeCancelText3: ; 0xfcfb5 - ; You don't have one either? Gee, that's really disappointing… - text_jump UnknownText_0x1bd565 - db "@" -; 0xfcfba - -TradeWrongText2: -TradeWrongText3: ; 0xfcfba - ; You don't have @ ? That's too bad, then. - text_jump UnknownText_0x1bd5a1 - db "@" -; 0xfcfbf - -TradeCompleteText2: ; 0xfcfbf - ; Great! Thank you! I finally got @ . - text_jump UnknownText_0x1bd5cc - db "@" -; 0xfcfc4 - -TradeAfterText2: ; 0xfcfc4 - ; Hi! The @ you traded me is doing great! - text_jump UnknownText_0x1bd5f4 - db "@" -; 0xfcfc9 - - -TradeIntroText4: ; 0xfcfc9 - ; 's cute, but I don't have it. Do you have @ ? Want to trade it for my @ ? - text_jump UnknownText_0x1bd621 - db "@" -; 0xfcfce - -TradeCancelText4: ; 0xfcfce - ; You don't want to trade? Oh, darn… - text_jump UnknownText_0x1bd673 - db "@" -; 0xfcfd3 - -TradeWrongText4: ; 0xfcfd3 - ; That's not @ . Please trade with me if you get one. - text_jump UnknownText_0x1bd696 - db "@" -; 0xfcfd8 - -TradeCompleteText4: ; 0xfcfd8 - ; Wow! Thank you! I always wanted @ ! - text_jump UnknownText_0x1bd6cd - db "@" -; 0xfcfdd - -TradeAfterText4: ; 0xfcfdd - ; How is that @ I traded you doing? Your @ 's so cute! - text_jump UnknownText_0x1bd6f5 - db "@" -; 0xfcfe2 - - -TradeCompleteText3: ; 0xfcfe2 - ; Uh? What happened? - text_jump UnknownText_0x1bd731 - db "@" -; 0xfcfe7 - -TradeAfterText3: ; 0xfcfe7 - ; Trading is so odd… I still have a lot to learn about it. - text_jump UnknownText_0x1bd745 - db "@" -; 0xfcfec - - -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 - +INCLUDE "event/mom_phone.asm" INCLUDE "misc/mobile_40.asm" @@ -35716,7 +25857,7 @@ Function10404d: ; 10404d ret ; 104061 -Function104061:: ; 104061 +ReloadMapPart:: ; 104061 ld hl, Function104067 jp Function104177 ; 104067 @@ -35746,7 +25887,7 @@ Function104067: ; 104067 ret Function104099: ; 104099 - ld hl, Function104061 + ld hl, ReloadMapPart ; useless ld hl, Function1040a2 jp Function104177 ; 1040a2 @@ -36585,7 +26726,7 @@ LoadMapPalettes: ; 1047eb RefreshMapSprites: ; 1047f0 call ClearSprites callba ReturnFromMapSetupScript - call Function2914 + call GetMovementPermissions callba Function579d callba CheckReplaceKrisSprite ld hl, wPlayerSpriteSetupFlags diff --git a/misc/battle_tower_47.asm b/misc/battle_tower_47.asm index 37620212a..91efccc1b 100755 --- a/misc/battle_tower_47.asm +++ b/misc/battle_tower_47.asm @@ -385,7 +385,7 @@ Function11c1ca: ; 11c1ca ld de, VTiles0 call Decompress call EnableLCD - callba Function104061 + callba ReloadMapPart callba Function8cf53 callba LoadPokemonData callba Function40c30 @@ -443,7 +443,7 @@ Function11c283: ; 11c283 jr nz, .asm_11c2a2 call Function11c2ac callba Function8cf69 - callba Function104061 + callba ReloadMapPart jr .asm_11c283 .asm_11c2a2 @@ -782,7 +782,7 @@ Function11c4be: ; 11c4be (47:44be) hlcoord 0, 14, AttrMap ld bc, $28 call ByteFill - callba Function104061 + callba ReloadMapPart ret ; 11c4db (47:44db) @@ -978,7 +978,7 @@ Function11c618: ; 11c618 (47:4618) hlcoord 0, 6, AttrMap ld bc, $c8 call ByteFill - callba Function104061 + callba ReloadMapPart ret ; 11c62a (47:462a) @@ -1585,7 +1585,7 @@ Function11c9ab: ; 11c9ab (47:49ab) hlcoord 0, 6, AttrMap ld bc, $c8 call ByteFill - callba Function104061 + callba ReloadMapPart ret Function11c9bd: ; 11c9bd (47:49bd) @@ -1672,7 +1672,7 @@ Function11ca19: ; 11ca19 (47:4a19) add hl, de dec c jr nz, .asm_11ca22 - callba Function104061 + callba ReloadMapPart ret ; 11ca38 (47:4a38) @@ -2089,7 +2089,7 @@ Function11cdaa: ; 11cdaa (47:4daa) hlcoord 0, 12, AttrMap ld bc, $50 call ByteFill - callba Function104061 + callba ReloadMapPart ret ; 11cdc7 (47:4dc7) diff --git a/misc/crystal_misc.asm b/misc/crystal_misc.asm index 489ec77ee..6e9844866 100644 --- a/misc/crystal_misc.asm +++ b/misc/crystal_misc.asm @@ -173,7 +173,7 @@ Function17a78f: ; 17a78f (5e:678f) ret .asm_17a79f - callba Function104061 + callba ReloadMapPart ret ; 17a7a6 (5e:67a6) diff --git a/misc/mobile_22.asm b/misc/mobile_22.asm index 291006118..3fc378924 100644 --- a/misc/mobile_22.asm +++ b/misc/mobile_22.asm @@ -93,7 +93,7 @@ Function8919e: ; 8919e (22:519e) Function891ab: ; 891ab call Function89240 - callba Function104061 + callba ReloadMapPart call Function8923c ret ; 891b8 diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm index f3d023e08..128fdf2b1 100644 --- a/misc/mobile_40.asm +++ b/misc/mobile_40.asm @@ -1495,7 +1495,7 @@ Function100902: ; 100902 call PrintNum ld de, SFX_TWO_PC_BEEPS call PlaySFX - callba Function104061 + callba ReloadMapPart ld c, $3c call DelayFrames ret @@ -1506,7 +1506,7 @@ Function100902: ; 100902 call PlaceString ld de, SFX_4_NOTE_DITTY call PlaySFX - callba Function104061 + callba ReloadMapPart ld c, 120 call DelayFrames ret @@ -1536,7 +1536,7 @@ Function100989: ; 100989 decoord 0, 0 call Function1009a5 call Function1009ae - callba Function104061 + callba ReloadMapPart ld hl, w3_dd68 decoord 0, 0, AttrMap call Function1009a5 diff --git a/misc/mobile_45.asm b/misc/mobile_45.asm index da4cadc6d..f4df98c06 100644 --- a/misc/mobile_45.asm +++ b/misc/mobile_45.asm @@ -5750,7 +5750,7 @@ Function1161d5: ; 1161d5 pop af ld [rSVBK], a - callba Function104061 + callba ReloadMapPart ld a, $8 ld [MusicFade], a ld de, MUSIC_MOBILE_ADAPTER @@ -5931,7 +5931,7 @@ Function11636e: ; 11636e call UpdateSprites pop af ld [rSVBK], a - callba Function104061 + callba ReloadMapPart ld a, $8 ld [MusicFade], a ld a, [wc2c0] @@ -5975,7 +5975,7 @@ Function1163c0: ; 1163c0 callba Function14157 pop af ld [rSVBK], a - callba Function104061 + callba ReloadMapPart ld a, [wLinkMode] cp $4 jr z, .asm_11642a @@ -6006,7 +6006,7 @@ Function116441: ; 116441 callba Function17d405 ld a, $90 ld [hWY], a - callba Function104061 + callba ReloadMapPart ld a, $8 ld [MusicFade], a ld a, [wc2c0] @@ -7711,7 +7711,7 @@ Function117699: ; 117699 (45:7699) call ClearBGPalettes call ClearSprites callba Function171c87 - callba Function104061 + callba ReloadMapPart callba Function8cf53 ret @@ -7722,7 +7722,7 @@ Function1176ee: ; 1176ee (45:76ee) jr nz, .asm_117709 call Function117719 callba Function8cf69 - callba Function104061 + callba ReloadMapPart jr Function1176ee .asm_117709 callba Function8cf53 @@ -7978,7 +7978,7 @@ Function1178aa: ; 1178aa (45:78aa) call LoadMenuDataHeader call MenuBox call MenuBoxCoord2Tile - callba Function104061 + callba ReloadMapPart hlcoord 16, 8 ld de, String_1179c5 call PlaceString @@ -8077,7 +8077,7 @@ Function117984: ; 117984 (45:7984) call LoadMenuDataHeader call MenuBox call MenuBoxCoord2Tile - callba Function104061 + callba ReloadMapPart hlcoord 1, 14 ld de, String_1179e1 call PlaceString @@ -8184,7 +8184,7 @@ Function117ab4: ; 0x117ab4 call ClearSprites callba Function172e78 callba Function172eb9 - callba Function104061 + callba ReloadMapPart ret ; 0x117acd @@ -8299,12 +8299,12 @@ Function117b4f: jr nz, .asm_117ba4 ; 0x117b93 $f call ExitMenu call ExitMenu - callba Function104061 + callba ReloadMapPart jp Function117cdd .asm_117ba4 call ExitMenu call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, $80 ld [wJumptableIndex], a ret @@ -8387,7 +8387,7 @@ Function117c4a: call LoadMenuDataHeader call MenuBox call MenuBoxCoord2Tile - callba Function104061 + callba ReloadMapPart ld hl, MobileStadiumSuccessText call PrintText ld a, [rSVBK] diff --git a/misc/mobile_46.asm b/misc/mobile_46.asm index b07164f6f..48281ac13 100755 --- a/misc/mobile_46.asm +++ b/misc/mobile_46.asm @@ -4463,7 +4463,7 @@ Function119f98: ; 119f98 and a jr z, .asm_119fd4 call ExitMenu - callba Function104061 + callba ReloadMapPart callba Function115dc3 ld a, [wcd33] ld [wcf66], a @@ -4480,14 +4480,14 @@ Function119f98: ; 119f98 ld [wc30d], a ld a, $1 ld [wc314], a - callba Function104061 + callba ReloadMapPart and a ret .asm_119fef call ExitMenu call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd45] ld [wcf66], a callba Function115dc3 @@ -4562,7 +4562,7 @@ Function11a00e: ; 11a00e callba Function106462 callba Function106464 call ExitMenu - callba Function104061 + callba ReloadMapPart callba Function115d99 ld c, $0 callba Function115e18 @@ -4585,7 +4585,7 @@ Function11a0ca: ; 11a0ca callba Function106462 callba Function106464 call ExitMenu - callba Function104061 + callba ReloadMapPart callba Function115d99 ld c, $0 callba Function115e18 @@ -4677,7 +4677,7 @@ Function11a192: ; 11a192 and a jr nz, .asm_11a1b6 call ExitMenu - callba Function104061 + callba ReloadMapPart call Function11a63c hlcoord 4, 2 ld de, String_11a6d2 @@ -4687,7 +4687,7 @@ Function11a192: ; 11a192 .asm_11a1b6 call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd45] ld [wcf66], a ld [wcd80], a @@ -4818,7 +4818,7 @@ Function11a235: ; 11a235 and a jr nz, .asm_11a2c4 call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd46] cp $0 jr z, .asm_11a2b4 @@ -4840,7 +4840,7 @@ Function11a235: ; 11a235 .asm_11a2c4 call ExitMenu - callba Function104061 + callba ReloadMapPart and a ret ; 11a2cf @@ -4919,7 +4919,7 @@ Function11a33a: ; 11a33a .asm_11a346 call ExitMenu - callba Function104061 + callba ReloadMapPart callba Function115dc3 and a ret @@ -4963,7 +4963,7 @@ Function11a38d: ; 11a38d and a jr nz, .asm_11a3b1 call ExitMenu - callba Function104061 + callba ReloadMapPart call Function11a63c hlcoord 4, 2 ld de, String_11a6d2 @@ -4973,7 +4973,7 @@ Function11a38d: ; 11a38d .asm_11a3b1 call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd45] ld [wcf66], a ld [wcd80], a @@ -5038,7 +5038,7 @@ Function11a41b: ; 11a41b and a jr nz, .asm_11a43f call ExitMenu - callba Function104061 + callba ReloadMapPart call Function11a63c hlcoord 4, 2 ld de, String_11a6d2 @@ -5048,7 +5048,7 @@ Function11a41b: ; 11a41b .asm_11a43f call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, $1c ld [wcf66], a ld [wcd80], a @@ -5109,7 +5109,7 @@ Function11a49e: ; 11a49e and a jr nz, .asm_11a4c7 call ExitMenu - callba Function104061 + callba ReloadMapPart call Function11a63c hlcoord 4, 2 ld de, String_11a6d2 @@ -5121,7 +5121,7 @@ Function11a49e: ; 11a49e .asm_11a4c7 call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd46] ld [wcf66], a ld [wcd80], a @@ -5156,7 +5156,7 @@ Function11a4fe: ; 11a4fe and a jr nz, .asm_11a522 call ExitMenu - callba Function104061 + callba ReloadMapPart call Function11a63c hlcoord 4, 2 ld de, String_11a6d2 @@ -5166,7 +5166,7 @@ Function11a4fe: ; 11a4fe .asm_11a522 call ExitMenu - callba Function104061 + callba ReloadMapPart ld a, [wcd45] ld [wcf66], a ld [wcd80], a @@ -5195,7 +5195,7 @@ Function11a536: ; 11a536 call Function11a9f0 jr nz, .asm_11a562 call ExitMenu - callba Function104061 + callba ReloadMapPart .asm_11a562 scf @@ -5271,7 +5271,7 @@ Function11a5b9: ; 11a5b9 ld b, $4 ld c, $12 call Function3eea - callba Function104061 + callba ReloadMapPart call UpdateSprites ld c, $0 callba Function115e18 @@ -5306,7 +5306,7 @@ Function11a5f5: ; 11a5f5 hlcoord 15, 7 ld a, $ed ld [hl], a - callba Function104061 + callba ReloadMapPart ret ; 11a63c @@ -5840,7 +5840,7 @@ UnknownText_0x11ac1f: ; 0x11ac1f Function11ac3e: ; 11ac3e call SpeechTextBox call FadeToMenu - callab InefficientlyClear121BytesAtwc300 + callab ClearSpriteAnims call Function11ac51 call ReturnToCallingMenu ret @@ -5881,7 +5881,7 @@ Function11ac51: ; 11ac51 ld a, $78 ld [wc3b5], a callba Function8cf7a - callba Function104061 + callba ReloadMapPart jr .asm_11ac82 .asm_11aca8 @@ -6025,7 +6025,7 @@ Function11ad95: ; 11ad95 hlcoord 10, 10, AttrMap ld bc, $0808 call Function11afd6 - callba Function104061 + callba ReloadMapPart call Function11ad8a ld a, $1 ld [MenuSelection2], a @@ -6104,7 +6104,7 @@ Function11adc4: .asm_11ae2e call ExitMenu - callba Function104061 + callba ReloadMapPart ret ; 11ae38 @@ -6142,7 +6142,7 @@ Function11ae4e: ; 11ae4e hlcoord 9, 12, AttrMap lb bc, 6, 11 call Function11afd6 - callba Function104061 + callba ReloadMapPart call Function11ad8a ld a, $1 ld [MenuSelection2], a @@ -6210,7 +6210,7 @@ Function11ae98: .asm_11aef7 call ExitMenu call ExitMenu - callba Function104061 + callba ReloadMapPart ret ; 11af04 @@ -6233,7 +6233,7 @@ Function11af04: ; 11af04 hlcoord 9, 12, AttrMap lb bc, 6, 11 call Function11afd6 - callba Function104061 + callba ReloadMapPart call Function11ad8a ld a, $2 ld [MenuSelection2], a @@ -6301,7 +6301,7 @@ Function11af4e: .asm_11afaa call ExitMenu call ExitMenu - callba Function104061 + callba ReloadMapPart ret ; 11afb7 diff --git a/misc/mobile_5c.asm b/misc/mobile_5c.asm index 8501aab7e..61a3b1962 100755 --- a/misc/mobile_5c.asm +++ b/misc/mobile_5c.asm @@ -391,7 +391,7 @@ Function1704f1: ; 1704f1 bit 7, a jr nz, .asm_17050f call Function170510 - callba Function104061 + callba ReloadMapPart jr .asm_1704fa .asm_17050f @@ -1692,7 +1692,7 @@ Function1719ed: ; 1719ed (5c:59ed) call ClearBGPalettes call ClearSprites callba Function171d2b - callba Function104061 + callba ReloadMapPart callba Function8cf53 ret @@ -1703,7 +1703,7 @@ Function171a11: ; 171a11 (5c:5a11) jr nz, .asm_171a2c call Function171a36 callba Function8cf69 - callba Function104061 + callba ReloadMapPart jr Function171a11 .asm_171a2c callba Function8cf53 @@ -1960,7 +1960,7 @@ Function171beb: ; 171beb (5c:5beb) call LoadMenuDataHeader call MenuBox call MenuBoxCoord2Tile - callba Function104061 + callba ReloadMapPart hlcoord 1, 14 ld de, String_171c73 call PlaceString diff --git a/misc/mobile_5f.asm b/misc/mobile_5f.asm index b1f609298..3f35d8346 100644 --- a/misc/mobile_5f.asm +++ b/misc/mobile_5f.asm @@ -81,7 +81,7 @@ Function17c000: ; 17c000 ld [rVBK], a call EnableLCD - callba Function104061 + callba ReloadMapPart ret ; 17c083 @@ -629,7 +629,7 @@ Function17d370: ; 17d370 call ClearBGPalettes call ClearSprites call ClearScreen - callba Function104061 + callba ReloadMapPart call DisableLCD ld hl, VTiles1 tile $6e ld de, $c608 @@ -675,7 +675,7 @@ Function17d3f6: ; 17d3f6 call ClearBGPalettes call ClearSprites call ClearScreen - callba Function104061 + callba ReloadMapPart Function17d405: call DisableLCD @@ -721,7 +721,7 @@ Function17d45a: ; 17d45a bit 7, a jr nz, .asm_17d46f call Function17d474 - callba Function104061 + callba ReloadMapPart jr .asm_17d45a .asm_17d46f @@ -935,7 +935,7 @@ endr call Function17e451 call Function17e55b call Function17e5af - callba Function104061 + callba ReloadMapPart jp Function17e438 ; 17d5be @@ -372,8 +372,8 @@ TilePermissions:: ; c2fe SECTION "c300", WRAM0 [$c300] ; wc300 - wc313 is a 10x2 dictionary. -wDict_c300:: ds 10 * 2 - ds wDict_c300 - @ +wSpriteAnimDict:: ds 10 * 2 + ds wSpriteAnimDict - @ wc300:: ds 1 wc301:: ds 1 wc302:: ds 1 @@ -456,7 +456,7 @@ wc3bd:: ds 1 wc3be:: ds 1 wc3bf:: ds 1 wc3c0:: ds 1 -; wc300_data_end +wSpriteAnimsEnd:: wc3c1:: ds 11 wc3cc:: ds 1 |