From 32c622afbe2e66f1bba9613fe1f83bf6ff56ee43 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sat, 29 Dec 2018 11:33:08 -0700 Subject: [PATCH] Support for local and global wind --- equates.s | 2 ++ fan.s | 42 +++++++++++++++++++++++++++++++++++++++++- gamemanager.s | 3 ++- gscats.2mg | Bin 819264 -> 819264 bytes macros.s | 9 +++++++++ projectile.s | 34 +++++++++++++++++++++++++--------- 6 files changed, 79 insertions(+), 11 deletions(-) diff --git a/equates.s b/equates.s index 264ad45..582fa32 100644 --- a/equates.s +++ b/equates.s @@ -63,6 +63,8 @@ JD_VY = 138 JD_TYPE = 140 JD_NEW = 142 JD_STATIC = 144 +JD_OWNER = 146 +JD_FACING = 148 MAXPROJECTILES = 3 diff --git a/fan.s b/fan.s index 2778ee6..3d9d4ec 100644 --- a/fan.s +++ b/fan.s @@ -5,6 +5,10 @@ ; Created by Quinn Dunki on 8/15/18 ; +FANRANGE = 100 ; In pixels +FANMAGNITUDE = $10 ; 12.4 fixed point speed delta, in pixels + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; deployFan ; @@ -36,7 +40,7 @@ updateFan: SAVE_AXY lda projectileData+JD_STATIC,y - bne updateFanDone ; We're already static, so no work to do + bne updateFanWind ; We're set up, so apply our wind ; Wait for fan to collide with us as it falls from the sky lda projectileData+GO_POSX,y @@ -70,6 +74,42 @@ updateFanDone: RESTORE_AXY rts +updateFanWind: + lda projectileData+JD_OWNER,y + cmp currentPlayer ; We're not affected by our own fan + beq updateFanDone + + tyx + ldy projectileActive + bmi updateFanDone ; No active projectile + + ; Calculate distance to fan + lda projectileData+GO_POSX,y + sta SCRATCHL + lda projectileData+GO_POSX,x + sec + sbc SCRATCHL + ABSA + cmp #FANRANGE ; Check if we're within range + bcs updateFanDone + + ; Apply wind + lda projectileData+JD_FACING,y + bne updateFanWindNeg + + sec + lda projectileData+JD_PRECISEX,y + sbc #FANMAGNITUDE + sta projectileData+JD_PRECISEX,y + bra updateFanDone + +updateFanWindNeg: + clc + lda projectileData+JD_PRECISEX,y + adc #FANMAGNITUDE + sta projectileData+JD_PRECISEX,y + bra updateFanDone + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; renderFan diff --git a/gamemanager.s b/gamemanager.s index 5793d96..6752d41 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -384,7 +384,8 @@ projectileActive: .word -1 ; Y offset of active shot paused: .word 0 - +globalWind: + .word 0 ; 12.4 velocity ; Position of map viewing window. Can be visualized in two ways: ; a) Word-distance from right edge of terrain data (which is in memory right-to-left) to left edge of visible screen diff --git a/gscats.2mg b/gscats.2mg index d459b972abb0de687d53a86f83c3fc108ff2aaeb..d2c1b25ea6e7af68ff3121b96f28c58fca32c6bb 100644 GIT binary patch delta 1576 zcmY*YZ%kWN6u<8RkG2oCF1qElOX12yP&cj9#2P;cj4BM+Ajsxwmh^+0ukZRw;ftX$ z;i;)h)TbXRd+X*VY|in>n*GCdFSCeCDrqJWv&0xaEK7{ZFpGPOEQC$+Jh#A7ZgO(Z zJNKOPJAZy}Qr$kOZa-gLR(ZU(NQmt6`v7<8MsO0)SWWVkr!L(PIeL=vxEA@^n{e}MAnwmp1|B;l#BX3Mkms~mB4PTJM9r8 zhtc%pkOS9nr-q)zzAZ~JZ9;M-qGIG2(k3N9HEbLF$%#sa_+cd(7@|0-ZqKgqijyefjKuy?U3USq_DY{PLE60{MEBpB>z9)k?>@5a^NqIyR_A| zz4>?0`9I8kbfzL;wo(?>O4TV5beK8QuP)CVb4>+*fJskaBs-BgU&HtY{bl}D;vEaE^bReq454aPfY-v4^O7rPrF zsMw9^;y@b(HWd7(0hfKTwVdRdRHtqDoffM`pj->IT^jWDSR0@-B*o0J0FcWTPFk-bCASedb~~u12479Qg|4l zHRKi}4wT?me#3;LXhT!FT8+02{@!v~T>n)|V8%y?}N$vPQU tT;EFYgz04IM-3pd4LUYsZBy+7ZTb)uJB-B&qcBdKDlhG1v$KSBrVr*N zTP~nujb)0kEHW0^Dp|(VmLd@T#Gl%sMN92NEn^)<`vZkZm+7`nX~*>3B(!j6PVT+u zeD~b*edlh*#O-6^_D>4ZGTS!iJ%!LCWF(8GXVY?DT;ZY7GrRW}@7cBU_1E^iV7DWL z3=`;Or1{ViEWT*+r{(^aD(?C0eA+cblP^PR5;L-~F|*&8N%`KB-cF?~O;v_Rl9Qp+ zq+M(1FZ!Kr)b{kJ2ZhLoreKc{Id8IXW)$odB8BO}J|VI>Jvbn+KM4Iz7pQ!S8kRo2 zNOi(=u#4JB4fnTnQTe;5(f;09>ixBu_q^;&X7+eCo0`pzNo6r=pXFi=>#t@ZV69;{ zd&50$&CuTCW=o|jF^b(`;P;YIpA#|hc1w8JJzj>i!V5V?vn}ZJYI}}ahJqit!LMaq z$gyxO==Nx{k+xE$&0FdG!izP*VYjKi+QOYh!BIEds>Wh~XU}Dl8{f@jt<5~$)I!lt zb0YQcxe%_pZVwMjWfWaZVX2v-i#FAHR53#~@+v~IiI+2Yzq_hr$`x77PreeV^#sqC zMe3vliZ0l+nrCl%iR%d$sq+-gnvsk={>3G@maabG`ro1H!4zvf_aXNS2Q5pElBrIF z&bFG8BNVBX$~Vw!3WkNTSWMd=?h)i#PqNQ0~12>yBl zd#DmfC!CdUEOUYk31Xc{vgFg5f!6Ao=@c|Mzr?rJV_!uyqQ#Wb9B(9pw{Wo-s0Ym) zN1|uBS&kWasGl?&SlVA5_tNH_aAG-ztS!fkJTxMXtMiPTkv-29$>QTQ_nJbH(}HI9 z2iJRnC#iz%^@@-Eq7KbkDK5L)yRud&vjX~NFH1CYKA+yg)OvDr6Wa|NX*MudL(=K& zS|6F`)mjgT(|6#~fSdisDitZflz;u$QhZyM?i zQ|w#i)6nL%Y6E0V_}HHEMe$ogV^N$anUaP!(&m7(W@X)wFQv4z1~lkCN&45lEGhYD zazI48Y5X#>TSpoMksZGrGh0SZ3gS8vSVaPi_#5%k;)9VB0^3nO(kN(#U`I_-!xbDP zHlI%0cXN3Wgi=cBY)!<>YYcgrW*&CS$^ebrRq^8D1unJA6dKu*Ui4S3)LuYu%&+xW zI3ubzB)^(^Px=%6Vmf6ZLvmu zlZ@Y`rpKels5&# z!L3JmYBY+^sqzUts?JZ~A8}M^w`nNAWJPhi(qTi{%;+@kP_EdJ#>ggoMY&_svKga@ z?4KUL{elDs6I>5T>$-dw_|iF~$_&a)aPR8Q)MQ zlln|5ca!?uRb~