From 82f829befc668d91f878294e22cc6289193ab21f Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sun, 21 Jan 2018 14:21:44 -0800 Subject: [PATCH] Groundwork for optimizing terrain clipping in merged renderer --- equates.s | 2 +- gamemanager.s | 85 ++++++++++++++++++++++++++++---------------------- gscats.2mg | Bin 819264 -> 819264 bytes 3 files changed, 49 insertions(+), 38 deletions(-) diff --git a/equates.s b/equates.s index b0c19a1..17d2234 100644 --- a/equates.s +++ b/equates.s @@ -39,7 +39,7 @@ lastCompiledTerrainY = $75 ; The highest Y value that the compiled renderer must ; Terrain constants TERRAINWIDTH = 640 ; In pixels MAXTERRAINHEIGHT = 100 ; In pixels -COMPILEDTERRAINROW = TERRAINWIDTH/4+3 ; In words, +2 to make room for clipping jump at end of row +COMPILEDTERRAINROW = TERRAINWIDTH/4+3 ; In words, +3 to make room for clipping jump at end of row VISIBLETERRAINWIDTH = TERRAINWIDTH/4 ; In words- width minus jump return padding VISIBLETERRAINWINDOW = 80 ; In words MAXSPANSPERROW = 15 diff --git a/gamemanager.s b/gamemanager.s index 7f0e59b..8d9427c 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -31,7 +31,7 @@ beginGameplay: jsr generateTerrain ; Create players - lda #106;#56 + lda #56 ldy #0 jsr playerCreate @@ -48,35 +48,24 @@ beginGameplay: jsr compileTerrain jsr clipTerrain + jsl renderTerrainSpans gameplayLoop: - jsr syncVBL BORDER_COLOR #$0 - ; Render the terrain if needed - lda terrainDirty - beq gameplayLoopKbd - BORDER_COLOR #$3 - jsl renderTerrainSpans - jsr renderTerrain - - stz terrainDirty - BORDER_COLOR #$1 - - ; Render players - jsr renderPlayers - -gameplayLoopKbd: - lda projectileActive - bpl gameplayLoopShotTracking ; Skip input during shots + ;;;;;;;;;;; + ; Update + ; +; lda projectileActive +; bpl gameplayLoopShotTracking ; Skip input during shots ; Check for keys down jsr kbdScan ; Check for pause - lda paused - bne gameplayLoopEndFrame +; lda paused +; bne gameplayLoopEndFrame gameplayLoopScroll: @@ -99,20 +88,42 @@ gameplayLoopPower: gameplayLoopFire: lda fireRequested - beq gameplayLoopProjectiles + beq gameplayLoopRender jsr fire -gameplayLoopProjectiles: +gameplayLoopRender: sta KBDSTROBE - jsr unrenderProjectiles - jsr updateProjectilePhysics - jsr protectProjectiles - jsr renderProjectiles - jsr updateProjectileCollisions - lda turnRequested - beq gameplayLoopVictoryCondition - jsr endTurn + ;;;;;;;;;;; + ; Render + ; + + ; Render the terrain if needed +; lda terrainDirty +; beq gameplayLoopProjectiles + BORDER_COLOR #$3 + jsr unclipTerrain + jsl unrenderTerrainSpans + jsr clipTerrain + jsl renderTerrainSpans + jsr renderTerrain + + stz terrainDirty + BORDER_COLOR #$1 + + ; Render players +; jsr renderPlayers + +gameplayLoopProjectiles: +; jsr unrenderProjectiles +; jsr updateProjectilePhysics +; jsr protectProjectiles +; jsr renderProjectiles +; jsr updateProjectileCollisions + +; lda turnRequested +; beq gameplayLoopVictoryCondition +; jsr endTurn gameplayLoopVictoryCondition: lda gameOver @@ -127,8 +138,8 @@ gameplayLoopContinue: jmp gameplayLoop gameplayLoopShotTracking: - jsr trackActiveShot - bra gameplayLoopScroll +; jsr trackActiveShot +; bra gameplayLoopScroll ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -229,8 +240,8 @@ endGame: scrollMap: jsr unclipTerrain jsl unrenderTerrainSpans - jsr unrenderPlayers - jsr unrenderProjectiles +; jsr unrenderPlayers +; jsr unrenderProjectiles sta mapScrollPos asl @@ -243,9 +254,9 @@ scrollMap: lda #$ffff sta mapScrollRequested - jsr protectPlayers - jsr protectProjectiles - jsr renderPlayers +; jsr protectPlayers +; jsr protectProjectiles +; jsr renderPlayers lda #1 sta terrainDirty rts diff --git a/gscats.2mg b/gscats.2mg index 8519bc0846784ea739e2524c63f048b73dbc1f9b..97a63145e7db398cfb2877d9b76fb4f531f8b48e 100644 GIT binary patch delta 2119 zcmZuyeN0nV6u@3KA<->or#B~Nb zw?^W8!O7yY1ET1VKDURPnsiM@Buq1!NkWz-GdeSLo5O6F>HwKK*tva$x@508@BZGo zzw^7N_uP+u->QD!sxKBNr>{i{X1l33IzW=a$x5jix zul(H^d^qW1*;s{K)q|It3Kfi6v-)pQB%d?l7w4e~zdpRwEvr2^r@4S?BRUi%Z>)j_ zPa$MGWHO1mav)V%j_U8gFAL2WOHe{5P-Pj6bt=nK0UvkV{S*a9e|`JN<>)|y70>Sf zl+WuSj48h~7=sCgo6#GwxXP0VDODD~{sRN?$n`;-iKpb&Ahu^rrHzjEp@}PoBdvvu&4T3%#Y_GltNH^Z31u zZT-nFH&?2%kTpFc$%5kJ9AmNoDCih#7o>JU4G500PC@Dv!f0ZsQ?Qy_TCTPW*85O8 zuM1|@>w;)ogGN39=(GT}PK2plAkZyH-2(82P7BsWYP&FWLg1eT&QQ0&oAqj^Fw`Z; zm&$RbOegTdm0PKGiQ~6Mzuln>qLUoDujl7SzCzYC)7id{-?Y`(MMTc}bf;!!ywr8Q zlI#dwoWM3NMO!eOPgim&^y5Q3pL-+Qsn-urT>C>>YP&OzvpE{4xyc;YU`u_U^OZ?!R)ceO&33A-cp2a36`k}7 zHvriovISK)l5C6OKu~_-Nl_f!Nz4HIJYps#X7WxQd6Y&rr;!V(naFU9{DfgM-R93_ z_m5;nji?pc0UnkR*+$j%l-H3+t(r@tIx<$P=CO9VR?Tl_z(QNC{Uc9D>k`qaX_=pZ zdVG+F=8gjTG!xG;)h%q0fm(GfXqND(il6fGR5Bl;>GxzRp zEy=$!*!TlHOYiq}8jcS+z%u|c0ALsmfCpqWj|RY#AM*fs5R)pWMS#ocg`fXS#&TX7 zw-^r5z&KT>#lR$0pNQ_q*5Su*tf^tox;^38a0r4 z<_JQ=D+c>H)I2-}?2HVJZ36%SW(3C#dv^+?M_}9(rvFbJ8)Aa2u4nC-G7dY3^loJv zg4VH$Y@)0jrPP(Ud%ywn%Pta@)O;;w_BNTKBs+d}Krc+t&AJ$YtyMexZ{8F+hxkk- z3HeCm+>F(x=#g)M+9X@7+;ebSfvy(!xK2GFM)e&B#FEFF1mq<*rgIA`d}0u?3HCiO zI{qF94xiNdz{r-hw1v7L^+c-SacUC{2ripR>bPq~enU7O9G(<|WLK)T)!RO5SbV{y h_u_*a(m604SQ1z=m>z5%m;uZPW&%s;*^q8-{1-~4HIM)R delta 2028 zcmZuyZ%k8H6uG!Q<{dgCWYIUGtS*K*WQMU0pNI{qy3`fMedUi5LkJMk zB5Poir%paRyI~?`j6ULvoBPl-k=QuR=q6c1_F*ymgKlvU$5vfXr^D{NJ_;_`YtFsD zd(Q8idwS1(=SBU+QGfAgYqVL#>&!U_{etug7<^Hiw=b4YpKaoR9*PcX{w*fII~yE4nGc3 zF(YLauZ>XkKCL&>#MpQ%5;DD!KNx}WMiPu*^x`Zpal1|%7N1bW%LpADaD^^T0(N(5 z^l>=Kb-F8VxFjzV&`Aj4!@DJ~Aq_hpktHK8**%RAtCLz7d{iajl7h6(0J{IM`}d^c z;C}I&PpN^7<5hDmao;FaB%TW`hO8F>VT+3m`I_t%g-qn*I9%Z zX^SPGdryzc#Zw`wAb-j{j^?lFPnIUO&CIBX%o)~u2{0CjUvyJa`I3j+8! z!N&n_vYWH6mfN_=4vt+3oJk+YnsjnIH`&FBmv>PG;_-PZpV}{u!SqbaL0f$;kMNjZ zb1s?eB<>q7ToS%9PuXarT5H;`aRkE)52zLN0kc!5i_d?5N3b|=vFFfPYTWFMTV|#; z@%sbWPKgzAoc^t#D@?>KFxhxEnC+YZdtwbNE8$sGDICkPIexQ$AX{vHL~W*5Im6Lf z>MPUQ4W7-Oa!;-2uxG$?-V^sc^sK9^sq3$c*8Nkrt=?ZhQNJ=QWYVP?_(#_bbbf}} zB6-C-20E|eXe0j4jGr@ODGUEV!NtDCUf3L+E=(}!1k6`hsJ&c85?h}(X_ia{NPiPQ zFb!3S-9~zq4{tKbPGWW9w~1U!;ydJW!fNoB4f0Ns(BS(Ga)mNy61h^DZRCVCI*n%< z@lh{^M1~vj?_SxVn1&nV8pZWegIoq{2a6nI@8W|Eep&9}mBXnF z5?MkuIbTiiNz;&n zxQD8V|1R7gp^Uikoveb7;D2?PAUDB941pFK|1lEw6F4O)sYJmJlalc!lj2fE+z@CC z_dRc147hVq^LbiP0XtN}c4Cc*?mDRE{8yfm&J|Y4_P1A5yqLiiRsj$N0PLp%&_Ebf zqXN)WrZfN^r$W_|Hvrd$*(~}63YuMTfykNOV3NpMuK}K54-e}U>g8o)3Mnh-fHLDX zjE$GN0(#H~bhyYF4DhPbeBdc%9}l?&kMToJqV@%Ofmk(;U%hf4Z{s1`J{~F)Lw>JM z8PZ~F?%@TscESQ-H^vUp)4wx}jsdBcmyu zl-QC(=kI=>4?!xS@q3K@?*-tn8E5V>%Iy|vh#T@=&NH$=Y`h-97a~dQvsM()M;4tU vNj`-4W~uN0;D^m?zHsYWslM$wG>8Ty14Ij=1IYx@gD@Zl5aa0f98=4`a7Y9@