130XEASS(,(,(,(,(,( ---------------------------- 2d metablobscoded by candman this is dedicated to jana :) cream 2000email: candyman@atari.orgwww: cream.atari.orgthis is my first efx on xlthere are some optimisationpossible but anyway thiswas just a test if i canhandle 6502 code ;)---------------------------some macros---- move word MW   /    /   ---- move immediate word miw  /    /   ---- move immediate byte mib  /   ---- move byte mb   /   ---- test byte tst     ---- inc zeropage word iw #     cont@   cont@ % ---- add immediate word aiw      /   noi@   noi@  ----over0foverf0blobroutflar0fpflarf0flar0f PP ----bumpsrc _A0 _A1 _A2 _a3 _A4 _A5 _a6 _d0 _d1 _d2 _d3 _d4 _d5 _d6 _d7 _d8 dlz bumplbumprbumpubumpdbump%---------------------------------%here we go%---------------------------------% @  initdl initdl2 initOver initFlar genBRout clrscr vblOnMBoold623MIB( MIBMIB loop   wait    wait  doBlobs d_flag  / d_flagTST!   loop MWolddl0MBold623o vblOff*%---------------------------------% clrscr $clear screens and the end of the$ light map MIWscr_a0   clr01  clr02 /_a0  clr02 _a0   clr01MIW_a0MIW_a1MIW_a2MIW_a3   clr03 /_a0 /_a1 /_a2 /_a3  clr03*%---------------------------------% genBRout generate a routine from theblobtemp templateit creates excatly one linewhich draws the blobsMIWblobrout_a0MIB_d0MIB_d1 % gen02 MIWblobtemp_a1  _d0 / bt1/ bt2   / bt3/ bt4   / _d0   _d1 / bt5   / _d1 blobtendblobtemp gen01 _a1 /_a0  gen01$AIWblobtendblobtemp_a0$ gen02 `  /_a0 * ---------------------------- "this template draws 2 pixel on"#screen...it is duplicated later# blobtemp bt1_a2flar0f"_a3flarf03_a1overf0bt2"_a5flar0f3_a1overf0 / _d0 bt3_a2flar0f"_a3flarf03_a1overf0bt4"_a5flar0f3_a0over0f " _d0 bt5 /_a4 blobtend %---------------------------------% doBlobs draw the screen with 3 blobs MIWover0f_a0MIWoverf0_a1MIWflar0f_a2MIWflarf0_a3handle blob 1 movementMIWPacc  / aux f_posy3 sintab  -   / aux  mul  _a2    acc / _a2  _a2  acc/ _a2 f_posx3 sintab  E  _a2  db_adc1 _a2 db_adc1 / _a2 handle blob 2 movementMIWPacc  / aux f_posy23 sintab  -   / aux  mul  _a3    acc / _a3  _a3  acc/ _a3 f_posx23 sintab  -  _a3  db_adc2 _a3 db_adc2 / _a3 handle blob 3 movementMIWflar0f_a5MIWPacc  / aux f_posy33 sintab  -   / aux  mul  _a5    acc / _a5  _a5  acc/ _a5 f_posx33 sintab  -  _a5  db_adc3 _a5 db_adc3 / _a5 MIWscr_a4 d_flag db_scr1MIWscr_a4 db_scr1 MIB_d1MIB_d4 0 db_01  blobroutAIWP_a2AIWP_a3AIWP_a5AIW(_a4 db_01 f_posx f_posxsinendsintab db_no1MIBf_posx db_no1  f_posy f_posysinendsintab db_no1yMIBf_posy db_no1y  f_p2  f_p2   db_no2MIBf_p2 f_posx2 f_posx2 sinendsintab  db_no2MIBf_posx2 db_no2  f_posy2 f_posy2sinendsintab db_no1y2MIBf_posy2 db_no1y2  f_posx3 f_posx3sinendsintab db_no3MIBf_posx3 db_no3  f_posy3 f_posy3sinendsintab db_no1y3MIBf_posy3 db_no1y3 MIWdl0 d_flag db_scr2MIWdl20 db_scr2 *f_p2f_posxf_posyf_posx2f_posy2f_posx3 f_posy3d_flag%---------------------------------% initFlar preshifs the flar by 4 bits!this is later to avoid 4* asl!MIWflar0f_a0MIWflarf0_a1  if_01 _a0  /_a1 AIW_a1AIW_a0  _a0 flarf0 if_01 _a0 flarf0 if_01*%---------------------------------% initOver #generates a table for the blobs#$it is later used to add 2 colors$to one ...this is to avoid&color overflows the color must be&<$f  MIB_d0 io_1 MIB_d1 io_2  _d0    _d1   io_no  io_no / over0f/ overf0  _d1  _d1   io_2  _d0  _d0   io_1 *%---------------------------------% crbump this is for later use#this creates a bumpmap of a pic#not finished yetMIWbumpsrcbumplMIWbumpsrcbumprMIWbumpsrc(bumpuMIWbumpsrc(bumpdMIWbump  crbl1 bumpl +bumpr /bump  crbl1*  ---------------------------- vblOn inits the vbl....MIBMW"oldvblMIWvbl"MW0olddlMIWdl0MIB@MIB@* vblOff deinits the vblMWoldvbl"*vbl   MW0%3%2%)oldvbl ---------------------------- initdl 'this autogenerates the distplaylist'MIWdldlz3*8 blank lines p  /dlz IWdlz /dlz IWdlz /dlz IWdlz 0 dl_loop O /dlz IWdlz  scradr /dlz IWdlz  scradr /dlz IWdlz O /dlz IWdlz  scradr /dlz IWdlz  scradr /dlz IWdlz O /dlz IWdlz  scradr /dlz IWdlz  scradr /dlz IWdlz O /dlz IWdlz  scradr /dlz IWdlz  scradr /dlz IWdlz AIW(scradr dl_cont dl_end dl_cont  dl_loop dl_end A /dlz IWdlz dl /dlz IWdlz  dl /dlz IWdlz *scradrscr initdl2 #yep this is a copy of the upper# rout was too lazy to do more a flexible routMIWdl2dlz3*8 blank lines p  /dlz IWdlz /dlz IWdlz /dlz IWdlz 0 dl_loop2 O /dlz IWdlz  scradr2 /dlz IWdlz  scradr2 /dlz IWdlz O /dlz IWdlz  scradr2 /dlz IWdlz  scradr2 /dlz IWdlz O /dlz IWdlz  scradr2 /dlz IWdlz  scradr2 /dlz IWdlz O /dlz IWdlz  scradr2 /dlz IWdlz  scradr2 /dlz IWdlz AIW(scradr2 dl_cont2 dl_end2 dl_cont2  dl_loop2 dl_end2 A /dlz IWdlz dl /dlz IWdlz  dl /dlz IWdlz *scradr2scr ---------------------------- mulmultiplication rout  / ext  mulloop  ext(( acc ( acc  mul2    aux # aux ext/ ext% mul2  mulloop / ext * acc aux ext ---------------------------- data ---------------------------- olddlold623 sintab   #&'('&#   sinend   #&'('&#   ` dl' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'$aaaaaaaaaaaaaaaaaaaaaaaaaaaaa$ h dl2 screen 0 scr4Vx