Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Mini-Monster-Mixer
#5
Version 0.2 ,  I added in difference of size for height and width and it creates a much more visually interesting sprite sheet.

Code: (Select All)
'Mini-Monster-Mixer v0.2
'By James D. Jarvis November 2022
'This program uses BASIMAGE coded by Dav for QB64GL 1.4, MAY/2020
'
'generate a spirte sheet of monsters
'each is 64 by 64 pixels but code here can be modified to change that
'
'press c or s to save a sprite sheet to the clipboard so you can paste it into a paint program
'and save is whatever format you desire
'pres <esc> to quit
'
'License: Share sprite sheets as long as they include generated credit bar in image
'any programs using original code or graphics from source or generated by program
' please include the following (or equivalent) line somwhere in comments and documentation:
'Includes Art and/or Code from Mini-Monster-Mixer v0.2 created by James D. Jarvis
'
Randomize Timer
Dim Shared ms&
ms& = _NewImage(512, 360, 32)
Screen ms&
_Title "Mini-Monster-Mixer V0.2"
Dim Shared part&
Dim Shared kk1 As _Unsigned Long
Dim Shared kk2 As _Unsigned Long
Dim Shared kk3 As _Unsigned Long
Dim Shared kk4 As _Unsigned Long
Dim Shared clr~&
part& = BASIMAGE1&

Type critterbody_type
    head As Integer
    arm As Integer
    torso As Integer
    leg As Integer
    k1 As _Unsigned Long
    k2 As _Unsigned Long
    k3 As _Unsigned Long
    k4 As _Unsigned Long
    xsiz As Integer
    ysiz As Integer
End Type
monster_limit = 40
Dim Shared mlook(monster_limit) As critterbody_type
_Source part&
'read the colors from the color reference bar whichever color is in the top left corner will be transparent
clr~& = Point(0, 0) 'find background color of image
kk1 = Point(0, 1): kk2 = Point(0, 2): kk3 = Point(0, 3): kk4 = Point(0, 4)
_Dest part&
Line (0, 0)-(0, 4), clr~& 'erase the color reference bar from the bit map
_ClearColor clr~&, ms& 'set background color as transparent
_ClearColor clr~&, part&
_Source ms&
_Dest ms&
Do
    Cls
    mmx = 0: mmy = 0
    For m = 1 To monster_limit
        'create a new set of monster sprites
        'included image source has 16 options for head,arms,torso, and legs
        mlook(m).head = Int(1 + Rnd * 16)
        mlook(m).arm = Int(1 + Rnd * 16)
        mlook(m).torso = Int(1 + Rnd * 16)
        mlook(m).leg = Int(1 + Rnd * 16)
        'generating new colors for this specific monstewr sprite
        kr = Int(Rnd * 150 + 105): kg = Int(Rnd * 150 + 105): kb = Int(Rnd * 150 + 105)
        kr2 = Int(kr / 2): kg2 = Int(kg / 2): kb2 = Int(kb / 2)
        kr3 = Int(kr2 / (1.2 + Rnd * 3)): kg3 = Int(kg2 / (1.2 + Rnd * 3)): kb3 = Int(kb2 / (1.2 + Rnd * 3))
        mlook(m).k1 = _RGB32(kr, kg, kb)
        mlook(m).k2 = _RGB32(kr2, kg2, kb2)
        mlook(m).k3 = _RGB32(kr3, kg3, kb3)
        mlook(m).k4 = _RGB32(Int(Rnd * 220 + 33), Int(Rnd * 210 + 33), Int(Rnd * 200 + 33))
        mlook(m).xsiz = 64 - Int(Rnd * 32) + Int(Rnd * 4)
        If mlook(m).xsiz > 64 Then mlook(m).xsiz = 64
        mlook(m).ysiz = 64 - Int(Rnd * 32) + Int(Rnd * 4)
        If mlook(m).ysiz > 64 Then mlook(m).ysiz = 64


        draw_monster mmx, mmy, m, 3
        mmx = mmx + 64
        If mmx >= _Width Then
            mmx = 0
            mmy = mmy + 64
        End If
    Next m
    md$ = "Monster Sprite Sheet generated " + Date$ + " at " + Time$
    md2$ = "Using Mini-Monster-Mixer V0.2 by James D. Jarvis"
    _PrintString (0, 321), md$
    _PrintString (0, 337), md2$
    Do
        _Limit 60
        kk$ = InKey$
    Loop Until kk$ <> ""
    If kk$ = "C" Or kk$ = "c" Or kk$ = "S" Or kk$ = "s" Then
        _ClipboardImage = ms&
        _Delay 0.3
        Locate 1, 1: Print "Sprite Sheet Saved to Clipboard"
        Sleep 3
    End If
