diff --git a/Art/040Pee.gif b/Art/040Pee.gif new file mode 100644 index 0000000..7471514 Binary files /dev/null and b/Art/040Pee.gif differ diff --git a/Art/040Pee.xcf b/Art/040Pee.xcf new file mode 100644 index 0000000..46c245e Binary files /dev/null and b/Art/040Pee.xcf differ diff --git a/Art/041Pee.gif b/Art/041Pee.gif new file mode 100644 index 0000000..47950af Binary files /dev/null and b/Art/041Pee.gif differ diff --git a/Art/041Pee.xcf b/Art/041Pee.xcf new file mode 100644 index 0000000..6c41a96 Binary files /dev/null and b/Art/041Pee.xcf differ diff --git a/Art/042Pee.gif b/Art/042Pee.gif new file mode 100644 index 0000000..263af6b Binary files /dev/null and b/Art/042Pee.gif differ diff --git a/Art/042Pee.xcf b/Art/042Pee.xcf new file mode 100644 index 0000000..879b069 Binary files /dev/null and b/Art/042Pee.xcf differ diff --git a/Art/043Pee.gif b/Art/043Pee.gif new file mode 100644 index 0000000..ac66793 Binary files /dev/null and b/Art/043Pee.gif differ diff --git a/Art/043Pee.xcf b/Art/043Pee.xcf new file mode 100644 index 0000000..7ff7e1e Binary files /dev/null and b/Art/043Pee.xcf differ diff --git a/Art/044Pee.gif b/Art/044Pee.gif new file mode 100644 index 0000000..b904b1c Binary files /dev/null and b/Art/044Pee.gif differ diff --git a/Art/044Pee.xcf b/Art/044Pee.xcf new file mode 100644 index 0000000..c064ab2 Binary files /dev/null and b/Art/044Pee.xcf differ diff --git a/SpriteBank#060000 b/SpriteBank#060000 index 3be7a87..5092656 100644 Binary files a/SpriteBank#060000 and b/SpriteBank#060000 differ diff --git a/animation.s b/animation.s index 48923be..0d7bd35 100644 --- a/animation.s +++ b/animation.s @@ -154,6 +154,16 @@ renderAnimationLoop: jsr delayMedium + ; On last frame, freeze if needed + lda renderAnimationFreezeFrame + beq renderAnimationContinue + inx + cpx PARAML0 + beq renderAnimationDone + dex + +renderAnimationContinue: + ; Restore background phx ldy SCRATCHL2 @@ -168,12 +178,36 @@ renderAnimationLoop: bne renderAnimationLoop renderAnimationDone: + stz renderAnimationFreezeFrame rts renderAnimationSkip: plx bra renderAnimationDone +renderAnimationFreezeFrame: + .word 0 + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; renderAnimationFreeze +; +; Plays an entire animation statelessly, and freezes on the last frame +; +; Y = Base sprite index +; X = Number of frames +; A = Animation size (use constants above) +; PARAML0 = Pointer to X,Y (16 bits each, Y is bottom relative) +; +; Trashes A,X,Y,PARAML0,PARAML1,PARAML2,SCRATCHL2 +; +renderAnimationFreeze: + pha + lda #1 + sta renderAnimationFreezeFrame + pla + jmp renderAnimation + ; Jump tables for various animation sizes protectionRoutines: diff --git a/gamemanager.s b/gamemanager.s index 8cc58e9..089ad42 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -33,6 +33,7 @@ beginGameplay: ; Generate, compile, and clip terrain stz mapScrollPos stz leftScreenEdge + stz mapScrollRequested lda #160-GAMEOBJECTWIDTH/4-2 sta rightScreenEdge jsr generateTerrain @@ -331,7 +332,7 @@ endTurnWrap: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; endGame ; -; Handles someone winning +; Handles someone winning. Assumes "someone" is current player ; endGame: SAVE_AXY @@ -351,6 +352,25 @@ endGameRender: lda #2 jsl renderStringFar + ; Play pee animation under loser (non-current player) + lda currentPlayer + eor #1 + tay + PLAYERPTR_Y + lda playerData+GO_POSX,y + sta endGamePeePos + lda playerData+GO_POSY,y + dec + dec + sta endGamePeePos+2 + lda #endGamePeePos + sta PARAML0 + ldy #40 + ldx #5 + lda #ANIMATION_SIZE_16x16 + jsr renderAnimationFreeze + + ; Wait for keypress jsr kbdWaitForAnyKey lda #1 sta quitRequested @@ -358,6 +378,8 @@ endGameRender: RESTORE_AXY rts +endGamePeePos: + .word 0,0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; scrollMap diff --git a/player.s b/player.s index f6a573c..921f77b 100644 --- a/player.s +++ b/player.s @@ -134,7 +134,6 @@ playerCreateInit: sta playerData+PD_TREATS,y lda #0 sta playerData+PD_ANGER,y - lda #0 sta playerData+PD_CURRWEAPON,y lda #1 sta playersDirty diff --git a/spritebank.s b/spritebank.s index e125a68..aebaabd 100644 --- a/spritebank.s +++ b/spritebank.s @@ -2,17 +2,18 @@ DrawSpriteBank : - ASL ; A=Sprite Number ($0000-$0027) + ASL ; A=Sprite Number ($0000-$002C) TAX ; Y=Target Screen Address ($2000-$9D00) LDA SpriteBankNum,X ; Relative Sprite Number Table JMP (SpriteBankBank,X) ; Bank Number Table SpriteBankNum : - .dbyt $0C00,$0B00,$2000,$1800,$1A00,$1F00,$2600,$2400 - .dbyt $1D00,$1E00,$2300,$2700,$1100,$1500,$1600,$2500 - .dbyt $2200,$2100,$1C00,$1B00,$0D00,$1200,$0600,$0000 - .dbyt $0300,$0400,$1000,$1300,$0E00,$0900,$0800,$0700 - .dbyt $0200,$0100,$0500,$0F00,$1400,$0A00,$1900,$1700 + .dbyt $0D00,$0900,$2000,$1800,$1A00,$1F00,$2600,$2400 + .dbyt $1D00,$1E00,$2300,$2C00,$1100,$1500,$1600,$2500 + .dbyt $2200,$2100,$1C00,$1B00,$0E00,$1200,$0600,$0000 + .dbyt $0300,$0400,$1000,$1300,$0C00,$0B00,$0A00,$0700 + .dbyt $0100,$0200,$0500,$0F00,$1400,$0800,$1900,$1700 + .dbyt $2B00,$2A00,$2900,$2800,$2700 SpriteBankBank : .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 @@ -20,6 +21,7 @@ SpriteBankBank : .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 + .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00 SpriteBankBank00 : JSL $AA0000