diff options
Diffstat (limited to 'engine')
42 files changed, 742 insertions, 900 deletions
diff --git a/engine/bank30.bin b/engine/bank30.bin Binary files differdeleted file mode 100644 index 6309c149..00000000 --- a/engine/bank30.bin +++ /dev/null diff --git a/engine/bank3c.asm b/engine/bank3c.asm deleted file mode 100644 index 8eb32837..00000000 --- a/engine/bank3c.asm +++ /dev/null @@ -1,189 +0,0 @@ -INCLUDE "engine/pikachu_pcm.asm" -INCLUDE "engine/overworld/advance_player_sprite.asm" - -INCLUDE "engine/events/black_out.asm" - -SetMapSpecificScriptFlagsOnMapReload:: - ld a, [wCurMap] - cp VERMILION_GYM ; ??? new thing about verm gym? - jr z, .verm_gym - ld c, a - ld hl, .MapList -.search_loop - ld a, [hli] - cp c - jr z, .in_list - cp a, $ff - jr nz, .search_loop - ret - -.verm_gym - ld hl, wCurrentMapScriptFlags - set 6, [hl] - ret - -.in_list - ld hl, wCurrentMapScriptFlags - set 5, [hl] - ret - -.MapList - db SILPH_CO_2F - db SILPH_CO_3F - db SILPH_CO_4F - db SILPH_CO_5F - db SILPH_CO_6F - db SILPH_CO_7F - db SILPH_CO_8F - db SILPH_CO_9F - db SILPH_CO_10F - db SILPH_CO_11F - db POKEMON_MANSION_2F - db POKEMON_MANSION_3F - db POKEMON_MANSION_B1F - db POKEMON_MANSION_1F - db CINNABAR_GYM - db GAME_CORNER - db ROCKET_HIDEOUT_B1F - db ROCKET_HIDEOUT_B4F - db VICTORY_ROAD_3F - db VICTORY_ROAD_1F - db VICTORY_ROAD_2F - db LANCES_ROOM - db LORELEIS_ROOM - db BRUNOS_ROOM - db AGATHAS_ROOM - db $ff - -BeachHouse_GFX: - INCBIN "gfx/tilesets/beachhouse.2bpp" - ds 384 - -BeachHouse_Block: - INCBIN "gfx/blocksets/beachhouse.bst" - -Func_f0a54: - ret - -LoadUnusedBluesHouseMissableObjectData:: -; referenced in an unused function - ld hl, .MissableObjectsMaps -.loop - ld a, [hli] - cp a, $ff - ret z - ld b, a - ld a, [wCurMap] - cp b - jr z, .found - inc hl - inc hl - inc hl - jr .loop - -.found - ld a, [hli] - ld c, a - ld b, 0 - ld a, [hli] - ld h, [hl] - ld l, a - ld de, wMissableObjectList - call CopyData - ret - -.MissableObjectsMaps: - dbbw BLUES_HOUSE, .End - .Start, .Start - db $ff - -.Start: - db 1, HS_DAISY_SITTING_COPY - db 2, HS_DAISY_WALKING_COPY - db 3, HS_TOWN_MAP_COPY - db $ff -.End: - -TryApplyPikachuMovementData: - ld a, [wd472] - bit 7, a - ret z - ld a, [wWalkBikeSurfState] - and a - ret nz - push hl - push bc - callfar GetPikachuFacingDirectionAndReturnToE - pop bc - pop hl - ld a, b - cp e - ret nz - push hl - ld a, [wUpdateSpritesEnabled] - push af - ld a, $ff - ld [wUpdateSpritesEnabled], a - callfar LoadPikachuShadowIntoVRAM - pop af - ld [wUpdateSpritesEnabled], a - pop hl - call ApplyPikachuMovementData - callfar RefreshPikachuFollow - ret - -Pic_f0abf: -INCBIN "gfx/pikachu/unknown_f0abf.pic" -GFX_f0b64: -INCBIN "gfx/pikachu/unknown_f0b64.2bpp" -Pic_f0cf4: -INCBIN "gfx/pikachu/unknown_f0cf4.pic" -GFX_f0d82: -INCBIN "gfx/pikachu/unknown_f0d82.2bpp" - -PokecenterChanseyText:: - ld hl, NurseChanseyText - call PrintText - ld a, CHANSEY - call PlayCry - call WaitForSoundToFinish - ret - -NurseChanseyText: - text_far _NurseChanseyText - text_end - -INCLUDE "engine/movie/credits.asm" -INCLUDE "scripts/ViridianCity2.asm" -INCLUDE "scripts/VermilionCity2.asm" -INCLUDE "scripts/CeladonCity2.asm" -INCLUDE "scripts/Route1_2.asm" -INCLUDE "scripts/Route22_2.asm" -INCLUDE "scripts/RedsHouse1F2.asm" -INCLUDE "scripts/OaksLab2.asm" -INCLUDE "scripts/ViridianSchoolHouse2.asm" -INCLUDE "scripts/Museum1F2.asm" -INCLUDE "scripts/PewterPokecenter2.asm" -INCLUDE "scripts/PokemonTower2F_2.asm" -INCLUDE "scripts/CeladonMart3F_2.asm" -INCLUDE "scripts/CeladonMansion1F_2.asm" -INCLUDE "scripts/CeladonMansion3F_2.asm" -INCLUDE "scripts/GameCorner2.asm" -INCLUDE "scripts/CeladonDiner2.asm" -INCLUDE "scripts/SafariZoneGate2.asm" -INCLUDE "scripts/CinnabarGym3.asm" -INCLUDE "scripts/MtMoonPokecenter2.asm" - -INCLUDE "data/maps/headers/BeachHouse.asm" -INCLUDE "scripts/BeachHouse.asm" -BeachHouse_Blocks: -INCBIN "maps/BeachHouse.blk" -INCLUDE "data/maps/objects/BeachHouse.asm" - -INCLUDE "scripts/BeachHouse2.asm" -INCLUDE "scripts/BillsHouse2.asm" -INCLUDE "scripts/ViridianForest2.asm" -INCLUDE "scripts/SSAnne2FRooms_2.asm" -INCLUDE "scripts/SilphCo11F_2.asm" - -INCLUDE "engine/overworld/hidden_objects.asm" -INCLUDE "engine/vermilion_gym_trash_cans.asm" diff --git a/engine/bank3d.asm b/engine/bank3d.asm deleted file mode 100644 index e929e44e..00000000 --- a/engine/bank3d.asm +++ /dev/null @@ -1,491 +0,0 @@ -INCLUDE "engine/battle/common_text.asm" -INCLUDE "engine/battle/link_battle_versus_text.asm" -INCLUDE "engine/battle/unused_stats_functions.asm" -INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" - -StarterPikachuBattleEntranceAnimation: - hlcoord 0, 5 - ld c, 0 -.loop1 - inc c - ld a, c - cp 9 - ret z - ld d, 7 * 13 - push bc - push hl -.loop2 - call .PlaceColumn - dec hl - ld a, d - sub 7 - ld d, a - dec c - jr nz, .loop2 - ld c, 2 - call DelayFrames - pop hl - pop bc - inc hl - jr .loop1 - -.PlaceColumn: - push hl - push de - push bc - ld e, 7 -.loop3 - ld a, d - cp 7 * 7 - jr nc, .okay - ld a, $7f -.okay - ld [hl], a - ld bc, SCREEN_WIDTH - add hl, bc - inc d - dec e - jr nz, .loop3 - pop bc - pop de - pop hl - ret - -INCLUDE "engine/battle/decrement_pp.asm" - -ModifyPikachuHappiness:: - ld a, d - cp PIKAHAPPY_GYMLEADER - jr z, .checkanywhereinparty - cp PIKAHAPPY_WALKING - jr z, .checkanywhereinparty - push de - callfar IsThisPartymonStarterPikachu_Party - pop de - ret nc - jr .proceed - -.checkanywhereinparty - push de - callfar IsStarterPikachuInOurParty - pop de - ret nc - -.proceed - push de - ; Divide [wPikachuHappiness] by 100. Hold the integer part in e. - ld e, $0 - ld a, [wPikachuHappiness] - cp 100 - jr c, .wPikachuHappiness_div_100 - inc e - cp 200 - jr c, .wPikachuHappiness_div_100 - inc e -.wPikachuHappiness_div_100 - ; Get the (d, e) entry from HappinessChangeTable. - ld c, d - dec c - ld b, $0 - ld hl, HappinessChangeTable - add hl, bc - add hl, bc - add hl, bc - ld d, $0 - add hl, de - ld a, [hl] - ; If [hl] is positive, take min(0xff, [hl] + [wPikachuHappiness]). - ; If [hl] is negative, take max(0x00, [hl] + [wPikachuHappiness]). - ; Inexplicably, we're using 100 as the threshold for comparison. - cp 100 - ld a, [wPikachuHappiness] - jr nc, .negative - add [hl] - jr nc, .okay - ld a, -1 - jr .okay - -.negative - add [hl] - jr c, .okay - xor a -.okay - ld [wPikachuHappiness], a - - ; Restore d and get the d'th entry in PikachuMoods. - pop de - dec d - ld hl, PikachuMoods - ld e, d - ld d, $0 - add hl, de - ld a, [hl] - ld b, a - ; Modify Pikachu's mood - cp $80 - jr z, .done - ld a, [wPikachuMood] - jr c, .decreased - cp b - jr nc, .done - ld a, [wd49c] - and a - jr nz, .done - jr .update_mood - -.decreased - cp b - jr c, .done -.update_mood - ld a, b - ld [wPikachuMood], a -.done - ret - -HappinessChangeTable: - ; Increase - db 5, 3, 2 ; Gained a level - db 5, 3, 2 ; HP restore - db 1, 1, 0 ; Used X item - db 3, 2, 1 ; Challenged Gym Leader - db 1, 1, 0 ; Teach TM/HM - db 2, 1, 1 ; Walking around - ; Decrease - db -3, -3, -5 ; Deposited - db -1, -1, -1 ; Fainted in battle - db -5, -5, -10 ; Fainted due to Poison outside of battle - db -5, -5, -10 ; Fainted to opponent at least 30 levels higher - db -10, -10, -20 ; Traded away - -PikachuMoods: - ; Increase - db $8a ; Gained a level - db $83 ; HP restore - db $80 ; Teach TM/HM - db $80 ; Challenged Gym Leader - db $94 ; Unknown (d = 5) - db $80 ; Unknown (d = 6) - ; Decrease - db $62 ; Deposited - db $6c ; Fainted - db $62 ; Unknown (d = 9) - db $6c ; Unknown (d = 10) - db $00 ; Unknown (d = 11) - -RedPicBack: INCBIN "gfx/player/redb.pic" -OldManPic: INCBIN "gfx/battle/oldman.pic" -ProfOakPicBack: INCBIN "gfx/battle/prof.oakb.pic" - -LoadYellowTitleScreenGFX: - ld hl, PokemonLogoGraphics - ld de, vChars2 - ld bc, 115 * $10 - ld a, BANK(PokemonLogoGraphics) ; redundant because this function is in bank3d - call FarCopyData - ld hl, YellowLogoGraphics + 35 * $10 - ld de, vChars0 + 253 * $10 - ld bc, 3 * $10 - ld a, BANK(YellowLogoGraphics) - call FarCopyData - ld hl, YellowLogoGraphics + 38 * $10 - ld de, vChars1 - ld bc, 64 * $10 - ld a, BANK(YellowLogoGraphics) - call FarCopyData - ld hl, YellowLogoGraphics + 102 * $10 - ld de, vChars0 + 240 * $10 - ld bc, 12 * $10 - ld a, BANK(YellowLogoGraphics) - call FarCopyData - ret - -TitleScreen_PlacePokemonLogo: - hlcoord 2, 1 - ld de, TitleScreenPokemonLogoTilemap - lb bc, 7, 16 - call Bank3D_CopyBox - ret - -TitleScreen_PlacePikaSpeechBubble: - hlcoord 6, 4 - ld de, TitleScreenPikaBubbleTilemap - lb bc, 4, 7 - call Bank3D_CopyBox - hlcoord 9, 8 - ld [hl], $64 - inc hl - ld [hl], $65 - ret - -TitleScreen_PlacePikachu: - hlcoord 4, 8 - ld de, TitleScreenPikachuTilemap - lb bc, 9, 12 - call Bank3D_CopyBox - hlcoord 16, 10 - ld [hl], $96 - hlcoord 16, 11 - ld [hl], $9d - hlcoord 16, 12 - ld [hl], $a7 - hlcoord 16, 13 - ld [hl], $b1 - ld hl, TitleScreenPikachuEyesOAMData - ld de, wOAMBuffer - ld bc, $20 - call CopyData - ret - -TitleScreenPikachuEyesOAMData: - db $60, $40, $f1, $22 - db $60, $48, $f0, $22 - db $68, $40, $f3, $22 - db $68, $48, $f2, $22 - db $60, $60, $f0, $02 - db $60, $68, $f1, $02 - db $68, $60, $f2, $02 - db $68, $68, $f3, $02 - -Bank3D_CopyBox: -; copy cxb (xy) screen area from de to hl -.row - push bc - push hl -.col - ld a, [de] - inc de - 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 - -TitleScreenPokemonLogoTilemap: -; 16x7 (xy) - db $f4, $f4, $f4, $f4, $f4, $f4, $49, $f4, $72, $30, $f4, $f4, $f4, $f4, $f4, $f4 - db $fd, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $f4, $0d, $0e, $0f - db $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1a, $1b, $1c, $1d, $1e, $1f - db $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c, $2d, $2e, $2f - db $f4, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a, $3b, $3c, $3d, $3e, $3f - db $f4, $41, $42, $43, $44, $45, $46, $47, $48, $f4, $4a, $4b, $4c, $4d, $4e, $4f - db $f4, $6a, $6b, $6c, $6d, $f4, $f4, $f4, $f4, $f4, $f4, $6e, $6f, $70, $71, $f4 - -Pointer_f4669: -; Unreferenced - db $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $5f - -TitleScreenPikaBubbleTilemap: -; 7x4 (xy) - db $24, $25, $66, $67, $68, $69, $2a - db $50, $51, $52, $53, $54, $55, $56 - db $57, $58, $59, $5a, $5b, $5c, $5d - db $6d, $5e, $5f, $60, $61, $62, $63 - -TitleScreenPikachuTilemap: -; 12x9 (xy) - db $80, $81, $82, $83, $00, $00, $00, $00, $84, $85, $86, $87 - db $88, $89, $8a, $8b, $8c, $8d, $8d, $8e, $8f, $8a, $90, $91 - db $00, $92, $93, $8a, $8a, $8a, $8a, $8a, $8a, $94, $95, $00 - db $00, $00, $97, $8a, $8a, $98, $99, $8a, $8a, $9a, $9b, $9c - db $00, $00, $9e, $9f, $a0, $a1, $a2, $a3, $a4, $a5, $a6, $8a - db $00, $a8, $a9, $aa, $8a, $ab, $ac, $8a, $ad, $ae, $af, $b0 - db $00, $b2, $b3, $b4, $8a, $8a, $8a, $8a, $b5, $b6, $b7, $b8 - db $00, $b9, $ba, $8a, $8a, $8a, $8a, $8a, $8a, $bb, $bc, $00 - db $00, $00, $bd, $8a, $8a, $8a, $8a, $8a, $8a, $be, $bf, $00 - -PokemonLogoGraphics: INCBIN "gfx/title/pokemon_logo.2bpp" -PokemonLogoGraphicsEnd: -YellowLogoGraphics: INCBIN "gfx/yellow_titlescreen.2bpp" -YellowLogoGraphicsEnd: - -INCLUDE "engine/menus/link_menu.asm" - -HandleMenuInputDouble: - xor a - ld [wPartyMenuAnimMonEnabled], a - -HandleMenuInputPokemonSelectionDouble: - ldh a, [hDownArrowBlinkCount1] - push af - ldh a, [hDownArrowBlinkCount2] - push af ; save existing values on stack - xor a - ldh [hDownArrowBlinkCount1], a ; blinking down arrow timing value 1 - ld a, $06 - ldh [hDownArrowBlinkCount2], a ; blinking down arrow timing value 2 -.loop1 - xor a - ld [wAnimCounter], a ; counter for pokemon shaking animation - call .UpdateCursorTile - call JoypadLowSensitivity - ldh a, [hJoy5] - and a ; was a key pressed? - jr nz, .keyPressed - pop af - ldh [hDownArrowBlinkCount2], a - pop af - ldh [hDownArrowBlinkCount1], a ; restore previous values - xor a - ld [wMenuWrappingEnabled], a ; disable menu wrapping - ret -.keyPressed - xor a - ld [wCheckFor180DegreeTurn], a - ldh a, [hJoy5] - ld b, a - bit 6, a ; pressed Up key? - jr z, .checkIfDownPressed -.upPressed - ld a, [wCurrentMenuItem] ; selected menu item - and a ; already at the top of the menu? - jr z, .checkOtherKeys -.notAtTop - dec a - ld [wCurrentMenuItem], a ; move selected menu item up one space - jr .checkOtherKeys -.checkIfDownPressed - bit 7, a - jr z, .checkOtherKeys -.downPressed - ld a, [wCurrentMenuItem] - inc a - ld c, a - ld a, [wMaxMenuItem] - cp c - jr c, .checkOtherKeys - ld a, c - ld [wCurrentMenuItem], a -.checkOtherKeys - ld a, [wMenuWatchedKeys] - and b ; does the menu care about any of the pressed keys? - jp z, .loop1 -.checkIfAButtonOrBButtonPressed - ldh a, [hJoy5] - and A_BUTTON | B_BUTTON - jr z, .skipPlayingSound -.AButtonOrBButtonPressed - ld a, SFX_PRESS_AB - call PlaySound ; play sound -.skipPlayingSound - pop af - ldh [hDownArrowBlinkCount2], a - pop af - ldh [hDownArrowBlinkCount1], a ; restore previous values - ldh a, [hJoy5] - ret - -.UpdateCursorTile: - ld a, [wTopMenuItemY] - and a - jr z, .asm_f5ac0 - hlcoord 0, 0 - ld bc, SCREEN_WIDTH -.loop - add hl, bc - dec a - jr nz, .loop -.asm_f5ac0 - ld a, [wTopMenuItemX] - ld b, $0 - ld c, a - add hl, bc - push hl - ld a, [wLastMenuItem] - and a - jr z, .asm_f5ad5 - ld bc, $28 -.loop2 - add hl, bc - dec a - jr nz, .loop2 -.asm_f5ad5 - ld a, [hl] - cp "▶" - jr nz, .asm_f5ade - ld a, [wTileBehindCursor] - ld [hl], a -.asm_f5ade - pop hl - ld a, [wCurrentMenuItem] - and a - jr z, .asm_f5aec - ld bc, $28 -.loop3 - add hl, bc - dec a - jr nz, .loop3 -.asm_f5aec - ld a, [hl] - cp "▶" - jr z, .asm_f5af4 - ld [wTileBehindCursor], a -.asm_f5af4 - ld a, "▶" - ld [hl], a - ld a, l - ld [wMenuCursorLocation], a - ld a, h - ld [wMenuCursorLocation + 1], a - ld a, [wCurrentMenuItem] - ld [wLastMenuItem], a - ret - -INCLUDE "engine/overworld/field_move_messages.asm" - -INCLUDE "engine/items/inventory.asm" - -INCLUDE "gfx/trainer_card.asm" - -ReadSuperRodData: - ld a, [wCurMap] - ld c, a - ld hl, FishingSlots -.loop - ld a, [hli] - cp $ff - jr z, .notfound - cp c - jr z, .found - ld de, $8 - add hl, de - jr .loop -.found - call GenerateRandomFishingEncounter - ret -.notfound - ld de, $0 - ret - -GenerateRandomFishingEncounter: - call Random - cp $66 - jr c, .asm_f5ed6 - inc hl - inc hl - cp $b2 - jr c, .asm_f5ed6 - inc hl - inc hl - cp $e5 - jr c, .asm_f5ed6 - inc hl - inc hl -.asm_f5ed6 - ld e, [hl] - inc hl - ld d, [hl] - ret - -INCLUDE "data/wild/super_rod.asm" -INCLUDE "engine/battle/bank3d_battle.asm" -INCLUDE "engine/items/tm_prices.asm" -INCLUDE "engine/math/multiply_divide.asm" -INCLUDE "engine/events/give_pokemon.asm" -INCLUDE "engine/battle/get_trainer_name.asm" -INCLUDE "engine/math/random.asm" -INCLUDE "engine/predefs.asm" diff --git a/engine/bank3e.asm b/engine/bank3e.asm deleted file mode 100644 index 32f5ebfd..00000000 --- a/engine/bank3e.asm +++ /dev/null @@ -1,5 +0,0 @@ -INCLUDE "engine/surfing_minigame.asm" -INCLUDE "engine/yellow_intro.asm" -INCLUDE "data/animated_objects_3e_2.asm" -YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp" -INCLUDE "engine/animated_objects_3e.asm" diff --git a/engine/bank3f.asm b/engine/bank3f.asm deleted file mode 100644 index c26e9834..00000000 --- a/engine/bank3f.asm +++ /dev/null @@ -1,23 +0,0 @@ -INCLUDE "data/maps/songs.asm" -INCLUDE "data/maps/map_header_pointers.asm" -INCLUDE "data/maps/map_header_banks.asm" -INCLUDE "engine/pikachu_follow.asm" -INCLUDE "engine/pikachu_status.asm" -INCLUDE "engine/pikachu_emotions.asm" -INCLUDE "engine/pikachu_movement.asm" -INCLUDE "engine/pikachu_pic_animation.asm" - -Func_fe66e: - ret - -OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp" -PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp" -SandshrewSprite: INCBIN "gfx/sprites/sandshrew.2bpp" -OddishSprite: INCBIN "gfx/sprites/oddish.2bpp" -BulbasaurSprite: INCBIN "gfx/sprites/bulbasaur.2bpp" -JigglypuffSprite: INCBIN "gfx/sprites/jigglypuff.2bpp" -ClefairySprite: INCBIN "gfx/sprites/clefairy.2bpp" -ChanseySprite: INCBIN "gfx/sprites/chansey.2bpp" -SurfingPikachuSprite:: INCBIN "gfx/sprites/surfing_pikachu.2bpp" -JessieSprite: INCBIN "gfx/sprites/jessie.2bpp" -JamesSprite: INCBIN "gfx/sprites/james.2bpp" diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index 4508dbaa..3b0fd4ec 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -579,16 +579,16 @@ Func_78e98: xor a ldh [hAutoBGTransferEnabled], a call ClearScreen - ld h, vBGMap0 / $100 + ld h, HIGH(vBGMap0) call WriteLowerByteOfBGMapAndEnableBGTransfer call Delay3 xor a ldh [hAutoBGTransferEnabled], a call LoadScreenTilesFromBuffer2 - ld h, vBGMap1 / $100 + ld h, HIGH(vBGMap1) WriteLowerByteOfBGMapAndEnableBGTransfer: - ld l, vBGMap0 & $ff + ld l, LOW(vBGMap0) call BattleAnimCopyTileMapToVRAM ld a, $1 ldh [hAutoBGTransferEnabled], a diff --git a/engine/battle/bank3d_battle.asm b/engine/battle/init_battle.asm index 48c3cde3..d6ba51ed 100644 --- a/engine/battle/bank3d_battle.asm +++ b/engine/battle/init_battle.asm @@ -280,13 +280,3 @@ CopyUncompressedPicToHL:: dec b jr nz, .asm_f6227 ret - -INCLUDE "engine/battle/init_battle_variables.asm" -INCLUDE "engine/battle/move_effects/focus_energy.asm" -INCLUDE "engine/battle/move_effects/heal.asm" -INCLUDE "engine/battle/move_effects/transform.asm" -INCLUDE "engine/battle/move_effects/reflect_light_screen.asm" -INCLUDE "engine/battle/move_effects/mist.asm" -INCLUDE "engine/battle/move_effects/one_hit_ko.asm" -INCLUDE "engine/battle/move_effects/pay_day.asm" -INCLUDE "engine/battle/move_effects/paralyze.asm" diff --git a/engine/battle/pikachu_entrance_anim.asm b/engine/battle/pikachu_entrance_anim.asm new file mode 100644 index 00000000..8af65cee --- /dev/null +++ b/engine/battle/pikachu_entrance_anim.asm @@ -0,0 +1,47 @@ +StarterPikachuBattleEntranceAnimation: + hlcoord 0, 5 + ld c, 0 +.loop1 + inc c + ld a, c + cp 9 + ret z + ld d, 7 * 13 + push bc + push hl +.loop2 + call .PlaceColumn + dec hl + ld a, d + sub 7 + ld d, a + dec c + jr nz, .loop2 + ld c, 2 + call DelayFrames + pop hl + pop bc + inc hl + jr .loop1 + +.PlaceColumn: + push hl + push de + push bc + ld e, 7 +.loop3 + ld a, d + cp 7 * 7 + jr nc, .okay + ld a, $7f +.okay + ld [hl], a + ld bc, SCREEN_WIDTH + add hl, bc + inc d + dec e + jr nz, .loop3 + pop bc + pop de + pop hl + ret diff --git a/engine/diploma_3a.asm b/engine/events/diploma2.asm index 83a7345b..75ac104a 100755 --- a/engine/diploma_3a.asm +++ b/engine/events/diploma2.asm @@ -166,3 +166,6 @@ Func_e9beb: dec c jr nz, .asm_e9bed ret + +SurfingPikachu3Graphics: INCBIN "gfx/surfing_pikachu/surfing_pikachu_3.2bpp" +SurfingPikachu3GraphicsEnd: diff --git a/engine/vermilion_gym_trash_cans.asm b/engine/events/hidden_objects/vermilion_gym_trash2.asm index 1bc0590b..1bc0590b 100755..100644 --- a/engine/vermilion_gym_trash_cans.asm +++ b/engine/events/hidden_objects/vermilion_gym_trash2.asm diff --git a/engine/events/pikachu_happiness.asm b/engine/events/pikachu_happiness.asm new file mode 100644 index 00000000..0d79e32b --- /dev/null +++ b/engine/events/pikachu_happiness.asm @@ -0,0 +1,118 @@ +ModifyPikachuHappiness:: + ld a, d + cp PIKAHAPPY_GYMLEADER + jr z, .checkanywhereinparty + cp PIKAHAPPY_WALKING + jr z, .checkanywhereinparty + push de + callfar IsThisPartymonStarterPikachu_Party + pop de + ret nc + jr .proceed + +.checkanywhereinparty + push de + callfar IsStarterPikachuInOurParty + pop de + ret nc + +.proceed + push de + ; Divide [wPikachuHappiness] by 100. Hold the integer part in e. + ld e, $0 + ld a, [wPikachuHappiness] + cp 100 + jr c, .wPikachuHappiness_div_100 + inc e + cp 200 + jr c, .wPikachuHappiness_div_100 + inc e +.wPikachuHappiness_div_100 + ; Get the (d, e) entry from HappinessChangeTable. + ld c, d + dec c + ld b, $0 + ld hl, HappinessChangeTable + add hl, bc + add hl, bc + add hl, bc + ld d, $0 + add hl, de + ld a, [hl] + ; If [hl] is positive, take min(0xff, [hl] + [wPikachuHappiness]). + ; If [hl] is negative, take max(0x00, [hl] + [wPikachuHappiness]). + ; Inexplicably, we're using 100 as the threshold for comparison. + cp 100 + ld a, [wPikachuHappiness] + jr nc, .negative + add [hl] + jr nc, .okay + ld a, -1 + jr .okay + +.negative + add [hl] + jr c, .okay + xor a +.okay + ld [wPikachuHappiness], a + + ; Restore d and get the d'th entry in PikachuMoods. + pop de + dec d + ld hl, PikachuMoods + ld e, d + ld d, $0 + add hl, de + ld a, [hl] + ld b, a + ; Modify Pikachu's mood + cp $80 + jr z, .done + ld a, [wPikachuMood] + jr c, .decreased + cp b + jr nc, .done + ld a, [wd49c] + and a + jr nz, .done + jr .update_mood + +.decreased + cp b + jr c, .done +.update_mood + ld a, b + ld [wPikachuMood], a +.done + ret + +HappinessChangeTable: + ; Increase + db 5, 3, 2 ; Gained a level + db 5, 3, 2 ; HP restore + db 1, 1, 0 ; Used X item + db 3, 2, 1 ; Challenged Gym Leader + db 1, 1, 0 ; Teach TM/HM + db 2, 1, 1 ; Walking around + ; Decrease + db -3, -3, -5 ; Deposited + db -1, -1, -1 ; Fainted in battle + db -5, -5, -10 ; Fainted due to Poison outside of battle + db -5, -5, -10 ; Fainted to opponent at least 30 levels higher + db -10, -10, -20 ; Traded away + +PikachuMoods: + ; Increase + db $8a ; Gained a level + db $83 ; HP restore + db $80 ; Teach TM/HM + db $80 ; Challenged Gym Leader + db $94 ; Unknown (d = 5) + db $80 ; Unknown (d = 6) + ; Decrease + db $62 ; Deposited + db $6c ; Fainted + db $62 ; Unknown (d = 9) + db $6c ; Unknown (d = 10) + db $00 ; Unknown (d = 11) diff --git a/engine/events/pokecenter_chansey.asm b/engine/events/pokecenter_chansey.asm new file mode 100644 index 00000000..d7c3a95b --- /dev/null +++ b/engine/events/pokecenter_chansey.asm @@ -0,0 +1,11 @@ +PokecenterChanseyText:: + ld hl, NurseChanseyText + call PrintText + ld a, CHANSEY + call PlayCry + call WaitForSoundToFinish + ret + +NurseChanseyText: + text_far _NurseChanseyText + text_end diff --git a/engine/events/try_pikachu_movement.asm b/engine/events/try_pikachu_movement.asm new file mode 100644 index 00000000..70cf65b4 --- /dev/null +++ b/engine/events/try_pikachu_movement.asm @@ -0,0 +1,27 @@ +TryApplyPikachuMovementData:: + ld a, [wd472] + bit 7, a + ret z + ld a, [wWalkBikeSurfState] + and a + ret nz + push hl + push bc + callfar GetPikachuFacingDirectionAndReturnToE + pop bc + pop hl + ld a, b + cp e + ret nz + push hl + ld a, [wUpdateSpritesEnabled] + push af + ld a, $ff + ld [wUpdateSpritesEnabled], a + callfar LoadPikachuShadowIntoVRAM + pop af + ld [wUpdateSpritesEnabled], a + pop hl + call ApplyPikachuMovementData + callfar RefreshPikachuFollow + ret diff --git a/engine/animated_objects_3e.asm b/engine/gfx/animated_objects.asm index 2373e19e..971af6b5 100755 --- a/engine/animated_objects_3e.asm +++ b/engine/gfx/animated_objects.asm @@ -28,10 +28,10 @@ RunObjectAnimations: jr nz, .loop ld a, [wCurrentAnimatedObjectOAMBufferOffset] ld l, a - ld h, wOAMBuffer / $100 + ld h, HIGH(wOAMBuffer) .deinit_unused_oam_loop ld a, l - cp wOAMBufferEnd % $100 + cp LOW(wOAMBufferEnd) jr nc, .quit xor a ld [hli], a @@ -158,7 +158,7 @@ UpdateCurrentAnimatedObjectFrame: push bc ld a, [wCurrentAnimatedObjectOAMBufferOffset] ld e, a - ld d, wOAMBuffer / $100 + ld d, HIGH(wOAMBuffer) ld a, [hli] ld c, a .loop @@ -205,7 +205,7 @@ UpdateCurrentAnimatedObjectFrame: inc de ld a, e ld [wCurrentAnimatedObjectOAMBufferOffset], a - cp wOAMBufferEnd % $100 + cp LOW(wOAMBufferEnd) jr nc, .oam_is_full dec c jr nz, .loop diff --git a/engine/bg_map_attributes.asm b/engine/gfx/bg_map_attributes.asm index 4c50bcf8..6f81af63 100644 --- a/engine/bg_map_attributes.asm +++ b/engine/gfx/bg_map_attributes.asm @@ -1,4 +1,4 @@ -INCLUDE "data/bg_map_attributes.asm" +INCLUDE "data/cgb/bg_map_attributes.asm" LoadBGMapAttributes:: ld hl, BGMapAttributesPointers @@ -195,9 +195,9 @@ HandlePartyHPBarAttributes: push hl ld a, [de] and $3 ; 4 possible palettes - rept 7 ; hp bar length in tiles +REPT 7 ; hp bar length in tiles ld [hli], a - endr +ENDR pop hl ld bc, $40 ; get 2nd party location add hl, bc diff --git a/engine/gfx/palettes.asm b/engine/gfx/palettes.asm index dd723afa..c08992d3 100755 --- a/engine/gfx/palettes.asm +++ b/engine/gfx/palettes.asm @@ -752,7 +752,7 @@ index = 0 ld a, [hli] inc hl - IF index < (NUM_ACTIVE_PALS + -1) + IF index < NUM_ACTIVE_PALS - 1 push hl ENDC @@ -823,7 +823,7 @@ DMGPalToGBCPal:: ld [wLastOBP1], a .convert color_index = 0 - REPT NUM_COLORS + REPT NUM_PAL_COLORS ld b, a and %11 call .GetColorAddress @@ -832,7 +832,7 @@ color_index = 0 ld a, [hl] ld [wGBCPal + color_index * 2 + 1], a - IF color_index < (NUM_COLORS + -1) + IF color_index < NUM_PAL_COLORS - 1 ld a, b rrca rrca @@ -863,14 +863,14 @@ TransferCurBGPData:: ldh a, [rLCDC] and rLCDC_ENABLE_MASK jr nz, .lcdEnabled - rept NUM_COLORS - call TransferPalColorLCDDisabled - endr + REPT NUM_PAL_COLORS + call TransferPalColorLCDDisabled + ENDR jr .done .lcdEnabled - rept NUM_COLORS - call TransferPalColorLCDEnabled - endr + REPT NUM_PAL_COLORS + call TransferPalColorLCDEnabled + ENDR .done pop de ret @@ -887,7 +887,7 @@ BufferBGPPal:: ld de, wBGPPalsBuffer add hl, de ld de, wGBCPal - ld c, PAL_SIZE + ld c, PALETTE_SIZE .loop ld a, [de] ld [hli], a @@ -918,7 +918,7 @@ TransferBGPPals:: ldh [rBGPI], a ld de, rBGPD ld hl, wBGPPalsBuffer - ld c, 4 * PAL_SIZE + ld c, 4 * PALETTE_SIZE .loop ld a, [hli] ld [de], a @@ -939,14 +939,14 @@ TransferCurOBPData: ldh a, [rLCDC] and rLCDC_ENABLE_MASK jr nz, .lcdEnabled - rept NUM_COLORS - call TransferPalColorLCDDisabled - endr + REPT NUM_PAL_COLORS + call TransferPalColorLCDDisabled + ENDR jr .done .lcdEnabled - rept NUM_COLORS - call TransferPalColorLCDEnabled - endr + REPT NUM_PAL_COLORS + call TransferPalColorLCDEnabled + ENDR .done pop de ret diff --git a/engine/gfx/sprite_oam.asm b/engine/gfx/sprite_oam.asm index 01b2c412..b62d9d4b 100644 --- a/engine/gfx/sprite_oam.asm +++ b/engine/gfx/sprite_oam.asm @@ -153,7 +153,7 @@ PrepareOAMData:: cp c ret nc ld l, a - ld h, wOAMBuffer / $100 + ld h, HIGH(wOAMBuffer) ld a, c ld de, $4 ; entry size ld b, $a0 diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index b1b458ab..d4c3ae18 100755 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -1037,7 +1037,7 @@ ItemUseMedicine: push hl push de push bc - callfar Func_2fd6a + callfar RespawnOverworldPikachu pop bc pop de pop hl @@ -1542,7 +1542,7 @@ ItemUseMedicine: push af ld a, [wUsedItemOnWhichPokemon] ld [wWhichPokemon], a - callfar Func_2fd6a ; evolve pokemon, if appropriate + callfar RespawnOverworldPikachu ; evolve pokemon, if appropriate pop af ld [wWhichPokemon], a diff --git a/engine/items/super_rod.asm b/engine/items/super_rod.asm new file mode 100644 index 00000000..db82f5fb --- /dev/null +++ b/engine/items/super_rod.asm @@ -0,0 +1,41 @@ +ReadSuperRodData: + ld a, [wCurMap] + ld c, a + ld hl, SuperRodFishingSlots +.loop + ld a, [hli] + cp $ff + jr z, .notfound + cp c + jr z, .found + ld de, $8 + add hl, de + jr .loop +.found + call GenerateRandomFishingEncounter + ret +.notfound + ld de, $0 + ret + +GenerateRandomFishingEncounter: + call Random + cp $66 + jr c, .asm_f5ed6 + inc hl + inc hl + cp $b2 + jr c, .asm_f5ed6 + inc hl + inc hl + cp $e5 + jr c, .asm_f5ed6 + inc hl + inc hl +.asm_f5ed6 + ld e, [hl] + inc hl + ld d, [hl] + ret + +INCLUDE "data/wild/super_rod.asm" diff --git a/engine/menus/draw_badges.asm b/engine/menus/draw_badges.asm index 0bb433cc..5e00a34e 100644 --- a/engine/menus/draw_badges.asm +++ b/engine/menus/draw_badges.asm @@ -49,8 +49,7 @@ DrawBadges: hlcoord 2, 14 ld de, wTempObtainedBadgesBooleans + 4 -; call .DrawBadgeRow -; ret + ; fallthrough .DrawBadgeRow ; Draw 4 badges. diff --git a/engine/menus/start_sub_menus.asm b/engine/menus/start_sub_menus.asm index 84583a69..b9751e1e 100755 --- a/engine/menus/start_sub_menus.asm +++ b/engine/menus/start_sub_menus.asm @@ -324,10 +324,11 @@ StartMenu_Item:: call PrintText jr .exitMenu .notInCableClubRoom + ; store item bag pointer in wListPointer (for DisplayListMenuID) ld hl, wListPointer - ld [hl], wNumBagItems & $ff + ld [hl], LOW(wNumBagItems) inc hl - ld [hl], wNumBagItems / $100 ; store item bag pointer in wListPointer (for DisplayListMenuID) + ld [hl], HIGH(wNumBagItems) xor a ld [wPrintItemPrices], a ld a, ITEMLISTMENU diff --git a/engine/menus/unused_input.asm b/engine/menus/unused_input.asm new file mode 100644 index 00000000..ad5c36df --- /dev/null +++ b/engine/menus/unused_input.asm @@ -0,0 +1,129 @@ +HandleMenuInputDuplicate: ; unreferenced + xor a + ld [wPartyMenuAnimMonEnabled], a + +HandleMenuInputPokemonSelectionDuplicate: ; unreferenced + ldh a, [hDownArrowBlinkCount1] + push af + ldh a, [hDownArrowBlinkCount2] + push af ; save existing values on stack + xor a + ldh [hDownArrowBlinkCount1], a ; blinking down arrow timing value 1 + ld a, 6 + ldh [hDownArrowBlinkCount2], a ; blinking down arrow timing value 2 +.loop1 + xor a + ld [wAnimCounter], a ; counter for pokemon shaking animation + call PlaceMenuCursorDuplicate + call JoypadLowSensitivity + ldh a, [hJoy5] + and a ; was a key pressed? + jr nz, .keyPressed + pop af + ldh [hDownArrowBlinkCount2], a + pop af + ldh [hDownArrowBlinkCount1], a ; restore previous values + xor a + ld [wMenuWrappingEnabled], a ; disable menu wrapping + ret +.keyPressed + xor a + ld [wCheckFor180DegreeTurn], a + ldh a, [hJoy5] + ld b, a + bit 6, a ; pressed Up key? + jr z, .checkIfDownPressed +.upPressed + ld a, [wCurrentMenuItem] ; selected menu item + and a ; already at the top of the menu? + jr z, .checkOtherKeys +.notAtTop + dec a + ld [wCurrentMenuItem], a ; move selected menu item up one space + jr .checkOtherKeys +.checkIfDownPressed + bit 7, a + jr z, .checkOtherKeys +.downPressed + ld a, [wCurrentMenuItem] + inc a + ld c, a + ld a, [wMaxMenuItem] + cp c + jr c, .checkOtherKeys + ld a, c + ld [wCurrentMenuItem], a +.checkOtherKeys + ld a, [wMenuWatchedKeys] + and b ; does the menu care about any of the pressed keys? + jp z, .loop1 +.checkIfAButtonOrBButtonPressed + ldh a, [hJoy5] + and A_BUTTON | B_BUTTON + jr z, .skipPlayingSound +.AButtonOrBButtonPressed + ld a, SFX_PRESS_AB + call PlaySound ; play sound +.skipPlayingSound + pop af + ldh [hDownArrowBlinkCount2], a + pop af + ldh [hDownArrowBlinkCount1], a ; restore previous values + ldh a, [hJoy5] + ret + +PlaceMenuCursorDuplicate: + ld a, [wTopMenuItemY] + and a + jr z, .asm_f5ac0 + hlcoord 0, 0 + ld bc, SCREEN_WIDTH +.loop + add hl, bc + dec a + jr nz, .loop +.asm_f5ac0 + ld a, [wTopMenuItemX] + ld b, $0 + ld c, a + add hl, bc + push hl + ld a, [wLastMenuItem] + and a + jr z, .asm_f5ad5 + ld bc, $28 +.loop2 + add hl, bc + dec a + jr nz, .loop2 +.asm_f5ad5 + ld a, [hl] + cp "▶" + jr nz, .asm_f5ade + ld a, [wTileBehindCursor] + ld [hl], a +.asm_f5ade + pop hl + ld a, [wCurrentMenuItem] + and a + jr z, .asm_f5aec + ld bc, $28 +.loop3 + add hl, bc + dec a + jr nz, .loop3 +.asm_f5aec + ld a, [hl] + cp "▶" + jr z, .asm_f5af4 + ld [wTileBehindCursor], a +.asm_f5af4 + ld a, "▶" + ld [hl], a + ld a, l + ld [wMenuCursorLocation], a + ld a, h + ld [wMenuCursorLocation + 1], a + ld a, [wCurrentMenuItem] + ld [wLastMenuItem], a + ret diff --git a/engine/surfing_minigame.asm b/engine/minigame/surfing_pikachu.asm index 578e6b1e..6d319867 100755 --- a/engine/surfing_minigame.asm +++ b/engine/minigame/surfing_pikachu.asm @@ -1,4 +1,4 @@ -SurfingPikachuMinigame: +SurfingPikachuMinigame:: call SurfingPikachuMinigame_BlankPals call DelayFrame call DelayFrame @@ -190,33 +190,33 @@ SurfingPikachuMinigame_LoadGFXAndLayout: ld a, BANK(SurfingPikachu1Graphics2) call FarCopyData - ld a, SurfingPikachuSpawnStateDataPointer % $100 + ld a, LOW(SurfingPikachuSpawnStateDataPointer) ld [wAnimatedObjectSpawnStateDataPointer], a - ld a, SurfingPikachuSpawnStateDataPointer / $100 + ld a, HIGH(SurfingPikachuSpawnStateDataPointer) ld [wAnimatedObjectSpawnStateDataPointer + 1], a - ld a, SurfingPikachuObjectJumptable % $100 + ld a, LOW(SurfingPikachuObjectJumptable) ld [wAnimatedObjectJumptablePointer], a - ld a, SurfingPikachuObjectJumptable / $100 + ld a, HIGH(SurfingPikachuObjectJumptable) ld [wAnimatedObjectJumptablePointer + 1], a - ld a, SurfingPikachuOAMData % $100 + ld a, LOW(SurfingPikachuOAMData) ld [wAnimatedObjectOAMDataPointer], a - ld a, SurfingPikachuOAMData / $100 + ld a, HIGH(SurfingPikachuOAMData) ld [wAnimatedObjectOAMDataPointer + 1], a - ld a, SurfingPikachuFrames % $100 + ld a, LOW(SurfingPikachuFrames) ld [wAnimatedObjectFramesDataPointer], a - ld a, SurfingPikachuFrames / $100 + ld a, HIGH(SurfingPikachuFrames) ld [wAnimatedObjectFramesDataPointer + 1], a ld hl, vBGMap0 - ld bc, $800 + ld bc, $80 tiles ld a, $0 call FillMemory ld hl, $98c0 - ld bc, $180 + ld bc, $18 tiles ld a, $b call FillMemory @@ -1470,7 +1470,7 @@ SurfingMinigame_DrawResultsScreen: ret .BeachTilemap: -INCBIN "gfx/unknown_f8946.map" +INCBIN "gfx/surfing_pikachu/unknown_f8946.map" .BeachTilemapEnd: .PlaceTextbox: @@ -2337,21 +2337,21 @@ SurfingPikachuMinigameIntro: ld bc, $900 ld a, BANK(SurfingPikachu1Graphics3) call FarCopyData - ld a, SurfingPikachuSpawnStateDataPointer % $100 + ld a, LOW(SurfingPikachuSpawnStateDataPointer) ld [wAnimatedObjectSpawnStateDataPointer], a - ld a, SurfingPikachuSpawnStateDataPointer / $100 + ld a, HIGH(SurfingPikachuSpawnStateDataPointer) ld [wAnimatedObjectSpawnStateDataPointer + 1], a - ld a, SurfingPikachuObjectJumptable % $100 + ld a, LOW(SurfingPikachuObjectJumptable) ld [wAnimatedObjectJumptablePointer], a - ld a, SurfingPikachuObjectJumptable / $100 + ld a, HIGH(SurfingPikachuObjectJumptable) ld [wAnimatedObjectJumptablePointer + 1], a - ld a, SurfingPikachuOAMData % $100 + ld a, LOW(SurfingPikachuOAMData) ld [wAnimatedObjectOAMDataPointer], a - ld a, SurfingPikachuOAMData / $100 + ld a, HIGH(SurfingPikachuOAMData) ld [wAnimatedObjectOAMDataPointer + 1], a - ld a, SurfingPikachuFrames % $100 + ld a, LOW(SurfingPikachuFrames) ld [wAnimatedObjectFramesDataPointer], a - ld a, SurfingPikachuFrames / $100 + ld a, HIGH(SurfingPikachuFrames) ld [wAnimatedObjectFramesDataPointer + 1], a ld a, $c lb de, $74, $58 @@ -2455,10 +2455,10 @@ DrawSurfingPikachuMinigameIntroBackground: jr nz, .fill_row ret -Tilemap_f90bc: INCBIN "gfx/unknown_f90bc.map" -Tilemap_f91ac: INCBIN "gfx/unknown_f91ac.map" -Tilemap_f91bb: INCBIN "gfx/unknown_f91bb.map" -Tilemap_f91c8: INCBIN "gfx/unknown_f91c8.map" +Tilemap_f90bc: INCBIN "gfx/surfing_pikachu/unknown_f90bc.map" +Tilemap_f91ac: INCBIN "gfx/surfing_pikachu/unknown_f91ac.map" +Tilemap_f91bb: INCBIN "gfx/surfing_pikachu/unknown_f91bb.map" +Tilemap_f91c8: INCBIN "gfx/surfing_pikachu/unknown_f91c8.map" SurfingMinigame_UpdateLYOverrides: ld hl, wLYOverrides + $10 @@ -2767,7 +2767,8 @@ SurfingPikachuObjectJumptable: SurfingMinigameAnimatedObjectFn_nop: ret -INCLUDE "data/animated_objects_3e_1.asm" +INCLUDE "data/sprite_anims/surfing_pikachu_frames.asm" +INCLUDE "data/sprite_anims/surfing_pikachu_oam.asm" SurfingMinigame_LYOverridesInitialSineWave: ; a sine wave with amplitude 2 diff --git a/engine/yellow_intro.asm b/engine/movie/intro_yellow.asm index 324ba86d..673d207c 100755 --- a/engine/yellow_intro.asm +++ b/engine/movie/intro_yellow.asm @@ -323,7 +323,7 @@ YellowIntroScene6: call YellowIntro_BlankPalsDelay2AndDisableLCD ld c, $5 call UpdateMusicCTimes - ld a, rSCY - $ff00 + ld a, LOW(rSCY) ldh [hLCDCPointer], a call YellowIntro_Copy8BitSineWave ld hl, vBGMap0 @@ -456,9 +456,9 @@ YellowIntroScene10: jr nz, .fill_row ret -Unkn_f9b6e: INCBIN "gfx/unknown_f9b6e.map" -Unkn_f9be6: INCBIN "gfx/unknown_f9be6.map" -Unkn_f9bf2: INCBIN "gfx/unknown_f9bf2.map" +Unkn_f9b6e: INCBIN "gfx/intro/unknown_f9b6e.map" +Unkn_f9be6: INCBIN "gfx/intro/unknown_f9be6.map" +Unkn_f9bf2: INCBIN "gfx/intro/unknown_f9bf2.map" YellowIntroScene11: call YellowIntro_CheckFrameTimerDecrement @@ -473,7 +473,7 @@ YellowIntroScene11: sla a ld e, a ld d, $0 - ld hl, YellowIntroCloudGFX1 + ld hl, YellowIntroCloudGFX add hl, de ld a, l ldh [hVBlankCopySource], a @@ -492,8 +492,7 @@ YellowIntroScene11: call YellowIntro_NextScene ret -YellowIntroCloudGFX1: INCBIN "gfx/unknown_f9c2c.2bpp" -YellowIntroCloudGFX2: INCBIN "gfx/unknown_f9c6c.2bpp" ; indirectly referenced +YellowIntroCloudGFX: INCBIN "gfx/intro/clouds.2bpp" YellowIntroScene12: call YellowIntro_BlankPalsDelay2AndDisableLCD @@ -799,11 +798,11 @@ YellowIntro_Copy8BitSineWave: Request7TileTransferFromC810ToC710: ld a, $10 ldh [hVBlankCopySource], a - ld a, wLYOverridesBuffer / $100 + ld a, HIGH(wLYOverridesBuffer) ldh [hVBlankCopySource + 1], a ld a, $10 ldh [hVBlankCopyDest], a - ld a, wLYOverrides / $100 + ld a, HIGH(wLYOverrides) ldh [hVBlankCopyDest + 1], a ld a, $7 ldh [hVBlankCopySize], a @@ -833,13 +832,13 @@ InitYellowIntroGFXAndMusic: call DelayFrame xor a ldh [hAutoBGTransferEnabled], a - ld de, $6b5a - ld hl, $8000 - ld bc, $3eff + ld de, YellowIntroGraphics2 + ld hl, vChars0 + lb bc, BANK(YellowIntroGraphics2), (YellowIntroGraphics2End - YellowIntroGraphics2 - $10) / $10 call CopyVideoData - ld de, $635a - ld hl, $9000 - ld bc, $3e80 + ld de, YellowIntroGraphics1 + ld hl, vChars2 + lb bc, BANK(YellowIntroGraphics1), (YellowIntroGraphics1End - YellowIntroGraphics1) / $10 call CopyVideoData call ClearObjectAnimationBuffers call LoadYellowIntroObjectAnimationDataPointers @@ -857,21 +856,21 @@ InitYellowIntroGFXAndMusic: ret LoadYellowIntroObjectAnimationDataPointers: - ld a, YellowIntro_AnimatedObjectSpawnStateData % $100 + ld a, LOW(YellowIntro_AnimatedObjectSpawnStateData) ld [wAnimatedObjectSpawnStateDataPointer], a - ld a, YellowIntro_AnimatedObjectSpawnStateData / $100 + ld a, HIGH(YellowIntro_AnimatedObjectSpawnStateData) ld [wAnimatedObjectSpawnStateDataPointer + 1], a - ld a, YellowIntro_AnimatedObjectJumptable % $100 + ld a, LOW(YellowIntro_AnimatedObjectJumptable) ld [wAnimatedObjectJumptablePointer], a - ld a, YellowIntro_AnimatedObjectJumptable / $100 + ld a, HIGH(YellowIntro_AnimatedObjectJumptable) ld [wAnimatedObjectJumptablePointer + 1], a - ld a, YellowIntro_AnimatedObjectOAMData % $100 + ld a, LOW(YellowIntro_AnimatedObjectOAMData) ld [wAnimatedObjectOAMDataPointer], a - ld a, YellowIntro_AnimatedObjectOAMData / $100 + ld a, HIGH(YellowIntro_AnimatedObjectOAMData) ld [wAnimatedObjectOAMDataPointer + 1], a - ld a, YellowIntro_AnimatedObjectFramesData % $100 + ld a, LOW(YellowIntro_AnimatedObjectFramesData) ld [wAnimatedObjectFramesDataPointer], a - ld a, YellowIntro_AnimatedObjectFramesData / $100 + ld a, HIGH(YellowIntro_AnimatedObjectFramesData) ld [wAnimatedObjectFramesDataPointer + 1], a ret @@ -1079,3 +1078,8 @@ Func_fa08e: Unkn_fa0aa: sine_wave $100 + +INCLUDE "data/sprite_anims/intro_frames.asm" +INCLUDE "data/sprite_anims/intro_oam.asm" + +INCLUDE "gfx/yellow_intro.asm" diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 1f2723a3..0b421d89 100755 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -38,7 +38,7 @@ DisplayTitleScreen: call FarCopyData ld hl, NineTile ld de, vTitleLogo tile $6e - ld bc, $10 + ld bc, 1 tiles ld a, BANK(NineTile) call FarCopyData ld hl, GamefreakLogoGraphics diff --git a/engine/movie/title2.asm b/engine/movie/title_rb.asm index df630b53..df630b53 100755 --- a/engine/movie/title2.asm +++ b/engine/movie/title_rb.asm diff --git a/engine/movie/title_yellow.asm b/engine/movie/title_yellow.asm new file mode 100644 index 00000000..c70b87f9 --- /dev/null +++ b/engine/movie/title_yellow.asm @@ -0,0 +1,109 @@ +LoadYellowTitleScreenGFX: + ld hl, PokemonLogoGraphics + ld de, vChars2 + ld bc, PokemonLogoGraphicsEnd - PokemonLogoGraphics + ld a, BANK(PokemonLogoGraphics) + call FarCopyData + ld hl, PokemonLogoCornerGraphics + ld de, vChars1 tile $7d + ld bc, PokemonLogoCornerGraphicsEnd - PokemonLogoCornerGraphics + ld a, BANK(PokemonLogoCornerGraphics) + call FarCopyData + ld hl, TitlePikachuBGGraphics + ld de, vChars1 + ld bc, TitlePikachuBGGraphicsEnd - TitlePikachuBGGraphics + ld a, BANK(TitlePikachuBGGraphics) + call FarCopyData + ld hl, TitlePikachuOBGraphics + ld de, vChars1 tile $70 + ld bc, TitlePikachuOBGraphicsEnd - TitlePikachuOBGraphics + ld a, BANK(TitlePikachuOBGraphics) + call FarCopyData + ret + +TitleScreen_PlacePokemonLogo: + hlcoord 2, 1 + ld de, TitleScreenPokemonLogoTilemap + lb bc, 7, 16 + call Bank3D_CopyBox + ret + +TitleScreen_PlacePikaSpeechBubble: + hlcoord 6, 4 + ld de, TitleScreenPikaBubbleTilemap + lb bc, 4, 7 + call Bank3D_CopyBox + hlcoord 9, 8 + ld [hl], $64 + inc hl + ld [hl], $65 + ret + +TitleScreen_PlacePikachu: + hlcoord 4, 8 + ld de, TitleScreenPikachuTilemap + lb bc, 9, 12 + call Bank3D_CopyBox + hlcoord 16, 10 + ld [hl], $96 + hlcoord 16, 11 + ld [hl], $9d + hlcoord 16, 12 + ld [hl], $a7 + hlcoord 16, 13 + ld [hl], $b1 + ld hl, TitleScreenPikachuEyesOAMData + ld de, wOAMBuffer + ld bc, $20 + call CopyData + ret + +TitleScreenPikachuEyesOAMData: + db $60, $40, $f1, $22 + db $60, $48, $f0, $22 + db $68, $40, $f3, $22 + db $68, $48, $f2, $22 + db $60, $60, $f0, $02 + db $60, $68, $f1, $02 + db $68, $60, $f2, $02 + db $68, $68, $f3, $02 + +Bank3D_CopyBox: +; copy cxb (xy) screen area from de to hl +.row + push bc + push hl +.col + ld a, [de] + inc de + 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 + +TitleScreenPokemonLogoTilemap: ; 16x7 + INCBIN "gfx/title/pokemon_logo.tilemap" + +Pointer_f4669: ; unreferenced + db $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $5f + +TitleScreenPikaBubbleTilemap: ; 7x4 + INCBIN "gfx/title/pika_bubble.tilemap" + +TitleScreenPikachuTilemap: ; 12x9 + INCBIN "gfx/title/pikachu.tilemap" + +PokemonLogoGraphics: INCBIN "gfx/title/pokemon_logo.2bpp" +PokemonLogoGraphicsEnd: +PokemonLogoCornerGraphics: INCBIN "gfx/title/pokemon_logo_corner.2bpp" +PokemonLogoCornerGraphicsEnd: +TitlePikachuBGGraphics: INCBIN "gfx/title/pikachu_bg.2bpp" +TitlePikachuBGGraphicsEnd: +TitlePikachuOBGraphics: INCBIN "gfx/title/pikachu_ob.2bpp" +TitlePikachuOBGraphicsEnd: diff --git a/engine/overworld/healing_machine.asm b/engine/overworld/healing_machine.asm index e5fba7e1..84891353 100755 --- a/engine/overworld/healing_machine.asm +++ b/engine/overworld/healing_machine.asm @@ -34,7 +34,7 @@ AnimateHealingMachine: dec b jr nz, .partyLoop ld a, [wAudioROMBank] - cp BANK(AudioEngine3) + cp BANK("Audio Engine 3") ld [wAudioSavedROMBank], a jr nz, .next call StopAllMusic diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/missable_objects.asm index 358a9b9f..bcaa731b 100644 --- a/engine/overworld/missable_objects.asm +++ b/engine/overworld/missable_objects.asm @@ -15,17 +15,13 @@ MarkTownVisitedAndLoadMissableObjects:: add hl, bc ld a, [hli] ; load missable objects pointer in hl ld h, [hl] - ; fall through - -; LoadMissableObjects: -; seems to not exist in yellow (predef replaced with something near TryPushingBoulder) ld l, a push hl ld a, l - sub MissableObjects & $ff ; calculate difference between out pointer and the base pointer + sub LOW(MissableObjects) ; calculate difference between out pointer and the base pointer ld l, a ld a, h - sbc MissableObjects / $100 + sbc HIGH(MissableObjects) ld h, a ld a, h ldh [hDividend], a diff --git a/engine/overworld/specific_script_flags.asm b/engine/overworld/specific_script_flags.asm new file mode 100644 index 00000000..d6f333ac --- /dev/null +++ b/engine/overworld/specific_script_flags.asm @@ -0,0 +1,25 @@ +SetMapSpecificScriptFlagsOnMapReload:: + ld a, [wCurMap] + cp VERMILION_GYM + jr z, .vermilion_gym + ld c, a + ld hl, Bit5Maps +.search_loop + ld a, [hli] + cp c + jr z, .in_list + cp a, $ff + jr nz, .search_loop + ret + +.vermilion_gym + ld hl, wCurrentMapScriptFlags + set 6, [hl] + ret + +.in_list + ld hl, wCurrentMapScriptFlags + set 5, [hl] + ret + +INCLUDE "data/maps/bit_5_maps.asm" diff --git a/engine/overworld/sprite_collisions.asm b/engine/overworld/sprite_collisions.asm index db81977b..b29dc108 100644 --- a/engine/overworld/sprite_collisions.asm +++ b/engine/overworld/sprite_collisions.asm @@ -1,5 +1,5 @@ _UpdateSprites:: - ld h, wSpriteStateData1 / $100 + ld h, HIGH(wSpriteStateData1) inc h ld a, SPRITESTATEDATA2_IMAGEBASEOFFSET .spriteLoop diff --git a/engine/overworld/unused_load_missable_object_data.asm b/engine/overworld/unused_load_missable_object_data.asm new file mode 100644 index 00000000..ce0c00d1 --- /dev/null +++ b/engine/overworld/unused_load_missable_object_data.asm @@ -0,0 +1,40 @@ +Func_f0a54: ; unreferenced + ret + +LoadMissableObjectData:: +; farcalled by an unreferenced function + ld hl, .MissableObjectsMaps +.loop + ld a, [hli] + cp -1 + ret z + ld b, a + ld a, [wCurMap] + cp b + jr z, .found + inc hl + inc hl + inc hl + jr .loop + +.found + ld a, [hli] + ld c, a + ld b, 0 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wMissableObjectList + call CopyData + ret + +.MissableObjectsMaps: + dbbw BLUES_HOUSE, .BluesHouseEnd - .BluesHouse, .BluesHouse + db -1 ; end + +.BluesHouse: + db 1, HS_DAISY_SITTING_COPY + db 2, HS_DAISY_WALKING_COPY + db 3, HS_TOWN_MAP_COPY + db -1 ; end +.BluesHouseEnd: diff --git a/engine/pikachu_emotions.asm b/engine/pikachu/pikachu_emotions.asm index 55262493..1378d383 100755 --- a/engine/pikachu_emotions.asm +++ b/engine/pikachu/pikachu_emotions.asm @@ -10,9 +10,9 @@ IsPlayerTalkingToPikachu:: ldh [hSpriteIndexOrTextID], a ld [wd436], a ret - + InitializePikachuTextID:: - ld a, TEXT_PIKACHU_ANIM ; display + ld a, TEXT_PIKACHU_ANIM ; display ldh [hSpriteIndexOrTextID], a xor a ld [wPlayerMovingDirection], a @@ -49,7 +49,7 @@ DoStarterPikachuEmotions: .done ret - + StarterPikachuEmotionsJumptable: dw StarterPikachuEmotionCommand_nop ; 0 dw StarterPikachuEmotionCommand_text ; 1 @@ -62,7 +62,7 @@ StarterPikachuEmotionsJumptable: dw StarterPikachuEmotionCommand_nop2 ; 8 dw StarterPikachuEmotionCommand_9 ; 9 dw StarterPikachuEmotionCommand_nop3 ; a - + StarterPikachuEmotionCommand_nop: StarterPikachuEmotionCommand_nop3: ret @@ -78,7 +78,7 @@ StarterPikachuEmotionCommand_text: call PrintText pop de ret - + StarterPikachuEmotionCommand_pcm: ld a, [de] inc de @@ -94,7 +94,7 @@ PlayPikachuSoundClip_: ret z callfar PlayPikachuSoundClip ret - + StarterPikachuEmotionCommand_emote: ld a, [wUpdateSpritesEnabled] push af @@ -108,14 +108,14 @@ StarterPikachuEmotionCommand_emote: pop af ld [wUpdateSpritesEnabled], a ret - + ShowPikachuEmoteBubble: ld [wWhichEmotionBubble], a ld a, $f ; Pikachu ld [wEmotionBubbleSpriteIndex], a predef EmotionBubble ret - + StarterPikachuEmotionCommand_movement: ld a, [de] inc de @@ -128,7 +128,7 @@ StarterPikachuEmotionCommand_movement: call ApplyPikachuMovementData_ pop de ret - + StarterPikachuEmotionCommand_delay: ld a, [de] inc de @@ -137,7 +137,7 @@ StarterPikachuEmotionCommand_delay: call DelayFrames pop de ret - + StarterPikachuEmotionCommand_subcmd: ld a, [de] inc de @@ -162,10 +162,10 @@ StarterPikachuEmotionCommand_subcmd: dw PikachuPewterPokecenterCheck dw PikachuFanClubCheck dw PikachuBillsHouseCheck - + StarterPikachuEmotionCommand_nop2: ret - + StarterPikachuEmotionCommand_9: push de call StarterPikachuEmotionCommand_turnawayfromplayer @@ -178,12 +178,12 @@ StarterPikachuEmotionCommand_turnawayfromplayer: xor $4 ld [wSpritePikachuStateData1FacingDirection], a ret - + DeletedFunction_fcffb: ; Inexplicably empty. - rept 5 +REPT 5 nop - endr +ENDR ret PlaySpecificPikachuEmotion: @@ -200,12 +200,13 @@ load_expression: ld hl, PikachuEmotionTable call DoStarterPikachuEmotions ret - -PikachuEmotionTable: + pikaemotion_def: MACRO -\1_id: dw \1 - endm +\1_id: + dw \1 +ENDM +PikachuEmotionTable: pikaemotion_def PikachuEmotion0 pikaemotion_def PikachuEmotion1 pikaemotion_def PikachuEmotion2 @@ -240,10 +241,10 @@ pikaemotion_def: MACRO pikaemotion_def PikachuEmotion31 pikaemotion_def PikachuEmotion32 pikaemotion_def PikachuEmotion33 - + PikachuEmotion33: db $ff - + MapSpecificPikachuExpression: ld a, [wCurMap] cp POKEMON_FAN_CLUB @@ -305,14 +306,14 @@ MapSpecificPikachuExpression: .play_emotion scf ret - + .Emotions: dpikaemotion PikachuEmotion18 dpikaemotion PikachuEmotion21 dpikaemotion PikachuEmotion23 dpikaemotion PikachuEmotion24 dpikaemotion PikachuEmotion25 - + IsPlayerPikachuAsleepInParty: xor a ld [wWhichPokemon], a @@ -353,8 +354,8 @@ IsPlayerPikachuAsleepInParty: .done and a ret - -INCLUDE "data/pikachu_emotions.asm" + +INCLUDE "data/pikachu/pikachu_emotions.asm" PikachuWalksToNurseJoy: ld a, $40 diff --git a/engine/pikachu_follow.asm b/engine/pikachu/pikachu_follow.asm index fd2fbc47..9575c341 100755 --- a/engine/pikachu_follow.asm +++ b/engine/pikachu/pikachu_follow.asm @@ -642,10 +642,10 @@ asm_fc87f: ld a, [hl] dec a add a - add Pointer_fc8d6 % $100 + add LOW(Pointer_fc8d6) ld l, a - ld a, Pointer_fc8d6 / $100 - adc $0 + ld a, HIGH(Pointer_fc8d6) + adc 0 ld h, a ld a, [hli] ld [wd432], a @@ -1474,7 +1474,7 @@ AreThereAtLeastTwoStepsInPikachuFollowCommandBuffer: ret WillPikachuSpawnOnTheScreen: - ld h, wSpriteStateData2 / $100 + ld h, HIGH(wSpriteStateData2) ldh a, [hCurrentSpriteOffset] ; If we're here, this can only be $f0 add wSpritePikachuStateData2MapY - wSpritePikachuStateData2 ld l, a @@ -1515,7 +1515,7 @@ WillPikachuSpawnOnTheScreen: cp d jr c, .on_screen .not_on_screen - ld h, wSpriteStateData1 / $100 + ld h, HIGH(wSpriteStateData1) ldh a, [hCurrentSpriteOffset] add wSpritePikachuStateData1ImageIndex - wSpritePikachuStateData1 ld l, a @@ -1524,7 +1524,7 @@ WillPikachuSpawnOnTheScreen: jr .return .on_screen - ld h, wSpriteStateData2 / $100 + ld h, HIGH(wSpriteStateData2) ldh a, [hCurrentSpriteOffset] add wSpritePikachuStateData2GrassPriority - wSpritePikachuStateData2 ld l, a @@ -1540,7 +1540,7 @@ WillPikachuSpawnOnTheScreen: ret .GetNPCCurrentTile: - ld h, wSpriteStateData1 / $100 + ld h, HIGH(wSpriteStateData1) ldh a, [hCurrentSpriteOffset] add wSpritePikachuStateData1YPixels - wSpritePikachuStateData1 ld l, a @@ -1560,9 +1560,9 @@ WillPikachuSpawnOnTheScreen: ld d, 0 ld e, a ld hl, wTileMap - rept 5 +REPT 5 add hl, bc - endr +ENDR add hl, de ret diff --git a/engine/pikachu_movement.asm b/engine/pikachu/pikachu_movement.asm index 2d87e947..6b912e61 100755 --- a/engine/pikachu_movement.asm +++ b/engine/pikachu/pikachu_movement.asm @@ -237,29 +237,29 @@ PikachuMovementDatabase: PikaMovementFunc1Jumptable: dw PikaMovementFunc1_EndCommand_ ; 00 - dw PikaMovementFunc1_LoadPikachuCurrentPosition ; 01 - dw PikaMovementFunc1_DelayFrames ; 02 - dw PikaMovementFunc1_WalkInCurrentFacingDirection ; 03 - dw PikaMovementFunc1_WalkInOppositeFacingDirection ; 04 - dw PikaMovementFunc1_StepTurningCounterclockwise ; 05 - dw PikaMovementFunc1_StepTurningClockwise ; 06 - dw PikaMovementFunc1_StepForwardLeft ; 07 - dw PikaMovementFunc1_StepForwardRight ; 08 - dw PikaMovementFunc1_StepBackwardLeft ; 09 - dw PikaMovementFunc1_StepBackwardRight ; 0a - dw PikaMovementFunc1_MoveDown ; 0b - dw PikaMovementFunc1_MoveUp ; 0c - dw PikaMovementFunc1_MoveLeft ; 0d - dw PikaMovementFunc1_MoveRight ; 0e - dw PikaMovementFunc1_MoveDownLeft ; 0f - dw PikaMovementFunc1_MoveDownRight ; 10 - dw PikaMovementFunc1_MoveUpLeft ; 11 - dw PikaMovementFunc1_MoveUpRight ; 12 - dw PikaMovementFunc1_LookDown ; 13 - dw PikaMovementFunc1_LookUp ; 14 - dw PikaMovementFunc1_LookLeft ; 15 - dw PikaMovementFunc1_LookRight ; 16 - dw PikaMovementFunc1_EndCommand_ ; 17 + dw PikaMovementFunc1_LoadPikachuCurrentPosition ; 01 + dw PikaMovementFunc1_DelayFrames ; 02 + dw PikaMovementFunc1_WalkInCurrentFacingDirection ; 03 + dw PikaMovementFunc1_WalkInOppositeFacingDirection ; 04 + dw PikaMovementFunc1_StepTurningCounterclockwise ; 05 + dw PikaMovementFunc1_StepTurningClockwise ; 06 + dw PikaMovementFunc1_StepForwardLeft ; 07 + dw PikaMovementFunc1_StepForwardRight ; 08 + dw PikaMovementFunc1_StepBackwardLeft ; 09 + dw PikaMovementFunc1_StepBackwardRight ; 0a + dw PikaMovementFunc1_MoveDown ; 0b + dw PikaMovementFunc1_MoveUp ; 0c + dw PikaMovementFunc1_MoveLeft ; 0d + dw PikaMovementFunc1_MoveRight ; 0e + dw PikaMovementFunc1_MoveDownLeft ; 0f + dw PikaMovementFunc1_MoveDownRight ; 10 + dw PikaMovementFunc1_MoveUpLeft ; 11 + dw PikaMovementFunc1_MoveUpRight ; 12 + dw PikaMovementFunc1_LookDown ; 13 + dw PikaMovementFunc1_LookUp ; 14 + dw PikaMovementFunc1_LookLeft ; 15 + dw PikaMovementFunc1_LookRight ; 16 + dw PikaMovementFunc1_EndCommand_ ; 17 PikaMovementFunc1_EndCommand: ld a, [wPikachuMovementFlags] @@ -926,8 +926,8 @@ LedgeHoppingShadowGFX_3FEnd: LoadPikachuBallIconIntoVRAM: ld hl, vNPCSprites2 + $7e * $10 - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 1 + ld de, OverworldPikachuBallGFX + lb bc, BANK(OverworldPikachuBallGFX), 1 jp CopyVideoDataDoubleAlternate Func_fd851: @@ -936,8 +936,8 @@ Func_fd851: .loop push af push hl - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 4 + ld de, OverworldPikachuBallGFX + lb bc, BANK(OverworldPikachuBallGFX), 4 call CopyVideoDataAlternate pop hl ld de, 4 * $10 @@ -947,8 +947,8 @@ Func_fd851: jr nz, .loop ret -GFX_fd86b: -INCBIN "gfx/unknown_fd86b.2bpp" +OverworldPikachuBallGFX: +INCBIN "gfx/overworld/pikachu_ball.2bpp" LoadPikachuSpriteIntoVRAM: ld de, PikachuSprite diff --git a/engine/pikachu_pcm.asm b/engine/pikachu/pikachu_pcm.asm index bf1aa57f..bf1aa57f 100755 --- a/engine/pikachu_pcm.asm +++ b/engine/pikachu/pikachu_pcm.asm diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu/pikachu_pic_animation.asm index 7829c048..33a3e504 100755 --- a/engine/pikachu_pic_animation.asm +++ b/engine/pikachu/pikachu_pic_animation.asm @@ -163,11 +163,12 @@ LoadCurrentPikaPicAnimScriptPointer: call UpdatePikaPicAnimPointer ret -PikaPicAnimPointers: -pikapic_def: macro -\1_id: dw \1 -endm +pikapic_def: MACRO +\1_id: + dw \1 +ENDM +PikaPicAnimPointers: pikapic_def PikaPicAnimScript0 ; 00 pikapic_def PikaPicAnimScript1 ; 01 pikapic_def PikaPicAnimScript2 ; 02 @@ -406,7 +407,7 @@ LoadPikaPicAnimObjectData: .not_done ret -INCLUDE "data/pikachu_pic_objects.asm" +INCLUDE "data/pikachu/pikachu_pic_objects.asm" LoadCurPikaPicObjectTilemap: and a @@ -473,7 +474,7 @@ LoadCurPikaPicObjectTilemap: pop bc ret -INCLUDE "data/pikachu_pic_tilemaps.asm" +INCLUDE "data/pikachu/pikachu_pic_tilemaps.asm" LoadPikaPicAnimGFXHeader: push hl @@ -848,4 +849,7 @@ PikaPicAnimCommand_thunderbolt: call DelayFrames ret -INCLUDE "data/pikachu_pic_animation.asm" +INCLUDE "data/pikachu/pikachu_pic_animation.asm" + +Func_fe66e: + ret diff --git a/engine/pikachu_status.asm b/engine/pikachu/pikachu_status.asm index c73d3b3f..c73d3b3f 100755 --- a/engine/pikachu_status.asm +++ b/engine/pikachu/pikachu_status.asm diff --git a/engine/pikachu/respawn_overworld_pikachu.asm b/engine/pikachu/respawn_overworld_pikachu.asm new file mode 100644 index 00000000..4b610085 --- /dev/null +++ b/engine/pikachu/respawn_overworld_pikachu.asm @@ -0,0 +1,6 @@ +RespawnOverworldPikachu: + callfar IsThisPartymonStarterPikachu_Party + ret nc + ld a, $3 + ld [wPikachuSpawnState], a + ret diff --git a/engine/printer.asm b/engine/printer/printer.asm index f0b681af..18bb18a6 100644 --- a/engine/printer.asm +++ b/engine/printer/printer.asm @@ -1,16 +1,3 @@ - const_def - const PRINTER_STATUS_BLANK - const PRINTER_STATUS_CHECKING_LINK - const PRINTER_STATUS_TRANSMITTING - const PRINTER_STATUS_PRINTING - const PRINTER_ERROR_1 - const PRINTER_ERROR_2 - const PRINTER_ERROR_3 - const PRINTER_ERROR_4 - const PRINTER_ERROR_WRONG_DEVICE - -INCLUDE "engine/printer/serial.asm" - PrintPokedexEntry: ld a, [wUpdateSpritesEnabled] push af @@ -128,7 +115,7 @@ Printer_PrepareDexEntryForPrinting: callfar Pokedex_PrepareDexEntryForPrinting ret -PrintSurfingMinigameHighScore: +PrintSurfingMinigameHighScore:: xor a ldh [hCanceledPrinting], a call Printer_PlayPrinterMusic @@ -641,7 +628,7 @@ GBPrinter_UpdateStatusMessage: db "This is not the" next "Game Boy Printer!@" -Printer_PrepareSurfingMinigameHighScoreTileMap: +Printer_PrepareSurfingMinigameHighScoreTileMap:: call GBPalWhiteOutWithDelay3 call ClearScreen ld de, SurfingPikachu2Graphics @@ -788,7 +775,7 @@ CopySurfingMinigameScore: dec de ret -SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp" +SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu/surfing_pikachu_2.2bpp" SurfingPikachu2GraphicsEnd: PrintPCBox_DrawPage1: diff --git a/engine/unknown_ea3ea.asm b/engine/printer/printer2.asm index c10f1555..180f044c 100755 --- a/engine/unknown_ea3ea.asm +++ b/engine/printer/printer2.asm @@ -177,11 +177,11 @@ Printer_GetMonStats: db "--------------@" GFX_ea563: -INCBIN "gfx/stats_screen_hp.1bpp" +INCBIN "gfx/printer/hp.1bpp" GFX_ea563End: GFX_ea56b: -INCBIN "gfx/stats_screen_lv.1bpp" +INCBIN "gfx/printer/lv.1bpp" GFX_ea56bEnd: PrinterDebug_LoadGFX: @@ -208,7 +208,7 @@ PrinterDebug_LoadGFX: ret GFX_ea597: -INCBIN "gfx/zero_one_ea597.2bpp" +INCBIN "gfx/printer/01.2bpp" GFX_ea597End: PrinterDebug_ConvertStatusFlagsToTiles: diff --git a/engine/printer/serial.asm b/engine/printer/serial.asm index 97f655bb..fd4dd056 100755 --- a/engine/printer/serial.asm +++ b/engine/printer/serial.asm @@ -1,3 +1,14 @@ + const_def + const PRINTER_STATUS_BLANK + const PRINTER_STATUS_CHECKING_LINK + const PRINTER_STATUS_TRANSMITTING + const PRINTER_STATUS_PRINTING + const PRINTER_ERROR_1 + const PRINTER_ERROR_2 + const PRINTER_ERROR_3 + const PRINTER_ERROR_4 + const PRINTER_ERROR_WRONG_DEVICE + StartTransmission_Send9Rows: ld a, 9 Printer_StartTransmission: @@ -104,9 +115,9 @@ Printer_StartTransmittingTilemap: ld hl, PrinterDataPacket3 call CopyPrinterDataHeader call Printer_Convert2RowsTo2bpp - ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) % $100 + ld a, LOW(wPrinterSendDataSource1End - wPrinterSendDataSource1) ld [wPrinterDataSize], a - ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) / $100 + ld a, HIGH(wPrinterSendDataSource1End - wPrinterSendDataSource1) ld [wPrinterDataSize + 1], a call ComputePrinterChecksum call Printer_Next |