From df4be961d2e879e9d334610cba67d11599a2e5d8 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 12 Dec 2017 15:39:32 -0500 Subject: [PATCH] mode7: working on checkerboard --- mode7/checkerboard_lookup.s | 17 +++++++++++++++++ mode7/mode7.dsk | Bin 143360 -> 143360 bytes mode7/mode7.s | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 mode7/checkerboard_lookup.s diff --git a/mode7/checkerboard_lookup.s b/mode7/checkerboard_lookup.s new file mode 100644 index 00000000..d5649032 --- /dev/null +++ b/mode7/checkerboard_lookup.s @@ -0,0 +1,17 @@ + ;==================== + ; lookup_map + ;==================== + ; finds value in space_x.i,space_y.i + ; returns color in A + ; CLOBBERS: A,Y + + lda SPACEX_I ; 3 + sta spacex_label+1 ; self modifying code, LAST_SPACEX_I ; 4 + + lda SPACEY_I ; 3 + sta spacey_label+1 ; self modifying code, LAST_SPACEY_I ; 4 + + + lda #$11 ; always red + + sta map_color_label+1 ; self-modifying diff --git a/mode7/mode7.dsk b/mode7/mode7.dsk index e9ea42bcbbcb3b65d47473913ca73d42e1f3630a..15e6f26c8c8e8a75f4c6b3f8924cbc47c4531506 100644 GIT binary patch delta 1129 zcmaJ;U1(HC6rQ_DYus49?#|83hL}w0n(o@9rq$GtVzKChfjp$pqWI!9vXHxJ(@m;L z`h&aM_E<ZMBEA^I|0GqgI!RueF)johoyZe^eKuap@k)G8l`Nq>Ajovr`Go6 z%*=Pb@0@SWiOp2SW~wf;1);fbZO|XAXNNHx$1Fs|o}G0fc(2ZN35$33dBvf7gYWLe znV+(6va=pl11o9_mX!wv_VI)qsYIVLL3O&Bg#acfCq;^Ta^YcCe@_gbS)XVdPW zJDu-X>!0lWKaRQv}r3cjqQGhIQa}Qv28vN%d_S` zMj?h4Uvy0nap|PbHD`#)T}E`yPzx}ss-QbqOv%xXRT$+(Z^vqjOJ%u+)2##=r|n2X zIe3}MZVRQ-$Ok7Bf~dj}x6fD`n;<6#VMrdOR#j5bMQ7GyK1DWFB?Rs72iU=7(>`;orG|CX*l77Cwoh*rx0k%t*KpI3oBDGq*;#+) z{wtg74S!y5oz2U9u)?lfX9#oPrFHd&db_jU5MO`3#qErH5sK+Ih?pFBUHeqrykF~a zKtBX*&|XE*WTS@AKk~PqH%cAP8$FOSzbvFmyDF?L&DojBelgl)^WDP4d=kl)(~Yx@ zKW6`O(8Spa?JeJ&(L*g)CXmgWDhVwr0L@9XpUoLpzJ0J!V;9g!X52#O&{!(7XC!PP zew@soL#ML8=RPC3K9ZQ+plyrZCVZaob(HJ0W0l_}{13w2lzXX+@;u=M!fTzx65&O{ zx6q5Rw(IEB3OaKgjjf<>xSy8a{54vJn&`#&L$L87xa|>d7o`eW2)-!AL{qc&v#2Z- dueb^WhW6dnj*t_JODSA*-a{x_#V-c$ep delta 1132 zcmaJ;ZD?Cn7{2GWj+&JAE<5+;WUl6P#+o}8EQM;V)(_kd3;B@=O3^=eSu=W5o$17O zPFWJ%J7wk6)gxS?3RQMWt|+t&HX;l*gwl=)nTUemHen4zA#{mzNWZ){&9;iwKkqsB zdEe(e&wZcFwT8^KhH1JeH+wnqT=goqJyc+N1ye6?J=VhYn>*wR=6m;S-2T3~tBh;`rP&h~6VF8&8O3d=>~AAinADy=BSzdF8Mj%a-5 zaWx&$>_r&08z8Q)=EP|48jP}5+`HB;+XWWF`FH%#Hs@55D8VB{#7!xem$t)ETY|KW zA?uu(E*c}phhaqQCuT!+dn*L8b9tv`h}#=**GkO#fAXcS`5Nb_f3*` z9R^P%UV~&UlnrAkXKZMF%(~Ex{Cgh5!es4u-3>_$y3C}*JP29#JQi<2hV@|A4M_~a z(1}C}QeT8clD&xaXCRpqDHg@n-Y1a1(SLG_9?a!`_p_I=wa<&XS|~2YMSMQISQjn$ zjLk@qjU>aa2i;jrnD#9j&RL?v8vRgn(AteZI`=UD^wzdUS>3(wymFsC8SPhjuw&QO zel=89I*Vmd*6SR#xXO(~4{hmJ?dPKXJox8>9yf^!tmfbK^O-{(@&%P&?Fjf>Gz4J> zbz;&DdRgVlo1yLnwW_(G4nWB`wv?;pxU?Rqo2NkoT9=3{EPZ)nQWEXsZN;{Wg}+?X zny5oh2O`=4G3EJip={Wb&~AqzGAX@4BiiX#Z#N<9vKKwezdO>=^Z>c>nKV}Tt+bPr zFtKJD(XR9dgpCpQHDPB+?;0B=Y@D!Z!tz9<*(Zd3PS|<3F+tcV!oDR_nXYrv*oySg zIqBqz^f9|gYTxW9QiHxHQ`tM~j-Vg7;^{kGzm!tZ^x3x* S^m7wxd_NXMXJbKmTKOAT&EDz& diff --git a/mode7/mode7.s b/mode7/mode7.s index e76ce710..beb7a27b 100644 --- a/mode7/mode7.s +++ b/mode7/mode7.s @@ -1,3 +1,6 @@ +ISLAND_MAP = 0 +CHECKERBOARD_MAP = 1 + .include "zp.inc" ;=========== @@ -963,7 +966,11 @@ screenx_loop: nomatch: ; Get color to draw in A +.if ISLAND_MAP=1 .include "island_lookup.s" +.elseif CHECKERBOARD_MAP=1 + .include "checkerboard_lookup.s" +.endif match: @@ -1055,7 +1062,13 @@ done_screeny: ; this is used to check if above water or grass ; the high-performance per-pixel version has been inlined lookup_map: + +.if ISLAND_MAP=1 .include "island_lookup.s" +.elseif CHECKERBOARD_MAP=1 + .include "checkerboard_lookup.s" +.endif + rts ; 6 ;===================== @@ -1091,14 +1104,16 @@ exit: ;=============================================== ; waste memory with a lookup table - ; maybe faster than using GBASCALC? + ; move this to the zeropage? gr_offsets: .word $400,$480,$500,$580,$600,$680,$700,$780 .word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8 .word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0 +.if ISLAND_MAP=1 .include "island_map.inc" +.endif .include "fast_multiply.s"