Loop Until kk$ = Chr$(27)
_FreeImage part&
System




Sub draw_monster (Mx, my, mid, scale)
    'generate a monster image from source sprite sheet part& and render to the programs main screen ms&
    tempi& = _NewImage(32, 32, 32)
    'tempi& creates a temporary one sprite image for rendering
    _ClearColor clr~&, tempi&
    _Dest tempi&
    Cls
    hs = Int(Rnd * (scale * 2))
    _PutImage (0, 0)-(31, 31), part&, tempi&, ((mlook(mid).leg - 1) * 32, 96)-((mlook(mid).leg - 1) * 32 + 31, 96 + 31)
    _PutImage (0, 0)-(31, 31), part&, tempi&, ((mlook(mid).arm - 1) * 32, 32)-((mlook(mid).arm - 1) * 32 + 31, 32 + 31)
    _PutImage (0 - Int(hs * .8), 0)-(31 + Int(hs * .8), 31), part&, tempi&, ((mlook(mid).torso - 1) * 32, 64)-((mlook(mid).torso - 1) * 32 + 31, 64 + 31)
    _PutImage (0 - hs, 0)-(31 + hs, 31), part&, tempi&, ((mlook(mid).head - 1) * 32, 0)-((mlook(mid).head - 1) * 32 + 31, 31)
    _Source tempi&
    'repaint source image with generate color values for new monster sprite
    For y = 0 To 31
        For x = 0 To 31
            Select Case Point(x, y)
                Case kk1
                    PSet (x, y), mlook(mid).k1
                Case kk2
                    PSet (x, y), mlook(mid).k2
                Case kk3
                    PSet (x, y), mlook(mid).k3
                Case kk4
                    PSet (x, y), mlook(mid).k4
            End Select
        Next x
    Next y
    'generated image in tempi& is rendered to ms& as a 64 by 64 sprite
    If mlook(mid).xsiz = 64 And mlook(mid).ysiz = 64 Then
        _PutImage (Mx, my)-(Mx + 63, my + 63), tempi&, ms&
    Else
        tx = Mx: ty = my
        tx = tx + Int(64 - mlook(mid).xsiz) / 2
        ty = ty + Int(64 - mlook(mid).ysiz) / 2
        _PutImage (tx, ty)-(tx + mlook(mid).xsiz - 1, ty + mlook(mid).ysiz - 1), tempi&, ms&
    End If
    _Source ms&
    _Dest ms&
    _FreeImage tempi&
End Sub

