From f5322873453b0d1c8718f5483b4c4d11fbdf5e43 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Thu, 1 Feb 2024 09:53:38 -0700 Subject: [PATCH] Added victory sequence --- Art/040Pee.gif | Bin 0 -> 174 bytes Art/040Pee.xcf | Bin 0 -> 731 bytes Art/041Pee.gif | Bin 0 -> 176 bytes Art/041Pee.xcf | Bin 0 -> 731 bytes Art/042Pee.gif | Bin 0 -> 179 bytes Art/042Pee.xcf | Bin 0 -> 731 bytes Art/043Pee.gif | Bin 0 -> 180 bytes Art/043Pee.xcf | Bin 0 -> 729 bytes Art/044Pee.gif | Bin 0 -> 181 bytes Art/044Pee.xcf | Bin 0 -> 729 bytes SpriteBank#060000 | Bin 14087 -> 14670 bytes animation.s | 34 ++++++++++++++++++++++++++++++++++ gamemanager.s | 24 +++++++++++++++++++++++- player.s | 1 - spritebank.s | 14 ++++++++------ 15 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 Art/040Pee.gif create mode 100644 Art/040Pee.xcf create mode 100644 Art/041Pee.gif create mode 100644 Art/041Pee.xcf create mode 100644 Art/042Pee.gif create mode 100644 Art/042Pee.xcf create mode 100644 Art/043Pee.gif create mode 100644 Art/043Pee.xcf create mode 100644 Art/044Pee.gif create mode 100644 Art/044Pee.xcf diff --git a/Art/040Pee.gif b/Art/040Pee.gif new file mode 100644 index 0000000000000000000000000000000000000000..7471514fea5d5178690ee283708e2a00edb065ca GIT binary patch literal 174 zcmZ?wbhEHb6krfwXyIpAa{o6FF*GoAqzRsxY5Z=t%iXlJ|1(!H{0BmY?c2BCy?d9T zeD^}1Wef}q|49dm{{)?jQWHy3QxwWGOEMJPJ$(Zh6o0ZXaxw5T=m5=xje4z1uu@z9NG)0NfH_9smFU literal 0 HcmV?d00001 diff --git a/Art/040Pee.xcf b/Art/040Pee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..46c245e9ac1bcea71c2efe2291dc9d9ff9cdb567 GIT binary patch literal 731 zcmZvay-LGS6vuChty-R;>^ARe2EQto6$Z=4O2JFeA;k|L-#FNS zT^oh>;lbzlG%$>C_{2giHX4nBAYh&GedQ6|VTc?nKoZ?x6`DJ~VT=S@gJz(8Xd`Co zTZg`&oQW;Tnq%8~%SRmTV&%luRbQ|3j^#J_+4)74D*33@vQ<-;P1mZ6?&qTC_nJEQ zoTgPTWs8QXIZemq#mLF7SyOpAT1pA!+COE5M~li`udQlU%j8NKQEw`W1NpLL`P^!0 z4c((F9K-N*pGW-(p5Syd?Kw8-RuH`S4ry?%s(SSD6}6|k)I%SKECbOjY2aJLM+2NO zZ;0|V*ZG*?*mi<96P!&jPw+y57ZaRI@G_X5Cu|l#&nDZ01n&~#-}r&wiJA5-{s-|+ hNTu#@A`?SEE%h==xje4z1!SZyhg8$!5RRZ9$<$6 literal 0 HcmV?d00001 diff --git a/Art/041Pee.xcf b/Art/041Pee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..6c41a964a9a875fa9ddc9ea61fef1d948b376b66 GIT binary patch literal 731 zcmZva%SyvQ6ox0I^-^1Hy{%k~H)w@Gi|z##M5xeLNYf+@v`tB(ZCCBmr7NMh62yfF zE-Q553-}7bH*n)pF#adaz!W@_Kj%A_B$Ja^cB{jCy2-Cgr80x%VkO`e=!oLS&mSCY z$ZpL1$LR2Dau%3oIC^Fw78{SpK@hO+T hp)VzKUdF0*Ij{E>=xje4y}LZ>&7Zn&2VyuFtO3?SWDo!V literal 0 HcmV?d00001 diff --git a/Art/042Pee.xcf b/Art/042Pee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..879b069d8195b6f2a62b43050262b0b958095c55 GIT binary patch literal 731 zcmZvay-LGS6vuCat+rZi{hA!EU(gDL6x{_CM5xeLNYf+@G)YOKZKrm0bP|e_APyop zR_Ndh_zJ-{aB&oj|C8oI3Z9#P&hLCAxjBhpS{>d~b$%_&RR$}>lHgO&5yg+6KRDQs z-RQ-S(c#zREYS6E^vpsmHXe_IAYk3eL+uIOVTc?nLMghz8nke7%NPl^4$VOa&}Pik zw*h@ac>`OjsE%c6wvRa4#pa-n~mm*hjjfTSIXjRK7H~uMCd9-{Dc#5;lwCC7TcY@%>cSwWtb;YBXuPJ@ar5^e?WEqHNNdw;|J|5zX zc|(+^xn^UAV>=1nN^ma0Ji&_zUP^F2!7E^Tp0IfUJ)3MF61+!@f8!T^H)h(m_#ebO nAtl}8L?(uSn)EtNiJbIK@qoRtFufcr$L7-+mQ71+kYeE=xje4y?cA)o0|K~`xfZ4FjxZsHw|N} literal 0 HcmV?d00001 diff --git a/Art/043Pee.xcf b/Art/043Pee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7ff7e1e7447ee291842e0a3837bd2dce929da130 GIT binary patch literal 729 zcmZvay-LGS6vuCawOWmB{hA!EU(gDH2Hgb}M5xeLNYf+@v`tB(ZKrm0bP|e_APyop zR_Ndh_zJ-{aB&oj|C8oI3Z9#P&hLCAxjBhtw>rG1oBX<5Rv9cGOM*{9M-)GP{@`Fk zc4HPkMu%UMv%oaN(K8FN*myh+f`D}=50xi$haqyT0Hx>#YtX{UEn_6uIy46zK$|gB z-v;yz$riSx=uWF;w0*?UE>=%nL-UO~@7jKYpI=;7sgjRc?UrU4isjmM(fv~N{C?Bm zp3}7JrEJl(bf@XKycjvfwQ3qKM@ucCT>Gc2@@P@H=XEsQZd+U}BkIpYaiCnaZJ*n1 zyqkj+ChOB(n#@$nF6 z%p0OS&2=$mIJT4EtpsNi%oDtn;N=9%3C@A(dBQRPdN$cUBzTV)|Hd!;Zp^fA@jr-n mLQ1;FiA)RuHR*Ml5;^Ie;sJYOVR|K2hRNxW<a)R^# literal 0 HcmV?d00001 diff --git a/Art/044Pee.gif b/Art/044Pee.gif new file mode 100644 index 0000000000000000000000000000000000000000..b904b1cbd51aa874f820f7fc5a582a16f96580e0 GIT binary patch literal 181 zcmZ?wbhEHb6krfwXyIpAa{o6FF*GoAqzRsxY5Z=t%iXlJ|1(!H{0BmY?c2BCy?d9T zeD^}1Wef}q|49dm{{)?jQWHy3QxwWGOEMJPJ$(Zh6o0ZXaxw5T=m5=xlF|x>FJN%*O89fhYqBCI)K&lUHLg literal 0 HcmV?d00001 diff --git a/Art/044Pee.xcf b/Art/044Pee.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c064ab2a642404a9e0d128aed7cd7b81e15fac14 GIT binary patch literal 729 zcmZva%}Rt&6vvM;R#QpetyqZm`B1M%J-^)%XSOR&4Z|eZWFZw^fi^h4d;h{g7j)@P zz4g~WUUpK~&H4|NVbNePNYj+MFSq;m=*}|aXbMvJ1~bse))f&8HVajtHE6zI?wf-? zA>G548g|%jJ3)dt-^KKHISnuJo3i_{7AL)yBjT{- zH|wJ{*R#V`7>Qc$8j*Ko2_s)-9p$5c%BIK{m(SvkW&43AOaoExPgDerlfX}eAK1rE z%vXf28#{@}`%CMO_R^h}vnrK(n;F-;|1%V3gH=1~>J-=}2n3Yc{CwRQ;r^t(2y)Q0|V5f^@p% zVQ~eq7Liv%*@Ex*Z}FYvJ;-x{`##riP6bX^jvV&+Y>!zDSr@a2v-C2vF?TWvF)d^? zVm!%^%rLo;Q*>fps=amQ12*YL3X54Z`8flcSr#t=(@PE+SZ6vg5|)@ekyqO-G?YwJ zx|*4RR?+E|M&-D$*zbCpjf@Bda0gA0HlC9F-c` z7$6sX71241x=K3V{ij2($;;2L1&l1y}@}1L^`?0?+|Q0lxrQ0F$8s y6_I#lvl;{TAhVt)z5%m9B8~&ITq&#xlVB+Yvn(|h0<#1&9|DsuD+{wtHvs~dGcDKv 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