diff --git a/Art/014Stand.gif b/Art/014Stand.gif new file mode 100644 index 0000000..a197f4b Binary files /dev/null and b/Art/014Stand.gif differ diff --git a/Art/013Stand.xcf b/Art/014Stand.xcf similarity index 100% rename from Art/013Stand.xcf rename to Art/014Stand.xcf diff --git a/SpriteBank00.bin b/SpriteBank00.bin index 6b72789..b474cea 100644 Binary files a/SpriteBank00.bin and b/SpriteBank00.bin differ diff --git a/fan.s b/fan.s index 5ae01f2..2778ee6 100644 --- a/fan.s +++ b/fan.s @@ -58,9 +58,46 @@ updateFan: sta projectileData+JD_STATIC,y jsr endProjectile + ; Now set up the stand + lda projectileData+GO_POSX,y + sta standGameObjectData+GO_POSX + lda projectileData+GO_POSY,y + sec + sbc #GAMEOBJECTHEIGHT + sta standGameObjectData+GO_POSY,y + updateFanDone: RESTORE_AXY - rts +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; renderFan +; +; Y = Offset to projectile structure +; +renderFan: + SAVE_AXY + + lda projectileData+JD_STATIC,y + beq renderFanDone ; Don't render the stand until we're static + + ; Render the stand under the fan + lda #standGameObjectData + sta PARAML0 + lda #14 + jsr renderGameObject + +renderFanDone: + RESTORE_AXY + rts + + +; Fake game object for rendering the stand +standGameObjectData: + .word 40 ; X pos in pixels (from right terrain edge) + .word 38 ; Y pos in pixels (from bottom terrain edge) + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Saved background 64 bytes + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/gscats.2mg b/gscats.2mg index 5cd9fa0..d459b97 100644 Binary files a/gscats.2mg and b/gscats.2mg differ diff --git a/projectile.s b/projectile.s index 5e8cb6a..2ea0423 100644 --- a/projectile.s +++ b/projectile.s @@ -112,7 +112,7 @@ projectileTypes: .word 12 ; Frame 2 .addr deployFan ; Deploy .addr updateFan ; Update - .addr 0 ; Render + .addr renderFan ; Render ;.word ; Padding to 16-byte boundary (none needed) @@ -687,7 +687,12 @@ renderProjectileFlat: renderProjectileGoSprite: jsr renderGameObject - + + ; Check for special deployment code + lda projectileTypes+PT_RENDER,x + beq renderProjectileDone + JSRA + renderProjectileDone: RESTORE_AXY rts diff --git a/spritebank.s b/spritebank.s index 7a05bd8..6273362 100644 --- a/spritebank.s +++ b/spritebank.s @@ -2,18 +2,18 @@ DrawSpriteBank : - ASL ; A=Sprite Number ($0000-$000D) + ASL ; A=Sprite Number ($0000-$000E) TAX ; Y=Target Screen Address ($2000-$9D00) LDA SpriteBankNum,X ; Relative Sprite Number Table JMP (SpriteBankBank,X) ; Bank Number Table SpriteBankNum : - .dbyt $0100,$0000,$0900,$0400,$0500,$0800,$0C00,$0B00 - .dbyt $0700,$0600,$0A00,$0D00,$0200,$0300 + .dbyt $0100,$0000,$0A00,$0500,$0600,$0900,$0D00,$0C00 + .dbyt $0800,$0700,$0B00,$0E00,$0200,$0300,$0400 SpriteBankBank : .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 - .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 + .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 SpriteBankBank00 : JSL $AA0000