diff options
author | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
commit | 794410352fd92ccf06974763e4b3be0b807641ab (patch) | |
tree | 05f5dd861966762db9556082229cee82e8b5eed9 /engine/flypoints.asm | |
parent | 9c5473e965520f672640daf4ee76622640e0de15 (diff) | |
parent | 4bcd71e3227181baa536357af3d87a8d02af3890 (diff) |
Merge pull request #328 from PikalaxALT/master
Split out most of main.asm
Diffstat (limited to 'engine/flypoints.asm')
-rwxr-xr-x | engine/flypoints.asm | 916 |
1 files changed, 0 insertions, 916 deletions
diff --git a/engine/flypoints.asm b/engine/flypoints.asm deleted file mode 100755 index 7f6d384aa..000000000 --- a/engine/flypoints.asm +++ /dev/null @@ -1,916 +0,0 @@ -_FlyMap: ; 91af3 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 - xor a - ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 - ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 - call Request1bpp - call FlyMap - call Function91c8f - ld b, $2 - call GetSGBLayout - call SetPalettes -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .pressedB - ld a, [hl] - and A_BUTTON - jr nz, .pressedA - call FlyMapScroll - call GetMapCursorCoordinates - callba Function8cf69 - call DelayFrame - jr .loop - -.pressedB - ld a, -1 - jr .exit - -.pressedA - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld a, [hl] - -.exit - ld [wd002], a - pop af - ld [hInMenu], a - call ClearBGPalettes - ld a, $90 - ld [hWY], a - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, [wd002] - ld e, a - ret -; 91b73 - -FlyMapScroll: ; 91b73 - ld a, [StartFlypoint] - ld e, a - ld a, [EndFlypoint] - ld d, a - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .ScrollNext - ld a, [hl] - and D_DOWN - jr nz, .ScrollPrev - ret - -.ScrollNext - ld hl, wd002 - ld a, [hl] - cp d - jr nz, .NotAtEndYet - ld a, e - dec a - ld [hl], a - -.NotAtEndYet - inc [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollNext - jr .Finally - -.ScrollPrev - ld hl, wd002 - ld a, [hl] - cp e - jr nz, .NotAtStartYet - ld a, d - inc a - ld [hl], a - -.NotAtStartYet - dec [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollPrev - -.Finally - call TownMapBubble - call WaitBGMap - xor a - ld [hBGMapMode], a - ret -; 91bb5 - -TownMapBubble: ; 91bb5 -; Draw the bubble containing the location text in the town map HUD - -; Top-left corner - hlcoord 1, 0 - ld a, $30 - ld [hli], a - -; Top row - ld bc, 16 - ld a, " " - call ByteFill - -; Top-right corner - ld a, $31 - ld [hl], a - hlcoord 1, 1 - - -; Middle row - ld bc, 18 - ld a, " " - call ByteFill - - -; Bottom-left corner - hlcoord 1, 2 - ld a, $32 - ld [hli], a - -; Bottom row - ld bc, 16 - ld a, " " - call ByteFill - -; Bottom-right corner - ld a, $33 - ld [hl], a - - -; Print "Where?" - hlcoord 2, 0 - ld de, .Where - call PlaceString - -; Print the name of the default flypoint - call .Name - -; Up/down arrows - hlcoord 18, 1 - ld [hl], $34 - ret - -.Where - db "Where?@" - -.Name -; We need the map location of the default flypoint - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl ; two bytes per flypoint - ld de, Flypoints - add hl, de - ld e, [hl] - - callba GetLandmarkName - - hlcoord 2, 1 - ld de, StringBuffer1 - call PlaceString - ret -; 91c17 - -GetMapCursorCoordinates: ; 91c17 - ld a, [wd002] - ld l, a - ld h, $0 - add hl, hl - ld de, Flypoints - add hl, de - ld e, [hl] - callba GetLandmarkCoords - ld a, [wd003] - ld c, a - ld a, [wd004] - ld b, a - ld hl, $4 - add hl, bc - ld [hl], e - ld hl, $5 - add hl, bc - ld [hl], d - ret -; 91c3c - -CheckIfVisitedFlypoint: ; 91c3c -; Check if the flypoint loaded in [hl] has been visited yet. - push bc - push de - push hl - ld l, [hl] - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld c, [hl] - call HasVisitedSpawn - pop hl - pop de - pop bc - and a - ret -; 91c50 - -HasVisitedSpawn: ; 91c50 -; Check if spawn point c has been visited. - ld hl, VisitedSpawns - ld b, CHECK_FLAG - ld d, 0 - predef FlagPredef - ld a, c - ret -; 91c5e - -Flypoints: ; 91c5e -; landmark, spawn point - - const_def - -flypoint: MACRO -; \1\@FLY EQUS "FLY_\1" -; \1\@SPAWN EQUS "SPAWN_\1" - ; const \1\@FLY - ; db \2, \1\@SPAWN - const FLY_\1 - db \2, SPAWN_\1 -ENDM - -; Johto - flypoint NEW_BARK, NEW_BARK_TOWN - flypoint CHERRYGROVE, CHERRYGROVE_CITY - flypoint VIOLET, VIOLET_CITY - flypoint AZALEA, AZALEA_TOWN - flypoint GOLDENROD, GOLDENROD_CITY - flypoint ECRUTEAK, ECRUTEAK_CITY - flypoint OLIVINE, OLIVINE_CITY - flypoint CIANWOOD, CIANWOOD_CITY - flypoint MAHOGANY, MAHOGANY_TOWN - flypoint LAKE, LAKE_OF_RAGE - flypoint BLACKTHORN, BLACKTHORN_CITY - flypoint MT_SILVER, SILVER_CAVE - -; Kanto -KANTO_FLYPOINT EQU const_value - - flypoint PALLET, PALLET_TOWN - flypoint VIRIDIAN, VIRIDIAN_CITY - flypoint PEWTER, PEWTER_CITY - flypoint CERULEAN, CERULEAN_CITY - flypoint VERMILION, VERMILION_CITY - flypoint ROCK_TUNNEL, ROCK_TUNNEL - flypoint LAVENDER, LAVENDER_TOWN - flypoint CELADON, CELADON_CITY - flypoint SAFFRON, SAFFRON_CITY - flypoint FUCHSIA, FUCHSIA_CITY - flypoint CINNABAR, CINNABAR_ISLAND - flypoint INDIGO, INDIGO_PLATEAU - - db -1 -; 91c8f - -Function91c8f: ; 91c8f - ret -; 91c90 - -FlyMap: ; 91c90 - - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - -; If we're not in a valid location, i.e. Pokecenter floor 2F, -; the backup map information is used - - cp SPECIAL_MAP - jr nz, .CheckRegion - - ld a, [BackupMapGroup] - ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - -.CheckRegion -; The first 46 locations are part of Johto. The rest are in Kanto - cp KANTO_LANDMARK - jr nc, .KantoFlyMap - -.JohtoFlyMap -; Note that .NoKanto should be modified in tandem with this branch - - push af - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - -; Fill out the map - call FillJohtoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.KantoFlyMap - -; The event that there are no flypoints enabled in a map is not -; accounted for. As a result, if you attempt to select a flypoint -; when there are none enabled, the game will crash. Additionally, -; the flypoint selection has a default starting point that -; can be flown to even if none are enabled - -; To prevent both of these things from happening when the player -; enters Kanto, fly access is restricted until Indigo Plateau is -; visited and its flypoint enabled - - push af - ld c, SPAWN_INDIGO - call HasVisitedSpawn - and a - jr z, .NoKanto - -; Kanto's map is only loaded if we've visited Indigo Plateau - -; Flypoints begin at Pallet Town... - ld a, FLY_PALLET - ld [StartFlypoint], a -; ...and end at Indigo Plateau - ld a, FLY_INDIGO - ld [EndFlypoint], a - -; Because Indigo Plateau is the first flypoint the player -; visits, it's made the default flypoint - ld [wd002], a - -; Fill out the map - call FillKantoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.NoKanto -; If Indigo Plateau hasn't been visited, we use Johto's map instead - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - - call FillJohtoMap - - pop af - -.MapHud - call TownMapBubble - call TownMapPals - - ld hl, VBGMap0 ; BG Map 0 - call TownMapBGUpdate - - call TownMapMon - ld a, c - ld [wd003], a - ld a, b - ld [wd004], a - ret -; 91d11 - -Function91d11: ; 91d11 - ld a, [wd002] - push af - ld a, [wd003] - push af - ld a, e - ld [wd002], a - call ClearSprites - xor a - ld [hBGMapMode], a - ld a, $1 - ld [hInMenu], a - ld de, GFX_922d1 - ld hl, VTiles0 tile $7f - lb bc, BANK(GFX_922d1), 1 - call Request2bpp ; actually 1bpp - call Function91ed0 - ld hl, VTiles0 tile $78 - ld c, $4 - call Request2bpp - call Function91ff2 - call FillKantoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap1 - call TownMapBGUpdate - call FillJohtoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap0 - call TownMapBGUpdate - ld b, $2 - call GetSGBLayout - call SetPalettes - xor a - ld [hBGMapMode], a - xor a - call Function91e1e -.asm_91d6e - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and A_BUTTON | B_BUTTON - jr nz, .asm_91d8f - ld a, [hJoypadDown] - and SELECT - jr nz, .asm_91d87 - call Function91d9b - call Function91dcd - jr .asm_91d8a - -.asm_91d87 - call Function91e5a - -.asm_91d8a - call DelayFrame - jr .asm_91d6e - -.asm_91d8f - call ClearSprites - pop af - ld [wd003], a - pop af - ld [wd002], a - ret -; 91d9b - -Function91d9b: ; 91d9b - ld a, [hl] - and $20 - jr nz, .asm_91da6 - ld a, [hl] - and $10 - jr nz, .asm_91db7 - ret - -.asm_91da6 - ld a, [hWY] - cp $90 - ret z - call ClearSprites - ld a, $90 - ld [hWY], a - xor a - call Function91e1e - ret - -.asm_91db7 - ld a, [StatusFlags] - bit 6, a - ret z - ld a, [hWY] - and a - ret z - call ClearSprites - xor a - ld [hWY], a - ld a, $1 - call Function91e1e - ret -; 91dcd - -Function91dcd: ; 91dcd - ld a, [hVBlankCounter] - ld e, a - and $f - ret nz - ld a, e - and $10 - jr nz, .asm_91ddc - call ClearSprites - ret - -.asm_91ddc - hlcoord 0, 0 - ld de, Sprites - ld bc, $a0 - call CopyBytes - ret -; 91de9 - -Function91de9: ; 91de9 - hlcoord 0, 0 - ld bc, SCREEN_WIDTH - ld a, $7f - call ByteFill - hlcoord 0, 1 - ld a, $6 - ld [hli], a - ld bc, SCREEN_HEIGHT - ld a, $7 - call ByteFill - ld [hl], $17 - call GetPokemonName - hlcoord 2, 0 - call PlaceString - ld h, b - ld l, c - ld de, String_91e16 - call PlaceString - ret -; 91e16 - -String_91e16: - db "'S NEST@" -; 91e1e - -Function91e1e: ; 91e1e - ld [wd003], a - ld e, a - callba Function2a01f - decoord 0, 0 - ld hl, Sprites -.asm_91e2e - ld a, [de] - and a - jr z, .asm_91e4d - push de - ld e, a - push hl - callba GetLandmarkCoords - pop hl - ld a, d - sub $4 - ld [hli], a - ld a, e - sub $4 - ld [hli], a - ld a, $7f - ld [hli], a - xor a - ld [hli], a - pop de - inc de - jr .asm_91e2e - -.asm_91e4d - ld hl, Sprites - decoord 0, 0 - ld bc, $a0 - call CopyBytes - ret -; 91e5a - -Function91e5a: ; 91e5a - call Function91ea9 - ret c - - ld a, [wd002] - ld e, a - callba GetLandmarkCoords - ld c, e - ld b, d - ld de, Unknown_91e9c - ld hl, Sprites -.asm_91e70 - ld a, [de] - cp $80 - jr z, .asm_91e91 - - add b - ld [hli], a - inc de - - ld a, [de] - add c - ld [hli], a - inc de - - ld a, [de] - add $78 - ld [hli], a - inc de - - push bc - ld c, 0 - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91e8c - inc c -.asm_91e8c - ld a, c - ld [hli], a - pop bc - - jr .asm_91e70 - -.asm_91e91 - ld hl, Sprites + $10 - ld bc, SpritesEnd - (Sprites + $10) - xor a - call ByteFill - ret -; 91e9c - -Unknown_91e9c: ; 91e9c - db -8, -8, 0 - db -8, 0, 1 - db 0, -8, 2 - db 0, 0, 3 - db $80 ; terminator -; 91ea9 - -Function91ea9: ; 91ea9 - ld a, [wd002] - cp FAST_SHIP - jr z, .johto - cp KANTO_LANDMARK - jr c, .johto - -.kanto - ld a, [wd003] - and a - jr z, .clear - jr .ok - -.johto - ld a, [wd003] - and a - jr nz, .clear - -.ok - and a - ret - -.clear - ld hl, Sprites - ld bc, SpritesEnd - Sprites - xor a - call ByteFill - scf - ret -; 91ed0 - -Function91ed0: ; 91ed0 - ld a, [wd002] - cp FAST_SHIP - jr z, .asm_91ede - callba GetPlayerIcon - ret - -.asm_91ede - ld de, FastShipGFX - ld b, BANK(FastShipGFX) - ret -; 91ee4 - -TownMapBGUpdate: ; 91ee4 -; Update BG Map tiles and attributes - -; BG Map address - ld a, l - ld [hBGMapAddress], a - ld a, h - ld [hBGMapAddress + 1], a - -; Only update palettes on CGB - ld a, [hCGB] - and a - jr z, .tiles - -; BG Map mode 2 (palettes) - ld a, 2 - ld [hBGMapMode], a - -; The BG Map is updated in thirds, so we wait -; 3 frames to update the whole screen's palettes. - ld c, 3 - call DelayFrames - -.tiles -; Update BG Map tiles - call WaitBGMap - -; Turn off BG Map update - xor a - ld [hBGMapMode], a - ret -; 91eff - -FillJohtoMap: ; 91eff - ld de, JohtoMap - jr FillTownMap - -FillKantoMap: ; 91f04 - ld de, KantoMap - -FillTownMap: ; 91f07 - hlcoord 0, 0 -.loop - ld a, [de] - cp $ff - ret z - ld a, [de] - ld [hli], a - inc de - jr .loop -; 91f13 - -TownMapPals: ; 91f13 -; Assign palettes based on tile ids - - hlcoord 0, 0 - decoord 0, 0, AttrMap - ld bc, 360 -.loop -; Current tile - ld a, [hli] - push hl - -; HP/borders use palette 0 - cp $60 - jr nc, .pal0 - -; The palette data is condensed to nybbles, -; least-significant first. - ld hl, TownMapPalMap - srl a - jr c, .odd - -; Even-numbered tile ids take the bottom nybble... - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - and %111 - jr .update - -.odd -; ...and odd ids take the top. - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - swap a - and %111 - jr .update - -.pal0 - xor a - -.update - pop hl - ld [de], a - inc de - dec bc - ld a, b - or c - jr nz, .loop - ret - -TownMapPalMap: - db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 - db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 - db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 - db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 -; 91f7b - -TownMapMon: ; 91f7b -; Draw the FlyMon icon at town map location in - -; Get FlyMon species - ld a, [CurPartyMon] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - ld [wd265], a - -; Get FlyMon icon - ld e, 8 ; starting tile in VRAM - callba GetSpeciesIcon - -; Animation/palette - ld de, 0 - ld a, $0 - call Function3b2a - - ld hl, 3 - add hl, bc - ld [hl], 8 - ld hl, 2 - add hl, bc - ld [hl], 0 - ret -; 91fa6 - -TownMapPlayerIcon: ; 91fa6 -; Draw the player icon at town map location in a - push af - - callba GetPlayerIcon - -; Standing icon - ld hl, VTiles0 tile $10 - ld c, 4 ; # tiles - call Request2bpp - -; Walking icon - ld hl, $c0 - add hl, de - ld d, h - ld e, l - ld hl, VTiles0 tile $14 - ld c, 4 ; # tiles - ld a, BANK(ChrisSpriteGFX) ; does nothing - call Request2bpp - -; Animation/palette - ld de, 0 - ld b, $0a ; Male - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91fd3 - ld b, $1e ; Female -.asm_91fd3 - ld a, b - call Function3b2a - - ld hl, $3 - add hl, bc - ld [hl], $10 - - pop af - ld e, a - push bc - callba GetLandmarkCoords - pop bc - - ld hl, 4 - add hl, bc - ld [hl], e - ld hl, 5 - add hl, bc - ld [hl], d - ret -; 0x91ff2 - -Function91ff2: ; 91ff2 - ld hl, TownMapGFX - ld de, VTiles2 - lb bc, BANK(TownMapGFX), $30 - call DecompressRequest2bpp - ret -; 91fff - - -JohtoMap: ; 91fff -INCBIN "gfx/misc/johto.bin" -; 92168 - -KantoMap: ; 92168 -INCBIN "gfx/misc/kanto.bin" -; 922d1 - - -GFX_922d1: ; 922d1 -INCBIN "gfx/unknown/0922d1.2bpp" -GFX_922e1: ; 922e1 -INCBIN "gfx/unknown/0922e1.2bpp" -GFX_92301: ; 92301 -INCBIN "gfx/unknown/092301.2bpp" |