From 4edd8540f503ba4e5237d315f0194c28b7e4f850 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sat, 9 Jun 2018 20:29:00 -0600 Subject: [PATCH] Proper inventory rendering --- Art/Bomb_003.xcf | Bin 0 -> 820 bytes Art/{Block1_002.xcf => Box_002.xcf} | Bin 723 -> 810 bytes Art/TestPattern_003.xcf | Bin 841 -> 0 bytes Art/bomb_003.gif | Bin 0 -> 145 bytes Art/{block1_002.gif => box_002.gif} | Bin 171 -> 196 bytes Art/testpattern_003.gif | Bin 90 -> 0 bytes Makefile | 2 +- SpriteBank00.bin | Bin 1835 -> 2009 bytes gscats.2mg | Bin 819264 -> 819264 bytes inventory.s | 24 +++++++++++++++++++---- player.s | 7 +++++-- projectile.s | 29 ++++++++++++++++++++++++---- spritebank.s | 2 +- 13 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 Art/Bomb_003.xcf rename Art/{Block1_002.xcf => Box_002.xcf} (79%) delete mode 100644 Art/TestPattern_003.xcf create mode 100644 Art/bomb_003.gif rename Art/{block1_002.gif => box_002.gif} (68%) delete mode 100644 Art/testpattern_003.gif diff --git a/Art/Bomb_003.xcf b/Art/Bomb_003.xcf new file mode 100644 index 0000000000000000000000000000000000000000..4ee2b6b725312247a601e42063b7cf86b0b04bbf GIT binary patch literal 820 zcmZ`%%TB^j5FL;=(jtm07k7yZ3`D;GO^Asm{z55jZG@JzMP%pFrCXLJ>cSrôO z7l?ZoegGQqOlh@7oc46iJu`DV_hFdbp14qTabBy{304dchmQe!JidMXz)P2OrLVn= zcHf^4Cb~W!Jp-S)O~in0012Q3YzCb3%E)iR z7YwviRqbw9vpkIbE=v23rg&Og3{3A-G!KtYI8yXe&8}i-Rl_mcL3WHPt~cyx!nHeQ zdplRr4b|@0j;Q#q>KH9W)OKpVEg|(Fw2ji%lF~3P{wG{|;r0~OvHwzrfBf8h+`L?W`M9}ws7dni^3^jk{09Jh(il7d delta 21 bcmZ3*cA0fT6(ifm>HsE=dPW9*ApQ>kN$LhJ diff --git a/Art/TestPattern_003.xcf b/Art/TestPattern_003.xcf deleted file mode 100644 index b19dd914c83878b77775cc091b08e9316a4cf0d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmbVKy-ve05Kf}XDg6;Ce-nepb_hzv8x*990f|>gQ`@y@k}64|eFGLG){d-f%)9~< zJFmb70)Ys3!A7Yl3nzWL&-dN=PCg46PUtM)^vv_R2AHE@fj0rWfGXgEx9%7FPj`op zoac)hBRBFqhjg{=j ztsq?`b)a;xqEzejZ-S+>bm9jx611y(L2$k*sABFkk{OjzFk&gz$DF4u`xy|ce}}#! z%cb}Z%FGAN!0R32^VfTRa4M2`8WqomYegdflyQZ)UgWr)HO0XdtH(GRZc+1ki8o5T zS>o%!@m_5<5M8f-hMol^>ry4^(P0+rdO2p@;@Kfh+a#YhsgZY^5cF?_2MWTg<`wd+ WDJcIxy_9Z&`*lz4KTvMi4*3Eo8G;c2 diff --git a/Art/bomb_003.gif b/Art/bomb_003.gif new file mode 100644 index 0000000000000000000000000000000000000000..46abb09c97f475f646dd94dace56b5238635b738 GIT binary patch literal 145 zcmZ?wbhEHb6krfwc+AhR1^|1nJs1E0 literal 0 HcmV?d00001 diff --git a/Art/block1_002.gif b/Art/box_002.gif similarity index 68% rename from Art/block1_002.gif rename to Art/box_002.gif index e01aebbbf478186b91a69ec899a1749fc232a312..6113ec66af5bc012453d46f5e8257df9fe55b9e7 100644 GIT binary patch delta 67 zcmZ3@c!Y66hYc@-4g(Mf03idb&V$W8DVcg+tJbY<-c<1F*hinu-_}0cb?Ei}=m}

#IgNKYC`Cx88IsQ(jf{EJ|gE82`TgXn(UM;b4;Cnxzens>__xO?sD{kcBNAimKlu6d40_tQmS9x7%@ujm8O z!bM0QHY>Z_e0SbhJGRk;GBO(*B@661B`ti|Bb;Q&R@`?B1tNE~nX4_N ziP*SE*ce7^oKwP><}($aPl3-2x0G=8FRJ%BwBIi;cySELv(OFy*hE^RG&QqmHOJo^ zMr3N5(TG4)U3F@%T6%iicTgg0PAMz%D7Z>_rfHS_p$U3Q0|-MCx16$zFnU|qTk}B+ zlR-O%h16My5xbE>JcB`vE*ruq%y2kHp@^gqRCF|f*z3#*{0P3%>;@Ym1-U}ngPodH&6l&1qN2e!rKupw-9osr)Nz&N8_srs5)s;h^8s@hu)%E#J5#u7aSO#7rt@JUhC>gvX<((GOm$5M$n z4dfcB*>a`%m7Z(Ett}-(Xf0z1b6N|4a*@G}2DM-X>@8QR%lbsqV0@8)udf2kQ-8e* z78s0G7fr>)#)QIf$n(t<1Hx6X$}K3O?>qjPdv?6(dM~J>t4+-ppRkDd2bcv;slPdS z03uH4;IfE<9JcidY<(%5gNR;N{eGH=IG`Qo(a}7rUQZ41s>5#4pQJFLU8r_SJN@!V z^$>y~d1ISJa#*C}0pbJMb3)HC>N%&M#5;*h}Z0#@%+12bq zc?0G5xcYp;3VtHu^C>3mXa*-?j@_P5X*U=^D1M^>6JQ>Bk1(y;wZbeMfdYP~e21cU qDgqY|0p{Om;a89tfe!(eeC&`Z&Vo{hvWbjb#ri8bh*jplGX4!sem24Y literal 1835 zcmd5+J!lhQ7=GI%4Y`xtsF1}~Tmr3Ah8|oxIaFv4KnICzY<6(S@G~MhKRL8JaN8g+C0yGAwc&~Nj~?6~ zP&^z;!j1`QrNoMdPbX;kJUAJ7M(`rETTtADunCb5cTW-lb_doF>WrHE0V0F6c03d3yop?y1P$kwE9K!<+z%0}ME&#bCmW;*YaUC5H-H)F5Z35DgkL z-)=f~L2KB~R$`5Qs-GKe z#TnB~Pdhno&yCGHZ+AAB-xzApM>hZG52j8>9gM4vtwbEkW}MOHcn)z!{A6%N?7sn$ C@ofD7 diff --git a/gscats.2mg b/gscats.2mg index f6e5e1a7b1aed006a1483caba43bea19e0bda004..d31b176ea0eef8f359dd01881f807aacef877634 100644 GIT binary patch delta 2515 zcmcIlZERCj7(Vy*_O|zS+l57Ov3?XK;)o=LK~Sr%+Rn^~GS=0|hGa$)dKsF)Bn0@; z$q6xm?1wIT=_qiw+jhI%1{!|MtvcsIByM#We`qKYHweba=xV$Kfra{>bK5bA@t<8z zdV1dHydTf=zGtItt4G^bfBLXB{OvO5JqTSwcCum73f~5Q%?r=J`f|-Gw;LhEpGE=- zN$4)v<9EZpLrvLJr2Ey`TAF(Tlu zDot^w9JZfXWo33FBPqYenH~4H%0m&MLSBU0cgaIev3<8Z^q|v0;I!>wW zht>^F{K-7MWN~hr%PzU<%UnN}K7#Diu1m@ik^Q*zwH8-Sc7ai9aWyKRi|qRxIZ~c= zuueN1Z!Q7LV6%g*Vx1PmAP%zQfj{zDjYP@FF3pq(is$)4n_O7?!6gm zu5BC$gce!W*DFiQ*f*HdO1O;O^1yp7uG8DvuDSZ@_f}(mB4(0ghbZGrfGp$tiE^=47*9SX|5uKlGZMa{LD#{S-|he@vF(>t_M zJix2_mv@85#oG^8$ad8G+Z2nw|AQu#X>82sEUIv=WN#j!w|a**$$QD~y@TFG><>(b z_b;KWoPULT#^Pf`%rSHy>iGJ`z0KLInojGp`6iD%YH{wvnr5lYA)zdbEf-x{yiyXT zaD2?|k^PMGFg~V5sdWxVHMJ5+LV60T7hU=!X2#r&8H&=5R^}w3YziOE7&DU{CvPkd zCzI-MQcs?MAU5RGQ>oh8TH{vABljYwBa>E;u1XO=1K@vDC^ItOqfpbx~^?a2g>hKZP|Q3TU0ju(%se zZetGUi_ud%0}61w&Hm5XY~~NGia`hxE{$1@BM#3_VU9Y~3J&#|Nz7@n0{JmoPkK_F z$$I2A)=3O-J&$Abl2uF4j1%+O#0tXCV2frgNNWY`EG`DPI|I<3)4B^;bwdENA7YfC zgW#qsK#g-n4kk?wW^s`x!Xi^}zyOODnp2UXe-PY7OLk+6`YjyOtU?Z3H5<6A!#2u79lpZ?Xrys~;0P}@jMD+V z8AHy4^PQh1o!>%A9f7_uu4JLZfc#mjb{k zOgvmV3YWG74c}#2gAw!_m$!K29)g0fBumK3@CS@4zY)G>_^wlG%hIwDdHj0jJ-1`uyHC>O-t zpf#M;cyWUAZ-TkCMev$B0Mk)j;{_fl7Z9TBs3fL}DxJ*1hz#eU zS6~wLz7%Hl^f)L%UrvA_jXq_=FmI$WksuBO3G^XJsn~o-Ot7OL!1OK$? GcmD=L4YQm8 delta 1936 zcmb_dZERCz6h8Ouz5QMb3*y2=u1dfln#pDm22$v1@FRR|Ym6=!Sc2(tuM8QHmu+DN<#wx*maQLDF;}x za-uGm7Ccz^WN>p!xh(W7l~Lh$uoCWd%q~3lv6Qu|onB4t^3LgY)});^LQ9Xf^+REa zC`xvRy460Z1w2gTUj;32QdsF?V5fFAkkVZzg_{oT2^)J;%}VcR(LSM8{pg3cwLkiV z&IM6rwAWRq%z>Wm%4og2XQwi{(A~3Jk@uuK`-Mv$H8AP&eJZ^tzF|Ac28GM;FsNVO zeMsFqIqCvPw;N(I_I^vOvCo6M2LQb1h$tpl{j)R8^Qj z7_UIxLp{_(lZ(}}cbA4}gCeA0Jld={s40C+l^(GY^cT&PdKSzS?}4YBUcL6qujkgg zr-i7lV}7DS>JiKvv`s}!S{%_tWnTcRNtRm$j9Y=@Ns?I zk7aQ#ujpwqqneKAJysXqa>k=so81p+rd!q+5u7fVr=SBBt10*1vQRG@;o`S}P7Ot^ z)615|X}C-#1@4NM=my=K1IM!H9Yh$bjD`JKyh!jHG@$Gd4rMVjgpjKenM4F(2y^E8 zmpRP*jqV&?w1@;JV6aNWa~S{X4i4t2bEW4rV9vmyL3C#-L;}#rW9Ga?=yP^bDI|7(D2HdmI8FKK3k?tUU~%GEQX;)Ht6^E6>?6K!W{ALj zyR-kNu=PLAFnex(7=vu-=Pvcnc7nS^r`L7OQOj1PyF9|G=hGMe5?0Tjdu5;O^vkV2 z`KOx4!FgRCJ3gNsuX&+EzM{yqc4wcw;rM6lkjNQrt-$J?#BTG_LVB0L8krWK#~#}h zReIZEBiohUaBL*1xargTGsorZYHVb8Ipc`_u}5|)?!hlMzJA0>{1Lm{6z;titB`fu zIH@fV*`va0ZI#Hj3&WZwvK^0X>yU@{b={Vam9IBbZ854m)|vp2$F#W;3khqq*Ch6$ zH_|b3Jyx=xydHZsqNOCZO#4w{Yc~#zhLr*Na82c?yEf{P#NnlXXWt9-etPEJKrN%NQHT^0g`L7d;iPa; NxG6km0=3@#{{m4>FLwX{ diff --git a/inventory.s b/inventory.s index 0a718c7..8b62dc1 100644 --- a/inventory.s +++ b/inventory.s @@ -6,7 +6,7 @@ ; -INVENTORY_ITEMS = 6 +INVENTORY_ITEMS = 2 ITEM_WIDTH = 16 ; In pixels ICON_WIDTH = 8 ; In pixels ICON_ORIGIN = (ITEM_WIDTH-ICON_WIDTH)/4 ; In bytes @@ -14,14 +14,24 @@ ICON_ORIGIN = (ITEM_WIDTH-ICON_WIDTH)/4 ; In bytes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; renderInventory ; +; Renders inventory for current player +; +; Trashes PARAML0 ; renderInventory: SAVE_AXY + ; Find inventory we need to render + ldy currentPlayer + PLAYERPTR_Y + lda playerData+PD_INVENTORY,y + sta PARAML0 + ; Compute initial VRAM position ldy #(8192 + (160*10 + (160*ICON_ORIGIN + ICON_ORIGIN))) ldx #0 + renderInventoryLoop: jsr renderInventoryItem @@ -43,19 +53,25 @@ RESTORE_AXY ; ; X = Item index ; Y = VRAM pos +; PARAML0 = Inventory state ; renderInventoryItem: SAVE_AXY phy phx - lda #2 + lda #2 ; Frame clc jsr DrawSpriteBank - plx + + ; Find projectile type data + txy + PROJECTILETYPEPTR_Y + + ; Render projectile + lda projectileTypes+PT_FRAME1,y ply - txa clc jsr DrawSpriteBank diff --git a/player.s b/player.s index 4ad530c..c252cda 100644 --- a/player.s +++ b/player.s @@ -20,8 +20,9 @@ playerData: .word 100 ; Anger .byte 8,"SPROCKET " ; Name .word 1 ; Base Sprite + .word 10,0,0,0,0,0,0,0 ; Inventory - .repeat 106 + .repeat 90 .byte 0 ; Padding to 256-byte boundary .endrepeat @@ -38,8 +39,9 @@ playerData: .word 100 ; Anger .byte 8,"TINKER " ; Name .word 0 ; Base Sprite + .word 10,0,0,0,0,0,0,0 ; Inventory - .repeat 106 + .repeat 90 .byte 0 ; Padding to 256-byte boundary .endrepeat @@ -48,6 +50,7 @@ PD_POWER = 134 PD_ANGER = 136 PD_NAME = 138 PD_BASESPRITE = 148 +PD_INVENTORY = 150 PD_SIZE = 256 .macro PLAYERPTR_Y diff --git a/projectile.s b/projectile.s index c6be810..1d03f85 100644 --- a/projectile.s +++ b/projectile.s @@ -7,7 +7,7 @@ projectileData: - ; gameobject data (we're a subclass, effectively) + ; Gameobject data (we're a subclass, effectively) .word -1 ; Pos X in pixels (from left terrain edge) .word 0 ; Pos Y in pixels (from bottom terrain edge) .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Saved background @@ -33,15 +33,34 @@ JD_VY = 138 JD_TYPE = 140 JD_NEW = 142 + GRAVITY = $ffff ; 8.8 fixed point -projectileTypes: ; Byte offsets into projectile type data structure +projectileTypes: + ; Spit + .word 3 ; Damage + .word 1 ; Crater radius + .word 4 ; Frame 0 + .word 5 ; Frame 1 + .word 6 ; Frame 2 + + .word 0,0,0 ; Padding to 16-byte boundary + + ; Bomb .word 50 ; Damage .word 10 ; Crater radius - .word 0,0 ; Padding + .word 3 ; Frame 0 + .word 3 ; Frame 1 + .word 3 ; Frame 2 -PT_DAMAGE = 0 + .word 0,0,0 ; Padding to 16-byte boundary + + +PT_DAMAGE = 0 ; Byte offsets into projectile type data structure PT_RADIUS = 2 +PT_FRAME0 = 4 +PT_FRAME1 = 6 +PT_FRAME2 = 8 .macro PROJECTILEPTR_Y @@ -61,6 +80,8 @@ PT_RADIUS = 2 tya ; Pointer to projectile type structure from index asl asl + asl + asl tay .endmacro diff --git a/spritebank.s b/spritebank.s index d5024af..0b51bab 100644 --- a/spritebank.s +++ b/spritebank.s @@ -8,7 +8,7 @@ DrawSpriteBank : JMP (SpriteBankBank,X) ; Bank Number Table SpriteBankNum : - .dbyt $0100,$0200,$0600,$0000,$0300,$0500,$0400 + .dbyt $0100,$0000,$0500,$0200,$0300,$0600,$0400 SpriteBankBank : .addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00