pokecrystal-board/engine/map_setup.asm

491 lines
12 KiB
NASM
Raw Normal View History

2015-02-11 14:01:04 -08:00
RunMapSetupScript:: ; 15363
ld a, [$ff9f]
and $f
dec a
ld c, a
ld b, 0
ld hl, MapSetupScripts
2015-07-20 19:18:18 -07:00
rept 2
2015-02-11 14:01:04 -08:00
add hl, bc
2015-07-20 19:18:18 -07:00
endr
2015-02-11 14:01:04 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
call ReadMapSetupScript
ret
; 15377
MapSetupScripts: ; 15377
dw MapSetupScript1
dw MapSetupScript2
dw MapSetupScript3
dw MapSetupScript4
dw MapSetupScript5
dw MapSetupScript6
dw MapSetupScript7
dw MapSetupScript8
dw MapSetupScript9
dw MapSetupScript10
dw MapSetupScript11
dw MapSetupScript12
; 1538f
; Command descriptions from Condensation water's scripting compendium.
const_def
const map_lcd_on ; 00 = Turn LCD on
const map_lcd_off ; 01 = Turn LCD off
const map_sound_off ; 02 = Turn speakers off
const map_music ; 03 = Music check for current map/ special check for bug catcher contest
const map_start_music ; 04 = Start map music anew
const map_fade_music ; 05 = Music check for current map / special check for Bug Contest/ music with FadeOut (old) and FadeIn
const map_fade ; 06 = Fade out music + screen
const map_bike_music ; 07 = If HIRO is on bike = bike music, else play map music
const map_music_force ; 08 = Play map music
const map_max_volume ; 09 = Turn music to highest volume
const map_load_blocks ; 0A = Write map data to MapRAM
const map_connection_blocks ; 0B = Compute maps connection pars and write into MapRAM
const map_save_screen ; 0C = Write current part of map into temporary memory
const map_buffer_screen ; 0D = Write current part of map into read-from memory
const map_load_graphics ; 0E = Write tileset header to ram/ load tileset/ load sprite tiles/ load special tiles
const map_load_tileset_header ; 0F = Write tileset header to ram
const map_time_of_day ; 10 = Compute time of day/ Update screen
const map_palettes ; 11 = Load map palettes
const map_wildmons ; 12 = Load probabilities for wild Pokémon battles
const map_sprites ; 13 = Delete sprite data and draw new sprites
const map_change_callback ; 14 = Check 2nd script header for 05 and 03 callbacks
const map_start_callback ; 15 = Check 2nd script header for 03 callbacks
const map_load_objects ; 16 = Analyze people data anew and check 2nd script header for 02 callbacks
const map_load_spawn ; 17 = Writes arrival data for arrival by flying/Blackout from table 05:5319 to ram
const map_load_connection ; 18 = Writes arrival data for entering a map by connection to ram
const map_load_warp ; 19 = Write warp data to ram when entering warp
const map_attributes ; 1A = Load complete map data (primary, secondary, event, script headers)
const map_attributes_2 ; 1B = Same as 1A, but some settings arent loaded new from the rom, such as hide function of the people events
const map_clear_bg_palettes ; 1C = Fill palette data with FFFF (=white)
const map_fade_out_palettes ; 1D = All BG pallet color are converted to 0|0 (Pal0, Col0), all sprite colors to x|0 (FadeOut)
const map_fade_in_palettes ; 1E = Palette FadeIn
const map_anchor_screen ; 1F = Compute position of upper left-most block visible on screen
const map_warp_face ; 20 = Position computation when HIRO leaves a warp
const map_face_down ; 21 = Set HIROs facing to “down”
const map_spawn_coord ; 22 = Prepare HIRO data for arrival by flight
const map_player_coord ; 23 = Compute HIRO x/y data anew
const map_prolong_sprites ; 24 = Prolong old sprites before removing them
const map_delay_sprites ; 25 = Delay rendering new sprites
const map_update_roam ; 26 = Compute chances to meet Raikou, Entei or Suicune
const map_keep_roam ; 27 = Recover chances to meet Raikou, Entei or Suicune
const map_fade_out_music ; 28 = Temporarily stop music playing
const map_animations_on ; 29 = Activate animations
const map_animations_off ; 2A = Deactivate animations
const map_keep_palettes ; 2B = Recover all palettes
const map_text_scroll_off ; 2C = Turn off text scroll (for town name overlays)
const map_stop_script ; 2D = Deactivate code prolonging
MapSetupScript4: ; 1538f
db map_prolong_sprites
MapSetupScript12: ; 15390
db map_fade_out_palettes
db map_keep_roam
MapSetupScript1: ; 15392
db map_lcd_off
db map_sound_off
db map_load_spawn
db map_attributes
db map_change_callback
db map_spawn_coord
db map_player_coord
db map_anchor_screen
db map_load_blocks
db map_buffer_screen
db map_load_graphics
db map_time_of_day
db map_load_objects
db map_lcd_on
db map_palettes
db map_face_down
db map_sprites
db map_bike_music
db map_max_volume
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db -1
MapSetupScript11: ; 153a9
db map_load_spawn
db map_attributes
db map_change_callback
db map_spawn_coord
db map_player_coord
db map_anchor_screen
db map_load_blocks
db map_buffer_screen
db map_lcd_off
db map_load_graphics
db map_time_of_day
db map_fade_out_music
db map_lcd_on
db map_load_objects
db map_palettes
db map_face_down
db map_sprites
db map_fade_music
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db -1
MapSetupScript7: ; 153bf
db map_animations_off
db map_load_connection
db map_attributes
db map_change_callback
db map_player_coord
db map_load_blocks
db map_load_tileset_header
db map_save_screen
db map_load_objects
db map_fade_music
db map_palettes
db map_stop_script
db map_keep_palettes
db map_wildmons
db map_update_roam
db map_animations_on
db -1
MapSetupScript6: ; 153d0
db map_prolong_sprites
MapSetupScript5: ; 153d1
db map_fade_out_palettes
MapSetupScript9: ; 153d2
db map_load_warp
db map_attributes
db map_warp_face
db map_change_callback
db map_player_coord
db map_load_blocks
db map_buffer_screen
db map_lcd_off
db map_load_graphics
db map_time_of_day
db map_fade_out_music
db map_lcd_on
db map_load_objects
db map_palettes
db map_sprites
db map_fade_music
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db map_update_roam
db -1
MapSetupScript3: ; 153e7
db map_fade
db map_clear_bg_palettes
db map_lcd_off
db map_sound_off
db map_load_blocks
db map_connection_blocks
db map_load_graphics
db map_time_of_day
db map_lcd_on
db map_palettes
db map_sprites
db map_music_force
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db -1
MapSetupScript8: ; 153f7
db map_fade
db map_lcd_off
db map_sound_off
db map_change_callback
db map_load_blocks
db map_buffer_screen
db map_load_graphics
db map_time_of_day
db map_lcd_on
db map_palettes
db map_sprites
db map_bike_music
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db map_text_scroll_off
db -1
MapSetupScript2: ; 15408
db map_lcd_off
db map_sound_off
db map_attributes_2
db map_anchor_screen
db map_start_callback
db map_load_blocks
db map_connection_blocks
db map_buffer_screen
db map_load_graphics
db map_time_of_day
db map_lcd_on
db map_palettes
db map_sprites
db map_bike_music
db map_fade_in_palettes
db map_animations_on
db map_wildmons
db -1
MapSetupScript10: ; 1541a
db map_load_blocks
db map_connection_blocks
db -1
ReadMapSetupScript: ; 1541d
.loop
ld a, [hli]
cp -1
ret z
push hl
ld c, a
ld b, 0
ld hl, MapSetupCommands
2015-07-20 19:18:18 -07:00
rept 3
2015-02-11 14:01:04 -08:00
add hl, bc
2015-07-20 19:18:18 -07:00
endr
2015-02-11 14:01:04 -08:00
; bank
ld b, [hl]
inc hl
; address
ld a, [hli]
ld h, [hl]
ld l, a
; Bit 7 of the bank indicates a parameter.
; This is left unused.
bit 7, b
jr z, .go
pop de
ld a, [de]
ld c, a
inc de
push de
.go
ld a, b
and $7f
rst FarCall
pop hl
jr .loop
; 15440
MapSetupCommands: ; 15440
dbw BANK(EnableLCD), EnableLCD ; 00
dbw BANK(DisableLCD), DisableLCD ; 01
dbw BANK(SoundRestart), SoundRestart ; 02
dbw BANK(PlayMapMusic), PlayMapMusic ; 03
dbw BANK(RestartMapMusic), RestartMapMusic ; 04
dbw BANK(FadeToMapMusic), FadeToMapMusic ; 05
dbw BANK(FadeOutMapAndMusic), FadeOutMapAndMusic ; 06
dbw BANK(EnterMapMusic), EnterMapMusic ; 07
dbw BANK(ForceMapMusic), ForceMapMusic ; 08
dbw BANK(CrankUpTheVolume), CrankUpTheVolume ; 09
dbw BANK(LoadBlockData), LoadBlockData ; 0a
dbw BANK(LoadNeighboringBlockData), LoadNeighboringBlockData ; 0b
dbw BANK(SaveScreen), SaveScreen ; 0c
dbw BANK(BufferScreen), BufferScreen ; 0d
dbw BANK(LoadGraphics), LoadGraphics ; 0e
dbw BANK(LoadTilesetHeader), LoadTilesetHeader ; 0f
dbw BANK(LoadMapTimeOfDay), LoadMapTimeOfDay ; 10
dbw BANK(LoadMapPalettes), LoadMapPalettes ; 11
dbw BANK(LoadWildMonData), LoadWildMonData ; 12
dbw BANK(RefreshMapSprites), RefreshMapSprites ; 13
dbw BANK(RunCallback_05_03), RunCallback_05_03 ; 14
dbw BANK(RunCallback_03), RunCallback_03 ; 15
dbw BANK(LoadObjectsRunCallback_02), LoadObjectsRunCallback_02 ; 16
dbw BANK(LoadSpawnPoint), LoadSpawnPoint ; 17
dbw BANK(EnterMapConnection), EnterMapConnection ; 18
dbw BANK(LoadWarpData), LoadWarpData ; 19
dbw BANK(LoadMapAttributes), LoadMapAttributes ; 1a
dbw BANK(LoadMapAttributes_IgnoreHidden), LoadMapAttributes_IgnoreHidden ; 1b
dbw BANK(WhiteBGMap), WhiteBGMap ; 1c
dbw BANK(FadeBlackBGMap), FadeBlackBGMap ; 1d
dbw BANK(FadeInBGMap), FadeInBGMap ; 1e
dbw BANK(GetCoordOfUpperLeftCorner), GetCoordOfUpperLeftCorner ; 1f
dbw BANK(RestoreFacingAfterWarp), RestoreFacingAfterWarp ; 20
dbw BANK(SpawnInFacingDown), SpawnInFacingDown ; 21
dbw BANK(GetSpawnCoord), GetSpawnCoord ; 22
dbw BANK(RefreshPlayerCoords), RefreshPlayerCoords ; 23
dbw BANK(DelayClearingOldSprites), DelayClearingOldSprites ; 24
dbw BANK(DelayLoadingNewSprites), DelayLoadingNewSprites ; 25
dbw BANK(UpdateRoamMons), UpdateRoamMons ; 26
dbw BANK(RestoreRoamMons), RestoreRoamMons ; 27
dbw BANK(FadeOldMapMusic), FadeOldMapMusic ; 28
dbw BANK(ActivateMapAnims), ActivateMapAnims ; 29
dbw BANK(SuspendMapAnims), SuspendMapAnims ; 2a
dbw BANK(RetainOldPalettes), RetainOldPalettes ; 2b
dbw BANK(DontScrollText), DontScrollText ; 2c
dbw BANK(ReturnFromMapSetupScript), ReturnFromMapSetupScript ; 2d
2015-02-11 14:01:04 -08:00
; 154ca
DontScrollText: ; 154ca
2015-02-11 14:01:04 -08:00
xor a
ld [wc2d7], a
ret
; 154cf
ActivateMapAnims: ; 154cf
2015-02-11 14:01:04 -08:00
ld a, $1
ld [$ffde], a
ret
; 154d3
SuspendMapAnims: ; 154d3
2015-02-11 14:01:04 -08:00
xor a
ld [$ffde], a
ret
; 154d7
LoadObjectsRunCallback_02: ; 154d7
2015-02-11 14:01:04 -08:00
ld a, $2
call RunMapCallback
2015-02-11 14:01:04 -08:00
callba Function2454f
callba Function8177
ret
; 154ea (5:54ea)
Function154ea: ; 154ea
ret
; 154eb
DelayClearingOldSprites: ; 154eb
2015-02-11 14:01:04 -08:00
ld hl, wd45b
set 7, [hl]
ret
; 154f1
DelayLoadingNewSprites: ; 154f1
2015-02-11 14:01:04 -08:00
ld hl, wd45b
set 6, [hl]
ret
Function154f7: ; 154f7
nop
call Function1550c
jr c, .ok
2015-02-11 14:01:04 -08:00
call Function1554e
jr c, .ok
2015-02-11 14:01:04 -08:00
call Function1551a
jr c, .ok
2015-02-11 14:01:04 -08:00
ret
.ok
call Special_ReplaceKrisSprite
2015-02-11 14:01:04 -08:00
ret
Function1550c: ; 1550c (5:550c)
and a
ld hl, BikeFlags
bit 1, [hl]
ret z
ld a, PLAYER_BIKE
2015-02-11 14:01:04 -08:00
ld [PlayerState], a
scf
ret
Function1551a: ; 1551a (5:551a)
ld a, [PlayerState]
cp PLAYER_NORMAL
jr z, .nope
cp PLAYER_SLIP
jr z, .nope
cp PLAYER_SURF
jr z, .surfing
cp PLAYER_SURF_PIKA
jr z, .surfing
2015-02-11 14:01:04 -08:00
call GetMapPermission
cp $3
jr z, .checkbiking
2015-02-11 14:01:04 -08:00
cp $5
jr z, .checkbiking
2015-02-11 14:01:04 -08:00
cp $7
jr z, .checkbiking
jr .nope
.checkbiking
2015-02-11 14:01:04 -08:00
ld a, [PlayerState]
cp PLAYER_BIKE
jr nz, .nope
.surfing
ld a, PLAYER_NORMAL
2015-02-11 14:01:04 -08:00
ld [PlayerState], a
scf
ret
.nope
2015-02-11 14:01:04 -08:00
and a
ret
Function1554e: ; 1554e (5:554e)
call Function1852
jr nz, .ret_nc
2015-02-11 14:01:04 -08:00
ld a, [PlayerState]
cp PLAYER_SURF
jr z, .surfing
cp PLAYER_SURF_PIKA
jr z, .surfing
ld a, PLAYER_SURF
2015-02-11 14:01:04 -08:00
ld [PlayerState], a
.surfing
2015-02-11 14:01:04 -08:00
scf
ret
.ret_nc
2015-02-11 14:01:04 -08:00
and a
ret
; 15567
FadeOldMapMusic: ; 15567
2015-02-11 14:01:04 -08:00
ld a, 6
call SkipMusic
ret
; 1556d
RetainOldPalettes: ; 1556d
2015-02-11 14:01:04 -08:00
callba _UpdateTimePals
ret
FadeOutMapAndMusic: ; 15574
2015-02-11 14:01:04 -08:00
ld e, 0
ld a, [MusicFadeIDLo]
ld d, 0
ld a, [MusicFadeIDHi]
ld a, $4
ld [MusicFade], a
call FadeToWhite
2015-02-11 14:01:04 -08:00
ret
; 15587
ForceMapMusic: ; 15587
2015-02-11 14:01:04 -08:00
ld a, [PlayerState]
cp PLAYER_BIKE
jr nz, .notbiking
2015-02-11 14:01:04 -08:00
call VolumeOff
ld a, $88
ld [MusicFade], a
.notbiking
2015-02-11 14:01:04 -08:00
call Function3d2f
ret
; 1559a