'================================
'PNG file saved using BASIMAGE1&
'================================
Function BASIMAGE1& 'mparts32a.png
    v& = _NewImage(512, 128, 32)
    Dim m As _MEM: m = _MemImage(v&)
    A$ = ""
    A$ = A$ + "haIkM6PTSS235M^TiBfGbIG_Ma6I516\AB4k7EmVTHkP0QP?PMji?oi?om?0000`SR]DfU1hHNmZofYA^f[FVRbF[XmSTAjW>cndolc?o7AmmPSY4g[9kb5l"
    A$ = A$ + "maIkSZCAG^OJf_WniA=F#FSoD\A6f_XWE#KKmimX^;Se\Ro:YIi;Te3MMZElO[_gMQGo[CFBDaMbH?Ik]E<XWnnXZo[:g5mWcdfE;UEMoYHO]VS^oOTJoBk:"
    A$ = A$ + "OODnP8]o_SinjoO]fl?TGc\7keZMGWl>6H[>MDb;=7Mo<[nNAdG\XgmY_?Vi0LDk_GJoJmnS`cfO[fgS>_7]7bHnIk_KUOeBW9_>cH5UhMI\_gnlEanUfM;k"
    A$ = A$ + "7eJM\638bml_Fm?:moFfOfU1[nf5]NYmefeWaPoKheO9bjZEmg[nQbjF_coa[a3\dnUn1_lmjjF[fO_R1N[_oNn^FOf_H_j]]7MniGFlEoicmlimL[ZgnonJ"
    A$ = A$ + "lLOPZUldWOT]SZ<dJ=#AYoG\Ud^AioU[a#JobJClffAKoBO?Mi#WdffSm0XV][E6l8^kmhlk][lHnHcmkc]L>gFjONDFf?VK]mRcgm2?cfoR?hcjlkH0oSmJ"
    A$ = A$ + "GomFoGf>KmnIgF[WKeAY?WCV?c7g:iM\Wfo[WCD4U1Y^S>N<Bmo\foSl7oY]mmHmoeR1?:n?Rm2_UmmaogNmoNf^K=o?ikmL<?K]omSe:m7NFoOkce[9dom0"
    A$ = A$ + "bJ]VbSiUM7=UEi`_HoGomcnLOZo9S9mb78g3l<fkogfnMo#_Kgo\mhcnoAk3R:V_MK#LnnJS1nkkS[=8choE`nbHPXSm\\M4UQ\eoOG>f7k[k34U_?jaOUkU"
    A$ = A$ + "ManbbbFbkWkAmn>:mmbSkU]UYJnoBIakh0_[_mj7RZo_T?k_7[n_U?8jWcjEag[K3RN>0A7o_:fG7oWAM?jioTinoGcNe:?A4gUaH0IJoNdomL^7eJceYXd2"
    A$ = A$ + "bjgh[e_cUX;7AeO[6I<nWEI83K[mmIe6Tm_am\Sk]dNR\^WAlGF?oOF]1JoOTnn\6oE?g_873dJ?8Ta3A]g3jkgUNn7geOc][6IYkD8;mGhiB]Hn<j;TeHMF"
    A$ = A$ + "c18J]oEI>`AcCEoGG6d9dm10lVFJ<?1mWgeeWmOoKbT\^oWbOGMFcocjg:dMZn30l\IUFo?l<9[koPDo_lnRfKTjoFnP\KC00N6XejAk7N:8eiU_6Yf?0000"
    A$ = A$ + "4?jkm3g380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000PXie[ofme:C[#I"
    A$ = A$ + "NTbN6i9000`ZbVNG_JN5MO?eoeYN:7GAc^lMSX^1000LE6Ag^gljeon?mLmN[ogke<3=kIVG0000A`KMk[=GPNdo]Bc^nd[=VII9Rj5000`<IC_nGlGoGRgj"
    A$ = A$ + "oSLmolc?Gf^KiaZXkcl#087XO7l]ADjo[djoUGOTjoN[=ch?7g>EhKf6OkTMLjZ\n30F1^jL0>cjomhiTO;?o6FoODco9[hYEU8eTAo_>I7SjQm;9JgGGR:V"
    A$ = A$ + "kKKlg8doe9?eok]om<67HTl`KmI6oY=Xo_6Tmm;c;kCo_e6do]YVnO_?OPO[[oGfFMVf\cnmbJlWWnnB;[kNh7l>o_;Pn?LgJkoVS1djoJMoFc3#Zmg[no<o"
    A$ = A$ + "]7>Sle:=be?Zm#o?7#oO=0mO8kfN_Jo_J<#=]fImKecfV_>Dc_=m[m;[;c^nOEOcAjjGEgG73fZ^gClQEik8moI6g<Cf:KKa#UGKMM569VCoMmBoo:iO?aFc"
    A$ = A$ + "8n;KkG;noKgn7eoKElo[XmeY[NMmJ_IEo?KiiXeM[_>miVal1do>0mDk_EIn<eoNbgc63:K?KM^AY7moNl?FUo[XoGdO?:?:GgERidiWDkG[S:ek[mj8fkhn"
    A$ = A$ + "1_YWce[=6M\]c6oMfhcX\O?j_OSfO;=;mo[DoWQMkancZLTUmka6SL^A]O?j[WiJ?3WCoOL]OMMi8oA?W[EN^RmojEoOdio\U^bno;eQeG[U>lERg:iI==m8"
    A$ = A$ + "eoUio8joelW7Yo[Kk]R[J=6C[h`c4O6]m?:m]IoFUWXmoGefW]n?;K7Ym;mEe9[kAPeiT7k<fNEdo7GgONflXb`XWO6aQNgo[TJEWJEoZmm>ZlDKOc]dcZYo"
    A$ = A$ + "GNoIdNef\VNoXfOTbQ^_ZNn5WAog:?KIO[HYc<6b<b[<\_lj^bm;I5\_Tc<N`<moSR<MEkOVb#ff_Fkh\_nJ\Olkc\>jm[IO>US[aXf\FIXgbJ]lKdH`8koE"
    A$ = A$ + "BGM^DWY=XV>oIRo^bN1HYQ7ANDKO5ZQd_E3[l\ghVc6k=Sl:Kk?3bfnGQIkooV\_GaoIgVf;GEkoMnL]i0DG;gJ=RcK>0cJn3GA3=[hoIDf;iSneNbWIXm:c"
    A$ = A$ + "[AW7lEfonIEG\dmg7[gFogjHSh3^jJgVALLffOFT]m_Ji>SlIVJVW9_bfnIbE7gOFiWF__ecgD[eoLUiPLEO`EnnIfocBkn<emcV7ml\n=BN=jmPO6JojjbE"
    A$ = A$ + "do_JMOF?C4AagXNiMRIko;cW4kWOKkA<SemoIN>fO3oVen?HIoc<7T[j;7mkUMlW^<O5mo[T7c\n?Zfk<mo7m<iejk<;KWU_o<Pnombo?bh?N\O9S^OFI?nK"
    A$ = A$ + "F<KMggiKOj_O^_ci=7T<IeRoVQnOVd[6h\Gk_dnN<_Rk:XoO_loXoSnO=mojgkni^VUIml861?eh?_HTWMFdocU_]kGjM3?loSTWNef?Zn_7f?kffS`CmaFi"
    A$ = A$ + "mN]Iof_Bic3#fnjFa9Ifok>b8g3lI[m;;3XmO<N\n?8Oo?joO7Smj]nOmc7gmYLE_OXbTGmonFR3W9SnkW5mO0bQ\eoOj[o:;moW>UH3m[[NNo]`8?gMNXCk"
    A$ = A$ + "el:0h>aZXoo]D_V=NL_go=OGkmM?Kdo>iVY_bclnKQNGo?jo0T3jdZW_g=fBKSAiUo_TgIG?QW7mngn^2cZ?#9MVoF41`C2?eXAo7o?0]#[A?;mO[l60H?Xo"
    A$ = A$ + "Po7P\X\>M_RoOjo><1000FA:JcNYokEN30000000000000000000000000d7bo6:m4okY4000`C3kooZTonF3000L7YU^?Jo0000g?foo?e]W70c50000hN#"
    A$ = A$ + "ioOZK[oonlIGN1000Pi#?[k_<7P\;[0000`lPml7000hi#O[moI=GP\ooc#\?f7kWWmcN_>cno?ebno?3cfoW]mS<nO5_ooIgo?knOHO\?f?CmWLG[C6So9m"
    A$ = A$ + "gJk7MKaVFCfco83kGRk:aoA77NdJnSJ>AIgoo9KoBOo<G3`CfoSmcgn[PnOTeOIBnI[ciYoF^NCYnGD]5e\O\f>nmNO5fgomk3Aao_oHNG6ZURXm?KkODj^G"
    A$ = A$ + "ocfnjTL>H?1oo:4oUiml\dNGke<mmNf6DlajT>n?2=`\Rmd[k_\6\8f7PEino[elgZkjSiIK#6anHO\O?ffcbPNLfSBN\_dmF6l\=8ceoD6W;ci0XK?Rkn?g"
    A$ = A$ + "O\WWJPOJ[m7dkh>Y=oDooUKaQmYkkkmoG_>oFhEkP>5mj_>:5]mc^noT\_EbBCd3KGCk]eaSZ<4Am_PmHNaYoOTfO4jaIigk=n;2mom?;L_g;JOSkN]CcG_?"
    A$ = A$ + "0_G?lL;7mngl_mc1HnJ`FjlUjMDjoJO^nmNf7#JO[nnAJo\[oFfgKK_jeO?]_NLfJfGNN?;3]\_WnoS^oSNKkBmebngmeo;G3L]foHf3lJjQnen[eo[5oiWn"
    A$ = A$ + "o[MnO;kk_oo]MZgnkOo`J[3aCKRmanIKOmj>d9iicdnNj3TS1ZCA\nO]F_leW`codAnOoK3bjNolicmXL=ooFomIoo;aDjmj87oO;k7CloCMloEbnA]_g[Jm"
    A$ = A$ + "7k7_me[1EWlN\_gU3kW3PXlobfQXFo_^=8;ooZXo;el;a0b[ckb#=oOdjojg7]nOTkm>fohk1LdnP<7k=cj]EkO4US<]_eHOjeR4ahObjMdaQBKHicSX<Hg>"
    A$ = A$ + "4il_REkGKcBLWmmRbSeoKO_>\loAhCbjn_E8[nNHOKmo<d2cBo=KkWml_bdn]FkC95QnO]nON_FLMZemR9jfQXdneUQ<VgQdg;OV0:nQIFNTjmjj\fo_oJmo"
    A$ = A$ + "g1`Nk7_nOTalHoff>kbADnN]mcJ^OIikAo?oeoG\Sf_7IO1ijPS`_G;Fhn[o[oknkW?7PBkZW_POnRmm3RBkOSW\nk:Ko<;3AIgE`n[JkO4ffJ_?;Yhd1bmn"
    A$ = A$ + "oGBF[o?^fPLlmjb#FggQO[cfkmo\:?beDoil0ndoG\[L?0lcGlijoS\mGn\8Wac1c:HOI:Kk7ihOF]1AKKY?83k_2aOIJo8o=7_Rf?;\f3jXeQ]:;iDo]ooT"
    A$ = A$ + "WXlmFno8W3lC<nOUH5dob^<T=?ij>ll`B3:;moeXnoimU?3onniS4oL0b^M1000OiY[oOT?87KojSi04W_0]O00hYaCBc_FM?gmMock3Afn5000000000000"
    A$ = A$ + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000PeRG_NUNI00000b1V70"
    A$ = A$ + "000#\XCAIg==o=niWO<O=Ko2000`MU=MFM::]gJjnN[o_EUeDkLNk3dci:niPIGoSbnI`8aFAdG8[iO3`:#dSi2oBA[?JmoFJnbGmafOZmgBogkHb<eo?Zn7"
    A$ = A$ + "YmSdWGR_e_NdilP]hl=:YbWSXm_P<N;JK_Jf?SiNWEo_\9[nojfN[dM_mGZeKQ_eKdoe]3enL4aNI\o77eggCkg:N?jn25]Oil0RB3D>_SF7k^Jo=NZmoTnj"
    A$ = A$ + "N?^Weo<V3`AYkLkOFkkoEen_jhbXoOL<fZ<70?m1ej[7iH0K8ek:9doSanbfkJOf;:aho>^knaO:7k^Zog[f_GnPNCU[e7O`[>dOV_NL9Uajn;ekcNOoWAiD"
    A$ = A$ + "jKc`oG[mXfWW_o__nFNe7LdnnNdo_<gGi[mL>?8cmo?Kmg\]o6AgokMLfcBoG[[F>F]nlF]9cZ<9k[E;Y?WG]o7]nciJc?GcoXe_[>fd<dn]f_f[hkSboG;>"
    A$ = A$ + "dcHmFemIN]G]\4Q^O]H9foOdo[mi8\O?7cCoO_7g[jH]nmcfgXCUnLeh\JTm`nePZ7oimiV[=]eokM<^I\fTcn\n;7?^lM^bHdIho[5?J]nC_63HD]EOV7Jn"
    A$ = A$ + "goUJm]m\?_5I]ooeFOSL>8NGoKIo8lmbb#]?7QmkiHAgn?CoP>OJmiA^fcD>TjkjS[KomLN0m]occGoo\kk_dg=SH_AOFoVYfOFnoJne87oITjET[o?:KFJk"
    A$ = A$ + "gB[`no_QNoomfN5K:7OcZ\h]>dAf?2o#dmoZef;]OTco[VoO6co[FLD[?gceNVfXFjGBO^EN[W7`<loILoWe[o_glOd[OTH`NWCA=]oc_foNFoilf3PJJJm>"
    A$ = A$ + "nc<e4?BS=6=hl^o;[dno_QNO7mfNBkJ5[5aJoG1k_QUMRDo?Ckk]o_T7cFoODOD;]Oii;__V?aSm28bfocXoGBnmka[_m1XhoWmHbajokcFedomXlHU_A\g7"
    A$ = A$ + "]dhSJoGF1m7IKNdf<kjOff_hgkiHgAk7]o_V^YlcFWkZm=JYOYeg>JMncNNjA[o[YFMEjGjM?j_BiZeJPVQfO[jI_7kZaPGEogShRJj_NeFKe^fkam`n[PnS"
    A$ = A$ + ">IeN<ki3ebNcH<G\oH]k7ML?83mOm[]ZoFOWcHC[kg_>9?OD?C>FjMN_?PjD[OC0Slli=3\V7`\l5FmWj9n[egoK`nWI=fe>g<ePJef6aNQGc?Odil\LD;=k"
    A$ = A$ + "inIUTnnJWc;k?jim\ngjLcdnF_Ndi^;noJeE?Zg]dn?J<8ieiAmgJ]eA\Nk=Jm\06imn\FICo<2>[h]JYA^V_=kKml>dkmOgSk7oAgc7?JkeiOYO]^oM[ci1"
    A$ = A$ + "S4?hIi00000n>iO0JAWJ%%%0"
    btemp$ = ""
    For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
        If InStr(1, B$, "%") Then
            For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
                If F$ <> "%" Then C$ = C$ + F$
            Next: B$ = C$: End If: For j = 1 To Len(B$)
            If Mid$(B$, j, 1) = "#" Then
        Mid$(B$, j) = "@": End If: Next
        For t% = Len(B$) To 1 Step -1
            B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
            Next: X$ = "": For t% = 1 To Len(B$) - 1
            X$ = X$ + Chr$(B& And 255): B& = B& \ 256
    Next: btemp$ = btemp$ + X$: Next
    btemp$ = _Inflate$(btemp$)
    _MemPut m, m.OFFSET, btemp$: _MemFree m
    BASIMAGE1& = _CopyImage(v&): _FreeImage v&
