summaryrefslogtreecommitdiff
path: root/engine/overworld.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/overworld.asm')
-rwxr-xr-xengine/overworld.asm715
1 files changed, 0 insertions, 715 deletions
diff --git a/engine/overworld.asm b/engine/overworld.asm
deleted file mode 100755
index 381c2d89f..000000000
--- a/engine/overworld.asm
+++ /dev/null
@@ -1,715 +0,0 @@
-GetEmote2bpp: ; 1412a
- ld a, $1
- ld [rVBK], a
- call Get2bpp
- xor a
- ld [rVBK], a
- ret
-; 14135
-
-_ReplaceKrisSprite:: ; 14135
- call GetPlayerSprite
- ld a, [wUsedSprites]
- ld [hUsedSpriteIndex], a
- ld a, [wUsedSprites + 1]
- ld [hUsedSpriteTile], a
- call GetUsedSprite
- ret
-; 14146
-
-Function14146: ; mobile
- ld hl, wSpriteFlags
- ld a, [hl]
- push af
- res 7, [hl]
- set 6, [hl]
- call LoadUsedSpritesGFX
- pop af
- ld [wSpriteFlags], a
- ret
-; 14157
-
-Function14157: ; mobile
- ld hl, wSpriteFlags
- ld a, [hl]
- push af
- set 7, [hl]
- res 6, [hl]
- call LoadUsedSpritesGFX
- pop af
- ld [wSpriteFlags], a
- ret
-; 14168
-
-RefreshSprites:: ; 14168
- call .Refresh
- call LoadUsedSpritesGFX
- ret
-; 1416f
-
-.Refresh: ; 1416f
- xor a
- ld bc, wUsedSpritesEnd - wUsedSprites
- ld hl, wUsedSprites
- call ByteFill
- call GetPlayerSprite
- call AddMapSprites
- call LoadAndSortSprites
- ret
-; 14183
-
-GetPlayerSprite: ; 14183
-; Get Chris or Kris's sprite.
- ld hl, ChrisStateSprites
- ld a, [wPlayerSpriteSetupFlags]
- bit PLAYERSPRITESETUP_FEMALE_TO_MALE_F, a
- jr nz, .go
- ld a, [wPlayerGender]
- bit PLAYERGENDER_FEMALE_F, a
- jr z, .go
- ld hl, KrisStateSprites
-
-.go
- ld a, [wPlayerState]
- ld c, a
-.loop
- ld a, [hli]
- cp c
- jr z, .good
- inc hl
- cp -1
- jr nz, .loop
-
-; Any player state not in the array defaults to Chris's sprite.
- xor a ; ld a, PLAYER_NORMAL
- ld [wPlayerState], a
- ld a, SPRITE_CHRIS
- jr .finish
-
-.good
- ld a, [hl]
-
-.finish
- ld [wUsedSprites + 0], a
- ld [wPlayerSprite], a
- ld [wPlayerObjectSprite], a
- ret
-
-INCLUDE "data/sprites/player_sprites.asm"
-
-
-AddMapSprites: ; 141c9
- call GetMapEnvironment
- call CheckOutdoorMap
- jr z, .outdoor
- call AddIndoorSprites
- ret
-
-.outdoor
- call AddOutdoorSprites
- ret
-; 141d9
-
-
-AddIndoorSprites: ; 141d9
- ld hl, wMap1ObjectSprite
- ld a, 1
-.loop
- push af
- ld a, [hl]
- call AddSpriteGFX
- ld de, OBJECT_LENGTH
- add hl, de
- pop af
- inc a
- cp NUM_OBJECTS
- jr nz, .loop
- ret
-; 141ee
-
-
-AddOutdoorSprites: ; 141ee
- ld a, [wMapGroup]
- dec a
- ld c, a
- ld b, 0
- ld hl, OutdoorSprites
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld c, MAX_OUTDOOR_SPRITES
-.loop
- push bc
- ld a, [hli]
- call AddSpriteGFX
- pop bc
- dec c
- jr nz, .loop
- ret
-; 14209
-
-
-LoadUsedSpritesGFX: ; 14209
- ld a, MAPCALLBACK_SPRITES
- call RunMapCallback
- call GetUsedSprites
- call .LoadMiscTiles
- ret
-; 14215
-
-.LoadMiscTiles: ; 14215
- ld a, [wSpriteFlags]
- bit 6, a
- ret nz
-
- ld c, EMOTE_SHADOW
- farcall LoadEmote
- call GetMapEnvironment
- call CheckOutdoorMap
- ld c, EMOTE_GRASS_RUSTLE
- jr z, .outdoor
- ld c, EMOTE_BOULDER_DUST
-.outdoor
- farcall LoadEmote
- ret
-; 14236
-
-
-
-SafeGetSprite: ; 14236
- push hl
- call GetSprite
- pop hl
- ret
-; 1423c
-
-GetSprite: ; 1423c
- call GetMonSprite
- ret c
-
- ld hl, OverworldSprites + SPRITEDATA_ADDR
- dec a
- ld c, a
- ld b, 0
- ld a, NUM_SPRITEDATA_FIELDS
- call AddNTimes
- ; load the address into de
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ; load the length into c
- ld a, [hli]
- swap a
- ld c, a
- ; load the sprite bank into both b and h
- ld b, [hl]
- ld a, [hli]
- ; load the sprite type into l
- ld l, [hl]
- ld h, a
- ret
-; 14259
-
-
-GetMonSprite: ; 14259
-; Return carry if a monster sprite was loaded.
-
- cp SPRITE_POKEMON
- jr c, .Normal
- cp SPRITE_DAY_CARE_MON_1
- jr z, .BreedMon1
- cp SPRITE_DAY_CARE_MON_2
- jr z, .BreedMon2
- cp SPRITE_VARS
- jr nc, .Variable
- jr .Icon
-
-.Normal:
- and a
- ret
-
-.Icon:
- sub SPRITE_POKEMON
- ld e, a
- ld d, 0
- ld hl, SpriteMons
- add hl, de
- ld a, [hl]
- jr .Mon
-
-.BreedMon1
- ld a, [wBreedMon1Species]
- jr .Mon
-
-.BreedMon2
- ld a, [wBreedMon2Species]
-
-.Mon:
- ld e, a
- and a
- jr z, .NoBreedmon
-
- farcall LoadOverworldMonIcon
-
- ld l, 1
- ld h, 0
- scf
- ret
-
-.Variable:
- sub SPRITE_VARS
- ld e, a
- ld d, 0
- ld hl, wVariableSprites
- add hl, de
- ld a, [hl]
- and a
- jp nz, GetMonSprite
-
-.NoBreedmon:
- ld a, 1
- ld l, 1
- ld h, 0
- and a
- ret
-; 142a7
-
-
-_DoesSpriteHaveFacings:: ; 142a7
-; Checks to see whether we can apply a facing to a sprite.
-; Returns carry unless the sprite is a Pokemon or a Still Sprite.
- cp SPRITE_POKEMON
- jr nc, .only_down
-
- push hl
- push bc
- ld hl, OverworldSprites + SPRITEDATA_TYPE
- dec a
- ld c, a
- ld b, 0
- ld a, NUM_SPRITEDATA_FIELDS
- call AddNTimes
- ld a, [hl]
- pop bc
- pop hl
- cp STILL_SPRITE
- jr nz, .only_down
- scf
- ret
-
-.only_down
- and a
- ret
-; 142c4
-
-
-_GetSpritePalette:: ; 142c4
- ld a, c
- call GetMonSprite
- jr c, .is_pokemon
-
- ld hl, OverworldSprites + SPRITEDATA_PALETTE
- dec a
- ld c, a
- ld b, 0
- ld a, NUM_SPRITEDATA_FIELDS
- call AddNTimes
- ld c, [hl]
- ret
-
-.is_pokemon
- xor a
- ld c, a
- ret
-; 142db
-
-
-LoadAndSortSprites: ; 142db
- call LoadSpriteGFX
- call SortUsedSprites
- call ArrangeUsedSprites
- ret
-; 142e5
-
-
-AddSpriteGFX: ; 142e5
-; Add any new sprite ids to a list of graphics to be loaded.
-; Return carry if the list is full.
-
- push hl
- push bc
- ld b, a
- ld hl, wUsedSprites + 2
- ld c, SPRITE_GFX_LIST_CAPACITY - 1
-.loop
- ld a, [hl]
- cp b
- jr z, .exists
- and a
- jr z, .new
- inc hl
- inc hl
- dec c
- jr nz, .loop
-
- pop bc
- pop hl
- scf
- ret
-
-.exists
- pop bc
- pop hl
- and a
- ret
-
-.new
- ld [hl], b
- pop bc
- pop hl
- and a
- ret
-; 14306
-
-
-LoadSpriteGFX: ; 14306
-; Bug: b is not preserved, so it's useless as a next count.
-; Uncomment the lines below to fix.
-
- ld hl, wUsedSprites
- ld b, SPRITE_GFX_LIST_CAPACITY
-.loop
- ld a, [hli]
- and a
- jr z, .done
- push hl
- call .LoadSprite
- pop hl
- ld [hli], a
- dec b
- jr nz, .loop
-
-.done
- ret
-
-.LoadSprite:
- ; push bc
- call GetSprite
- ; pop bc
- ld a, l
- ret
-; 1431e
-
-
-SortUsedSprites: ; 1431e
-; Bubble-sort sprites by type.
-
-; Run backwards through wUsedSprites to find the last one.
-
- ld c, SPRITE_GFX_LIST_CAPACITY
- ld de, wUsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2
-.FindLastSprite:
- ld a, [de]
- and a
- jr nz, .FoundLastSprite
- dec de
- dec de
- dec c
- jr nz, .FindLastSprite
-.FoundLastSprite:
- dec c
- jr z, .quit
-
-; If the length of the current sprite is
-; higher than a later one, swap them.
-
- inc de
- ld hl, wUsedSprites + 1
-
-.CheckSprite:
- push bc
- push de
- push hl
-
-.CheckFollowing:
- ld a, [de]
- cp [hl]
- jr nc, .loop
-
-; Swap the two sprites.
-
- ld b, a
- ld a, [hl]
- ld [hl], b
- ld [de], a
- dec de
- dec hl
- ld a, [de]
- ld b, a
- ld a, [hl]
- ld [hl], b
- ld [de], a
- inc de
- inc hl
-
-; Keep doing this until everything's in order.
-
-.loop
- dec de
- dec de
- dec c
- jr nz, .CheckFollowing
-
- pop hl
- inc hl
- inc hl
- pop de
- pop bc
- dec c
- jr nz, .CheckSprite
-
-.quit
- ret
-; 14355
-
-
-ArrangeUsedSprites: ; 14355
-; Get the length of each sprite and space them out in VRAM.
-; Crystal introduces a second table in VRAM bank 0.
-
- ld hl, wUsedSprites
- ld c, SPRITE_GFX_LIST_CAPACITY
- ld b, 0
-.FirstTableLength:
-; Keep going until the end of the list.
- ld a, [hli]
- and a
- jr z, .quit
-
- ld a, [hl]
- call GetSpriteLength
-
-; Spill over into the second table after $80 tiles.
- add b
- cp $80
- jr z, .loop
- jr nc, .SecondTable
-
-.loop
- ld [hl], b
- inc hl
- ld b, a
-
-; Assumes the next table will be reached before c hits 0.
- dec c
- jr nz, .FirstTableLength
-
-.SecondTable:
-; The second tile table starts at tile $80.
- ld b, $80
- dec hl
-.SecondTableLength:
-; Keep going until the end of the list.
- ld a, [hli]
- and a
- jr z, .quit
-
- ld a, [hl]
- call GetSpriteLength
-
-; There are only two tables, so don't go any further than that.
- add b
- jr c, .quit
-
- ld [hl], b
- ld b, a
- inc hl
-
- dec c
- jr nz, .SecondTableLength
-
-.quit
- ret
-; 14386
-
-
-GetSpriteLength: ; 14386
-; Return the length of sprite type a in tiles.
-
- cp WALKING_SPRITE
- jr z, .AnyDirection
- cp STANDING_SPRITE
- jr z, .AnyDirection
- cp STILL_SPRITE
- jr z, .OneDirection
-
- ld a, 12
- ret
-
-.AnyDirection:
- ld a, 12
- ret
-
-.OneDirection:
- ld a, 4
- ret
-; 1439b
-
-
-GetUsedSprites: ; 1439b
- ld hl, wUsedSprites
- ld c, SPRITE_GFX_LIST_CAPACITY
-
-.loop
- ld a, [wSpriteFlags]
- res 5, a
- ld [wSpriteFlags], a
-
- ld a, [hli]
- and a
- jr z, .done
- ld [hUsedSpriteIndex], a
-
- ld a, [hli]
- ld [hUsedSpriteTile], a
-
- bit 7, a
- jr z, .dont_set
-
- ld a, [wSpriteFlags]
- set 5, a ; load VBank0
- ld [wSpriteFlags], a
-
-.dont_set
- push bc
- push hl
- call GetUsedSprite
- pop hl
- pop bc
- dec c
- jr nz, .loop
-
-.done
- ret
-; 143c8
-
-GetUsedSprite: ; 143c8
- ld a, [hUsedSpriteIndex]
- call SafeGetSprite
- ld a, [hUsedSpriteTile]
- call .GetTileAddr
- push hl
- push de
- push bc
- ld a, [wSpriteFlags]
- bit 7, a
- jr nz, .skip
- call .CopyToVram
-
-.skip
- pop bc
- ld l, c
- ld h, $0
-rept 4
- add hl, hl
-endr
- pop de
- add hl, de
- ld d, h
- ld e, l
- pop hl
-
- ld a, [wSpriteFlags]
- bit 5, a
- jr nz, .done
- bit 6, a
- jr nz, .done
-
- ld a, [hUsedSpriteIndex]
- call _DoesSpriteHaveFacings
- jr c, .done
-
- ld a, h
- add $8
- ld h, a
- call .CopyToVram
-
-.done
- ret
-; 14406
-
-.GetTileAddr: ; 14406
-; Return the address of tile (a) in (hl).
- and $7f
- ld l, a
- ld h, 0
-rept 4
- add hl, hl
-endr
- ld a, l
- add LOW(vTiles0)
- ld l, a
- ld a, h
- adc HIGH(vTiles0)
- ld h, a
- ret
-; 14418
-
-.CopyToVram: ; 14418
- ld a, [rVBK]
- push af
- ld a, [wSpriteFlags]
- bit 5, a
- ld a, $1
- jr z, .bankswitch
- ld a, $0
-
-.bankswitch
- ld [rVBK], a
- call Get2bpp
- pop af
- ld [rVBK], a
- ret
-; 1442f
-
-LoadEmote:: ; 1442f
-; Get the address of the pointer to emote c.
- ld a, c
- ld bc, 6 ; sizeof(emote)
- ld hl, Emotes
- call AddNTimes
-; Load the emote address into de
- ld e, [hl]
- inc hl
- ld d, [hl]
-; load the length of the emote (in tiles) into c
- inc hl
- ld c, [hl]
- swap c
-; load the emote pointer bank into b
- inc hl
- ld b, [hl]
-; load the VRAM destination into hl
- inc hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
-; if the emote has a length of 0, do not proceed (error handling)
- ld a, c
- and a
- ret z
- call GetEmote2bpp
- ret
-; 1444d
-
-
-INCLUDE "data/sprites/emotes.asm"
-
-INCLUDE "data/sprites/sprite_mons.asm"
-
-INCLUDE "data/maps/outdoor_sprites.asm"
-
-INCLUDE "data/sprites/sprites.asm"