diff options
| author | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2021-05-16 14:19:50 +0700 |
|---|---|---|
| committer | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2021-05-16 14:22:32 +0700 |
| commit | 9b6130052de39c7ce09b899cb495db50bc5b4020 (patch) | |
| tree | 8ab3c6578a2a75b0a3bf5ee1f532a5fbef9eaeb3 /engine | |
| parent | e7e6b3624829144be2145fc6792790f5cb4dff6c (diff) | |
Disassemble more OW sprite routines
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/sprites/sprites.asm | 191 |
1 files changed, 190 insertions, 1 deletions
diff --git a/engine/sprites/sprites.asm b/engine/sprites/sprites.asm index f17e68f..87bf7b3 100644 --- a/engine/sprites/sprites.asm +++ b/engine/sprites/sprites.asm @@ -1,6 +1,195 @@ INCLUDE "constants.asm" -SECTION "engine/sprites/sprites.asm@LoadOverworldSprite", ROMX +SECTION "engine/sprites/sprites.asm@RefreshSprites", ROMX + +RefreshSprites: + call GetPlayerSprite + call CheckInteriorMap + jr c, .outdoor + call AddIndoorSprites + call LoadUsedSpritesGfx + ret +.outdoor + call AddOutdoorSprites + call LoadUsedSpritesGfx + ret + +CheckInteriorMap: + call GetMapEnvironment + cp TOWN + jr z, .got_outdoor + cp ROUTE + jr z, .got_outdoor + xor a + ret +.got_outdoor + scf + ret + +AddIndoorSprites: + ld hl, wUsedNPCSprites + ld bc, SPRITE_SET_LENGTH + xor a + call ByteFill + ld a, [wPlayerObjectSprite] + ld [wUsedSprites], a + ld hl, wMap2ObjectSprite + ld a, 2 +.asm_14070 + push af + ld a, [hl] + and a + jr z, .asm_1408d + ld c, a + call IsAnimatedSprite + jr nc, .static_sprite + ld de, wUsedStaticSprites + ld b, 2 + call Function14099 + jr .asm_1408d +.static_sprite + ld de, wUsedNPCSprites + ld b, 8 + call Function14099 +.asm_1408d + ld de, $10 + add hl, de + pop af + inc a + cp $10 + jp nz, .asm_14070 + ret + +Function14099: +.loop + ld a, [de] + and a + jr z, .asm_140a5 + cp c + ret z + dec b + jr z, .asm_140a8 + inc de + jr .loop + +.asm_140a5 + ld a, c + ld [de], a + ret + +.asm_140a8 + scf + ret + + +AddOutdoorSprites: + ld a, [wPlayerObjectSprite] + ld [wUsedSprites], a + ld a, [wMapGroup] + dec a + ld c, a + ld b, 0 + ld hl, MapGroupSpriteSets + add hl, bc + ld a, [hl] + push af + dec a + ld hl, SpriteSets + ld bc, SPRITE_SET_LENGTH + call AddNTimes + ld de, wUsedNPCSprites + ld bc, SPRITE_SET_LENGTH + call CopyBytes + ld a, [wd642] + ld c, a + pop af + ld [wd642], a + ret + +Function140d9: + ld hl, wcdaf + ld a, [hl] + push af + res 7, [hl] + set 6, [hl] + call LoadUsedSpritesGfx + pop af + ld [wcdaf], a + ret + +Function140ea: + ld hl, wcdaf + ld a, [hl] + push af + set 7, [hl] + res 6, [hl] + call LoadUsedSpritesGfx + pop af + ld [wcdaf], a + ret + +LoadUsedSpritesGfx: + ld hl, vNPCSprites + ld de, wUsedSprites + ld b, SPRITE_SET_LENGTH + ld c, 0 +.asm_14105 + push bc + push de + push hl + ld a, [de] + and a + jr z, .asm_1410f + call LoadOverworldSprite +.asm_1410f + pop hl + ld bc, $c0 + add hl, bc + pop de + inc de + pop bc + inc c + dec b + jr nz, .asm_14105 + ld a, [de] + and a + jr z, .asm_14127 + push de + ld hl, vNPCSprites + $780 + call LoadOverworldSprite + pop de +.asm_14127 + inc de + ld a, [de] + and a + jr z, .asm_14132 + ld hl, vNPCSprites + $7c0 + call LoadOverworldSprite +.asm_14132 + ret + +Function14133: + swap b + ld a, b + and $f0 + ld e, a + ld a, b + and $f + ld d, a + ld hl, vNPCSprites + add hl, de + ld a, c + jr LoadOverworldSprite + +Function14144: + ld a, c + ld hl, vNPCSprites + jr LoadOverworldSprite + +Function1414a: + ld a, c + ld hl, vNPCSprites + $c0 + jr LoadOverworldSprite LoadOverworldSprite: push af |