End Function
Reply


Messages In This Thread
Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 03:10 PM
RE: Mini-Monster-Mixer - by bplus - 11-18-2022, 03:29 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 03:35 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 03:50 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 04:44 PM
RE: Mini-Monster-Mixer - by mnrvovrfc - 11-18-2022, 04:48 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 04:48 PM
RE: Mini-Monster-Mixer - by james2464 - 11-18-2022, 06:55 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 07:49 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 07:51 PM
RE: Mini-Monster-Mixer - by james2464 - 11-18-2022, 10:06 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-18-2022, 10:19 PM
RE: Mini-Monster-Mixer - by Dav - 11-19-2022, 12:44 AM
RE: Mini-Monster-Mixer - by bplus - 11-19-2022, 01:30 AM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-19-2022, 05:11 PM
RE: Mini-Monster-Mixer - by James D Jarvis - 11-20-2022, 03:57 AM
RE: Mini-Monster-Mixer - by grymmjack - 07-15-2023, 12:50 AM
RE: Mini-Monster-Mixer - by Dav - 07-15-2023, 01:13 AM
RE: Mini-Monster-Mixer - by James D Jarvis - 07-20-2023, 02:37 AM
RE: Mini-Monster-Mixer - by James D Jarvis - 07-20-2023, 02:43 AM



Users browsing this thread: 5 Guest(s)